Explorar el Código

Update style & Add 重置订阅同时重置uuid

兔姬桑 hace 4 años
padre
commit
ff742e88c9
Se han modificado 97 ficheros con 816 adiciones y 836 borrados
  1. 1 2
      app/Components/DDNS/CloudFlare.php
  2. 1 2
      app/Console/Commands/ServiceTimer.php
  3. 4 2
      app/Console/Commands/UserTrafficAbnormalAutoWarning.php
  4. 3 7
      app/Console/Commands/fixDailyTrafficLogError.php
  5. 9 4
      app/Exceptions/Handler.php
  6. 2 4
      app/Http/Controllers/Admin/CouponController.php
  7. 5 2
      app/Http/Controllers/Admin/ToolsController.php
  8. 1 2
      app/Http/Controllers/AdminController.php
  9. 1 2
      app/Http/Controllers/Api/WebApi/V2RayController.php
  10. 1 2
      app/Http/Controllers/Api/WebApi/VNetController.php
  11. 18 19
      app/Http/Controllers/Controller.php
  12. 18 17
      app/Http/Controllers/Gateway/Stripe.php
  13. 3 4
      app/Http/Controllers/User/SubscribeController.php
  14. 15 6
      app/Http/Controllers/UserController.php
  15. 4 2
      app/Observers/RuleGroupObserver.php
  16. 1 2
      app/Providers/AppServiceProvider.php
  17. 29 9
      app/Services/OrderService.php
  18. 36 36
      composer.lock
  19. BIN
      public/assets/images/payment/stripe.png
  20. 4 5
      resources/views/admin/aff/index.blade.php
  21. 2 2
      resources/views/admin/aff/rebate.blade.php
  22. 4 5
      resources/views/admin/article/create.blade.php
  23. 10 9
      resources/views/admin/article/edit.blade.php
  24. 2 3
      resources/views/admin/article/index.blade.php
  25. 32 40
      resources/views/admin/config/config.blade.php
  26. 4 6
      resources/views/admin/config/emailFilter.blade.php
  27. 240 213
      resources/views/admin/config/system.blade.php
  28. 11 17
      resources/views/admin/coupon/create.blade.php
  29. 4 5
      resources/views/admin/coupon/index.blade.php
  30. 1 1
      resources/views/admin/index.blade.php
  31. 4 5
      resources/views/admin/inviteList.blade.php
  32. 2 2
      resources/views/admin/layouts.blade.php
  33. 2 2
      resources/views/admin/logs/callback.blade.php
  34. 1 1
      resources/views/admin/logs/notification.blade.php
  35. 1 1
      resources/views/admin/logs/onlineIPMonitor.blade.php
  36. 2 2
      resources/views/admin/logs/order.blade.php
  37. 3 2
      resources/views/admin/logs/traffic.blade.php
  38. 1 1
      resources/views/admin/logs/userBanHistory.blade.php
  39. 1 1
      resources/views/admin/logs/userCreditHistory.blade.php
  40. 2 2
      resources/views/admin/logs/userMonitor.blade.php
  41. 1 1
      resources/views/admin/logs/userOnlineIP.blade.php
  42. 1 1
      resources/views/admin/logs/userTraffic.blade.php
  43. 1 1
      resources/views/admin/marketing/emailList.blade.php
  44. 6 6
      resources/views/admin/marketing/pushList.blade.php
  45. 7 11
      resources/views/admin/node/auth.blade.php
  46. 2 3
      resources/views/admin/node/cert/index.blade.php
  47. 12 6
      resources/views/admin/node/cert/info.blade.php
  48. 18 23
      resources/views/admin/node/index.blade.php
  49. 29 27
      resources/views/admin/node/info.blade.php
  50. 8 8
      resources/views/admin/rule/group/assign.blade.php
  51. 5 6
      resources/views/admin/rule/group/index.blade.php
  52. 8 8
      resources/views/admin/rule/group/info.blade.php
  53. 8 11
      resources/views/admin/rule/index.blade.php
  54. 3 5
      resources/views/admin/rule/log.blade.php
  55. 3 4
      resources/views/admin/shop/index.blade.php
  56. 11 18
      resources/views/admin/shop/info.blade.php
  57. 4 5
      resources/views/admin/subscribe/index.blade.php
  58. 4 6
      resources/views/admin/ticket/index.blade.php
  59. 13 10
      resources/views/admin/ticket/reply.blade.php
  60. 4 4
      resources/views/admin/tools/analysis.blade.php
  61. 2 3
      resources/views/admin/tools/convert.blade.php
  62. 2 3
      resources/views/admin/tools/decompile.blade.php
  63. 1 1
      resources/views/admin/user/export.blade.php
  64. 2 3
      resources/views/admin/user/group/index.blade.php
  65. 10 9
      resources/views/admin/user/group/info.blade.php
  66. 14 20
      resources/views/admin/user/index.blade.php
  67. 20 23
      resources/views/admin/user/info.blade.php
  68. 2 2
      resources/views/auth/error.blade.php
  69. 4 3
      resources/views/auth/layouts.blade.php
  70. 1 1
      resources/views/auth/login.blade.php
  71. 3 3
      resources/views/auth/maintenance.blade.php
  72. 8 9
      resources/views/auth/register.blade.php
  73. 2 2
      resources/views/emails/activeUser.blade.php
  74. 2 2
      resources/views/emails/closeTicket.blade.php
  75. 2 2
      resources/views/emails/newTicket.blade.php
  76. 2 2
      resources/views/emails/nodeCrashWarning.blade.php
  77. 2 2
      resources/views/emails/replyTicket.blade.php
  78. 3 3
      resources/views/emails/resetPassword.blade.php
  79. 2 2
      resources/views/emails/sendUserInfo.blade.php
  80. 2 2
      resources/views/emails/sendVerifyCode.blade.php
  81. 2 2
      resources/views/emails/userExpireWarning.blade.php
  82. 2 2
      resources/views/emails/userExpireWarningToday.blade.php
  83. 2 2
      resources/views/emails/userTrafficWarning.blade.php
  84. 16 30
      resources/views/user/buy.blade.php
  85. 11 11
      resources/views/user/help.blade.php
  86. 8 8
      resources/views/user/index.blade.php
  87. 4 5
      resources/views/user/invite.blade.php
  88. 6 10
      resources/views/user/invoices.blade.php
  89. 6 6
      resources/views/user/layouts.blade.php
  90. 6 5
      resources/views/user/nodeList.blade.php
  91. 4 5
      resources/views/user/payment.blade.php
  92. 5 6
      resources/views/user/referral.blade.php
  93. 5 6
      resources/views/user/replyTicket.blade.php
  94. 16 23
      resources/views/user/services.blade.php
  95. 1 1
      resources/views/user/stripe-checkout.blade.php
  96. 2 3
      resources/views/user/ticketList.blade.php
  97. 1 1
      routes/web.php

+ 1 - 2
app/Components/DDNS/CloudFlare.php

@@ -55,8 +55,7 @@ class CloudFlare
                     $response = $this->client->post(self::$apiHost.'zones/'.$this->zoneIdentifier[2].'/dns_records', $data);
                     break;
                 case 'update':
-                    $response = $this->client->put(self::$apiHost.'zones/'.$this->zoneIdentifier[2].'/dns_records/'.$id,
-                        $data);
+                    $response = $this->client->put(self::$apiHost.'zones/'.$this->zoneIdentifier[2].'/dns_records/'.$id, $data);
                     break;
                 case 'delete':
                     $response = $this->client->delete(self::$apiHost.'zones/'.$this->zoneIdentifier[2].'/dns_records/'.$id);

+ 1 - 2
app/Console/Commands/ServiceTimer.php

@@ -39,8 +39,7 @@ class ServiceTimer extends Command
                 'reset_time'      => null,
                 'level'           => 0,
             ]);
-            Helpers::addUserTrafficModifyLog($user->id, $order->id, $user->transfer_enable, 0,
-                '[定时任务]用户所购商品到期,扣减商品对应的流量');
+            Helpers::addUserTrafficModifyLog($user->id, $order->id, $user->transfer_enable, 0, '[定时任务]用户所购商品到期,扣减商品对应的流量');
 
             // 过期本订单
             $order->update(['is_expire' => 1]);

+ 4 - 2
app/Console/Commands/UserTrafficAbnormalAutoWarning.php

@@ -45,8 +45,10 @@ class UserTrafficAbnormalAutoWarning extends Command
                     ->selectRaw('user_id, sum(`u`) as totalU, sum(`d`) as totalD, sum(total) as totalTraffic')
                     ->first();
 
-                PushNotification::send('流量异常用户提醒',
-                    "用户**{$user->email}(ID:{$user->id})**,最近1小时**上行流量:".flowAutoShow($traffic->totalU).',下行流量:'.flowAutoShow($traffic->totalD).',共计:'.flowAutoShow($traffic->totalTraffic).'**。');
+                PushNotification::send(
+                    '流量异常用户提醒',
+                    "用户**{$user->email}(ID:{$user->id})**,最近1小时**上行流量:".flowAutoShow($traffic->totalU).',下行流量:'.flowAutoShow($traffic->totalD).',共计:'.flowAutoShow($traffic->totalTraffic).'**。'
+                );
             }
         }
     }

+ 3 - 7
app/Console/Commands/fixDailyTrafficLogError.php

@@ -32,8 +32,7 @@ class fixDailyTrafficLogError extends Command
         Log::info('----------------------------【添加节点流量日志】开始----------------------------');
         foreach ($nodeArray as $nodeId) {
             $query = UserDataFlowLog::whereNodeId($nodeId)
-                ->whereBetween('log_time',
-                    [strtotime(date('Y-m-d', strtotime('-1 days'))), strtotime($this->end)]);
+                ->whereBetween('log_time', [strtotime(date('Y-m-d', strtotime('-1 days'))), strtotime($this->end)]);
 
             $u = $query->sum('u');
             $d = $query->sum('d');
@@ -54,9 +53,7 @@ class fixDailyTrafficLogError extends Command
         Log::info('----------------------------【节点流量日志修正】结束----------------------------');
         Log::info('----------------------------【用户流量日志修正】开始----------------------------');
         foreach (UserDailyDataFlow::all() as $log) {
-            UserDailyDataFlow::whereId($log->id)->update([
-                'created_at' => date('Y-m-d H:i:s', strtotime("$log->created_at -1 days")),
-            ]);
+            UserDailyDataFlow::whereId($log->id)->update(['created_at' => date('Y-m-d H:i:s', strtotime("$log->created_at -1 days"))]);
         }
         Log::info('----------------------------【用户个人流量日志修正】开始----------------------------');
         foreach (UserDataFlowLog::distinct()->pluck('user_id')->toArray() as $userId) {
@@ -75,8 +72,7 @@ class fixDailyTrafficLogError extends Command
     private function statisticsByUser($user_id, $node_id = 0): void
     {
         $query = UserDataFlowLog::whereUserId($user_id)
-            ->whereBetween('log_time',
-                [strtotime(date('Y-m-d', strtotime('-1 days'))), strtotime($this->end)]);
+            ->whereBetween('log_time', [strtotime(date('Y-m-d', strtotime('-1 days'))), strtotime($this->end)]);
 
         if ($node_id) {
             $query->whereNodeId($node_id);

+ 9 - 4
app/Exceptions/Handler.php

@@ -95,8 +95,11 @@ class Handler extends ExceptionHandler
                         ]);
                     }
 
-                    return Response::view('auth.error',
-                        ['message' => trans('error.RefreshPage').'<a href="'.route('login').'" target="_blank">'.trans('error.Refresh').'</a>'], 419);
+                    return Response::view(
+                        'auth.error',
+                        ['message' => trans('error.RefreshPage').'<a href="'.route('login').'" target="_blank">'.trans('error.Refresh').'</a>'],
+                        419
+                    );
                 case $exception instanceof ReflectionException:
                     if ($request->ajax()) {
                         return Response::json(['status' => 'fail', 'message' => trans('error.SystemError')]);
@@ -111,9 +114,11 @@ class Handler extends ExceptionHandler
                         ]);
                     }
 
-                    return Response::view('auth.error',
+                    return Response::view(
+                        'auth.error',
                         ['message' => trans('error.SystemError').', '.trans('error.Visit').'<a href="'.route('admin.log.viewer').'" target="_blank">'.trans('error.log').'</a>'],
-                        500);
+                        500
+                    );
                 case $exception instanceof ConnectionException:
                     if ($request->ajax()) {
                         return Response::json([

+ 2 - 4
app/Http/Controllers/Admin/CouponController.php

@@ -131,8 +131,7 @@ class CouponController extends Controller
             $sheet->fromArray(['名称', '使用次数', '有效期', '券码', '金额(元)', '使用限制(元)'], null);
             foreach ($voucherList as $k => $vo) {
                 $dateRange = date('Y-m-d', $vo->start_time).' ~ '.date('Y-m-d', $vo->end_time);
-                $sheet->fromArray([$vo->name, $vo->usable_times ?? '无限制', $dateRange, $vo->sn, $vo->value, $vo->rule], null,
-                    'A'.($k + 2));
+                $sheet->fromArray([$vo->name, $vo->usable_times ?? '无限制', $dateRange, $vo->sn, $vo->value, $vo->rule], null, 'A'.($k + 2));
             }
 
             // 折扣券
@@ -143,8 +142,7 @@ class CouponController extends Controller
             $sheet->fromArray(['名称', '使用次数', '有效期', '券码', '折扣(折)', '使用限制(元)'], null);
             foreach ($discountCouponList as $k => $vo) {
                 $dateRange = date('Y-m-d', $vo->start_time).' ~ '.date('Y-m-d', $vo->end_time);
-                $sheet->fromArray([$vo->name, $vo->usable_times ?? '无限制', $dateRange, $vo->sn, $vo->value, $vo->rule], null,
-                    'A'.($k + 2));
+                $sheet->fromArray([$vo->name, $vo->usable_times ?? '无限制', $dateRange, $vo->sn, $vo->value, $vo->rule], null, 'A'.($k + 2));
             }
 
             // 充值券

+ 5 - 2
app/Http/Controllers/Admin/ToolsController.php

@@ -222,8 +222,11 @@ class ToolsController extends Controller
                 if (! empty($tcp_matches)) {
                     $url[] = str_replace('TCP request ', '[TCP] ', $tcp_matches[0]);
                 } else {
-                    preg_match('/UDP data to (25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/',
-                        $log, $udp_matches);
+                    preg_match(
+                        '/UDP data to (25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)/',
+                        $log,
+                        $udp_matches
+                    );
                     if (! empty($udp_matches)) {
                         $url[] = str_replace('UDP data to ', '[UDP] ', $udp_matches[0]);
                     }

+ 1 - 2
app/Http/Controllers/AdminController.php

@@ -45,8 +45,7 @@ class AdminController extends Controller
         $view['activeUserCount'] = User::where('t', '>=', $past)->count(); // 活跃用户数
         $view['unActiveUserCount'] = User::whereEnable(1)->whereBetween('t', [1, $past])->count(); // 不活跃用户数
         $view['onlineUserCount'] = User::where('t', '>=', strtotime('-10 minutes'))->count(); // 10分钟内在线用户数
-        $view['expireWarningUserCount'] = User::whereBetween('expired_at',
-            [date('Y-m-d'), date('Y-m-d', strtotime('+'.sysConfig('expire_days').' days'))])->count(); // 临近过期用户数
+        $view['expireWarningUserCount'] = User::whereBetween('expired_at', [date('Y-m-d'), date('Y-m-d', strtotime('+'.sysConfig('expire_days').' days'))])->count(); // 临近过期用户数
         $view['largeTrafficUserCount'] = User::whereRaw('(u + d) >= 107374182400')->where('status', '<>', -1)->count(); // 流量超过100G的用户
         $view['flowAbnormalUserCount'] = count((new UserHourlyDataFlow)->trafficAbnormal()); // 1小时内流量异常用户
         $view['nodeCount'] = Node::count();

+ 1 - 2
app/Http/Controllers/Api/WebApi/V2RayController.php

@@ -35,8 +35,7 @@ class V2RayController extends BaseController
             'v2_path'         => $node->v2_path,
             'v2_tls'          => $node->v2_tls ? true : false,
             'v2_tls_provider' => $node->tls_provider ?: sysConfig('v2ray_tls_provider'),
-        ]
-        );
+        ]);
     }
 
     // 获取节点可用的用户列表

