main
Jing Li 2024-04-15 22:56:52 +08:00
parent 55f562ac15
commit 7287a2bd38
2 changed files with 35 additions and 24 deletions

View File

@ -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;
}

View File

@ -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;
}
}