ソースを参照

Refactor route structure and comments

BrettonYe 1 週間 前
コミット
f8c6cc0651
5 ファイル変更61 行追加36 行削除
  1. 9 4
      routes/admin.php
  2. 26 22
      routes/api.php
  3. 2 0
      routes/channels.php
  4. 9 4
      routes/user.php
  5. 15 6
      routes/web.php

+ 9 - 4
routes/admin.php

@@ -58,6 +58,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
 
     Route::resource('ticket', TicketController::class)->except('create', 'show');
     Route::resource('article', ArticleController::class);
+
     Route::prefix('marketing')->name('marketing.')->controller(MarketingController::class)->group(function () {
         Route::get('/', 'index')->name('index'); // 营销消息列表
         Route::match(['get', 'post'], '{type}/create', 'create')->name('create'); // 推送消息
@@ -65,7 +66,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
 
     Route::resource('node', NodeController::class)->except('show');
     Route::prefix('node')->name('node.')->controller(NodeController::class)->group(function () {
-        Route::get('clone/{node}', 'clone')->name('clone'); // 节点流量监控
+        Route::get('clone/{node}', 'clone')->name('clone'); // 克隆节点
         Route::get('monitor/{node}', 'nodeMonitor')->name('monitor'); // 节点流量监控
         Route::post('check/{node?}', 'checkNode')->name('check'); // 节点阻断检测
         Route::post('refreshGeo/{node?}', 'refreshGeo')->name('geo'); // 更新节点地理位置
@@ -90,6 +91,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
         Route::post('/', 'generate')->name('create'); // 生成邀请码
         Route::get('/export', 'export')->name('export'); // 导出邀请码
     });
+
     Route::prefix('aff')->name('aff.')->controller(AffiliateController::class)->group(function () {
         Route::get('/', 'index')->name('index'); // 提现申请列表
         Route::get('rebate', 'rebate')->name('rebate'); // 返利流水记录
@@ -99,8 +101,9 @@ Route::prefix('admin')->name('admin.')->group(function () {
 
     Route::controller(LogsController::class)->group(function () {
         Route::get('order', 'orderList')->name('order'); // 订单列表
-        Route::post('order/edit', 'changeOrderStatus')->name('order.edit'); // 订单列表
+        Route::post('order/edit', 'changeOrderStatus')->name('order.edit'); // 订单状态修改
     });
+
     Route::prefix('report')->name('report.')->controller(ReportController::class)->group(function () {
         Route::get('accounting', 'accounting')->name('accounting'); // 流水账簿
         Route::get('user/analysis', 'userAnalysis')->name('userAnalysis'); // 用户流量分析
@@ -117,6 +120,7 @@ Route::prefix('admin')->name('admin.')->group(function () {
         Route::get('onlineIPMonitor', 'onlineIPMonitor')->name('online'); // 在线IP监控
         Route::get('notification', 'notificationLog')->name('notify'); // 邮件发送日志
     });
+
     Route::get('payment/callbackList', [LogsController::class, 'callbackList'])->name('payment.callback'); // 支付回调日志
 
     // 工具相关
@@ -129,11 +133,11 @@ Route::prefix('admin')->name('admin.')->group(function () {
     });
 
     Route::prefix('config')->name('config.')->group(function () {
-        Route::resource('country', CountryController::class)->only('store', 'update', 'destroy'); // 等级配置
+        Route::resource('country', CountryController::class)->only('store', 'update', 'destroy'); // 国家配置
         Route::resource('filter', EmailFilterController::class)->only('index', 'store', 'destroy'); // 邮箱过滤
         Route::resource('label', LabelController::class)->only('store', 'update', 'destroy'); // 标签配置
         Route::resource('level', LevelController::class)->only('store', 'update', 'destroy'); // 等级配置
-        Route::resource('ss', SsConfigController::class)->only('store', 'update', 'destroy'); // ss配置
+        Route::resource('ss', SsConfigController::class)->only('store', 'update', 'destroy'); // SS配置
         Route::resource('category', CategoryController::class)->only('store', 'update', 'destroy'); // 商品分类配置
     });
 
@@ -147,5 +151,6 @@ Route::prefix('admin')->name('admin.')->group(function () {
         Route::post('sendTestNotification', 'sendTestNotification')->name('test.notify'); // 推送通知测试
         Route::get('config', 'common')->name('config.index'); // 系统通用配置
     });
+
     Route::get('epayInfo', [EPay::class, 'queryInfo'])->name('test.epay'); // 易支付信息
 });

+ 26 - 22
routes/api.php

@@ -8,34 +8,34 @@ use App\Http\Controllers\Api\WebApi\SSRController;
 use App\Http\Controllers\Api\WebApi\TrojanController;
 use App\Http\Controllers\Api\WebApi\V2RayController;
 
-Route::domain(sysConfig('web_api_url') ?: sysConfig('website_url'))->middleware('webApi')->group(function () { // 后端WEBAPI
-    Route::prefix('{prefix}')->controller(CoreController::class)->group(function () { // core function of web api
-        foreach (
-            [
-                Route::post('nodeStatus/{node}', 'setNodeStatus'), // 上报节点心跳信息
-                Route::post('nodeOnline/{node}', 'setNodeOnline'), // 上报节点在线人数
-                Route::post('userTraffic/{node}', 'setUserTraffic'), // 上报用户流量日志
-                Route::get('nodeRule/{node}', 'getNodeRule'), // 获取节点的审计规则
-                Route::post('trigger/{node}', 'addRuleLog'), // 上报用户触发的审计规则记录
-            ] as $route
-        ) {
+// 后端WEBAPI
+Route::domain(sysConfig('web_api_url') ?: sysConfig('website_url'))->middleware('webApi')->group(function () {
+    // 核心功能路由
+    Route::prefix('{prefix}')->controller(CoreController::class)->group(function () {
+        foreach ([
+            Route::post('nodeStatus/{node}', 'setNodeStatus'), // 上报节点心跳信息
+            Route::post('nodeOnline/{node}', 'setNodeOnline'), // 上报节点在线人数
+            Route::post('userTraffic/{node}', 'setUserTraffic'), // 上报用户流量日志
+            Route::get('nodeRule/{node}', 'getNodeRule'), // 获取节点的审计规则
+            Route::post('trigger/{node}', 'addRuleLog'), // 上报用户触发的审计规则记录
+        ] as $route) {
             $route->where('prefix', 'ss/v1|ssr/v1|web/v1|vnet/v2|v2ray/v1|trojan/v1');
         }
     });
 
-    Route::prefix('ss/v1')->controller(SSController::class)->group(function () { // ss后端WEBAPI V1版
+    // SS后端WEBAPI V1版
+    Route::prefix('ss/v1')->controller(SSController::class)->group(function () {
         Route::get('node/{node}', 'getNodeInfo'); // 获取节点信息
         Route::get('userList/{node}', 'getUserList'); // 获取节点可用的用户列表
     });
 
-    Route::prefix('{prefix}')->controller(SSRController::class)->group(function () { // SSR后端WEBAPI V1版
-        foreach (
-            [
-                Route::get('node/{node}', 'getNodeInfo'), // 获取节点信息
-                Route::get('userList/{node}', 'getUserList'), // 获取节点可用的用户列表
-            ] as $route
-        ) {
-            $route->where('prefix', 'ssr/v1|web/v1|vnet/v2'); // VNet后端WEBAPI web/v1 vnet/v2 需要移除
+    // SSR后端WEBAPI V1版
+    Route::prefix('{prefix}')->controller(SSRController::class)->group(function () {
+        foreach ([
+            Route::get('node/{node}', 'getNodeInfo'), // 获取节点信息
+            Route::get('userList/{node}', 'getUserList'), // 获取节点可用的用户列表
+        ] as $route) {
+            $route->where('prefix', 'ssr/v1|web/v1|vnet/v2'); // SSR/VNet后端WEBAPI
         }
     });
 
@@ -53,17 +53,21 @@ Route::domain(sysConfig('web_api_url') ?: sysConfig('website_url'))->middleware(
     });
 });
 
-Route::prefix('v1')->group(function () { // 客户端API
+// 客户端API
+Route::prefix('v1')->group(function () {
     Route::controller(AuthController::class)->group(function () {
         Route::post('login', 'login'); // 登录
         Route::post('register', 'register'); // 注册
         Route::get('logout', 'logout'); // 登出
     });
+
     Route::controller(ClientController::class)->group(function () {
         Route::get('getconfig', 'getConfig'); // 获取配置文件
         Route::get('version/update', 'checkClientVersion'); // 检查更新
         Route::get('shop', 'shop'); // 获取商品列表
-        Route::middleware('auth.client')->group(function () { // 用户验证
+
+        // 用户验证
+        Route::middleware('auth.client')->group(function () {
             Route::get('getclash', 'downloadProxies'); // 下载节点配置
             Route::get('getuserinfo', 'getUserInfo'); // 获取用户信息
             Route::post('doCheckIn', 'checkIn'); // 签到

+ 2 - 0
routes/channels.php

@@ -15,11 +15,13 @@ use Illuminate\Support\Facades\Broadcast;
 |
 */
 
+// 支付状态更新频道
 Broadcast::channel('payment-status.{tradeNo}', static function ($user, $tradeNo) {
     // 检查订单是否属于该用户
     return $user->id === Payment::whereTradeNo($tradeNo)->first()?->user->id;
 });
 
+// 节点相关操作频道
 Broadcast::channel('node.{type}.{nodeId}', static function ($user, $type, $nodeId) {
     // 验证用户权限和节点访问权限
     if (! $user->can("admin.node.$type")) {

+ 9 - 4
routes/user.php

@@ -10,8 +10,10 @@ use App\Http\Controllers\User\ShopController;
 use App\Http\Controllers\User\TicketController;
 use App\Http\Controllers\UserController;
 use App\Utils\Avatar;
+use App\Utils\Helpers;
 use App\Utils\Payments\Manual;
 use App\Utils\Payments\Stripe;
+use Illuminate\Support\Str;
 
 Route::controller(UserController::class)->group(function () {
     Route::get('/', 'index')->name('home'); // 用户首页
@@ -78,7 +80,10 @@ Route::prefix('pay')->group(function () {
     Route::get('/stripe/{session_id}', [Stripe::class, 'redirectPage'])->name('stripe.checkout'); // Stripe Checkout page
 });
 
-Route::get('create/string', [Str::class, 'random'])->name('createStr'); // 生成随机密码
-Route::get('create/uuid', [Str::class, 'uuid'])->name('createUUID'); // 生成UUID
-Route::get('get/avatar', [Avatar::class, 'get'])->name('getAvatar'); // 获取随机头像
-Route::get('get/port', [Helpers::class, 'getPort'])->name('getPort'); // 获取端口
+// 工具类路由
+Route::prefix('tools')->group(function () {
+    Route::get('create/string', [Str::class, 'random'])->name('createStr'); // 生成随机密码
+    Route::get('create/uuid', [Str::class, 'uuid'])->name('createUUID'); // 生成UUID
+    Route::get('get/avatar', [Avatar::class, 'get'])->name('getAvatar'); // 获取随机头像
+    Route::get('get/port', [Helpers::class, 'getPort'])->name('getPort'); // 获取端口
+});

+ 15 - 6
routes/web.php

@@ -8,21 +8,27 @@ use App\Http\Controllers\PaymentController;
 use App\Http\Controllers\TelegramController;
 use App\Http\Controllers\User\SubscribeController;
 
+// 订阅和支付回调路由(仅在配置完整时启用)
 if (config('app.key') && config('settings')) {
+    // 节点订阅路由
     Route::domain(sysConfig('subscribe_domain') ?: sysConfig('website_url'))->group(function () {
         Route::get('s/{code}', [SubscribeController::class, 'getSubscribeByCode'])->name('sub'); // 节点订阅
         Route::get('subscribe/{code}', [SubscribeController::class, 'index'])->name('subscribe.index'); // 节点订阅页面
     });
 
+    // 支付回调路由
     Route::domain(sysConfig('payment_callback_url') ?: sysConfig('website_url'))->match(['get', 'post'], 'callback/notify', [PaymentController::class, 'notify'])->name('payment.notify'); // 支付回调
 }
 
-Route::post('api/telegram/webhook', [TelegramController::class, 'webhook'])->middleware('telegram'); // Telegram fallback
+// API Webhook 路由
+Route::post('api/telegram/webhook', [TelegramController::class, 'webhook'])->middleware('telegram'); // Telegram webhook
 Route::get('api/wechat/verify', [WeChatChannel::class, 'verify'])->name('wechat.verify'); // 微信回调验证
-Route::get('/message/{type}/{msg_id}/show', [MessageController::class, 'index'])->name('message.show'); // 微信回调验证
+Route::get('/message/{type}/{msg_id}/show', [MessageController::class, 'index'])->name('message.show'); // 消息展示
 
-Route::middleware(['isForbidden', 'affiliate', 'isMaintenance'])->group(function () { // 登录相关
-    Route::prefix('oauth')->name('oauth.')->controller(OAuthController::class)->group(function () { // 用户第三方登录默认登录/转跳方式
+// 认证相关路由
+Route::middleware(['isForbidden', 'affiliate', 'isMaintenance'])->group(function () {
+    // OAuth 第三方登录
+    Route::prefix('oauth')->name('oauth.')->controller(OAuthController::class)->group(function () {
         Route::get('{provider}/redirect/{operation}', 'redirect')->whereIn('operation', ['bind', 'register', 'login'])->name('route'); // 转跳
         Route::get('{provider}/unbind', 'unbind')->name('unbind'); // 解绑
         Route::get('{provider}/login', 'login')->name('login'); // 登录 callback
@@ -30,6 +36,7 @@ Route::middleware(['isForbidden', 'affiliate', 'isMaintenance'])->group(function
         Route::get('{provider}/bind', 'bind')->name('bind'); // 绑定 callback
     });
 
+    // 认证相关路由
     Route::controller(AuthController::class)->group(function () {
         Route::get('lang/{locale}', 'switchLang')->name('lang')->withoutMiddleware('isMaintenance'); // 语言切换
         Route::get('login', 'showLoginForm')->middleware('isSecurity')->name('login'); // 登录页面
@@ -45,5 +52,7 @@ Route::middleware(['isForbidden', 'affiliate', 'isMaintenance'])->group(function
         Route::get('free', 'free')->name('freeInvitationCode'); // 免费邀请码
     });
 });
-Route::get('admin/login', [AuthController::class, 'showLoginForm'])->name('admin.login')->middleware('isForbidden', 'isSecurity'); // 管理登录页面
-Route::post('admin/login', [AuthController::class, 'login'])->middleware('isSecurity')->name('admin.login.post'); // 管理登录
+
+// 管理员登录路由
+Route::get('admin/login', [AuthController::class, 'showLoginForm'])->name('admin.login')->middleware('isForbidden', 'isSecurity'); // 管理员登录页面
+Route::post('admin/login', [AuthController::class, 'login'])->middleware('isSecurity')->name('admin.login.post'); // 管理员登录