+ 1 - 2
app/Http/Controllers/Api/WebApi/VNetController.php

@@ -27,8 +27,7 @@ class VNetController extends BaseController
             'push_port'    => $node->push_port,
             'secret'       => $node->auth->secret,
             'redirect_url' => sysConfig('redirect_url'),
-        ]
-        );
+        ]);
     }
 
     // 获取节点可用的用户列表

+ 18 - 19
app/Http/Controllers/Controller.php

@@ -101,8 +101,7 @@ class Controller extends BaseController
             }
 
             $fileName = Str::random(18).".{$type}";
-            if (file_put_contents(public_path($path.$fileName),
-                base64_decode(str_replace($result[1], '', $base64_image_content)))) {
+            if (file_put_contents(public_path($path.$fileName), base64_decode(str_replace($result[1], '', $base64_image_content)))) {
                 chmod(public_path($path.$fileName), 0744);
 
                 return $path.$fileName;
@@ -134,8 +133,18 @@ class Controller extends BaseController
                 // 生成v2ray scheme
                 if ($infoType !== 1) {
                     // 生成v2ray scheme
-                    $data = $this->v2raySubUrl($node->name, $host, $node->v2_port, $user->vmess_id, $node->v2_alter_id,
-                        $node->v2_net, $node->v2_type, $node->v2_host, $node->v2_path, $node->v2_tls ? 'tls' : '');
+                    $data = $this->v2raySubUrl(
+                        $node->name,
+                        $host,
+                        $node->v2_port,
+                        $user->vmess_id,
+                        $node->v2_alter_id,
+                        $node->v2_net,
+                        $node->v2_type,
+                        $node->v2_host,
+                        $node->v2_path,
+                        $node->v2_tls ? 'tls' : ''
+                    );
                 } else {
                     $data = '服务器:'.$host.PHP_EOL.'IPv6:'.($node->ipv6 ?: '').PHP_EOL.'端口:'.$node->v2_port.PHP_EOL.'加密方式:'.$node->v2_method.PHP_EOL.'用户ID:'.$user->vmess_id.PHP_EOL.'额外ID:'.$node->v2_alter_id.PHP_EOL.'传输协议:'.$node->v2_net.PHP_EOL.'伪装类型:'.$node->v2_type.PHP_EOL.'伪装域名:'.($node->v2_host ?: '').PHP_EOL.'路径:'.($node->v2_path ?: '').PHP_EOL.'TLS:'.($node->v2_tls ? 'tls' : '').PHP_EOL;
                 }
@@ -170,9 +179,8 @@ class Controller extends BaseController
 
                 if ($infoType !== 1) {
                     // 生成ss/ssr scheme
-                    $data = $node->compatible ? $this->ssSubUrl($host, $port, $method, $passwd,
-                        $group) : $this->ssrSubUrl($host, $port, $protocol, $method, $obfs, $passwd, $node->obfs_param,
-                        $protocol_param, $node->name, $group, $node->is_udp);
+                    $data = $node->compatible ? $this->ssSubUrl($host, $port, $method, $passwd, $group) :
+                        $this->ssrSubUrl($host, $port, $protocol, $method, $obfs, $passwd, $node->obfs_param, $protocol_param, $node->name, $group, $node->is_udp);
                 } else {
                     // 生成文本配置信息
                     $data = '服务器:'.$host.PHP_EOL.'IPv6:'.$node->ipv6.PHP_EOL.'服务器端口:'.$port.PHP_EOL.'密码:'.$passwd.PHP_EOL.'加密:'.$method.PHP_EOL.($node->compatible ? '' : '协议:'.$protocol.PHP_EOL.'协议参数:'.$protocol_param.PHP_EOL.'混淆:'.$obfs.PHP_EOL.'混淆参数:'.$node->obfs_param.PHP_EOL);
@@ -187,18 +195,9 @@ class Controller extends BaseController
     public function v2raySubUrl($name, $host, $port, $uuid, $alter_id, $net, $type, $domain, $path, $tls): string
     {
         return 'vmess://'.base64url_encode(json_encode([
-            'v'    => '2',
-            'ps'   => $name,
-            'add'  => $host,
-            'port' => $port,
-            'id'   => $uuid,
-            'aid'  => $alter_id,
-            'net'  => $net,
-            'type' => $type,
-            'host' => $domain,
-            'path' => $path,
-            'tls'  => $tls ? 'tls' : '',
-        ], JSON_PRETTY_PRINT));
+                'v'    => '2', 'ps' => $name, 'add' => $host, 'port' => $port, 'id' => $uuid, 'aid' => $alter_id, 'net' => $net,
+                'type' => $type, 'host' => $domain, 'path' => $path, 'tls' => $tls ? 'tls' : ''
+            ], JSON_PRETTY_PRINT));
     }
 
     public function trojanSubUrl($password, $domain, $port, $remark): string

+ 18 - 17
app/Http/Controllers/Gateway/Stripe.php

@@ -6,11 +6,12 @@ use App\Models\Payment;
 use Auth;
 use Exception;
 use Illuminate\Http\JsonResponse;
-use Illuminate\Http\Request;
 use Log;
 use Response;
 use Stripe\Checkout\Session;
+use Stripe\Exception\SignatureVerificationException;
 use Stripe\Webhook;
+use UnexpectedValueException;
 
 class Stripe extends AbstractPayment
 {
@@ -44,26 +45,26 @@ class Stripe extends AbstractPayment
 
         return [
             'payment_method_types' => ['card'],
-            'line_items' => [[
-                'price_data' => [
-                    'currency' => 'usd',
-                    'product_data' => [
-                        'name' => sysConfig('subject_name') ?: sysConfig('website_name'),
+            'line_items'           => [
+                [
+                    'price_data' => [
+                        'currency'     => 'usd',
+                        'product_data' => ['name' => sysConfig('subject_name') ?: sysConfig('website_name')],
+                        'unit_amount'  => $unitAmount,
                     ],
-                    'unit_amount' => $unitAmount,
+                    'quantity'   => 1,
                 ],
-                'quantity' => 1,
-            ]],
-            'mode' => 'payment',
-            'success_url'          => sysConfig('website_url').'/invoices',
-            'cancel_url'          => sysConfig('website_url').'/invoices',
-            'client_reference_id' => $tradeNo,
-            'customer_email' => Auth::getUser()->email,
+            ],
+            'mode'                 => 'payment',
+            'success_url'          => route('invoice'),
+            'cancel_url'           => route('invoice'),
+            'client_reference_id'  => $tradeNo,
+            'customer_email'       => Auth::getUser()->email,
         ];
     }
 
     // redirect to Stripe Payment url
-    public function redirectPage($session_id, request $request)
+    public function redirectPage($session_id)
     {
         return view('user.stripe-checkout', ['session_id' => $session_id]);
     }
@@ -78,11 +79,11 @@ class Stripe extends AbstractPayment
 
         try {
             $event = Webhook::constructEvent($payload, $sigHeader, $endpointSecret);
-        } catch (\UnexpectedValueException $e) {
+        } catch (UnexpectedValueException $e) {
             // Invalid payload
             http_response_code(400);
             exit();
-        } catch (\Stripe\Exception\SignatureVerificationException $e) {
+        } catch (SignatureVerificationException $e) {
             // Invalid signature
             http_response_code(400);
             exit();

+ 3 - 4
app/Http/Controllers/User/SubscribeController.php

@@ -123,10 +123,9 @@ class SubscribeController extends Controller
         switch ($this->subType) {
             case 2:
                 $result = 'vmess://'.base64url_encode(json_encode([
-                    'v'   => '2', 'ps' => $text, 'add' => '0.0.0.0', 'port' => 0, 'id' => 0,
-                    'aid' => 0, 'net' => 'tcp', 'type' => 'none', 'host' => '', 'path' => '/',
-                    'tls' => 'tls',
-                ], JSON_PRETTY_PRINT));
+                        'v'    => '2', 'ps' => $text, 'add' => '0.0.0.0', 'port' => 0, 'id' => 0, 'aid' => 0, 'net' => 'tcp',
+                        'type' => 'none', 'host' => '', 'path' => '/', 'tls' => 'tls'
+                    ], JSON_PRETTY_PRINT));
                 break;
             case 3:
                 $result = 'trojan://0@0.0.0.0:0?peer=0.0.0.0#'.rawurlencode($text);

+ 15 - 6
app/Http/Controllers/UserController.php

@@ -406,8 +406,11 @@ class UserController extends Controller
     public function invite()
     {
         if (Order::uid()->active()->where('origin_amount', '>', 0)->doesntExist()) {
-            return Response::view('auth.error',
-                ['message' => '本功能对非付费用户禁用!请 <a class="btn btn-sm btn-danger" href="/">返 回</a>'], 402);
+            return Response::view(
+                'auth.error',
+                ['message' => '本功能对非付费用户禁用!请 <a class="btn btn-sm btn-danger" href="/">返 回</a>'],
+                402
+            );
         }
 
         $view['num'] = Auth::getUser()->invite_num; // 还可以生成的邀请码数量
@@ -552,8 +555,8 @@ class UserController extends Controller
             // 更换订阅码
             Auth::getUser()->subscribe->update(['code' => Helpers::makeSubscribeCode()]);
 
-            // 更换连接密码
-            Auth::getUser()->update(['passwd' => Str::random()]);
+            // 更换连接信息
+            Auth::getUser()->update(['passwd' => Str::random(), 'vmess_id' => Str::uuid()]);
 
             DB::commit();
 
@@ -605,8 +608,14 @@ class UserController extends Controller
             DB::beginTransaction();
             // 写入日志
             $user = Auth::getUser();
-            Helpers::addUserCreditLog($user->id, 0, $user->credit, $user->credit + $coupon->value, $coupon->value,
-                '用户手动充值 - [充值券:'.$request->input('coupon_sn').']');
+            Helpers::addUserCreditLog(
+                $user->id,
+                0,
+                $user->credit,
+                $user->credit + $coupon->value,
+                $coupon->value,
+                '用户手动充值 - [充值券:'.$request->input('coupon_sn').']'
+            );
 
             // 余额充值
             (new UserService($user))->updateCredit($coupon->value);

+ 4 - 2
app/Observers/RuleGroupObserver.php

@@ -18,8 +18,10 @@ class RuleGroupObserver
                 reloadNode::dispatchNow($nodes);
             }
         } elseif ($ruleGroup->rules && Arr::exists($changes, 'nodes')) {
-            $arrayDiff = array_merge(array_diff($ruleGroup->nodes ?? [], $ruleGroup->getOriginal('nodes') ?? []),
-                array_diff($ruleGroup->getOriginal('nodes') ?? [], $ruleGroup->nodes ?? []));
+            $arrayDiff = array_merge(
+                array_diff($ruleGroup->nodes ?? [], $ruleGroup->getOriginal('nodes') ?? []),
+                array_diff($ruleGroup->getOriginal('nodes') ?? [], $ruleGroup->nodes ?? [])
+            );
 
             if ($arrayDiff) {
                 $nodes = Node::whereType(4)->whereIn('id', $arrayDiff)->get();

+ 1 - 2
app/Providers/AppServiceProvider.php

@@ -14,7 +14,6 @@ use App\Observers\OrderObserver;
 use App\Observers\RuleGroupObserver;
 use App\Observers\UserGroupObserver;
 use App\Observers\UserObserver;
-use Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider;
 use Illuminate\Support\ServiceProvider;
 use Schema;
 use URL;
@@ -31,7 +30,7 @@ class AppServiceProvider extends ServiceProvider
         if ($this->app->isLocal()) {
             $this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
             $this->app->register(TelescopeServiceProvider::class);
-            $this->app->register(IdeHelperServiceProvider::class);
+            $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class);
         }
     }
 

+ 29 - 9
app/Services/OrderService.php

@@ -66,8 +66,14 @@ class OrderService
         $ret = (new UserService(self::$user))->updateCredit(self::$order->origin_amount);
         // 余额变动记录日志
         if ($ret) {
-            Helpers::addUserCreditLog(self::$order->user_id, self::$order->id, $credit, self::$user->credit,
-                self::$order->amount, '用户通过'.self::$order->pay_way.'充值余额');
+            Helpers::addUserCreditLog(
+                self::$order->user_id,
+                self::$order->id,
+                $credit,
+                self::$user->credit,
+                self::$order->amount,
+                '用户通过'.self::$order->pay_way.'充值余额'
+            );
         }
 
         return $ret;
@@ -78,9 +84,13 @@ class OrderService
     {
         $ret = (new UserService(self::$user))->incrementData(self::$goods->traffic * MB);
         if ($ret) {
-            return Helpers::addUserTrafficModifyLog(self::$order->user_id, self::$order->id,
-                self::$user->transfer_enable - self::$goods->traffic * MB, self::$user->transfer_enable,
-                '['.self::$order->pay_way.']加上用户购买的套餐流量');
+            return Helpers::addUserTrafficModifyLog(
+                self::$order->user_id,
+                self::$order->id,
+                self::$user->transfer_enable - self::$goods->traffic * MB,
+                self::$user->transfer_enable,
+                '['.self::$order->pay_way.']加上用户购买的套餐流量'
+            );
         }
 
         return false;
@@ -113,8 +123,13 @@ class OrderService
 
         $ret = self::$user->update(array_merge($this->resetTimeAndData(), $updateData));
         if ($ret) {
-            return Helpers::addUserTrafficModifyLog(self::$order->user_id, self::$order->id, $oldData, self::$user->transfer_enable,
-                '【'.self::$order->pay_way.'】加上用户购买的套餐流量');
+            return Helpers::addUserTrafficModifyLog(
+                self::$order->user_id,
+                self::$order->id,
+                $oldData,
+                self::$user->transfer_enable,
+                '【'.self::$order->pay_way.'】加上用户购买的套餐流量'
+            );
         }
 
         return false;
@@ -162,8 +177,13 @@ class OrderService
             }
             // 按照返利模式进行返利判断
             if ($referralType == 2 || $referral) {
-                return $this->addReferralLog($user->id, $inviter->id, self::$order->id, self::$order->amount,
-                    self::$order->amount * sysConfig('referral_percent'));
+                return $this->addReferralLog(
+                    $user->id,
+                    $inviter->id,
+                    self::$order->id,
+                    self::$order->amount,
+                    self::$order->amount * sysConfig('referral_percent')
+                );
             }
         }
 

