Files
hyperf_service/app/Service/Admin/Statement/SiteService.php
2025-08-04 16:50:57 +08:00

77 lines
2.2 KiB
PHP

<?php
/**
* This service file is part of item.
*
* @author ctexthuang
* @contact ctexthuang@qq.com
*/
declare(strict_types=1);
namespace App\Service\Admin\Statement;
use App\Model\Site;
use App\Model\SiteDriverStatement;
use App\Service\Admin\BaseService;
use Hyperf\Di\Annotation\Inject;
class SiteService extends BaseService
{
/**
* @var SiteDriverStatement
*/
#[Inject]
protected SiteDriverStatement $siteDriverStatementModel;
/**
* @var Site
*/
#[Inject]
protected Site $siteModel;
/**
* @return array
*/
public function handle(): array
{
$searchCityId = $this->request->input('search_city_id');
$searchCycleId = $this->request->input('search_cycle_id');
$searchSiteId = $this->request->input('search_site_id');
$limit = (int)$this->request->input('limit',10);
$list = $this->siteDriverStatementModel
->when($searchCityId, function ($query) use ($searchCityId) {
$query->where('city_id', $searchCityId);
})
->when($searchSiteId, function ($query) use ($searchSiteId) {
$query->where('site_id', $searchSiteId);
})
->when($searchCycleId, function ($query) use ($searchCycleId) {
$query->where('cycle_id', $searchCycleId);
})
->orderByDesc('cycle_id')
->select(
'date',
'cycle_id',
'site_id',
'option_order_number',
'option_copies',
'option_add_staple_food_num',
'meal_order_number',
'meal_copies',
'meal_add_staple_food_num'
)
->paginate($limit)
->toArray();
if (empty($list['data'])) return $this->return->success('success', ['list' => []]);
$siteIds = array_column($list['data'], 'site_id');
$siteList = $this->siteModel->whereIn('id', $siteIds)->pluck('name', 'id')->toArray();
foreach ($list['data'] as &$v) {
$v['site_name'] = $siteList[$v['site_id']] ?? '';
}
return $this->return->success('success', ['list' => $list]);
}
}