mirror of
				https://github.com/v2board/v2board.git
				synced 2025-11-04 19:31:45 +08:00 
			
		
		
		
	update: add v2 api
This commit is contained in:
		@@ -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
									
								
								app/Http/Controllers/V2/Admin/StatController.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								app/Http/Controllers/V2/Admin/StatController.php
									
									
									
									
									
										Normal file
									
								
							@@ -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
									
								
								app/Http/Routes/V2/AdminRoute.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								app/Http/Routes/V2/AdminRoute.php
									
									
									
									
									
										Normal file
									
								
							@@ -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');
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -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);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user