multi-store/app/admin/lists/ActivityZoneFormLists.php

87 lines
2.4 KiB
PHP

<?php
namespace app\admin\lists;
use app\common\lists\ListsSearchInterface;
use app\common\model\ActivityZoneForm;
use app\common\model\store_category\StoreCategory;
/**
* ActivityZoneFormLists列表
* Class ActivityZoneFormLists
* @package app\admin\lists
*/
class ActivityZoneFormLists extends BaseAdminDataLists implements ListsSearchInterface
{
/**
* @notes 设置搜索条件
* @return \string[][]
* @author admin
* @date 2024/12/20 10:52
*/
public function setSearch(): array
{
return [
'=' => ['type'],
'%like%' => ['title'],
];
}
/**
* @notes 获取列表
* @return array
* @throws \think\db\exception\DataNotFoundException
* @throws \think\db\exception\DbException
* @throws \think\db\exception\ModelNotFoundException
* @author admin
* @date 2024/12/20 10:52
*/
public function lists(): array
{
$query = ActivityZoneForm::where($this->searchWhere);
$cateIds = [];
$list = $query
->field(['id', 'type', 'cate_ids', 'title', 'remark'])
->limit($this->limitOffset, $this->limitLength)
->order(['id' => 'desc'])
->select()
->each(function ($item) use (&$cateIds) {
$item['cate_ids'] = explode(',', $item['cate_ids']);
foreach ($item['cate_ids'] as $cateId) {
if (!empty($cateId) && !in_array($cateId, $cateIds)) {
$cateIds[] = $cateId;
}
}
})
->toArray();
$cateList = StoreCategory::where('id', 'in', $cateIds)->field('id,name')->select()->toArray();
$cateList = reset_index($cateList, 'id');
foreach ($list as &$item) {
$item['cate_names'] = [];
foreach ($item['cate_ids'] as $cateId) {
if (isset($cateList[$cateId])) {
$item['cate_names'][] = $cateList[$cateId]['name'];
}
}
$item['cate_names'] = implode(',', $item['cate_names']);
}
return $list;
}
/**
* @notes 获取数量
* @return int
* @author admin
* @date 2024/12/20 10:52
*/
public function count(): int
{
$query = ActivityZoneForm::where($this->searchWhere);
return $query->count();
}
}