Files
zyt/server/app/adminapi/lists/finance/AccountCostLists.php
T
2026-04-21 17:24:51 +08:00

60 lines
1.6 KiB
PHP

<?php
declare(strict_types=1);
namespace app\adminapi\lists\finance;
use app\adminapi\lists\BaseAdminDataLists;
use app\common\lists\ListsExtendInterface;
use app\common\lists\ListsSearchInterface;
use app\common\model\finance\AccountCost;
class AccountCostLists extends BaseAdminDataLists implements ListsSearchInterface, ListsExtendInterface
{
public function setSearch(): array
{
return [
'%like%' => ['remark', 'creator_name', 'updater_name'],
];
}
private function baseQuery()
{
$query = AccountCost::where($this->searchWhere);
if (!empty($this->params['start_date']) && !empty($this->params['end_date'])) {
$query->whereBetween('cost_date', [$this->params['start_date'], $this->params['end_date']]);
} elseif (!empty($this->params['start_date'])) {
$query->where('cost_date', '>=', $this->params['start_date']);
} elseif (!empty($this->params['end_date'])) {
$query->where('cost_date', '<=', $this->params['end_date']);
}
return $query;
}
public function lists(): array
{
return $this->baseQuery()
->order(['cost_date' => 'desc', 'id' => 'desc'])
->limit($this->limitOffset, $this->limitLength)
->select()
->toArray();
}
public function count(): int
{
return (int) $this->baseQuery()->count();
}
public function extend(): array
{
$baseQuery = $this->baseQuery();
return [
'total_amount' => round((float) $baseQuery->sum('amount'), 2),
'days_count' => (int) $baseQuery->count(),
];
}
}