Browse Source

update: add v2 api

v2board 2 years ago
parent
commit
98bee6fa87

+ 0 - 69
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 [

+ 92 - 0
app/Http/Controllers/V2/Admin/StatController.php

@@ -0,0 +1,92 @@
+<?php
+
+namespace App\Http\Controllers\V2\Admin;
+
+use App\Http\Controllers\Controller;
+use App\Models\CommissionLog;
+use App\Models\Order;
+use App\Models\ServerShadowsocks;
+use App\Models\ServerTrojan;
+use App\Models\ServerVmess;
+use App\Models\Stat;
+use App\Models\StatServer;
+use App\Models\StatUser;
+use App\Models\Ticket;
+use App\Models\User;
+use App\Services\StatisticalService;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\DB;
+
+class StatController extends Controller
+{
+    public function override(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 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)
+        ];
+    }
+}
+

+ 20 - 0
app/Http/Routes/V2/AdminRoute.php

@@ -0,0 +1,20 @@
+<?php
+namespace App\Http\Routes\V2;
+
+use Illuminate\Contracts\Routing\Registrar;
+
+class AdminRoute
+{
+    public function map(Registrar $router)
+    {
+        $router->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');
+        });
+    }
+}

+ 11 - 0
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);
+            }
+        });
     }
 }