diff --git a/app/Http/Controllers/Api/StatisticsController.php b/app/Http/Controllers/Api/StatisticsController.php index 2705a96..ea3afb7 100644 --- a/app/Http/Controllers/Api/StatisticsController.php +++ b/app/Http/Controllers/Api/StatisticsController.php @@ -89,18 +89,30 @@ class StatisticsController extends Controller ], ); - $input = $this->filterInput($request); + $input = Arr::except($this->filterInput($request), ['start_at', 'end_at', 'before_start_at', 'before_end_at']); $dateRange1 = $request->input('start_at').','.$request->input('end_at'); + $ledger = $statisticService->ledger(array_merge($input, ['date_range' => $dateRange1])); + $dateRange2 = $request->input('before_start_at').','.$request->input('before_end_at'); + $beforeLedger = $statisticService->ledger(array_merge($input, ['date_range' => $dateRange2])); - $ledger = $statisticService->ledger( - array_merge($input, ['date_range' => $dateRange1]) - ); + /** @var \Illuminate\Database\Eloquent\Collection */ + $lotteryTypes = Keyword::where('parent_key', 'lottery_type')->oldest('sort')->get(); - $beforeLedger = $statisticService->ledger( - array_merge($input, ['date_range' => $dateRange2]) - ); + /** @var \Illuminate\Support\Collection */ + $lotteryTypeStatistics = LedgerItem::select( + [ + 'ledger_item_type_id', + DB::raw('SUM(sales) as sales'), + DB::raw('SUM(expenditure) as expenditure'), + ], + ) + ->filter(array_merge($input, ['date_range' => $dateRange1]), LedgerItemFilter::class) + ->whereIn('ledger_item_type_id', $lotteryTypes->pluck('key')) + ->groupBy(['ledger_item_type_id']) + ->get() + ->keyBy('ledger_item_type_id'); // 销售涨幅 $salesGrowthRate = 0; @@ -112,21 +124,6 @@ class StatisticsController extends Controller $salesGrowthRate = bcdiv(bcmul($diff, '100'), $beforeLedger['sales'], 2); } - /** @var \Illuminate\Database\Eloquent\Collection */ - $lotteryTypes = Keyword::where('parent_key', 'lottery_type')->oldest('sort')->get(); - - /** @var \Illuminate\Support\Collection */ - $lotteryTypeStatistics = LedgerItem::select([ - 'ledger_item_type_id', - DB::raw('SUM(sales) as sales'), - DB::raw('SUM(expenditure) as expenditure'), - ]) - ->filter(array_merge($input, ['date_range' => $dateRange1]), LedgerItemFilter::class) - ->whereIn('ledger_item_type_id', $lotteryTypes->pluck('key')) - ->groupBy(['ledger_item_type_id']) - ->get() - ->keyBy('ledger_item_type_id'); - return array_merge($ledger, [ 'sales_growth_rate' => $salesGrowthRate, 'lottery_types' => $lotteryTypes->map(function ($lotteryType) use ($lotteryTypeStatistics) { @@ -157,10 +154,7 @@ class StatisticsController extends Controller ], ); - $input = array_merge( - $this->filterInput($request), - $request->only(['start_at', 'end_at']), - ); + $input = $this->filterInput($request); return $statisticService->storeRanking($input); }