+ 36 - 36
composer.lock

@@ -550,24 +550,24 @@
         },
         {
             "name": "fideloper/proxy",
-            "version": "4.4.0",
+            "version": "4.4.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fideloper/TrustedProxy.git",
-                "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8"
+                "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8",
-                "reference": "9beebf48a1c344ed67c1d36bb1b8709db7c3c1a8",
+                "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/c073b2bd04d1c90e04dc1b787662b558dd65ade0",
+                "reference": "c073b2bd04d1c90e04dc1b787662b558dd65ade0",
                 "shasum": ""
             },
             "require": {
-                "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0",
+                "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0|^9.0",
                 "php": ">=5.4.0"
             },
             "require-dev": {
-                "illuminate/http": "^5.0|^6.0|^7.0|^8.0",
+                "illuminate/http": "^5.0|^6.0|^7.0|^8.0|^9.0",
                 "mockery/mockery": "^1.0",
                 "phpunit/phpunit": "^6.0"
             },
@@ -600,26 +600,26 @@
                 "proxy",
                 "trusted proxy"
             ],
-            "time": "2020-06-23T01:36:47+00:00"
+            "time": "2020-10-22T13:48:01+00:00"
         },
         {
             "name": "fruitcake/laravel-cors",
-            "version": "v2.0.2",
+            "version": "v2.0.3",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fruitcake/laravel-cors.git",
-                "reference": "4b19bfc3bd422948af37a42a62fad7f49025894a"
+                "reference": "01de0fe5f71c70d1930ee9a80385f9cc28e0f63a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/4b19bfc3bd422948af37a42a62fad7f49025894a",
-                "reference": "4b19bfc3bd422948af37a42a62fad7f49025894a",
+                "url": "https://api.github.com/repos/fruitcake/laravel-cors/zipball/01de0fe5f71c70d1930ee9a80385f9cc28e0f63a",
+                "reference": "01de0fe5f71c70d1930ee9a80385f9cc28e0f63a",
                 "shasum": ""
             },
             "require": {
                 "asm89/stack-cors": "^2.0.1",
-                "illuminate/contracts": "^6|^7|^8",
-                "illuminate/support": "^6|^7|^8",
+                "illuminate/contracts": "^6|^7|^8|^9",
+                "illuminate/support": "^6|^7|^8|^9",
                 "php": ">=7.2",
                 "symfony/http-foundation": "^4|^5",
                 "symfony/http-kernel": "^4.3.4|^5"
@@ -673,7 +673,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-09-07T11:48:52+00:00"
+            "time": "2020-10-22T13:57:20+00:00"
         },
         {
             "name": "geoip2/geoip2",
@@ -2420,16 +2420,16 @@
         },
         {
             "name": "nesbot/carbon",
-            "version": "2.41.3",
+            "version": "2.41.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/briannesbitt/Carbon.git",
-                "reference": "e148788eeae9b9b7b87996520358b86faad37b52"
+                "reference": "6571aec754a648ef476a8d8f57993f7bc965afe4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e148788eeae9b9b7b87996520358b86faad37b52",
-                "reference": "e148788eeae9b9b7b87996520358b86faad37b52",
+                "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/6571aec754a648ef476a8d8f57993f7bc965afe4",
+                "reference": "6571aec754a648ef476a8d8f57993f7bc965afe4",
                 "shasum": ""
             },
             "require": {
@@ -2505,7 +2505,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-10-12T20:36:09+00:00"
+            "time": "2020-10-22T07:28:05+00:00"
         },
         {
             "name": "nikic/php-parser",
@@ -6675,16 +6675,16 @@
         },
         {
             "name": "andrey-helldar/support",
-            "version": "v1.21.0",
+            "version": "v1.22.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/andrey-helldar/support.git",
-                "reference": "3c1455584e4d1afc542f3da075987b54fc1ad05f"
+                "reference": "ccd201a7833bb52c14d2ee644ce6cfd434bd9ed8"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/andrey-helldar/support/zipball/3c1455584e4d1afc542f3da075987b54fc1ad05f",
-                "reference": "3c1455584e4d1afc542f3da075987b54fc1ad05f",
+                "url": "https://api.github.com/repos/andrey-helldar/support/zipball/ccd201a7833bb52c14d2ee644ce6cfd434bd9ed8",
+                "reference": "ccd201a7833bb52c14d2ee644ce6cfd434bd9ed8",
                 "shasum": ""
             },
             "require": {
@@ -6751,7 +6751,7 @@
                     "type": "custom"
                 }
             ],
-            "time": "2020-07-24T14:17:57+00:00"
+            "time": "2020-10-22T09:59:48+00:00"
         },
         {
             "name": "arcanedev/laravel-lang",
@@ -7525,23 +7525,23 @@
         },
         {
             "name": "doctrine/dbal",
-            "version": "2.11.3",
+            "version": "2.12.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/dbal.git",
-                "reference": "fb5d5f2f26babf8dce217b1eb88300c22bb703a4"
+                "reference": "c6d37b4c42aaa3c3ee175f05eca68056f4185646"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/dbal/zipball/fb5d5f2f26babf8dce217b1eb88300c22bb703a4",
-                "reference": "fb5d5f2f26babf8dce217b1eb88300c22bb703a4",
+                "url": "https://api.github.com/repos/doctrine/dbal/zipball/c6d37b4c42aaa3c3ee175f05eca68056f4185646",
+                "reference": "c6d37b4c42aaa3c3ee175f05eca68056f4185646",
                 "shasum": ""
             },
             "require": {
                 "doctrine/cache": "^1.0",
                 "doctrine/event-manager": "^1.0",
                 "ext-pdo": "*",
-                "php": "^7.3"
+                "php": "^7.3 || ^8"
             },
             "require-dev": {
                 "doctrine/coding-standard": "^8.1",
@@ -7628,7 +7628,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2020-10-20T14:36:48+00:00"
+            "time": "2020-10-22T17:26:24+00:00"
         },
         {
             "name": "doctrine/event-manager",
@@ -7792,22 +7792,22 @@
         },
         {
             "name": "facade/flare-client-php",
-            "version": "1.3.6",
+            "version": "1.3.7",
             "source": {
                 "type": "git",
                 "url": "https://github.com/facade/flare-client-php.git",
-                "reference": "451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799"
+                "reference": "fd688d3c06658f2b3b5f7bb19f051ee4ddf02492"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/facade/flare-client-php/zipball/451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799",
-                "reference": "451fadf38e9f635e7f8e1f5b3cf5c9eb82f11799",
+                "url": "https://api.github.com/repos/facade/flare-client-php/zipball/fd688d3c06658f2b3b5f7bb19f051ee4ddf02492",
+                "reference": "fd688d3c06658f2b3b5f7bb19f051ee4ddf02492",
                 "shasum": ""
             },
             "require": {
                 "facade/ignition-contracts": "~1.0",
                 "illuminate/pipeline": "^5.5|^6.0|^7.0|^8.0",
-                "php": "^7.1",
+                "php": "^7.1|^8.0",
                 "symfony/http-foundation": "^3.3|^4.1|^5.0",
                 "symfony/mime": "^3.4|^4.0|^5.1",
                 "symfony/var-dumper": "^3.4|^4.0|^5.0"
@@ -7849,7 +7849,7 @@
                     "type": "github"
                 }
             ],
-            "time": "2020-09-18T06:35:11+00:00"
+            "time": "2020-10-21T16:02:39+00:00"
         },
         {
             "name": "facade/ignition",

BIN
public/assets/images/payment/stripe.png


+ 4 - 5
resources/views/admin/aff/index.blade.php

@@ -106,12 +106,12 @@
     <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#status').val({{Request::input('status')}});
         });
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;
@@ -125,11 +125,10 @@
 
         // 更改状态
         function setStatus(id, status) {
-            $.post('{{route('admin.aff.setStatus')}}', {_token: '{{csrf_token()}}', id: id, status: status}, function(ret) {
+            $.post('{{route('admin.aff.setStatus')}}', {_token: '{{csrf_token()}}', id: id, status: status}, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                }
-                else {
+                } else {
                     swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                 }
             });

+ 2 - 2
resources/views/admin/aff/rebate.blade.php

@@ -101,12 +101,12 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"
             type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#status').val({{Request::input('status')}});
         });
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 4 - 5
resources/views/admin/article/create.blade.php

@@ -57,15 +57,14 @@
                         <label class="col-form-label col-md-2" for="sort">排序</label>
                         <div class="col-md-2">
                             <input type="number" class="form-control" name="sort" id="sort" value="{{ old('sort')??0 }}" required/>
+                            <span class="text-help"> 值越高显示时越靠前 </span>
                         </div>
-                        <span class="text-help"> 值越高显示时越靠前 </span>
                     </div>
                     <div class="form-group row" id="all_logo">
                         <label class="col-form-label col-md-2" for="logo">LOGO</label>
                         <div class="col-md-4" id="icon" style="display: none;">
                             <input type="text" name="logo" id="logo" class="form-control" value="{{ old('logo') }}"/>
-                            <span class="text-help">
-                                <a href="https://fontawesome.com/v4.7.0/icons/" target="_blank">图标列表</a> | 格式: fa-windows</span>
+                            <span class="text-help"><a href="https://fontawesome.com/v4.7.0/icons/" target="_blank">图标列表</a> | 格式: fa-windows</span>
                         </div>
 
                         <div class="col-md-4" id="logoUpload">
@@ -97,13 +96,13 @@
     <script src="/assets/global/js/Plugin/summernote.js" type="text/javascript"></script>
     <script type="text/javascript">
         @if(old('type'))
-        $(document).ready(function() {
+        $(document).ready(function () {
             $("input[name='type'][value='{{old('type')}}']").click();
         });
         @endif
     </script>
     <script type="text/javascript">
-        $('input:radio[name=\'type\']').on('change', function() {
+        $('input:radio[name=\'type\']').on('change', function () {
             const summary = $('#summary');
             const sort = $('#sort');
             const allLogo = $('#all_logo');

+ 10 - 9
resources/views/admin/article/edit.blade.php

@@ -67,8 +67,8 @@
                             <label class="col-form-label col-md-2" for="sort">排序</label>
                             <div class="col-md-2">
                                 <input type="number" class="form-control" name="sort" value="{{$article->sort}}" required/>
+                                <span class="text-help"> 值越高显示时越靠前 </span>
                             </div>
-                            <span class="text-help"> 值越高显示时越靠前 </span>
                         </div>
                     @endif
                     @if($article->type !== 2)
@@ -80,17 +80,18 @@
                                     <span class="text-help"> 推荐尺寸:100x75 </span>
                                 </div>
                             @else
-                                <div class="col-md-4 input-group">
-                                    @if($article->logo)
-                                        <div class="input-group-prepend">
+                                <div class="col-md-4">
+                                    <div class="input-group">
+                                        @if($article->logo)
+                                            <div class="input-group-prepend">
                                             <span class="input-group-text">
                                                 <i class="fa {{$article->logo}}" aria-hidden="true"></i></span>
-                                        </div>
-                                    @endif
-                                    <input type="text" class="form-control" name="logo" value="{{$article->logo}}"/>
+                                            </div>
+                                        @endif
+                                        <input type="text" class="form-control" name="logo" value="{{$article->logo}}"/>
+                                    </div>
+                                    <span class="text-help"><a href="https://fontawesome.com/v4.7.0/icons/" target="_blank">图标列表</a> | 格式: fa-windows</span>
                                 </div>
-                                <span class="text-help">
-                                    <a href="https://fontawesome.com/v4.7.0/icons/" target="_blank">图标列表</a> | 格式: fa-windows</span>
                             @endif
                         </div>
                     @endif

+ 2 - 3
resources/views/admin/article/index.blade.php

@@ -90,11 +90,10 @@
                         url: url,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 32 - 40
resources/views/admin/config/config.blade.php

@@ -389,10 +389,10 @@
                 url: '{{route('admin.config.level.store')}}',
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', level: level, level_name: level_name},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#level_msg').show().html('正在添加');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#level_msg').show().html(ret.message);
                         return false;
@@ -400,10 +400,10 @@
                     $('#add_level_modal').modal('hide');
                     window.location.reload();
                 },
-                error: function() {
+                error: function () {
                     $('#level_msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                     swal.fire({title: '添加成功', icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
                 },
             });
@@ -420,11 +420,10 @@
                     level_name: $('#level_name_' + id).val(),
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -447,11 +446,10 @@
                         url: '{{route('admin.config.level.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -481,10 +479,10 @@
                 url: '{{route('admin.config.country.store')}}',
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', code: country_code, name: country_name},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#country_msg').show().html('正在添加');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#country_msg').show().html(ret.message);
                         return false;
@@ -492,10 +490,10 @@
                     $('#add_country_modal').modal('hide');
                     window.location.reload();
                 },
-                error: function() {
+                error: function () {
                     $('#country_msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                     swal.fire({
                         title: '添加成功',
                         icon: 'success',
@@ -513,11 +511,10 @@
                 url: '{{route('admin.config.country.update', '')}}/' + code,
                 data: {_token: '{{csrf_token()}}', name: $('#country_' + code).val()},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'});
                     }
                 },
@@ -540,11 +537,10 @@
                         url: '{{route('admin.config.country.destroy', '')}}/' + code,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -569,10 +565,10 @@
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', name: name, type: type},
                 dataType: 'json',
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#msg').show().html('正在添加');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#msg').show().html(ret.message);
                         return false;
@@ -580,10 +576,10 @@
 
                     $('#add_config_modal').modal('hide');
                 },
-                error: function() {
+                error: function () {
                     $('#msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                     swal.fire({title: '添加成功', icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
                 },
             });
@@ -596,11 +592,10 @@
                 url: '{{route('admin.config.ss.update', '')}}/' + id,
                 data: {_token: '{{csrf_token()}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -623,11 +618,10 @@
                         url: '{{route('admin.config.ss.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -655,10 +649,10 @@
                 url: '{{route('admin.config.label.store')}}',
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', name: name, sort: sort},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#level_msg').show().html('正在添加');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#lable_msg').show().html(ret.message);
                         return false;
@@ -666,10 +660,10 @@
                     $('#add_label_modal').modal('hide');
                     window.location.reload();
                 },
-                error: function() {
+                error: function () {
                     $('#lable_msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                     swal.fire({
                         title: '添加成功',
                         icon: 'success',
@@ -691,11 +685,10 @@
                     sort: $('#label_sort_' + id).val(),
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -717,11 +710,10 @@
                     url: '{{route('admin.config.label.destroy', '')}}/' + id,
                     data: {_token: '{{csrf_token()}}'},
                     dataType: 'json',
-                    success: function(ret) {
+                    success: function (ret) {
                         if (ret.status === 'success') {
                             swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                        }
-                        else {
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     },

+ 4 - 6
resources/views/admin/config/emailFilter.blade.php

@@ -111,11 +111,10 @@
                 _token: '{{csrf_token()}}',
                 type: $('input:radio[name=\'type\']:checked').val(),
                 words: words,
-            }, function(ret) {
+            }, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                }
-                else {
+                } else {
                     swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                 }
             });
@@ -137,11 +136,10 @@
                         url: '{{route('admin.config.filter.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 240 - 213
resources/views/admin/config/system.blade.php


+ 11 - 17
resources/views/admin/coupon/create.blade.php

@@ -2,11 +2,6 @@
 @section('css')
     <link href="/assets/global/vendor/dropify/dropify.min.css" type="text/css" rel="stylesheet">
     <link href="/assets/global/vendor/bootstrap-datepicker/bootstrap-datepicker.min.css" type="text/css" rel="stylesheet">
-    <style type="text/css">
-        .text-help {
-            padding-left: 1.0715rem;
-        }
-    </style>
 @endsection
 @section('content')
     <div class="page-content container">
@@ -29,15 +24,15 @@
                         <label class="col-md-2 col-form-label" for="name">卡券名称</label>
                         <div class="col-md-4">
                             <input type="text" class="form-control" name="name" id="name" value="{{Request::old('name')}}" required/>
+                            <span class="text-help"> 会用于前端显示 </span>
                         </div>
-                        <span class="text-help"> 会用于前端显示 </span>
                     </div>
                     <div class="form-group row">
                         <label class="col-md-2 col-form-label" for="sn">使用券码</label>
                         <div class="col-md-4">
                             <input type="text" class="form-control" name="sn" id="sn" value="{{Request::old('sn')}}"/>
+                            <span class="text-help"> 提供给用户使用卡券的卡券,留空则默认为8位随机码 </span>
                         </div>
-                        <span class="text-help"> 提供给用户使用卡券的卡券,留空则默认为8位随机码 </span>
                     </div>
                     <div class="form-group row">
                         <label class="col-md-2 col-form-label" for="logo">卡券图片</label>
@@ -47,7 +42,7 @@
                     </div>
                     <div class="form-group row">
                         <label class="col-md-2 col-form-label">类型</label>
-                        <div class="col-md-10 d-flex align-items-center">
+                        <div class="col-md-10 align-items-center">
                             <div class="radio-custom radio-primary radio-inline">
                                 <input type="radio" name="type" id="voucher" value="1" checked/>
                                 <label for="voucher">抵用券</label>
@@ -60,8 +55,8 @@
                                 <input type="radio" name="type" id="charge" value="3"/>
                                 <label for="charge">充值券</label>
                             </div>
+                            <span class="text-help"> 抵用:抵扣商品金额,折扣:商品百分比打折,充值:充值用户账号余额 </span>
                         </div>
-                        <span class="offset-md-2 text-help"> 抵用:抵扣商品金额,折扣:商品百分比打折,充值:充值用户账号余额 </span>
                     </div>
                     <div class="form-group row usage">
                         <label class="col-md-2 col-form-label" for="usable_times">使用次数</label>
@@ -76,16 +71,16 @@
                             <input type="number" class="form-control" name="value" id="value" value="{{Request::old('value')}}" required/>
                             <span class="input-group-text amount">元</span>
                             <span class="input-group-text discount" style="display: none;">%</span>
+                            <span class="text-help discount" style="display: none;"> 范围为 1~99折,即 1% ~ 99% </span>
                         </div>
-                        <span class="text-help discount" style="display: none;"> 范围为 1~99折,即 1% ~ 99% </span>
                     </div>
                     <div class="form-group row usage">
                         <label class="col-md-2 col-form-label" for="rule">条件</label>
                         <div class="col-md-4 input-group">
                             <input type="number" class="form-control" name="rule" id="rule" value="{{Request::old('rule')}}" step="0.01" required/>
                             <span class="input-group-text">元</span>
+                            <span class="text-help"> 当套餐超过N值时,才能使用本优惠劵;0即使用无限制 </span>
                         </div>
-                        <span class="text-help"> 当套餐超过N值时,才能使用本优惠劵;0即使用无限制 </span>
                     </div>
                     <div class="form-group row">
                         <label class="col-md-2 col-form-label" for="num">数量</label>
@@ -106,7 +101,8 @@
                                 <span class="input-group-text">至</span>
                             </div>
                             <label for="end_time"></label>
-                            <input type="text" class="form-control" name="end_time" id="end_time" value="{{Request::old('end_time') ?? date("Y-m-d",strtotime("+1 month"))}}" required/>
+                            <input type="text" class="form-control" name="end_time" id="end_time" value="{{Request::old('end_time') ?? date("Y-m-d",strtotime("+1 month"))}}"
+                                   required/>
                         </div>
                     </div>
                     <div class="form-actions col-12 text-right">
@@ -128,20 +124,18 @@
             format: 'yyyy-mm-dd',
         });
 
