admin.php 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. <?php
  2. use App\Http\Controllers\Admin\AffiliateController;
  3. use App\Http\Controllers\Admin\ArticleController;
  4. use App\Http\Controllers\Admin\CertController;
  5. use App\Http\Controllers\Admin\Config\CategoryController;
  6. use App\Http\Controllers\Admin\Config\CountryController;
  7. use App\Http\Controllers\Admin\Config\EmailFilterController;
  8. use App\Http\Controllers\Admin\Config\LabelController;
  9. use App\Http\Controllers\Admin\Config\LevelController;
  10. use App\Http\Controllers\Admin\Config\SsConfigController;
  11. use App\Http\Controllers\Admin\CouponController;
  12. use App\Http\Controllers\Admin\InviteController;
  13. use App\Http\Controllers\Admin\LogsController;
  14. use App\Http\Controllers\Admin\MarketingController;
  15. use App\Http\Controllers\Admin\NodeAuthController;
  16. use App\Http\Controllers\Admin\NodeController;
  17. use App\Http\Controllers\Admin\PermissionController;
  18. use App\Http\Controllers\Admin\ReportController;
  19. use App\Http\Controllers\Admin\RoleController;
  20. use App\Http\Controllers\Admin\RuleController;
  21. use App\Http\Controllers\Admin\RuleGroupController;
  22. use App\Http\Controllers\Admin\ShopController;
  23. use App\Http\Controllers\Admin\SubscribeController;
  24. use App\Http\Controllers\Admin\SystemController;
  25. use App\Http\Controllers\Admin\TicketController;
  26. use App\Http\Controllers\Admin\ToolsController;
  27. use App\Http\Controllers\Admin\UserController;
  28. use App\Http\Controllers\Admin\UserGroupController;
  29. use App\Http\Controllers\AdminController;
  30. use App\Utils\Payments\EPay;
  31. Route::prefix('admin')->name('admin.')->group(function () {
  32. Route::get('/', [AdminController::class, 'index'])->name('index'); // 后台首页
  33. Route::resource('user', UserController::class)->except('show');
  34. Route::name('user.')->group(function () {
  35. Route::controller(UserController::class)->group(function () {
  36. Route::get('oauth', 'oauth')->name('oauth'); // 第三方登录信息
  37. Route::post('batchAdd', 'batchAddUsers')->name('batch'); // 批量生成账号
  38. Route::post('switch/{user}', 'switchToUser')->name('switch'); // 转换成某个用户的身份
  39. Route::post('updateCredit/{user}', 'handleUserCredit')->name('updateCredit'); // 用户余额充值
  40. Route::post('reset/{user}', 'resetTraffic')->name('reset'); // 重置用户流量
  41. Route::get('export/{user}', 'export')->name('export'); // 查看配置信息
  42. Route::post('export/{user}', 'exportProxyConfig')->name('exportProxy'); // 读取配置信息
  43. Route::post('vnet/{user}', 'VNetInfo')->name('VNetInfo'); // VNet用户开通检测
  44. });
  45. Route::resource('group', UserGroupController::class)->except('show'); // 用户分组管理
  46. Route::get('monitor/{user}', [LogsController::class, 'userTrafficMonitor'])->name('monitor'); // 用户流量监控
  47. Route::get('online/{id}', [LogsController::class, 'onlineIPMonitor'])->name('online'); // 在线IP监控
  48. });
  49. Route::prefix('subscribe')->name('subscribe.')->controller(SubscribeController::class)->group(function () {
  50. Route::get('/', 'index')->name('index'); // 订阅码列表
  51. Route::get('log/{userSubscribe}', 'subscribeLog')->name('log'); // 订阅码记录
  52. Route::post('set/{userSubscribe}', 'setSubscribeStatus')->name('set'); // 启用禁用用户的订阅
  53. });
  54. Route::resource('ticket', TicketController::class)->except('create', 'show');
  55. Route::resource('article', ArticleController::class);
  56. Route::prefix('marketing')->name('marketing.')->controller(MarketingController::class)->group(function () {
  57. Route::get('/', 'index')->name('index'); // 营销消息列表
  58. Route::match(['get', 'post'], '{type}/create', 'create')->name('create'); // 推送消息
  59. });
  60. Route::resource('node', NodeController::class)->except('show');
  61. Route::prefix('node')->name('node.')->controller(NodeController::class)->group(function () {
  62. Route::get('clone/{node}', 'clone')->name('clone'); // 节点流量监控
  63. Route::get('monitor/{node}', 'nodeMonitor')->name('monitor'); // 节点流量监控
  64. Route::post('check/{node?}', 'checkNode')->name('check'); // 节点阻断检测
  65. Route::post('refreshGeo/{node?}', 'refreshGeo')->name('geo'); // 更新节点地理位置
  66. Route::post('reload/{node?}', 'reload')->name('reload'); // 重载节点
  67. Route::resource('auth', NodeAuthController::class)->except(['create', 'show', 'edit']); // 节点授权相关
  68. Route::resource('cert', CertController::class)->except('show'); // 节点域名tls相关
  69. });
  70. Route::resource('rule', RuleController::class)->except('create', 'edit', 'show'); // 节点审计规则管理
  71. Route::name('rule.')->prefix('rule')->group(function () {
  72. Route::resource('group', RuleGroupController::class)->except('show');
  73. Route::get('log', [RuleController::class, 'ruleLogList'])->name('log'); // 用户触发审计规则日志
  74. Route::post('clear', [RuleController::class, 'clearLog'])->name('clear'); // 清除所有审计触发日志
  75. });
  76. Route::resource('goods', ShopController::class)->except('show'); // 商品管理
  77. Route::get('coupon/export', [CouponController::class, 'exportCoupon'])->name('coupon.export'); // 导出优惠券
  78. Route::resource('coupon', CouponController::class)->except('edit', 'update'); // 优惠券
  79. Route::prefix('invite')->name('invite.')->controller(InviteController::class)->group(function () {
  80. Route::get('/', 'index')->name('index'); // 邀请码列表
  81. Route::post('/', 'generate')->name('create'); // 生成邀请码
  82. Route::get('/export', 'export')->name('export'); // 导出邀请码
  83. });
  84. Route::prefix('aff')->name('aff.')->controller(AffiliateController::class)->group(function () {
  85. Route::get('/', 'index')->name('index'); // 提现申请列表
  86. Route::get('rebate', 'rebate')->name('rebate'); // 返利流水记录
  87. Route::get('/{aff}', 'detail')->name('detail'); // 提现申请详情
  88. Route::put('/{aff}', 'setStatus')->name('setStatus'); // 设置提现申请状态
  89. });
  90. Route::controller(LogsController::class)->group(function () {
  91. Route::get('order', 'orderList')->name('order'); // 订单列表
  92. Route::post('order/edit', 'changeOrderStatus')->name('order.edit'); // 订单列表
  93. });
  94. Route::prefix('report')->name('report.')->controller(ReportController::class)->group(function () {
  95. Route::get('accounting', 'accounting')->name('accounting'); // 流水账簿
  96. Route::get('user/analysis', 'userAnalysis')->name('userAnalysis'); // 用户流量分析
  97. Route::get('node/analysis', 'nodeAnalysis')->name('nodeAnalysis'); // 节点流量分析
  98. Route::get('site/analysis', 'siteAnalysis')->name('siteAnalysis'); // 网站流量分析
  99. });
  100. Route::prefix('log')->name('log.')->controller(LogsController::class)->group(function () {
  101. Route::get('traffic', 'trafficLog')->name('traffic'); // 流量日志
  102. Route::get('userCredit', 'userCreditLogList')->name('credit'); // 余额变动记录
  103. Route::get('userTraffic', 'userTrafficLogList')->name('flow'); // 流量变动记录
  104. Route::get('userBan', 'userBanLogList')->name('ban'); // 用户封禁记录
  105. Route::get('userOnline', 'userOnlineIPList')->name('ip'); // 用户在线IP记录
  106. Route::get('onlineIPMonitor', 'onlineIPMonitor')->name('online'); // 在线IP监控
  107. Route::get('notification', 'notificationLog')->name('notify'); // 邮件发送日志
  108. });
  109. Route::get('payment/callbackList', [LogsController::class, 'callbackList'])->name('payment.callback'); // 支付回调日志
  110. // 工具相关
  111. Route::prefix('tools')->name('tools.')->controller(ToolsController::class)->group(function () {
  112. Route::match(['get', 'post'], 'decompile', 'decompile')->name('decompile'); // SS(R)链接反解析
  113. Route::get('download', 'download')->name('download'); // 下载转换过的JSON配置
  114. Route::match(['get', 'post'], 'convert', 'convert')->name('convert'); // 格式转换
  115. Route::match(['get', 'post'], 'import', 'import')->name('import'); // 数据导入
  116. Route::get('analysis', 'analysis')->name('analysis'); // 日志分析
  117. });
  118. Route::prefix('config')->name('config.')->group(function () {
  119. Route::resource('country', CountryController::class)->only('store', 'update', 'destroy'); // 等级配置
  120. Route::resource('filter', EmailFilterController::class)->only('index', 'store', 'destroy'); // 邮箱过滤
  121. Route::resource('label', LabelController::class)->only('store', 'update', 'destroy'); // 标签配置
  122. Route::resource('level', LevelController::class)->only('store', 'update', 'destroy'); // 等级配置
  123. Route::resource('ss', SsConfigController::class)->only('store', 'update', 'destroy'); // ss配置
  124. Route::resource('category', CategoryController::class)->only('store', 'update', 'destroy'); // 商品分类配置
  125. });
  126. Route::resource('permission', PermissionController::class)->except('show');
  127. Route::resource('role', RoleController::class)->except('show');
  128. Route::controller(SystemController::class)->group(function () {
  129. Route::get('system', 'index')->name('system.index'); // 系统设置
  130. Route::post('setExtend', 'setExtend')->name('system.extend'); // 设置logo图片文件
  131. Route::post('setConfig', 'setConfig')->name('system.update'); // 设置某个配置项
  132. Route::post('sendTestNotification', 'sendTestNotification')->name('test.notify'); // 推送通知测试
  133. Route::get('config', 'common')->name('config.index'); // 系统通用配置
  134. });
  135. Route::get('epayInfo', [EPay::class, 'queryInfo'])->name('test.epay'); // 易支付信息
  136. });