From 7287a2bd38c4a7e3e4a07dda7428601519ab346c Mon Sep 17 00:00:00 2001 From: Jing Li Date: Mon, 15 Apr 2024 22:56:52 +0800 Subject: [PATCH] Update --- app/Admin/Filters/LedgerFilter.php | 9 ++-- app/Http/Controllers/Api/StatsController.php | 50 ++++++++++++-------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/app/Admin/Filters/LedgerFilter.php b/app/Admin/Filters/LedgerFilter.php index f5e4265..4b51b74 100644 --- a/app/Admin/Filters/LedgerFilter.php +++ b/app/Admin/Filters/LedgerFilter.php @@ -23,11 +23,12 @@ class LedgerFilter extends ModelFilter return; } - $provinceCode = Arr::get($region, 'provinceCode'); + // 区划代码 - 省份 + $provinceCode = (string) Arr::get($region, 'provinceCode'); + // 区划代码 - 城市 + $cityCode = (string) Arr::get($region, 'cityCode'); - $cityCode = Arr::get($region, 'cityCode'); - - if (empty($provinceCode) && empty($cityCode)) { + if ($provinceCode === '' && $cityCode === '') { return; } diff --git a/app/Http/Controllers/Api/StatsController.php b/app/Http/Controllers/Api/StatsController.php index d160e56..2e8653c 100644 --- a/app/Http/Controllers/Api/StatsController.php +++ b/app/Http/Controllers/Api/StatsController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\Api; +use App\Admin\Filters\LedgerFilter; +use App\Models\Employee; use App\Models\Ledger; use Illuminate\Database\Eloquent\Collection; use Illuminate\Http\Request; @@ -15,20 +17,9 @@ class StatsController extends Controller /** @var \App\Models\Employee */ $user = $request->user(); - $query = Ledger::when($user->isAdministrator(), function ($query) use ($request) { - if ($request->filled('store_id')) { - return $query->where('store_id', $request->input('store_id')); - } - - if (! $request->anyFilled(['province_code', 'city_code'])) { - return; - } - - $query->whereHas('store', function ($query) use ($request) { - $request->whenFilled('province_code', fn ($code) => $query->where('region->provinceCode', $code)); - $request->whenFilled('city_code', fn ($code) => $query->where('region->cityCode', $code)); - }); - }, fn ($query) => $query->where('store_id', $user->store_id)); + $query = Ledger::filter( + $this->defaultInput($user, $request), LedgerFilter::class + ); // 昨天 $yesterday = Carbon::yesterday(); @@ -76,12 +67,6 @@ class StatsController extends Controller ]; } - public function test(Request $request) - { - /** @var \App\Models\Employee */ - $user = $request->user(); - } - /** * 准备趋势数据 */ @@ -105,4 +90,29 @@ class StatsController extends Controller return $data->all(); } + + protected function defaultInput(Employee $employee, Request $request): array + { + $input = []; + + if (! $employee->isAdministrator()) { + $input['store_id'] = $employee->store_id; + } elseif ($request->filled('store_id')) { + $input['store_id'] = $request->input('store_id'); + } else { + $region = []; + + if ($request->filled('province_code')) { + $region['provinceCode'] = $request->input('province_code'); + } + + if ($request->filled('cityCode')) { + $region['city_code'] = $request->input('city_code'); + } + + $input['region'] = $region; + } + + return $input; + } }