-        $('input[name=\'type\']').change(function() {
+        $('input[name=\'type\']').change(function () {
             if ($(this).val() === '2') {
                 $('#rule').attr('required', true);
                 $('.discount').show();
                 $('.usage').show();
                 $('.amount').hide();
-            }
-            else if ($(this).val() === '3') {
+            } else if ($(this).val() === '3') {
                 $('#rule').attr('required', false);
                 $('.discount').hide();
                 $('.usage').hide();
                 $('.amount').show();
-            }
-            else {
+            } else {
                 $('#rule').attr('required', true);
                 $('.discount').hide();
                 $('.usage').show();

+ 4 - 5
resources/views/admin/coupon/index.blade.php

@@ -114,14 +114,14 @@
     <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#sn').val({{Request::input('sn')}});
             $('#type').val({{Request::input('type')}});
             $('#status').val({{Request::input('status')}});
         });
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;
@@ -166,11 +166,10 @@
                         url: '{{route('admin.coupon.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 1 - 1
resources/views/admin/index.blade.php

@@ -276,7 +276,7 @@
     <script src="/assets/global/vendor/matchheight/jquery.matchHeight-min.js" type="text/javascript"></script>
     <script src="/assets/global/js/Plugin/matchheight.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(function() {
+        $(function () {
             $('.card').matchHeight();
         });
     </script>

+ 4 - 5
resources/views/admin/inviteList.blade.php

@@ -95,11 +95,10 @@
                 async: false,
                 data: {_token: '{{csrf_token()}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -125,7 +124,7 @@
         }
 
         const clipboard = new ClipboardJS('.mt-clipboard');
-        clipboard.on('success', function() {
+        clipboard.on('success', function () {
             swal.fire({
                 title: '复制成功',
                 icon: 'success',
@@ -133,7 +132,7 @@
                 showConfirmButton: false,
             });
         });
-        clipboard.on('error', function() {
+        clipboard.on('error', function () {
             swal.fire({
                 title: '复制失败,请手动复制',
                 icon: 'error',

+ 2 - 2
resources/views/admin/layouts.blade.php

@@ -440,10 +440,10 @@
 <script src="/assets/global/js/Plugin/slidepanel.js" type="text/javascript"></script>
 <script src="/assets/custom/Plugin/js-cookie/js.cookie.min.js" type="text/javascript"></script>
 <script type="text/javascript">
-    (function(document, window, $) {
+    (function (document, window, $) {
         'use strict';
         const Site = window.Site;
-        $(document).ready(function() {
+        $(document).ready(function () {
             Site.run();
         });
     })(document, window, jQuery);

+ 2 - 2
resources/views/admin/logs/callback.blade.php

@@ -91,13 +91,13 @@
     <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#type').val({{Request::input('type')}});
             $('#trade_status').val({{Request::input('trade_status')}});
         });
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 1 - 1
resources/views/admin/logs/notification.blade.php

@@ -83,7 +83,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"
             type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#type').val({{Request::input('type')}});
         });
 

+ 1 - 1
resources/views/admin/logs/onlineIPMonitor.blade.php

@@ -98,7 +98,7 @@
     <script src="/assets/custom/Plugin/clipboardjs/clipboard.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 2 - 2
resources/views/admin/logs/order.blade.php

@@ -158,7 +158,7 @@
     <script src="/assets/global/vendor/bootstrap-datepicker/bootstrap-datepicker.min.js" type="text/javascript"></script>
     <script src="/assets/global/js/Plugin/bootstrap-datepicker.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#is_expire').val({{Request::input('is_expire')}});
             $('#is_coupon').val({{Request::input('is_coupon')}});
             $('#pay_way').val({{Request::input('pay_way')}});
@@ -170,7 +170,7 @@
             format: 'yyyy-mm-dd',
         });
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 3 - 2
resources/views/admin/logs/traffic.blade.php

@@ -42,7 +42,8 @@
                             <div class="input-group-prepend">
                                 <span class="input-group-text">至</span>
                             </div>
-                            <input type="text" class="form-control" name="end" id="end" value="{{Request::input('endTime')}}" placeholder="{{date("Y-m-d",strtotime("+1 month"))}}"/>
+                            <input type="text" class="form-control" name="end" id="end" value="{{Request::input('endTime')}}"
+                                   placeholder="{{date("Y-m-d",strtotime("+1 month"))}}"/>
                         </div>
                     </div>
                     <div class="form-group col-lg-2 col-sm-4 btn-group">
@@ -111,7 +112,7 @@
             format: 'yyyy-mm-dd',
         });
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 1 - 1
resources/views/admin/logs/userBanHistory.blade.php

@@ -71,7 +71,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 1 - 1
resources/views/admin/logs/userCreditHistory.blade.php

@@ -73,7 +73,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 2 - 2
resources/views/admin/logs/userMonitor.blade.php

@@ -66,7 +66,7 @@
                             display: true,
                             ticks: {
                                 beginAtZero: true,
-                                userCallback: function(tick) {
+                                userCallback: function (tick) {
                                     return tick.toString() + ' GB';
                                 },
                             },
@@ -116,7 +116,7 @@
                             display: true,
                             ticks: {
                                 beginAtZero: true,
-                                userCallback: function(tick) {
+                                userCallback: function (tick) {
                                     return tick.toString() + ' GB';
                                 },
                             },

+ 1 - 1
resources/views/admin/logs/userOnlineIP.blade.php

@@ -122,7 +122,7 @@
             type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 1 - 1
resources/views/admin/logs/userTraffic.blade.php

@@ -80,7 +80,7 @@
             type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 1 - 1
resources/views/admin/marketing/emailList.blade.php

@@ -70,7 +70,7 @@
     <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#status').val({{Request::input('status')}});
         });
 

+ 6 - 6
resources/views/admin/marketing/pushList.blade.php

@@ -122,7 +122,7 @@
     <script src="/assets/global/vendor/marked/marked.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/to-markdown/to-markdown.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#status').val({{Request::input('status')}});
         });
 
@@ -140,10 +140,10 @@
                 url: '{{route('admin.marketing.add')}}',
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', title: title, content: $('#content').val()},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#msg').show().html('正在添加...');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#msg').show().html(ret.message);
                         return false;
@@ -152,16 +152,16 @@
                     $('#send_modal').modal('hide');
 
                 },
-                error: function() {
+                error: function () {
                     $('#msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                 },
             });
         }
 
         // 关闭modal触发
-        $('#send_modal').on('hide.bs.modal', function() {
+        $('#send_modal').on('hide.bs.modal', function () {
             window.location.reload();
         });
 

+ 7 - 11
resources/views/admin/node/auth.blade.php

@@ -220,12 +220,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('{{route('admin.node.auth.store')}}', {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post('{{route('admin.node.auth.store')}}', {_token: '{{csrf_token()}}'}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });
@@ -249,11 +247,10 @@
                         url: '{{route('admin.node.auth.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -278,11 +275,10 @@
                         url: '{{route('admin.node.auth.update', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 2 - 3
resources/views/admin/node/cert/index.blade.php

@@ -88,11 +88,10 @@
                         url: '{{route('admin.node.cert.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 12 - 6
resources/views/admin/node/cert/info.blade.php

@@ -19,13 +19,15 @@
                     <div class="form-group row">
                         <label for="key" class="col-md-3 col-form-label">Key</label>
                         <div class="col-md-9">
-                            <textarea type="text" rows="10" class="form-control" name="key" id="key" placeholder="域名证书的KEY值,允许为空,VNET-V2Ray后端支持自动签证书">@isset($Dv) {{$Dv->key}} @endisset</textarea>
+                            <textarea type="text" rows="10" class="form-control" name="key" id="key"
+                                      placeholder="域名证书的KEY值,允许为空,VNET-V2Ray后端支持自动签证书">@isset($Dv) {{$Dv->key}} @endisset</textarea>
                         </div>
                     </div>
                     <div class="form-group row">
                         <label for="pem" class="col-md-3 col-form-label">Pem</label>
                         <div class="col-md-9">
-                            <textarea type="text" rows="10" class="form-control" name="pem" id="pem" placeholder="域名证书的PEM值,允许为空,VNET-V2Ray后端支持自动签证书">@isset($Dv) {{$Dv->pem}} @endisset</textarea>
+                            <textarea type="text" rows="10" class="form-control" name="pem" id="pem"
+                                      placeholder="域名证书的PEM值,允许为空,VNET-V2Ray后端支持自动签证书">@isset($Dv) {{$Dv->pem}} @endisset</textarea>
                         </div>
                     </div>
                     <div class="form-actions">
@@ -46,11 +48,15 @@
                 async: false,
                 data: {_token: '{{csrf_token()}}', domain: $('#domain').val(), key: $('#key').val(), pem: $('#pem').val()},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
-                        swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.href = '{{route('admin.node.cert.index')}}');
-                    }
-                    else {
+                        swal.fire({
+                            title: ret.message,
+                            icon: 'success',
+                            timer: 1000,
+                            showConfirmButton: false
+                        }).then(() => window.location.href = '{{route('admin.node.cert.index')}}');
+                    } else {
                         swal.fire({title: '[错误 | Error]', text: ret.message, icon: 'error'});
                     }
                 },

+ 18 - 23
resources/views/admin/node/index.blade.php

@@ -139,10 +139,10 @@
                 method: 'POST',
                 url: '{{route('admin.node.check', '')}}/' + id,
                 data: {_token: '{{csrf_token()}}'},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#node' + id).removeClass('wb-signal').addClass('wb-loop icon-spin');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({
                             title: ret.title,
@@ -151,12 +151,11 @@
                                 ret.message[0] + '</td><td>' + ret.message[1] + '</td></tr></tbody></table>',
                             showConfirmButton: false,
                         });
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.title, text: ret.message, icon: 'error'});
                     }
                 },
-                complete: function() {
+                complete: function () {
                     $('#node' + id).removeClass('wb-loop icon-spin').addClass('wb-signal');
                 },
             });
@@ -168,10 +167,10 @@
                 method: 'POST',
                 url: '{{route('admin.node.ping', '')}}/' + id,
                 data: {_token: '{{csrf_token()}}'},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#ping' + id).removeClass('wb-order').addClass('wb-loop icon-spin');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({
                             icon: 'info',
@@ -180,12 +179,11 @@
                                 ret.message[3] + '</td></tr></tbody></table>',
                             showConfirmButton: false,
                         });
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'});
                     }
                 },
-                complete: function() {
+                complete: function () {
                     $('#ping' + id).removeClass('wb-loop icon-spin').addClass('wb-order');
                 },
             });
@@ -205,18 +203,17 @@
                         method: 'POST',
                         url: '{{route('admin.node.reload', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
-                        beforeSend: function() {
+                        beforeSend: function () {
                             $('#reload' + id).removeClass('wb-reload').addClass('wb-loop icon-spin');
                         },
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'info', showConfirmButton: false});
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'});
                             }
                         },
