feat: add community post categories and channels

This commit is contained in:
hajimi
2026-08-02 17:39:52 +08:00
parent 95f03af60e
commit b0b278d11f
18 changed files with 1132 additions and 12 deletions
@@ -0,0 +1,33 @@
<?php
namespace app\adminapi\lists\community;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsSearchInterface;
use app\common\model\community\CommunityCategory;
class CommunityCategoryLists extends BaseAdminDataLists implements ListsSearchInterface
{
public function setSearch(): array
{
return [
'%like%' => ['name'],
'=' => ['status'],
];
}
public function lists(): array
{
return CommunityCategory::where($this->searchWhere)
->limit($this->limitOffset, $this->limitLength)
->order('sort', 'desc')
->order('id', 'desc')
->select()
->toArray();
}
public function count(): int
{
return CommunityCategory::where($this->searchWhere)->count();
}
}
@@ -4,6 +4,7 @@ namespace app\adminapi\lists\community;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsSearchInterface;
use app\common\model\community\CommunityCategory;
use app\common\model\community\CommunityPost;
use app\common\model\user\User;
@@ -12,7 +13,7 @@ class CommunityPostLists extends BaseAdminDataLists implements ListsSearchInterf
public function setSearch(): array
{
return [
'=' => ['status', 'post_type', 'is_top', 'is_hot', 'is_recommend', 'user_id'],
'=' => ['status', 'post_type', 'category_id', 'is_top', 'is_hot', 'is_recommend', 'is_topic', 'user_id'],
];
}
@@ -26,11 +27,16 @@ class CommunityPostLists extends BaseAdminDataLists implements ListsSearchInterf
$userIds = array_unique(array_column($lists, 'user_id'));
$users = User::whereIn('id', $userIds)->column('nickname,avatar', 'id');
$categoryIds = array_values(array_filter(array_unique(array_column($lists, 'category_id'))));
$categories = $categoryIds
? CommunityCategory::whereIn('id', $categoryIds)->column('name', 'id')
: [];
foreach ($lists as &$item) {
$user = $users[$item['user_id']] ?? [];
$item['nickname'] = $user['nickname'] ?? '-';
$item['avatar'] = $user['avatar'] ?? '';
$item['category_name'] = $categories[$item['category_id']] ?? '';
$item['create_time'] = is_numeric($item['create_time']) ? date('Y-m-d H:i:s', $item['create_time']) : $item['create_time'];
}