From 5e4f0b38c3b691084d47410670e14724901463bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Mon, 15 May 2023 18:24:05 +0800 Subject: [PATCH] Update --- app/Http/Controllers/ChartController.php | 44 +++++++++++++++++++ .../Controllers/WeeksPerYearController.php | 3 +- routes/api.php | 1 - 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/ChartController.php b/app/Http/Controllers/ChartController.php index 2a49baa..d7820fc 100644 --- a/app/Http/Controllers/ChartController.php +++ b/app/Http/Controllers/ChartController.php @@ -7,6 +7,8 @@ use App\Models\Materiel; use App\Models\RiceShrimpFlow; use App\Models\RiceShrimpIndustry; use App\Models\RiceShrimpPrice; +use App\Models\RiceShrimpWeeklyPrice; +use Peidikeji\Keywords\Models\Keywords; use Illuminate\Http\Request; class ChartController extends Controller @@ -59,6 +61,48 @@ class ChartController extends Controller ]; } + /** + * 稻虾每周价格趋势 + * + * @param \Illuminate\Http\Request $request + * @return array + */ + public function riceShrimpWeeklyPrice(Request $request) + { + $weeks = Keywords::where('type_key', 'weeks-per-year')->pluck('name', 'key'); + + $years = RiceShrimpWeeklyPrice::select('year') + ->groupBy('year') + ->orderBy('year', 'desc') + ->limit(3) + ->get() + ->pluck('year'); + + $riceShrimpWeeklyPrices = RiceShrimpWeeklyPrice::query() + ->whereIn('year', $years) + ->get(); + + $series = $riceShrimpWeeklyPrices->groupBy('year')->map(function ($riceShrimpWeeklyPrices, $year) use ($weeks) { + $riceShrimpWeeklyPriceMap = $riceShrimpWeeklyPrices->mapWithKeys(fn ($item) => [$item->week => $item->price]); + + $data = []; + + foreach ($weeks as $key => $value) { + $data[] = $riceShrimpWeeklyPriceMap[$key] ?? null; + } + + return [ + 'name' => $year, + 'data' => $data, + ]; + }); + + return [ + 'x_axis' => array_values($weeks), + 'series' => $series->sortKeys()->values()->all(), + ]; + } + /** * 稻虾产业 * diff --git a/app/Http/Controllers/WeeksPerYearController.php b/app/Http/Controllers/WeeksPerYearController.php index 100f908..563530d 100644 --- a/app/Http/Controllers/WeeksPerYearController.php +++ b/app/Http/Controllers/WeeksPerYearController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Peidikeji\Keywords\Models\Keywords; @@ -9,6 +10,6 @@ class WeeksPerYearController extends Controller { public function __invoke(Request $request) { - return Keywords::where('type_key', 'weeks-per-year')->pluck('name', 'key'); + return Keywords::select('name', 'key')->where('type_key', 'weeks-per-year')->get(); } } diff --git a/routes/api.php b/routes/api.php index 66a068d..2b2869f 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,7 +2,6 @@ namespace App\Http\Controllers; -use App\Http\Controllers\RiceShrimpWeeklyPriceController; use Illuminate\Support\Facades\Route; /*