From 98bee6fa87750f02c262495cea09a5345902c114 Mon Sep 17 00:00:00 2001 From: v2board Date: Tue, 13 Jun 2023 18:49:40 +0800 Subject: [PATCH] update: add v2 api --- .../Controllers/V1/Admin/StatController.php | 69 -------------- .../Controllers/V2/Admin/StatController.php | 92 +++++++++++++++++++ app/Http/Routes/V2/AdminRoute.php | 20 ++++ app/Providers/RouteServiceProvider.php | 11 +++ 4 files changed, 123 insertions(+), 69 deletions(-) create mode 100644 app/Http/Controllers/V2/Admin/StatController.php create mode 100644 app/Http/Routes/V2/AdminRoute.php diff --git a/app/Http/Controllers/V1/Admin/StatController.php b/app/Http/Controllers/V1/Admin/StatController.php index 9fc4122a..569771e5 100644 --- a/app/Http/Controllers/V1/Admin/StatController.php +++ b/app/Http/Controllers/V1/Admin/StatController.php @@ -20,75 +20,6 @@ use Illuminate\Support\Facades\DB; class StatController extends Controller { - public function getStat(Request $request) - { - $params = $request->validate([ - 'start_at' => '', - 'end_at' => '' - ]); - - if (isset($params['start_at']) && isset($params['end_at'])) { - $stats = Stat::where('record_at', '>=', $params['start_at']) - ->where('record_at', '<', $params['end_at']) - ->get() - ->makeHidden(['record_at', 'created_at', 'updated_at', 'id', 'record_type']) - ->toArray(); - } else { - $statisticalService = new StatisticalService(); - return [ - 'data' => $statisticalService->generateStatData() - ]; - } - - $stats = array_reduce($stats, function($carry, $item) { - foreach($item as $key => $value) { - if(isset($carry[$key]) && $carry[$key]) { - $carry[$key] += $value; - } else { - $carry[$key] = $value; - } - } - return $carry; - }, []); - - return [ - 'data' => $stats - ]; - } - - public function getStatRecord(Request $request) - { - $request->validate([ - 'type' => 'required|in:paid_total,commission_total,register_count', - 'start_at' => '', - 'end_at' => '' - ]); - - $statisticalService = new StatisticalService(); - $statisticalService->setStartAt($request->input('start_at')); - $statisticalService->setEndAt($request->input('end_at')); - return [ - 'data' => $statisticalService->getStatRecord($request->input('type')) - ]; - } - - public function getRanking(Request $request) - { - $request->validate([ - 'type' => 'required|in:server_traffic_rank,user_consumption_rank,invite_rank', - 'start_at' => '', - 'end_at' => '', - 'limit' => 'nullable|integer' - ]); - - $statisticalService = new StatisticalService(); - $statisticalService->setStartAt($request->input('start_at')); - $statisticalService->setEndAt($request->input('end_at')); - return [ - 'data' => $statisticalService->getRanking($request->input('type'), $request->input('limit') ?? 20) - ]; - } - public function getOverride(Request $request) { return [ diff --git a/app/Http/Controllers/V2/Admin/StatController.php b/app/Http/Controllers/V2/Admin/StatController.php new file mode 100644 index 00000000..04d45bbd --- /dev/null +++ b/app/Http/Controllers/V2/Admin/StatController.php @@ -0,0 +1,92 @@ +validate([ + 'start_at' => '', + 'end_at' => '' + ]); + + if (isset($params['start_at']) && isset($params['end_at'])) { + $stats = Stat::where('record_at', '>=', $params['start_at']) + ->where('record_at', '<', $params['end_at']) + ->get() + ->makeHidden(['record_at', 'created_at', 'updated_at', 'id', 'record_type']) + ->toArray(); + } else { + $statisticalService = new StatisticalService(); + return [ + 'data' => $statisticalService->generateStatData() + ]; + } + + $stats = array_reduce($stats, function($carry, $item) { + foreach($item as $key => $value) { + if(isset($carry[$key]) && $carry[$key]) { + $carry[$key] += $value; + } else { + $carry[$key] = $value; + } + } + return $carry; + }, []); + + return [ + 'data' => $stats + ]; + } + + public function record(Request $request) + { + $request->validate([ + 'type' => 'required|in:paid_total,commission_total,register_count', + 'start_at' => '', + 'end_at' => '' + ]); + + $statisticalService = new StatisticalService(); + $statisticalService->setStartAt($request->input('start_at')); + $statisticalService->setEndAt($request->input('end_at')); + return [ + 'data' => $statisticalService->getStatRecord($request->input('type')) + ]; + } + + public function ranking(Request $request) + { + $request->validate([ + 'type' => 'required|in:server_traffic_rank,user_consumption_rank,invite_rank', + 'start_at' => '', + 'end_at' => '', + 'limit' => 'nullable|integer' + ]); + + $statisticalService = new StatisticalService(); + $statisticalService->setStartAt($request->input('start_at')); + $statisticalService->setEndAt($request->input('end_at')); + return [ + 'data' => $statisticalService->getRanking($request->input('type'), $request->input('limit') ?? 20) + ]; + } +} + diff --git a/app/Http/Routes/V2/AdminRoute.php b/app/Http/Routes/V2/AdminRoute.php new file mode 100644 index 00000000..1a07c09e --- /dev/null +++ b/app/Http/Routes/V2/AdminRoute.php @@ -0,0 +1,20 @@ +group([ + 'prefix' => config('v2board.secure_path', config('v2board.frontend_admin_path', hash('crc32b', config('app.key')))), + 'middleware' => ['admin', 'log'], + ], function ($router) { + // Stat + $router->get ('/stat/override', 'V2\\Admin\\StatController@override'); + $router->get ('/stat/record', 'V2\\Admin\\StatController@record'); + $router->get ('/stat/ranking', 'V2\\Admin\\StatController@ranking'); + }); + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 9052bfc6..174cf3be 100755 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -76,5 +76,16 @@ class RouteServiceProvider extends ServiceProvider $this->app->make('App\\Http\\Routes\\V1\\' . basename($file, '.php'))->map($router); } }); + + + Route::group([ + 'prefix' => '/api/v2', + 'middleware' => 'api', + 'namespace' => $this->namespace + ], function ($router) { + foreach (glob(app_path('Http//Routes//V2') . '/*.php') as $file) { + $this->app->make('App\\Http\\Routes\\V2\\' . basename($file, '.php'))->map($router); + } + }); } }