-                        complete: function() {
+                        complete: function () {
                             $('#reload' + id).removeClass('wb-loop icon-spin').addClass('wb-reload');
                         },
                     });
@@ -230,18 +227,17 @@
                 method: 'GET',
                 url: '{{route('admin.node.geo', '')}}/' + id,
                 data: {_token: '{{csrf_token()}}'},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#geo' + id).removeClass('wb-map').addClass('wb-loop icon-spin');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'info', showConfirmButton: false});
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'});
                     }
                 },
-                complete: function() {
+                complete: function () {
                     $('#geo' + id).removeClass('wb-loop icon-spin').addClass('wb-map');
                 },
             });
@@ -263,11 +259,10 @@
                         url: '{{route('admin.node.destroy', '')}}/' + id,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 29 - 27
resources/views/admin/node/info.blade.php

@@ -86,7 +86,8 @@
                                     </div>
                                     <div class="form-group row">
                                         <label for="labels" class="col-md-3 col-form-label">标签</label>
-                                        <select data-plugin="selectpicker" data-style="btn-outline btn-primary" class="col-md-5 form-control show-tick" id="labels" name="labels" multiple>
+                                        <select data-plugin="selectpicker" data-style="btn-outline btn-primary" class="col-md-5 form-control show-tick" id="labels" name="labels"
+                                                multiple>
                                             @foreach($labelList as $label)
                                                 <option value="{{$label->id}}">{{$label->name}}</option>
                                             @endforeach
@@ -218,10 +219,8 @@
                                             <div class="form-group row">
                                                 <label for="single_port" class="col-md-3 col-form-label">[单] 端口</label>
                                                 <input type="number" class="form-control col-md-4" name="port" value="443" id="single_port"/>
-                                                <span class="text-help offset-md-3"> 推荐80或443,服务端需要配置 </span>
-                                                <span class="text-help offset-md-3">
-                                                    严格模式:用户的端口无法连接,只能通过以下指定的端口进行连接
-                                                    (<a href="javascript:showPortsOnlyConfig();">如何配置</a>)</span>
+                                                <span class="text-help offset-md-3"> 推荐80或443,服务端需要配置 <br>
+                                                    严格模式:用户的端口无法连接,只能通过以下指定的端口进行连接(<a href="javascript:showPortsOnlyConfig();">如何配置</a>)</span>
                                             </div>
                                             <div class="form-group row">
                                                 <label for="passwd" class="col-md-3 col-form-label">[单] 密码</label>
@@ -287,7 +286,8 @@
                                                     <select data-plugin="selectpicker" data-style="btn-outline btn-primary" class="form-control" id="v2_ws">
                                                         <option value="" hidden></option>
                                                         @foreach($dvList as $dv)
-                                                            <option value="{{$dv->domain}}" @if(isset($node) && $node->v2_net === "ws" && $node->v2_host === $dv->domain) selected @endif>
+                                                            <option value="{{$dv->domain}}"
+                                                                    @if(isset($node) && $node->v2_net === "ws" && $node->v2_host === $dv->domain) selected @endif>
                                                                 {{$dv->domain}}
                                                             </option>
                                                         @endforeach
@@ -313,7 +313,8 @@
                                             <input type="text" class="form-control col-md-9" name="tls_provider" id="tls_provider"/>
                                             <div class="text-help offset-md-3"> 不同后端配置不同:
                                                 <a href="https://proxypanel.gitbook.io/wiki/webapi/webapi-basic-setting#vnet-v2-ray-hou-duan" target="_blank">VNET-V2Ray</a>、
-                                                <a href="https://proxypanel.gitbook.io/wiki/webapi/webapi-basic-setting#v-2-ray-poseidon-hou-duan" target="_blank">V2Ray-Poseidon</a>
+                                                <a href="https://proxypanel.gitbook.io/wiki/webapi/webapi-basic-setting#v-2-ray-poseidon-hou-duan"
+                                                   target="_blank">V2Ray-Poseidon</a>
                                             </div>
                                         </div>
                                     </div>
@@ -401,7 +402,7 @@
 
     <script type="text/javascript">
         const string = "{{strtolower(Str::random())}}";
-        $(document).ready(function() {
+        $(document).ready(function () {
             let v2_path = $('#v2_path');
             @isset($node)
 
@@ -546,20 +547,25 @@
                     relay_server: $('#relay_server').val(),
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
-                        swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                            then(() => window.location.href = '{{route('admin.node.index').(Request::getQueryString()?('?'.Request::getQueryString()):'') }}');
-                    }
-                    else {
+                        swal.fire({
+                            title: ret.message,
+                            icon: 'success',
+                            timer: 1000,
+                            showConfirmButton: false
+                        }).then(() => window.location.href = '{{route('admin.node.index').(Request::getQueryString()?('?'.Request::getQueryString()):'') }}');
+                    } else {
                         swal.fire({title: '[错误 | Error]', text: ret.message, icon: 'error'});
                     }
                 },
-                error: function(data) {
+                error: function (data) {
                     let str = '';
                     const errors = data.responseJSON;
                     if ($.isEmptyObject(errors) === false) {
-                        $.each(errors.errors, function(index, value) {str += '<li>' + value + '</li>';});
+                        $.each(errors.errors, function (index, value) {
+                            str += '<li>' + value + '</li>';
+                        });
                         swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('home.ticket_confirm')}}'});
                     }
                 },
@@ -575,8 +581,7 @@
                 case 'single':
                     if (check) {
                         $('.single-setting').show();
-                    }
-                    else {
+                    } else {
                         $('#single_port').val('');
                         $('#passwd').val('');
                         $('.single-setting').hide();
@@ -588,8 +593,7 @@
                         $('.relay-setting').show();
                         $('#relay_port').attr('required', true);
                         $('#relay_server').attr('required', true);
-                    }
-                    else {
+                    } else {
                         $('.relay-setting').hide();
                         $('#relay_port').removeAttr('required');
                         $('#relay_server').removeAttr('required');
@@ -601,8 +605,7 @@
                         $('#ip').val('').attr('readonly', true);
                         $('#ipv6').val('').attr('readonly', true);
                         $('#server').attr('required', true);
-                    }
-                    else {
+                    } else {
                         $('#ip').removeAttr('readonly');
                         $('#ipv6').removeAttr('readonly');
                         $('#server').removeAttr('required');
@@ -614,7 +617,7 @@
         }
 
         // 设置服务类型
-        $('input:radio[name=\'type\']').on('change', function() {
+        $('input:radio[name=\'type\']').on('change', function () {
             const type = parseInt($(this).val());
             const $ssr_setting = $('.ssr-setting');
             const $v2ray_setting = $('.v2ray-setting');
@@ -640,23 +643,22 @@
             }
         });
 
-        $('#obfs').on('changed.bs.select', function(e, clickedIndex, isSelected, previousValue) {
+        $('#obfs').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
             const obfs_param = $('.obfs_param');
             if ($('#obfs').val() === 'plain') {
                 $('#obfs_param').val('');
                 obfs_param.hide();
-            }
-            else {
+            } else {
                 obfs_param.show();
             }
         });
 
-        $('#v2_ws').on('changed.bs.select', function(e, clickedIndex, isSelected, previousValue) {
+        $('#v2_ws').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
             $('#v2_host').val($('#v2_ws').val());
         });
 
         // 设置V2Ray详细设置
-        $('#v2_net').on('changed.bs.select', function(e, clickedIndex, isSelected, previousValue) {
+        $('#v2_net').on('changed.bs.select', function (e, clickedIndex, isSelected, previousValue) {
             const type = $('.v2_type');
             const type_option = $('#type_option');
             const host = $('.v2_host');

+ 8 - 8
resources/views/admin/rule/group/assign.blade.php

@@ -53,7 +53,7 @@
     <script src="/assets/global/js/Plugin/multi-select.js"></script>
     <script src="/assets/global/js/jquery.quicksearch.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#nodes').multiSelect('select',@json($ruleGroup->nodes));
         });
 
@@ -61,45 +61,45 @@
         $('#nodes').multiSelect({
             selectableHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'待分配节点,此处可搜索\'>',
             selectionHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'已分配节点,此处可搜索\'>',
-            afterInit: function() {
+            afterInit: function () {
                 const that = this,
                     $selectableSearch = that.$selectableUl.prev(),
                     $selectionSearch = that.$selectionUl.prev(),
                     selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)',
                     selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected';
 
-                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function(e) {
+                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectableUl.focus();
                         return false;
                     }
                 });
 
-                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function(e) {
+                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectionUl.focus();
                         return false;
                     }
                 });
             },
-            afterSelect: function() {
+            afterSelect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
-            afterDeselect: function() {
+            afterDeselect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
         });
 
         // 全选
-        $('#select-all').click(function() {
+        $('#select-all').click(function () {
             $('#nodes').multiSelect('select_all');
             return false;
         });
 
         // 反选
-        $('#deselect-all').click(function() {
+        $('#deselect-all').click(function () {
             $('#nodes').multiSelect('deselect_all');
             return false;
         });

+ 5 - 6
resources/views/admin/rule/group/index.blade.php

@@ -37,7 +37,8 @@
                                     <a href="{{route('admin.rule.group.edit', $ruleGroup->id)}}" class="btn btn-sm btn-outline-primary">
                                         <i class="icon wb-edit"></i>编辑
                                     </a>
-                                    <button onclick="delRuleGroup('{{route('admin.rule.group.destroy', $ruleGroup->id)}}', '{{$ruleGroup->name}}')" class="btn btn-sm btn-outline-danger">
+                                    <button onclick="delRuleGroup('{{route('admin.rule.group.destroy', $ruleGroup->id)}}', '{{$ruleGroup->name}}')"
+                                            class="btn btn-sm btn-outline-danger">
                                         <i class="icon wb-trash"></i>删除
                                     </button>
                                 </div>
@@ -82,12 +83,10 @@
                         url: url,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
-                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                    then(() => window.location.reload());
-                            }
-                            else {
+                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 8 - 8
resources/views/admin/rule/group/info.blade.php

@@ -74,7 +74,7 @@
     <script src="/assets/global/js/jquery.quicksearch.js" type="text/javascript"></script>
     <script type="text/javascript">
         @isset($ruleGroup)
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#name').val('{{$ruleGroup->name}}');
             $("input[name='type'][value='{{$ruleGroup->type}}']").click();
             $('#rules').multiSelect('select',@json($ruleGroup->rules));
@@ -84,45 +84,45 @@
         $('#rules').multiSelect({
             selectableHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'待分配规则,此处可搜索\'>',
             selectionHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'已分配规则,此处可搜索\'>',
-            afterInit: function() {
+            afterInit: function () {
                 const that = this,
                     $selectableSearch = that.$selectableUl.prev(),
                     $selectionSearch = that.$selectionUl.prev(),
                     selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)',
                     selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected';
 
-                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function(e) {
+                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectableUl.focus();
                         return false;
                     }
                 });
 
-                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function(e) {
+                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectionUl.focus();
                         return false;
                     }
                 });
             },
-            afterSelect: function() {
+            afterSelect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
-            afterDeselect: function() {
+            afterDeselect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
         });
 
         // 全选
-        $('#select-all').click(function() {
+        $('#select-all').click(function () {
             $('#rules').multiSelect('select_all');
             return false;
         });
 
         // 反选
-        $('#deselect-all').click(function() {
+        $('#deselect-all').click(function () {
             $('#rules').multiSelect('deselect_all');
             return false;
         });

+ 8 - 11
resources/views/admin/rule/index.blade.php

@@ -131,7 +131,7 @@
     <script src="/assets/global/vendor/bootstrap-select/bootstrap-select.min.js" type="text/javascript"></script>
     <script src="/assets/global/js/Plugin/bootstrap-select.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#type').selectpicker('val', {{Request::input('type')}});
         });
 
@@ -142,12 +142,11 @@
                 type: $('#add_type').val(),
                 name: $('#name').val(),
                 pattern: $('#pattern').val(),
-            }, function(ret) {
+            }, function (ret) {
                 $('#add').modal('hide');
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                }
-                else {
+                } else {
                     swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                 }
             });
@@ -164,11 +163,10 @@
                     rule_pattern: $('#rule_pattern_' + id).val(),
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -191,11 +189,10 @@
                         url: url,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -205,7 +202,7 @@
         }
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;

+ 3 - 5
resources/views/admin/rule/log.blade.php

@@ -106,12 +106,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post("{{route('admin.rule.clear')}}", {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post("{{route('admin.rule.clear')}}", {_token: '{{csrf_token()}}'}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'});
                         }
                     });

+ 3 - 4
resources/views/admin/shop/index.blade.php

@@ -124,7 +124,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js"
             type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#type').val({{Request::input('type')}});
             $('#status').val({{Request::input('status')}});
         });
@@ -151,11 +151,10 @@
                         method: 'DELETE',
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 11 - 18
resources/views/admin/shop/info.blade.php

@@ -4,11 +4,6 @@
     <link href="/assets/custom/Plugin/bootstrap-switch/bootstrap-switch.min.css" type="text/css" rel="stylesheet">
     <link href="/assets/global/vendor/ascolorpicker/asColorPicker.min.css" type="text/css" rel="stylesheet">
     <link href="/assets/global/vendor/dropify/dropify.min.css" type="text/css" rel="stylesheet">
-    <style type="text/css">
-        .text-help {
-            padding-left: 1.0715rem;
-        }
-    </style>
 @endsection
 @section('content')
     <div class="page-content container">
@@ -39,7 +34,7 @@
                         <div class="col-lg-6 col-md-12">
                             <div class="form-group row">
                                 <label class="col-md-2 col-form-label">类型</label>
-                                <div class="col-md-10 d-flex align-items-center">
+                                <div class="col-md-10 align-items-center">
                                     <div class="radio-custom radio-primary radio-inline">
                                         <input type="radio" name="type" id="data_package" value="1"/>
                                         <label for="data_package">流量包</label>
@@ -48,8 +43,8 @@
                                         <input type="radio" name="type" id="data_plan" value="2" checked/>
                                         <label for="data_plan">套餐</label>
                                     </div>
+                                    <span class="text-help"> 套餐与账号有效期有关,流量包只扣可用流量,不影响有效期 </span>
                                 </div>
-                                <span class="offset-md-2 text-help"> 套餐与账号有效期有关,流量包只扣可用流量,不影响有效期 </span>
                             </div>
                             <div class="form-group row">
                                 <label class="col-md-2 col-form-label" for="name">名称</label>
@@ -86,8 +81,8 @@
                                 <div class="col-md-4 input-group">
                                     <input type="number" class="form-control" name="period" id="period" value="30"/>
                                     <span class="input-group-text">天</span>
+                                    <span class="text-help"> 套餐流量会每N天重置 </span>
                                 </div>
-                                <span class="text-help"> 套餐流量会每N天重置 </span>
                             </div>
                             <div class="form-group row">
                                 <label class="col-md-2 col-form-label" for="traffic">流量额度</label>
@@ -113,16 +108,16 @@
                                 <div class="col-md-4 input-group">
                                     <input type="number" class="form-control" name="limit_num" id="limit_num" value="0" required/>
                                     <span class="input-group-text">次</span>
+                                    <span class="text-help"> 每个用户可以购买该商品次数,为 0 时代表不限购 </span>
                                 </div>
-                                <span class="text-help"> 每个用户可以购买该商品次数,为 0 时代表不限购 </span>
                             </div>
                             <div class="form-group row package-renew">
                                 <label class="col-md-2 col-form-label" for="days">有效期</label>
                                 <div class="col-md-4 input-group">
                                     <input type="number" class="form-control" name="days" id="days" value="30"/>
                                     <span class="input-group-text">天</span>
+                                    <span class="text-help"> 到期后会自动从总流量扣减对应的流量 </span>
                                 </div>
-                                <span class="text-help"> 到期后会自动从总流量扣减对应的流量 </span>
                             </div>
                             <div class="form-group row">
                                 <label class="col-md-2 col-form-label" for="is_hot">热销</label>
@@ -144,8 +139,8 @@
                                 <label class="col-md-2 col-form-label" for="sort">排序</label>
                                 <div class="col-md-4">
                                     <input type="number" class="form-control" name="sort" id="sort" value="0"/>
+                                    <span class="text-help"> 排序值越大排越前 </span>
                                 </div>
-                                <span class="text-help"> 排序值越大排越前 </span>
                             </div>
                             <div class="form-group row">
                                 <label class="col-md-2 col-form-label" for="color">颜色</label>
@@ -169,9 +164,8 @@
                                 <label class="col-md-2 col-form-label" for="info">自定义列表</label>
                                 <div class="col-md-8">
                                     <textarea class="form-control" rows="6" name="info" id="info" placeholder="商品的自定义列表添加"></textarea>
+                                    <span class="text-help"> 每行内容请以<code>&lt;li&gt;</code> 开头<code>&lt;/li&gt;</code> 结尾</span>
                                 </div>
-                                <span class="offset-md-2 text-help"> 每行内容请以<code>&lt;li&gt;</code> 开头
-                                    <code>&lt;/li&gt;</code> 结尾</span>
                             </div>
                             <div class="form-actions col-12 text-right">
                                 <button type="submit" class="btn btn-success"><i class="icon wb-check"></i> 提 交</button>
@@ -196,7 +190,7 @@
     <script type="text/javascript">
         $('[data-toggle="switch"]').bootstrapSwitch();
         @isset($goods)
-        $(document).ready(function() {
+        $(document).ready(function () {
             const type = $('input[name=\'type\']');
             $('#id').val('{{$goods->id}}');
             $("input[name='type'][value='{{$goods->type}}']").click();
@@ -239,7 +233,7 @@
             trafficUnit.attr('disabled', true).selectpicker('refresh');
         });
         @elseif(old('type'))
-        $(document).ready(function() {
+        $(document).ready(function () {
             const type = $('input[name=\'type\']');
             $('#id').val('{{old('id')}}');
             $("input[name='type'][value='{{old('type')}}']").click();
@@ -274,14 +268,13 @@
         function itemControl(value) {
             if (value === 1) {
                 $('.package-renew').hide();
-            }
-            else {
+            } else {
                 $('.package-renew').show();
             }
         }
 
         // 选择商品类型
-        $('input[name=\'type\']').change(function() {
+        $('input[name=\'type\']').change(function () {
             itemControl(parseInt($(this).val()));
         });
     </script>

+ 4 - 5
resources/views/admin/subscribe/index.blade.php

@@ -91,12 +91,12 @@
     <script src="/assets/global/vendor/bootstrap-table/bootstrap-table.min.js" type="text/javascript"></script>
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#status').val({{Request::input('status')}});
         });
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;
@@ -110,13 +110,12 @@
 
         // 启用禁用用户的订阅
         function setSubscribeStatus(url) {
-            $.post(url, {_token: '{{csrf_token()}}'}, function(ret) {
+            $.post(url, {_token: '{{csrf_token()}}'}, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => {
                         window.location.reload();
                     });
-                }
-                else {
+                } else {
                     swal.fire({title: ret.message, icon: 'error', timer: 1000, showConfirmButton: false}).then(() => {
                         window.location.reload();
                     });

+ 4 - 6
resources/views/admin/ticket/index.blade.php

@@ -124,7 +124,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;
@@ -172,12 +172,10 @@
                         email: email,
                         title: title,
                         content: content,
-                    }, function(ret) {
+                    }, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });

+ 13 - 10
resources/views/admin/ticket/reply.blade.php

@@ -42,7 +42,7 @@
 @section('script')
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 replyTicket();
                 return false;
@@ -65,15 +65,19 @@
                         async: true,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
-                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.href = '{{route('admin.ticket.index')}}');
-                            }
-                            else {
+                                swal.fire({
+                                    title: ret.message,
+                                    icon: 'success',
+                                    timer: 1000,
+                                    showConfirmButton: false
+                                }).then(() => window.location.href = '{{route('admin.ticket.index')}}');
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
-                        error: function() {
+                        error: function () {
                             swal.fire({title: '未知错误!请通知客服', icon: 'error'});
                         },
                     });
@@ -103,15 +107,14 @@
                         url: '{{route('admin.ticket.update', $ticket->id)}}',
                         data: {_token: '{{csrf_token()}}', content: content},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
-                        error: function() {
+                        error: function () {
                             swal.fire({title: '未知错误!请查看运行日志', icon: 'error'});
                         },
                     });

+ 4 - 4
resources/views/admin/tools/analysis.blade.php

@@ -44,8 +44,8 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
 
     <script type="text/javascript">
-        const TableDatatablesScroller = function() {
-            const e = function() {
+        const TableDatatablesScroller = function () {
+            const e = function () {
                 const e = $('#analysis');
                 e.dataTable({
                     language: {
@@ -77,12 +77,12 @@
                 });
             };
             return {
-                init: function() {
+                init: function () {
                     jQuery().dataTable && (e());
                 },
             };
         }();
-        jQuery(document).ready(function() {
+        jQuery(document).ready(function () {
             TableDatatablesScroller.init();
         });
     </script>

+ 2 - 3
resources/views/admin/tools/convert.blade.php

@@ -107,11 +107,10 @@
                             content: content,
                         },
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 $('#result').val(ret.data);
-                            }
-                            else {
+                            } else {
                                 $('#result').val(ret.message);
                             }
                         },

+ 2 - 3
resources/views/admin/tools/decompile.blade.php

@@ -49,11 +49,10 @@
                         async: false,
                         data: {_token: '{{csrf_token()}}', content: content},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 $('#result').val(ret.data);
-                            }
-                            else {
+                            } else {
                                 $('#result').val(ret.message);
                             }
                         },

+ 1 - 1
resources/views/admin/user/export.blade.php

@@ -76,7 +76,7 @@
     <script type="text/javascript">
         function getInfo(id, type) {
             $.post("{{route('admin.user.exportProxy', $user->id)}}", {_token: '{{csrf_token()}}', id: id, type: type},
-                function(ret) {
+                function (ret) {
                     if (ret.status === 'success') {
                         switch (type) {
                             case 'code':

+ 2 - 3
resources/views/admin/user/group/index.blade.php

@@ -78,11 +78,10 @@
                         url: url,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },

+ 10 - 9
resources/views/admin/user/group/info.blade.php

@@ -18,7 +18,8 @@
                 <x-alert type="danger" :message="$errors->all()"/>
             @endif
             <div class="panel-body">
-                <form action="@isset($userGroup){{route('admin.user.group.update',$userGroup->id)}}@else{{route('admin.user.group.store')}}@endisset" method="POST" enctype="multipart/form-data"
+                <form action="@isset($userGroup){{route('admin.user.group.update',$userGroup->id)}}@else{{route('admin.user.group.store')}}@endisset" method="POST"
+                      enctype="multipart/form-data"
                       class="form-horizontal">
                     @isset($userGroup)@method('PUT')@endisset
                     @csrf
@@ -56,7 +57,7 @@
     <script src="/assets/global/js/jquery.quicksearch.js" type="text/javascript"></script>
     <script type="text/javascript">
         @isset($userGroup)
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#name').val('{{$userGroup->name}}');
             $('#nodes').multiSelect('select',@json($userGroup->nodes));
         });
@@ -65,45 +66,45 @@
         $('#nodes').multiSelect({
             selectableHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'待分配规则,此处可搜索\'>',
             selectionHeader: '<input type=\'text\' class=\'search-input form-control\' autocomplete=\'off\' placeholder=\'已分配规则,此处可搜索\'>',
-            afterInit: function() {
+            afterInit: function () {
                 const that = this,
                     $selectableSearch = that.$selectableUl.prev(),
                     $selectionSearch = that.$selectionUl.prev(),
                     selectableSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selectable:not(.ms-selected)',
                     selectionSearchString = '#' + that.$container.attr('id') + ' .ms-elem-selection.ms-selected';
 
-                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function(e) {
+                that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectableUl.focus();
                         return false;
                     }
                 });
 
-                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function(e) {
+                that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on('keydown', function (e) {
                     if (e.which === 40) {
                         that.$selectionUl.focus();
                         return false;
                     }
                 });
             },
-            afterSelect: function() {
+            afterSelect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
-            afterDeselect: function() {
+            afterDeselect: function () {
                 this.qs1.cache();
                 this.qs2.cache();
             },
         });
 
         // 全选
-        $('#select-all').click(function() {
+        $('#select-all').click(function () {
             $('#node').multiSelect('select_all');
             return false;
         });
 
         // 反选
-        $('#deselect-all').click(function() {
+        $('#deselect-all').click(function () {
             $('#node').multiSelect('deselect_all');
             return false;
         });

+ 14 - 20
resources/views/admin/user/index.blade.php

@@ -192,7 +192,7 @@
     <script src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script src="/assets/custom/Plugin/clipboardjs/clipboard.min.js" type="text/javascript"></script>
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             $('#group').val({{Request::input('group')}});
             $('#level').val({{Request::input('level')}});
             $('#pay_way').val({{Request::input('pay_way')}});
@@ -213,12 +213,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('{{route('admin.user.batch')}}', {_token: '{{csrf_token()}}', amount: result.value}, function(ret) {
+                    $.post('{{route('admin.user.batch')}}', {_token: '{{csrf_token()}}', amount: result.value}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });
@@ -227,7 +225,7 @@
         }
 
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 Search();
                 return false;
@@ -257,11 +255,10 @@
                         url: url,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
                                 swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                            }
-                            else {
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                             }
                         },
@@ -281,12 +278,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('{{route('admin.user.reset')}}', {_token: '{{csrf_token()}}', id: id}, function(ret) {
+                    $.post('{{route('admin.user.reset')}}', {_token: '{{csrf_token()}}', id: id}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });
@@ -296,18 +291,17 @@
 
         // 切换用户身份
         function switchToUser(id) {
-            $.post('{{route('admin.user.switch')}}', {_token: '{{csrf_token()}}', user_id: id}, function(ret) {
+            $.post('{{route('admin.user.switch')}}', {_token: '{{csrf_token()}}', user_id: id}, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                }
-                else {
+                } else {
                     swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                 }
             });
         }
 
         const clipboard = new ClipboardJS('.copySubscribeLink');
-        clipboard.on('success', function() {
+        clipboard.on('success', function () {
             swal.fire({
                 title: '复制成功',
                 icon: 'success',
@@ -315,7 +309,7 @@
                 showConfirmButton: false,
             });
         });
-        clipboard.on('error', function() {
+        clipboard.on('error', function () {
             swal.fire({
                 title: '复制失败,请手动复制',
                 icon: 'error',

+ 20 - 23
resources/views/admin/user/info.blade.php

@@ -339,7 +339,7 @@
     <script src="/assets/global/js/Plugin/bootstrap-datepicker.js" type="text/javascript"></script>
 
     <script type="text/javascript">
-        $(document).ready(function() {
+        $(document).ready(function () {
             @isset($user)
             $('#username').val('{{$user->username}}');
             $('#email').val('{{$user->email}}');
@@ -382,12 +382,10 @@
                 },
                 dataType: 'json',
                 method: 'POST',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
-                        swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                            then(() => window.location.href = '/');
-                    }
-                    else {
+                        swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.href = '/');
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -409,30 +407,28 @@
                 url: '{{route('admin.user.updateCredit')}}',
                 method: 'POST',
                 data: {_token: '{{csrf_token()}}', user_id: '{{$user->id}}', amount: amount},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#msg').show().html('充值中...');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'fail') {
                         $('#msg').show().html(ret.message);
                         return false;
-                    }
-                    else {
+                    } else {
                         $('#handle_user_credit').modal('hide');
                         if (ret.status === 'success') {
                             swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => {
                                 window.location.reload();
                             });
-                        }
-                        else {
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     }
                 },
-                error: function() {
+                error: function () {
                     $('#msg').show().html('请求错误,请重试');
                 },
-                complete: function() {
+                complete: function () {
                 },
             });
         }
@@ -442,7 +438,7 @@
         function Submit() {
             // 用途
             let usage = '';
-            $.each($('input:checkbox[name=\'usage\']'), function() {
+            $.each($('input:checkbox[name=\'usage\']'), function () {
                 if (this.checked) {
                     usage += $(this).val() + ',';
                 }
@@ -478,7 +474,7 @@
                     status: $('input:radio[name=\'status\']:checked').val(),
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({
                             title: '提示',
@@ -493,16 +489,17 @@
                                 }
                             },
                         );
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error', timer: 1000, showConfirmButton: false});
                     }
                 },
-                error: function(data) {
+                error: function (data) {
                     let str = '';
                     const errors = data.responseJSON;
                     if ($.isEmptyObject(errors) === false) {
-                        $.each(errors.errors, function(index, value) {str += '<li>' + value + '</li>';});
+                        $.each(errors.errors, function (index, value) {
+                            str += '<li>' + value + '</li>';
+                        });
                         swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('home.ticket_confirm')}}'});
                     }
                 },
@@ -513,21 +510,21 @@
 
         // 生成随机端口
         function makePort() {
-            $.get('{{route('admin.getPort')}}', function(ret) {
+            $.get('{{route('admin.getPort')}}', function (ret) {
                 $('#port').val(ret);
             });
         }
 
         // 生成UUID
         function makeUUID() {
-            $.get('{{route('createUUID')}}', function(ret) {
+            $.get('{{route('createUUID')}}', function (ret) {
                 $('#uuid').val(ret);
             });
         }
 
         // 生成随机密码
         function makePasswd() {
-            $.get('{{route('createStr')}}', function(ret) {
+            $.get('{{route('createStr')}}', function (ret) {
                 $('#passwd').val(ret);
             });
         }

+ 2 - 2
resources/views/auth/error.blade.php

@@ -94,11 +94,11 @@
 <script src="/assets/global/js/Plugin/asscrollable.js" type="text/javascript"></script>
 <script src="/assets/global/js/Plugin/slidepanel.js" type="text/javascript"></script>
 <script type="text/javascript">
-    (function(document, window, $) {
+    (function (document, window, $) {
         'use strict';
 
         const Site = window.Site;
-        $(document).ready(function() {
+        $(document).ready(function () {
             Site.run();
         });
     })(document, window, jQuery);

+ 4 - 3
resources/views/auth/layouts.blade.php

@@ -55,7 +55,8 @@
         }
     </style>
     <div class="m-0 p-0 w-full h-full text-white" style="z-index: 10; position: absolute;">
-        <div class="font-size-16 h-p33 pl-20 pt-20" style="line-height: 1.8; background: url(//gw.alicdn.com/tfs/TB1eSZaNFXXXXb.XXXXXXXXXXXX-750-234.png) center top/contain no-repeat">
+        <div class="font-size-16 h-p33 pl-20 pt-20"
+             style="line-height: 1.8; background: url(//gw.alicdn.com/tfs/TB1eSZaNFXXXXb.XXXXXXXXXXXX-750-234.png) center top/contain no-repeat">
             <p>点击右上角 <i class="icon wb-more-horizontal"></i>,选择在
                 <img src="//gw.alicdn.com/tfs/TB1xwiUNpXXXXaIXXXXXXXXXXXX-55-55.png" class="w-30 h-30 vertical-align-middle m-3" alt="Safari"/>
                 Safari 中打开
@@ -146,10 +147,10 @@
 <!-- 客服 -->
 {!! sysConfig('website_customer_service') !!}
 <script type="text/javascript">
-    (function(document, window, $) {
+    (function (document, window, $) {
         'use strict';
         const Site = window.Site;
-        $(document).ready(function() {
+        $(document).ready(function () {
             Site.run();
         });
     })(document, window, jQuery);

+ 1 - 1
resources/views/auth/login.blade.php

@@ -40,7 +40,7 @@
 @endsection
 @section('script')
     <script type="text/javascript">
-        $('#login-form').submit(function(event) {
+        $('#login-form').submit(function (event) {
             @switch(sysConfig('is_captcha'))
             @case(3)
             // 先检查Google reCAPTCHA有没有进行验证

+ 3 - 3
resources/views/auth/maintenance.blade.php

@@ -95,18 +95,18 @@
 <script src="/assets/global/js/Plugin/slidepanel.js"></script>
 
 <script>
-    (function(document, window, $) {
+    (function (document, window, $) {
         'use strict';
 
         var Site = window.Site;
-        $(document).ready(function() {
+        $(document).ready(function () {
             Site.run();
         });
     })(document, window, jQuery);
 
     // 每秒更新计时器
     const countDownDate = new Date("{{$time}}").getTime();
-    const x = setInterval(function() {
+    const x = setInterval(function () {
         const distance = countDownDate - new Date().getTime();
         const days = Math.floor(distance / 86400000);
         const hours = Math.floor(distance % 86400000 / 3600000);

+ 8 - 9
resources/views/auth/register.blade.php

@@ -60,7 +60,8 @@
             </div>
             @if(sysConfig('is_invite_register'))
                 <div class="form-group form-material floating" data-plugin="formMaterial">
-                    <input type="password" class="form-control" name="code" value="{{Request::old('code') ?: Request::input('code')}}" @if(sysConfig('is_invite_register') == 2) required @endif/>
+                    <input type="password" class="form-control" name="code" value="{{Request::old('code') ?: Request::input('code')}}"
+                           @if(sysConfig('is_invite_register') == 2) required @endif/>
                     <label class="floating-label" for="code">
                         {{trans('auth.code')}}@if(sysConfig('is_invite_register') == 1)({{trans('auth.optional')}}) @endif
                     </label>
@@ -178,19 +179,18 @@
                 async: false,
                 data: {_token: '{{csrf_token()}}', email: email},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success'});
                         $('#sendCode').attr('disabled', true);
                         flag = true;
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error', timer: 1000, showConfirmButton: false});
                         $('#sendCode').attr('disabled', false);
                         flag = false;
                     }
                 },
-                error: function() {
+                error: function () {
                     swal.fire({title: '发送失败', icon: 'error'});
                     flag = false;
                 },
@@ -200,20 +200,19 @@
             if (flag) {
                 // 60秒后才能重新申请发送
                 let left_time = 60;
-                const tt = window.setInterval(function() {
+                const tt = window.setInterval(function () {
                     left_time--;
                     if (left_time <= 0) {
                         window.clearInterval(tt);
                         $('#sendCode').removeAttr('disabled').text('{{trans('auth.request')}}');
-                    }
-                    else {
+                    } else {
                         $('#sendCode').text(left_time + ' s');
                     }
                 }, 1000);
             }
         }
 
-        $('#register-form').submit(function(event) {
+        $('#register-form').submit(function (event) {
             @if($emailList)
             getEmail();
             @endif

+ 2 - 2
resources/views/emails/activeUser.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/closeTicket.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/newTicket.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/nodeCrashWarning.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/replyTicket.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 3 - 3
resources/views/emails/resetPassword.blade.php

@@ -1,5 +1,5 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional //EN"
-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!--[if IE]>
+        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><!--[if IE]>
 <html xmlns="http://www.w3.org/1999/xhtml" class="ie"><![endif]--><!--[if !IE]><!-->
 <html style="margin: 0;padding: 0;" xmlns="http://www.w3.org/1999/xhtml"><!--<![endif]-->
 <head>
@@ -825,8 +825,8 @@
                             <div style="Margin-left: 20px;Margin-right: 20px;">
                                 <div class="btn btn--flat btn--large" style="Margin-bottom: 20px;text-align: center;">
                                     <![if !mso]><a
-                                        style="border-radius: 4px;display: inline-block;font-size: 14px;font-weight: bold;line-height: 24px;padding: 12px 24px;text-align: center;text-decoration: none !important;transition: opacity 0.1s ease-in;color: #ffffff !important;background-color: #2e74bf;font-family: Ubuntu, sans-serif;"
-                                        href="{{$resetPasswordUrl}}">&#37325;&#32622;&#23494;&#30721;</a><![endif]>
+                                            style="border-radius: 4px;display: inline-block;font-size: 14px;font-weight: bold;line-height: 24px;padding: 12px 24px;text-align: center;text-decoration: none !important;transition: opacity 0.1s ease-in;color: #ffffff !important;background-color: #2e74bf;font-family: Ubuntu, sans-serif;"
+                                            href="{{$resetPasswordUrl}}">&#37325;&#32622;&#23494;&#30721;</a><![endif]>
                                 <!--[if mso]><p style="line-height:0;margin:0;">&nbsp;</p>
 									<v:roundrect xmlns:v="urn:schemas-microsoft-com:vml" href="{{$resetPasswordUrl}}" style="width:104px" arcsize="9%" fillcolor="#2E74BF" stroke="f">
 										<v:textbox style="mso-fit-shape-to-text:t" inset="0px,11px,0px,11px">

+ 2 - 2
resources/views/emails/sendUserInfo.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/sendVerifyCode.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/userExpireWarning.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/userExpireWarningToday.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 2 - 2
resources/views/emails/userTrafficWarning.blade.php

@@ -18,7 +18,7 @@
                                     <th class="small-11 large-11 columns last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:8px;padding-right:16px;text-align:left;width:515.67px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">
@@ -53,7 +53,7 @@
                                     <th class="small-12 large-12 columns first last"
                                         style="Margin:0 auto;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0 auto;padding:0;padding-bottom:0;padding-left:16px;padding-right:16px;text-align:left;width:564px">
                                         <table
-                                            style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
+                                                style="border-collapse:collapse;border-spacing:0;padding:0;text-align:left;vertical-align:top;width:100%">
                                             <tbody>
                                             <tr style="padding:0;text-align:left;vertical-align:top">
                                                 <th style="Margin:0;color:#333;font-family:Helvetica,Arial,sans-serif;font-size:16px;font-weight:400;line-height:19px;margin:0;padding:0;text-align:left">

+ 16 - 30
resources/views/user/buy.blade.php

@@ -80,30 +80,23 @@
                 async: false,
                 data: {_token: '{{csrf_token()}}', coupon_sn: coupon_sn, price: '{{$goods->price}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     $('.input-group-prepend').remove();
                     if (ret.status === 'success') {
-                        $('#coupon_sn').
-                            parent().
-                            prepend(
-                                '<div class="input-group-prepend"><span class="input-group-text bg-green-700"><i class="icon wb-check white" aria-hidden="true"></i></span></div>');
+                        $('#coupon_sn').parent().prepend(
+                            '<div class="input-group-prepend"><span class="input-group-text bg-green-700"><i class="icon wb-check white" aria-hidden="true"></i></span></div>');
                         // 根据类型计算折扣后的总金额
                         let total_price = 0;
                         if (ret.data.type === 2) {
                             total_price = goods_price * (1 - ret.data.value / 100);
-                            $('.page-invoice-amount').
-                                parent().
-                                prepend('<p>优惠码 - ' + ret.data.name + ' ' + ret.data.value + '折<br> 优惠 <span>¥ - ' +
-                                    total_price.toFixed(2) + '</span></p>');
+                            $('.page-invoice-amount').parent().prepend('<p>优惠码 - ' + ret.data.name + ' ' + ret.data.value + '折<br> 优惠 <span>¥ - ' +
+                                total_price.toFixed(2) + '</span></p>');
                             total_price = goods_price - total_price;
-                        }
-                        else {
+                        } else {
                             total_price = goods_price - ret.data.value;
                             total_price = total_price > 0 ? total_price : 0;
                             if (ret.data.type === 1) {
-                                $('.page-invoice-amount').
-                                    parent().
-                                    prepend('优惠码-' + ret.data.name + ' <span>¥ - ' + ret.data.value + '</span>');
+                                $('.page-invoice-amount').parent().prepend('优惠码-' + ret.data.name + ' <span>¥ - ' + ret.data.value + '</span>');
                             }
                         }
 
@@ -115,13 +108,10 @@
                             timer: 1300,
                             showConfirmButton: false,
                         });
-                    }
-                    else {
+                    } else {
                         $('.grand-total').text('¥' + goods_price);
-                        $('#coupon_sn').
-                            parent().
-                            prepend(
-                                '<div class="input-group-prepend"><span class="input-group-text bg-red-700"><i class="icon wb-close white" aria-hidden="true"></i></span></div>');
+                        $('#coupon_sn').parent().prepend(
+                            '<div class="input-group-prepend"><span class="input-group-text bg-red-700"><i class="icon wb-close white" aria-hidden="true"></i></span></div>');
                         swal.fire({
                             title: ret.title,
                             text: ret.message,
@@ -148,8 +138,7 @@
                         contiousPay(method, pay_type);
                     }
                 });
-            }
-            else {
+            } else {
                 contiousPay(method, pay_type);
             }
         }
@@ -169,7 +158,7 @@
                     pay_type: pay_type,
                 },
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({
                             title: ret.message,
@@ -182,22 +171,19 @@
                         }
                         if (ret.data) {
                             window.location.href = '{{route('orderDetail', '')}}/' + ret.data;
-                        }
-                        else if (ret.url) {
+                        } else if (ret.url) {
                             window.location.href = ret.url;
                         }
-                    }
-                    else if (ret.status === 'info') {
+                    } else if (ret.status === 'info') {
                         swal.fire({title: ret.title, text: ret.message, icon: 'question'});
-                    }
-                    else {
+                    } else {
                         swal.fire({
                             title: ret.message,
                             icon: 'error',
                         });
                     }
                 },
-                error: function() {
+                error: function () {
                     swal.fire('未知错误', '请开工单通知客服', 'error');
                 },
             });

+ 11 - 11
resources/views/user/help.blade.php

@@ -36,7 +36,8 @@
                                 <div class="panel-group panel-group-simple panel-group-continuous" id="accordion1" aria-multiselectable="true" role="tablist">
                                     <div class="panel">
                                         <div class="panel-heading" id="question-1" role="tab">
-                                            <a class="panel-title cyan-600" aria-controls="answer-1" aria-expanded="true" data-toggle="collapse" href="#answer-1" data-parent="#accordion1">
+                                            <a class="panel-title cyan-600" aria-controls="answer-1" aria-expanded="true" data-toggle="collapse" href="#answer-1"
+                                               data-parent="#accordion1">
                                                 <i class="icon wb-link" aria-hidden="true"></i>{{trans('home.subscribe_link')}}
                                             </a>
                                         </div>
@@ -49,7 +50,8 @@
                                                         <div class="input-group-btn btn-group" role="group">
                                                             @if(count($sub)>1)
                                                                 <div class="btn-group" role="group">
-                                                                    <button type="button" class="btn btn-primary dropdown-toggle" id="sublink" data-toggle="dropdown" aria-expanded="false">
+                                                                    <button type="button" class="btn btn-primary dropdown-toggle" id="sublink" data-toggle="dropdown"
+                                                                            aria-expanded="false">
                                                                         自定义订阅
                                                                     </button>
                                                                     <div class="dropdown-menu" aria-labelledby="sublink" role="menu">
@@ -85,7 +87,7 @@
                                         <div class="panel-heading" id="question-2" role="tab">
                                             <a class="panel-title" aria-controls="answer-2" aria-expanded="true"
                                                data-toggle="collapse" href="#answer-2" data-parent="#accordion1"><i
-                                                    class="icon md-help-outline" aria-hidden="true"></i>客户端 下载与使用教程
+                                                        class="icon md-help-outline" aria-hidden="true"></i>客户端 下载与使用教程
                                             </a>
                                         </div>
                                         <div class="panel-collapse collapse show" id="answer-2"
@@ -99,7 +101,7 @@
                                         <div class="panel-heading" id="question-3" role="tab">
                                             <a class="panel-title" aria-controls="answer-3" aria-expanded="false"
                                                data-toggle="collapse" href="#answer-3" data-parent="#accordion1"><i
-                                                    class="icon wb-extension" aria-hidden="true"></i>客户端 相关问题解决
+                                                        class="icon wb-extension" aria-hidden="true"></i>客户端 相关问题解决
                                             </a>
                                         </div>
                                         <div class="panel-collapse collapse" id="answer-3" aria-labelledby="question-3"
@@ -311,12 +313,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('{{route('changeSub')}}', {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post('{{route('changeSub')}}', {_token: '{{csrf_token()}}'}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });
@@ -325,7 +325,7 @@
         }
 
         const clipboard = new ClipboardJS('.mt-clipboard');
-        clipboard.on('success', function() {
+        clipboard.on('success', function () {
             swal.fire({
                 title: '复制成功',
                 icon: 'success',
@@ -333,7 +333,7 @@
                 showConfirmButton: false,
             });
         });
-        clipboard.on('error', function() {
+        clipboard.on('error', function () {
             swal.fire({
                 title: '复制失败,请手动复制',
                 icon: 'error',

+ 8 - 8
resources/views/user/index.blade.php

@@ -195,7 +195,8 @@
                                 <div class="panel-actions">
                                     <ul class="nav nav-pills" role="tablist">
                                         <li class="nav-item">
-                                            <a class="nav-link active" data-toggle="tab" href="#daily" aria-controls="daily" role="tab" aria-expanded="true" aria-selected="false">天</a>
+                                            <a class="nav-link active" data-toggle="tab" href="#daily" aria-controls="daily" role="tab" aria-expanded="true"
+                                               aria-selected="false">天</a>
                                         </li>
                                         <li class="nav-item">
                                             <a class="nav-link" data-toggle="tab" href="#monthly" aria-controls="monthly" role="tab" aria-selected="true">月</a>
@@ -230,7 +231,7 @@
     @if(sysConfig('is_push_bear') && sysConfig('push_bear_qrcode'))
         <script src="/assets/custom/qart.min.js"></script>
         <script type="text/javascript">
-            $(document).ready(function() {
+            $(document).ready(function () {
                 new QArt({
                     value: '{{sysConfig('push_bear_qrcode')}}',
                     imagePath: '{{asset('/assets/images/wechat.png')}}',
@@ -245,11 +246,10 @@
     <script type="text/javascript">
         // 签到
         function checkIn() {
-            $.post('{{route('checkIn')}}', {_token: '{{csrf_token()}}'}, function(ret) {
+            $.post('{{route('checkIn')}}', {_token: '{{csrf_token()}}'}, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire('长者的微笑', ret.message, 'success');
-                }
-                else {
+                } else {
                     swal.fire({
                         title: ret.message,
                         icon: 'error',
@@ -295,7 +295,7 @@
                             display: true,
                             ticks: {
                                 beginAtZero: true,
-                                userCallback: function(tick) {
+                                userCallback: function (tick) {
                                     return tick.toString() + ' GB';
                                 },
                             },
@@ -345,7 +345,7 @@
                             display: true,
                             ticks: {
                                 beginAtZero: true,
-                                userCallback: function(tick) {
+                                userCallback: function (tick) {
                                     return tick.toString() + ' GB';
                                 },
                             },
@@ -361,7 +361,7 @@
         @if($banedTime)
         // 每秒更新计时器
         const countDownDate = new Date("{{$banedTime}}").getTime();
-        const x = setInterval(function() {
+        const x = setInterval(function () {
             const distance = countDownDate - new Date().getTime();
             const hours = Math.floor(distance % 86400000 / 3600000);
             const minutes = Math.floor((distance % 3600000) / 60000);

+ 4 - 5
resources/views/user/invite.blade.php

@@ -88,11 +88,10 @@
                 url: '{{route('createInvite')}}',
                 data: {_token: '{{csrf_token()}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success'}).then(() => window.location.reload());
-                    }
-                    else {
+                    } else {
                         swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                     }
                 },
@@ -101,7 +100,7 @@
         }
 
         const clipboard = new ClipboardJS('.mt-clipboard');
-        clipboard.on('success', function() {
+        clipboard.on('success', function () {
             swal.fire({
                 title: '复制成功',
                 icon: 'success',
@@ -109,7 +108,7 @@
                 showConfirmButton: false,
             });
         });
-        clipboard.on('error', function() {
+        clipboard.on('error', function () {
             swal.fire({
                 title: '复制失败,请手动复制',
                 icon: 'error',

+ 6 - 10
resources/views/user/invoices.blade.php

@@ -116,12 +116,10 @@
                         async: false,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
-                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                    then(() => window.location.reload());
-                            }
-                            else {
+                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'});
                             }
                         },
@@ -145,12 +143,10 @@
                         async: false,
                         data: {_token: '{{csrf_token()}}', id: id},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             if (ret.status === 'success') {
-                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                    then(() => window.location.reload());
-                            }
-                            else {
+                                swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                            } else {
                                 swal.fire({title: ret.message, icon: 'error'});
                             }
                         },

+ 6 - 6
resources/views/user/layouts.blade.php

@@ -63,7 +63,7 @@
             <img src="{{sysConfig('website_logo') ?: '/assets/images/logo64.png'}}"
                  class="navbar-brand-logo" alt="logo"/>
             <span
-                class="navbar-brand-text hidden-xs-down"> {{sysConfig('website_name')}}</span>
+                    class="navbar-brand-text hidden-xs-down"> {{sysConfig('website_name')}}</span>
         </div>
     </div>
     <div class="navbar-container container-fluid">
@@ -265,11 +265,11 @@
 <script src="/assets/global/js/Plugin/slidepanel.js" type="text/javascript"></script>
 <script src="/assets/custom/Plugin/js-cookie/js.cookie.min.js" type="text/javascript"></script>
 <script type="text/javascript">
-    (function(document, window, $) {
+    (function (document, window, $) {
         'use strict';
 
         const Site = window.Site;
-        $(document).ready(function() {
+        $(document).ready(function () {
             Site.run();
         });
     })(document, window, jQuery);
@@ -278,13 +278,13 @@
 
 @if(Session::get("admin"))
     <script type="text/javascript">
-        $('#return_to_admin').click(function() {
+        $('#return_to_admin').click(function () {
             $.ajax({
                 method: 'POST',
                 url: '{{route('switch')}}',
                 data: {'_token': '{{csrf_token()}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     swal.fire({
                         title: ret.message,
                         icon: 'success',
@@ -292,7 +292,7 @@
                         showConfirmButton: false,
                     }).then(() => window.location.href = '{{route('admin.index')}}');
                 },
-                error: function(ret) {
+                error: function (ret) {
                     swal.fire({
                         title: ret.message,
                         icon: 'error',

+ 6 - 5
resources/views/user/nodeList.blade.php

@@ -73,7 +73,8 @@
                                         <i class="red-600 icon wb-warning" data-content="线路波动/维护中" data-trigger="hover" data-toggle="popover" data-placement="top"></i>
                                     @endif
                                     @if($node->traffic_rate != 1)
-                                        <i class="green-600 icon wb-info-circle" data-content="{{$node->traffic_rate}} 倍流量消耗" data-trigger="hover" data-toggle="popover" data-placement="top"></i>
+                                        <i class="green-600 icon wb-info-circle" data-content="{{$node->traffic_rate}} 倍流量消耗" data-trigger="hover" data-toggle="popover"
+                                           data-placement="top"></i>
                                     @endif
                                     {{$node->name}}
                                 </p>
@@ -119,7 +120,7 @@
     <script src="/assets/custom/maps/jquery-jvectormap-world-mill-cn.js"></script>
 
     <script type="text/javascript">
-        $(function() {
+        $(function () {
             $('#world-map').vectorMap({
                 map: 'world_mill',
                 scaleColors: ['#C8EEFF', '#0071A4'],
@@ -172,10 +173,10 @@
                 method: 'POST',
                 url: '{{route('node')}}',
                 data: {_token: '{{csrf_token()}}', id: id, type: type},
-                beforeSend: function() {
+                beforeSend: function () {
                     $('#' + type + id).removeAttr('class').addClass('icon wb-loop icon-spin');
                 },
-                success: function(ret) {
+                success: function (ret) {
                     if (ret.status === 'success') {
                         switch (type) {
                             case 'code':
@@ -207,7 +208,7 @@
                         }
                     }
                 },
-                complete: function() {
+                complete: function () {
                     $('#' + type + id).removeAttr('class').addClass(oldClass);
                 },
             });

+ 4 - 5
resources/views/user/payment.blade.php

@@ -41,7 +41,7 @@
     @if($payment->qr_code && $payment->url)
         <script src="/assets/custom/qart.min.js"></script>
         <script type="text/javascript">
-            $(document).ready(function() {
+            $(document).ready(function () {
                 new QArt({
                     value: '{{$payment->url}}',
                     imagePath: '{{asset($pay_type_icon)}}',
@@ -55,20 +55,19 @@
 
     <script type="text/javascript">
         // 检查支付单状态
-        const r = window.setInterval(function() {
+        const r = window.setInterval(function () {
             $.ajax({
                 method: 'GET',
                 url: '{{route('orderStatus')}}',
                 data: {trade_no: '{{$payment->trade_no}}'},
                 dataType: 'json',
-                success: function(ret) {
+                success: function (ret) {
                     window.clearInterval();
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, icon: 'success', timer: 1500, showConfirmButton: false}).then(() => {
                             window.location.href = '{{route('invoice')}}';
                         });
-                    }
-                    else if (ret.status === 'error') {
+                    } else if (ret.status === 'error') {
                         swal.fire({title: ret.message, icon: 'error', timer: 1500, showConfirmButton: false}).then(() => {
                             window.location.href = '{{route('invoice')}}';
                         });

+ 5 - 6
resources/views/user/referral.blade.php

@@ -122,7 +122,7 @@
                 <div class="card">
                     <div class="card-block">
                         <h4 class="card-title cyan-600"><i
-                                class="icon wb-star-outline"></i> {{trans('home.referral_apply_title')}}</h4>
+                                    class="icon wb-star-outline"></i> {{trans('home.referral_apply_title')}}</h4>
                         <table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
                             <thead class="thead-default">
                             <tr>
@@ -172,20 +172,19 @@
     <script type="text/javascript">
         // 申请提现
         function extractMoney() {
-            $.post('{{route('applyCommission')}}', {_token: '{{csrf_token()}}'}, function(ret) {
+            $.post('{{route('applyCommission')}}', {_token: '{{csrf_token()}}'}, function (ret) {
                 if (ret.status === 'success') {
                     swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => {
                         window.location.reload();
                     });
-                }
-                else {
+                } else {
                     swal.fire('申请失败', ret.message, 'error');
                 }
             });
         }
 
         const clipboard = new ClipboardJS('.mt-clipboard');
-        clipboard.on('success', function() {
+        clipboard.on('success', function () {
             swal.fire({
                 title: '复制成功',
                 icon: 'success',
@@ -193,7 +192,7 @@
                 showConfirmButton: false,
             });
         });
-        clipboard.on('error', function() {
+        clipboard.on('error', function () {
             swal.fire({
                 title: '复制失败,请手动复制',
                 icon: 'error',

+ 5 - 6
resources/views/user/replyTicket.blade.php

@@ -41,7 +41,7 @@
 @section('script')
     <script type="text/javascript">
         //回车检测
-        $(document).on('keypress', 'input', function(e) {
+        $(document).on('keypress', 'input', function (e) {
             if (e.which === 13) {
                 replyTicket();
                 return false;
@@ -65,14 +65,14 @@
                         async: true,
                         data: {_token: '{{csrf_token()}}', id: '{{$ticket->id}}'},
                         dataType: 'json',
-                        success: function(ret) {
+                        success: function (ret) {
                             swal.fire({
                                 title: ret.message,
                                 icon: 'success',
                                 timer: 1300,
                             }).then(() => window.location.href = '{{route('ticket')}}');
                         },
-                        error: function() {
+                        error: function () {
                             swal.fire({title: '未知错误!请通知客服', icon: 'error'});
                         },
                     });
@@ -101,7 +101,7 @@
                         _token: '{{csrf_token()}}',
                         id: '{{$ticket->id}}',
                         content: content,
-                    }, function(ret) {
+                    }, function (ret) {
                         if (ret.status === 'success') {
                             swal.fire({
                                 title: ret.message,
@@ -109,8 +109,7 @@
                                 timer: 1000,
                                 showConfirmButton: false,
                             }).then(() => window.location.reload());
-                        }
-                        else {
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });

+ 16 - 23
resources/views/user/services.blade.php

@@ -175,14 +175,12 @@
                 $('#change_btn').hide();
                 $('#charge_qrcode').hide();
                 $('#charge_coupon_code').hide();
-            }
-            else if (value === 2) {
+            } else if (value === 2) {
                 $('.charge_credit').hide();
                 $('#change_btn').hide();
                 $('#charge_qrcode').show();
                 $('#charge_coupon_code').hide();
-            }
-            else {
+            } else {
                 $('.charge_credit').hide();
                 $('#charge_qrcode').hide();
                 $('#charge_coupon_code').show();
@@ -190,7 +188,7 @@
             }
         }
 
-        $(document).ready(function() {
+        $(document).ready(function () {
             let which_selected = 3;
             @if(sysConfig('is_onlinePay'))
                 which_selected = 1;
@@ -203,7 +201,7 @@
         });
 
         // 切换充值方式
-        $('#charge_type').change(function() {
+        $('#charge_type').change(function () {
             itemControl(parseInt($(this).val()));
         });
 
@@ -218,12 +216,10 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('{{route('resetTraffic')}}', {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post('{{route('resetTraffic')}}', {_token: '{{csrf_token()}}'}, function (ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
-                        }
-                        else {
+                            swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
+                        } else {
                             swal.fire({
                                 title: ret.message,
                                 text: ret.data,
@@ -251,29 +247,26 @@
                     url: '{{route('purchase')}}',
                     data: {_token: '{{csrf_token()}}', amount: amount, method: method, pay_type: pay_type},
                     dataType: 'json',
-                    beforeSend: function() {
+                    beforeSend: function () {
                         $('#charge_msg').show().html('创建支付单中...');
                     },
-                    success: function(ret) {
+                    success: function (ret) {
                         if (ret.status === 'fail') {
                             return false;
-                        }
-                        else {
+                        } else {
                             $('#charge_msg').show().html(ret.message);
                             if (ret.data) {
                                 window.location.href = '{{route('orderDetail' , '')}}/' + ret.data;
-                            }
-                            else if (ret.url) {
+                            } else if (ret.url) {
                                 window.location.href = ret.url;
                             }
                         }
                     },
-                    error: function() {
+                    error: function () {
                         $('#charge_msg').show().html("{{trans('home.error_response')}}");
                     },
                 });
-            }
-            else if (paymentType === 3) {
+            } else if (paymentType === 3) {
                 if (charge_coupon === '') {
                     $('#charge_msg').show().html("{{trans('home.coupon_not_empty')}}");
                     $('#charge_coupon').focus();
@@ -284,10 +277,10 @@
                     method: 'POST',
                     url: '{{route('recharge')}}',
                     data: {_token: '{{csrf_token()}}', coupon_sn: charge_coupon},
-                    beforeSend: function() {
+                    beforeSend: function () {
                         $('#charge_msg').show().html("{{trans('home.recharging')}}");
                     },
-                    success: function(ret) {
+                    success: function (ret) {
                         if (ret.status === 'fail') {
                             $('#charge_msg').show().html(ret.message);
                             return false;
@@ -296,7 +289,7 @@
                         $('#charge_modal').modal('hide');
                         window.location.reload();
                     },
-                    error: function() {
+                    error: function () {
                         $('#charge_msg').show().html("{{trans('home.error_response')}}");
                     },
                 });

+ 1 - 1
resources/views/user/stripe-checkout.blade.php

@@ -13,7 +13,7 @@
     <script src="https://js.stripe.com/v3/"></script>
     <script>
         let stripe = Stripe('{{ sysConfig('stripe_public_key') }}');
-        let redirectData = stripe.redirectToCheckout({ sessionId: '{{ $session_id  }}' });
+        let redirectData = stripe.redirectToCheckout({sessionId: '{{ $session_id  }}'});
         console.log(redirectData);
     </script>
 @endsection

+ 2 - 3
resources/views/user/ticketList.blade.php

@@ -157,11 +157,10 @@
                         _token: '{{csrf_token()}}',
                         title: title,
                         content: content,
-                    }, function(ret) {
+                    }, function (ret) {
                         if (ret.status === 'success') {
                             swal.fire({title: ret.message, icon: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
-                        }
-                        else {
+                        } else {
                             swal.fire({title: ret.message, icon: 'error'}).then(() => window.location.reload());
                         }
                     });

+ 1 - 1
routes/web.php

@@ -5,7 +5,7 @@ if (env('APP_KEY') && \Illuminate\Support\Facades\Schema::hasTable('config')) {
         ->get('s/{code}', 'User\SubscribeController@getSubscribeByCode')->name('sub'); // 节点订阅地址
 
     Route::domain(sysConfig('website_callback_url') ?: sysConfig('website_url'))
-        ->any('callback/notify', 'PaymentController@notify')->name('payment.notify'); //支付回调
+        ->match(['get', 'post'], 'callback/notify', 'PaymentController@notify')->name('payment.notify'); //支付回调
 }
 
 Route::get('callback/checkout', 'Gateway\PayPal@getCheckout')->name('paypal.checkout'); // 支付回调相关

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio