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; return;
} }
$provinceCode = Arr::get($region, 'provinceCode'); // 区划代码 - 省份
$provinceCode = (string) Arr::get($region, 'provinceCode');
// 区划代码 - 城市
$cityCode = (string) Arr::get($region, 'cityCode');
$cityCode = Arr::get($region, 'cityCode'); if ($provinceCode === '' && $cityCode === '') {
if (empty($provinceCode) && empty($cityCode)) {
return; return;
} }

View File

@ -2,6 +2,8 @@
namespace App\Http\Controllers\Api; namespace App\Http\Controllers\Api;
use App\Admin\Filters\LedgerFilter;
use App\Models\Employee;
use App\Models\Ledger; use App\Models\Ledger;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Http\Request; use Illuminate\Http\Request;
@ -15,20 +17,9 @@ class StatsController extends Controller
/** @var \App\Models\Employee */ /** @var \App\Models\Employee */
$user = $request->user(); $user = $request->user();
$query = Ledger::when($user->isAdministrator(), function ($query) use ($request) { $query = Ledger::filter(
if ($request->filled('store_id')) { $this->defaultInput($user, $request), LedgerFilter::class
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));
// 昨天 // 昨天
$yesterday = Carbon::yesterday(); $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(); 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;
}
} }