generated from liutk/owl-admin-base
Update
parent
dde3b2e72c
commit
c23691613f
|
|
@ -50,33 +50,26 @@ class StoreStatisticController extends AdminController
|
||||||
|
|
||||||
protected function getStoreStatistics(Request $request): array
|
protected function getStoreStatistics(Request $request): array
|
||||||
{
|
{
|
||||||
$stores = Store::filter($request->only(['region']), StoreFilter::class)
|
|
||||||
->get(['id', 'title']);
|
|
||||||
|
|
||||||
/** @var \Illuminate\Database\Eloquent\Collection */
|
/** @var \Illuminate\Database\Eloquent\Collection */
|
||||||
$statistics = Ledger::select(['store_id', DB::raw('SUM(sales) as sales'), DB::raw('SUM(expenditure) as expenditure')])
|
$stats = Ledger::with(['store'])
|
||||||
|
->select(['store_id', DB::raw('SUM(sales) as sales'), DB::raw('SUM(expenditure) as expenditure')])
|
||||||
->filter($request->input(), LedgerFilter::class)
|
->filter($request->input(), LedgerFilter::class)
|
||||||
->groupBy('store_id')
|
->groupBy('store_id')
|
||||||
->get()
|
->get();
|
||||||
->keyBy('store_id');
|
|
||||||
|
|
||||||
// 排序规则
|
// 排序规则
|
||||||
$sortBy = [
|
$sortBy = [
|
||||||
[$request->input('orderBy') ?: 'sales', $request->input('orderDir') ?: 'desc'],
|
[$request->input('orderBy') ?: 'sales', $request->input('orderDir') ?: 'desc'],
|
||||||
];
|
];
|
||||||
|
|
||||||
return $stores->map(function ($store) use ($statistics) {
|
return $stats->map(fn ($item) => [
|
||||||
$statistic = $statistics->get($store->id);
|
'title' => $item->store->title,
|
||||||
|
'sales' => trim_zeros($item->sales ?? '0'),
|
||||||
return [
|
'expenditure' => trim_zeros($item->expenditure ?? '0'),
|
||||||
'title' => $store->title,
|
])
|
||||||
'sales' => trim_zeros($statistic->sales ?? '0'),
|
|
||||||
'expenditure' => trim_zeros($statistic->expenditure ?? '0'),
|
|
||||||
];
|
|
||||||
})
|
|
||||||
->sortBy($sortBy)
|
->sortBy($sortBy)
|
||||||
->values()
|
->values()
|
||||||
->map(fn ($statistic, $key) => array_merge($statistic, ['ranking' => $key + 1]))
|
->map(fn ($item, $key) => array_merge($item, ['ranking' => $key + 1]))
|
||||||
->all();
|
->all();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue