Browse Source

用户与公共路由改写

兔姬桑 4 years ago
parent
commit
adeaca2612
44 changed files with 302 additions and 324 deletions
  1. 4 4
      app/Exceptions/Handler.php
  2. 1 1
      app/Http/Controllers/Admin/CouponController.php
  3. 1 1
      app/Http/Controllers/Admin/ShopController.php
  4. 1 1
      app/Http/Controllers/Admin/UserController.php
  5. 1 1
      app/Http/Controllers/Admin/UserGroupController.php
  6. 16 16
      app/Http/Controllers/AuthController.php
  7. 3 3
      app/Http/Controllers/Gateway/BitpayX.php
  8. 2 2
      app/Http/Controllers/Gateway/CodePay.php
  9. 2 2
      app/Http/Controllers/Gateway/EPay.php
  10. 2 2
      app/Http/Controllers/Gateway/F2Fpay.php
  11. 1 1
      app/Http/Controllers/Gateway/PayJs.php
  12. 4 4
      app/Http/Controllers/Gateway/PayPal.php
  13. 1 1
      app/Http/Controllers/User/AffiliateController.php
  14. 1 1
      app/Http/Controllers/User/SubscribeController.php
  15. 12 12
      app/Http/Controllers/UserController.php
  16. 1 1
      app/Http/Middleware/isAdmin.php
  17. 1 1
      app/Http/Middleware/isAdminlogin.php
  18. 1 1
      app/Http/Middleware/isLogin.php
  19. 1 5
      app/Http/Middleware/isSecurity.php
  20. 1 1
      config/version.php
  21. 4 4
      resources/views/admin/node/auth.blade.php
  22. 1 1
      resources/views/auth/active.blade.php
  23. 4 3
      resources/views/auth/activeUser.blade.php
  24. 2 2
      resources/views/auth/free.blade.php
  25. 11 15
      resources/views/auth/layouts.blade.php
  26. 14 13
      resources/views/auth/login.blade.php
  27. 32 44
      resources/views/auth/register.blade.php
  28. 2 2
      resources/views/auth/reset.blade.php
  29. 5 5
      resources/views/auth/resetPassword.blade.php
  30. 19 21
      resources/views/user/buy.blade.php
  31. 12 13
      resources/views/user/help.blade.php
  32. 4 4
      resources/views/user/index.blade.php
  33. 5 7
      resources/views/user/invite.blade.php
  34. 18 20
      resources/views/user/invoiceDetail.blade.php
  35. 8 8
      resources/views/user/invoices.blade.php
  36. 31 34
      resources/views/user/layouts.blade.php
  37. 1 1
      resources/views/user/nodeList.blade.php
  38. 3 3
      resources/views/user/payment.blade.php
  39. 9 7
      resources/views/user/profile.blade.php
  40. 8 7
      resources/views/user/referral.blade.php
  41. 5 5
      resources/views/user/replyTicket.blade.php
  42. 9 9
      resources/views/user/services.blade.php
  43. 4 5
      resources/views/user/ticketList.blade.php
  44. 34 30
      routes/web.php

+ 4 - 4
app/Exceptions/Handler.php

@@ -100,12 +100,12 @@ class Handler extends ExceptionHandler
             if ($request->ajax()) {
                 return Response::json([
                     'status'  => 'fail',
-                    'message' => trans('error.RefreshPage').'<a href="/login" target="_blank">'.trans('error.Refresh').'</a>',
+                    'message' => trans('error.RefreshPage').'<a href="'.route('login').'" target="_blank">'.trans('error.Refresh').'</a>',
                 ]);
             }
 
             return Response::view('auth.error',
-                ['message' => trans('error.RefreshPage').'<a href="/login" target="_blank">'.trans('error.Refresh').'</a>'], 419);
+                ['message' => trans('error.RefreshPage').'<a href="'.route('login').'" target="_blank">'.trans('error.Refresh').'</a>'], 419);
         }
 
         // 捕获反射异常
@@ -122,12 +122,12 @@ class Handler extends ExceptionHandler
             if ($request->ajax()) {
                 return Response::json([
                     'status'  => 'fail',
-                    'message' => trans('error.SystemError').', '.trans('error.Visit').'<a href="/logs" target="_blank">'.trans('error.log').'</a>',
+                    'message' => trans('error.SystemError').', '.trans('error.Visit').'<a href="'.route('log.viewer').'" target="_blank">'.trans('error.log').'</a>',
                 ]);
             }
 
             return Response::view('auth.error',
-                ['message' => trans('error.SystemError').', '.trans('error.Visit').'<a href="/logs" target="_blank">'.trans('error.log').'</a>'],
+                ['message' => trans('error.SystemError').', '.trans('error.Visit').'<a href="'.route('log.viewer').'" target="_blank">'.trans('error.log').'</a>'],
                 500);
         }
 

+ 1 - 1
app/Http/Controllers/Admin/CouponController.php

@@ -86,7 +86,7 @@ class CouponController extends Controller
                 $obj->save();
             }
 
-            return Redirect::to(route('admin.coupon.index'))->with('successMsg', '生成成功');
+            return Redirect::route('admin.coupon.index')->with('successMsg', '生成成功');
         } catch (Exception $e) {
             Log::error('生成优惠券失败:'.$e->getMessage());
 

+ 1 - 1
app/Http/Controllers/Admin/ShopController.php

@@ -75,7 +75,7 @@ class ShopController extends Controller
             $good = Goods::create($data);
 
             if ($good) {
-                return Redirect::to(route('admin.goods.edit', $good->id))->with('successMsg', '添加成功');
+                return Redirect::route('admin.goods.edit', $good->id)->with('successMsg', '添加成功');
             }
         } catch (Exception $e) {
             Log::error('添加商品信息异常:'.$e->getMessage());

+ 1 - 1
app/Http/Controllers/Admin/UserController.php

@@ -123,7 +123,7 @@ class UserController extends Controller
             $user->trafficWarning = $totalTraffic > (sysConfig('traffic_ban_value') * GB) ? 1 : 0;
 
             // 订阅地址
-            $user->link = (sysConfig('subscribe_domain') ?: sysConfig('website_url')).'/s/'.$user->subscribe->code;
+            $user->link = route('sub', $user->subscribe->code);
         }
 
         return view('admin.user.index', [

+ 1 - 1
app/Http/Controllers/Admin/UserGroupController.php

@@ -43,7 +43,7 @@ class UserGroupController extends Controller
         $userGroup = UserGroup::create(['name' => $request->input('name'), 'nodes' => $request->input('nodes')]);
 
         if ($userGroup) {
-            return Redirect::to(route('admin.user.group.edit', $userGroup->id))->with('successMsg', '操作成功');
+            return Redirect::route('admin.user.group.edit', $userGroup->id)->with('successMsg', '操作成功');
         }
 
         return Redirect::back()->withInput()->withErrors('操作失败');

+ 16 - 16
app/Http/Controllers/AuthController.php

@@ -85,7 +85,7 @@ class AuthController extends Controller
                 if ($user->status === 0 && sysConfig('is_activate_account')) {
                     Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话
 
-                    return Redirect::back()->withInput()->withErrors(trans('auth.active_tip').'<a href="/activeUser?email='.$email.'" target="_blank"><span style="color:#000">【'.trans('auth.active_account').'】</span></a>');
+                    return Redirect::back()->withInput()->withErrors(trans('auth.active_tip').'<a href="'.route('active').'?email='.$email.'" target="_blank"><span style="color:#000">【'.trans('auth.active_account').'】</span></a>');
                 }
             }
 
@@ -97,18 +97,18 @@ class AuthController extends Controller
 
             // 根据权限跳转
             if ($user->is_admin) {
-                return Redirect::to('admin');
+                return Redirect::route('admin.index');
             }
 
-            return Redirect::to('/');
+            return Redirect::route('home');
         }
 
         if (Auth::check()) {
             if (Auth::getUser()->is_admin) {
-                return Redirect::to('admin');
+                return Redirect::route('admin.index');
             }
 
-            return Redirect::to('/');
+            return Redirect::route('home');
         }
 
         return view('auth.login');
@@ -191,7 +191,7 @@ class AuthController extends Controller
     {
         Auth::logout();
 
-        return Redirect::to('login');
+        return Redirect::route('login');
     }
 
     // 注册
@@ -332,7 +332,7 @@ class AuthController extends Controller
             if (sysConfig('is_activate_account') == 2) {
                 // 生成激活账号的地址
                 $token = $this->addVerifyUrl($uid, $email);
-                $activeUserUrl = sysConfig('website_url').'/active/'.$token;
+                $activeUserUrl = route('activeAccount', $token);
 
                 $logId = Helpers::addNotificationLog('注册激活', '请求地址:'.$activeUserUrl, 1, $email);
                 Mail::to($email)->send(new activeUser($logId, $activeUserUrl));
@@ -354,7 +354,7 @@ class AuthController extends Controller
                 Session::flash('regSuccessMsg', trans('auth.register_success'));
             }
 
-            return Redirect::to('login')->withInput();
+            return Redirect::route('login')->withInput();
         }
 
         $view['emailList'] = sysConfig('is_email_filtering') != 2 ? false : EmailFilter::whereType(2)->get();
@@ -491,7 +491,7 @@ class AuthController extends Controller
             $token = $this->addVerifyUrl($user->id, $email);
 
             // 发送邮件
-            $resetPasswordUrl = sysConfig('website_url').'/reset/'.$token;
+            $resetPasswordUrl = route('resettingPasswd', $token);
 
             $logId = Helpers::addNotificationLog('重置密码', '请求地址:'.$resetPasswordUrl, 1, $email);
             Mail::to($email)->send(new resetPassword($logId, $resetPasswordUrl));
@@ -508,7 +508,7 @@ class AuthController extends Controller
     public function reset(Request $request, $token)
     {
         if (!$token) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
 
         if ($request->isMethod('POST')) {
@@ -532,7 +532,7 @@ class AuthController extends Controller
             $verify = Verify::type(1)->whereToken($token)->first();
             $user = $verify->user;
             if (!$verify) {
-                return Redirect::to('login');
+                return Redirect::route('login');
             }
 
             if ($verify->status === 1) {
@@ -556,12 +556,12 @@ class AuthController extends Controller
             $verify->status = 1;
             $verify->save();
 
-            return Redirect::to('login')->with('successMsg', trans('auth.reset_password_new'));
+            return Redirect::route('login')->with('successMsg', trans('auth.reset_password_new'));
         }
 
         $verify = Verify::type(1)->whereToken($token)->first();
         if (!$verify) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
 
         if (time() - strtotime($verify->created_at) >= 1800) {
@@ -622,7 +622,7 @@ class AuthController extends Controller
             $token = $this->addVerifyUrl($user->id, $email);
 
             // 发送邮件
-            $activeUserUrl = sysConfig('website_url').'/active/'.$token;
+            $activeUserUrl = route('activeAccount', $token);
 
             $logId = Helpers::addNotificationLog('激活账号', '请求地址:'.$activeUserUrl, 1, $email);
             Mail::to($email)->send(new activeUser($logId, $activeUserUrl));
@@ -639,13 +639,13 @@ class AuthController extends Controller
     public function active($token)
     {
         if (!$token) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
 
         $verify = Verify::type(1)->with('user')->whereToken($token)->first();
         $user = $verify->user;
         if (!$verify) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
 
         if (empty($user)) {

+ 3 - 3
app/Http/Controllers/Gateway/BitpayX.php

@@ -21,9 +21,9 @@ class BitpayX extends AbstractPayment
             'price_currency'    => 'CNY',
             'title'             => '支付单号:'.$payment->trade_no,
             'description'       => sysConfig('subject_name') ?: sysConfig('website_name'),
-            'callback_url'      => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=bitpayx',
-            'success_url'       => sysConfig('website_url').'/invoices',
-            'cancel_url'        => sysConfig('website_url').'/invoices',
+            'callback_url'      => route('payment.notify', ['method' => 'bitpayx']),
+            'success_url'       => route('invoice'),
+            'cancel_url'        => route('invoice'),
             'token'             => $this->sign($payment->trade_no),
         ];
         $result = $this->sendRequest($data);

+ 2 - 2
app/Http/Controllers/Gateway/CodePay.php

@@ -20,8 +20,8 @@ class CodePay extends AbstractPayment
             'price'      => $payment->amount,
             'page'       => 1,
             'outTime'    => 900,
-            'notify_url' => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=codepay',
-            'return_url' => sysConfig('website_url').'/invoices',
+            'notify_url' => route('payment.notify', ['method' => 'codepay']),
+            'return_url' => route('invoice'),
         ];
         $data['sign'] = $this->aliStyleSign($data, sysConfig('codepay_key'));
 

+ 2 - 2
app/Http/Controllers/Gateway/EPay.php

@@ -31,8 +31,8 @@ class EPay extends AbstractPayment
         $data = [
             'pid'          => sysConfig('epay_mch_id'),
             'type'         => $type,
-            'notify_url'   => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=epay',
-            'return_url'   => sysConfig('website_url').'/invoices',
+            'notify_url'   => route('payment.notify', ['method' => 'epay']),
+            'return_url'   => route('invoice'),
             'out_trade_no' => $payment->trade_no,
             'name'         => sysConfig('subject_name') ?: sysConfig('website_name'),
             'money'        => $payment->amount,

+ 2 - 2
app/Http/Controllers/Gateway/F2Fpay.php

@@ -25,8 +25,8 @@ class F2Fpay extends AbstractPayment
             'ali_public_key'  => sysConfig('f2fpay_public_key'),
             'rsa_private_key' => sysConfig('f2fpay_private_key'),
             'limit_pay'       => [],
-            'notify_url'      => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=f2fpay',
-            'return_url'      => sysConfig('website_url').'/invoices',
+            'notify_url'      => route('payment.notify', ['method' => 'f2fpay']),
+            'return_url'      => route('invoice'),
             'fee_type'        => 'CNY',
         ];
     }

+ 1 - 1
app/Http/Controllers/Gateway/PayJs.php

@@ -28,7 +28,7 @@ class PayJs extends AbstractPayment
             'body'         => sysConfig('subject_name') ?: sysConfig('website_name'),
             'total_fee'    => $payment->amount * 100,
             'out_trade_no' => $payment->trade_no,
-            'notify_url'   => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=payjs',
+            'notify_url'   => route('payment.notify', ['method' => 'payjs']),
         ]);
 
         // 获取收款二维码内容

+ 4 - 4
app/Http/Controllers/Gateway/PayPal.php

@@ -34,7 +34,7 @@ class PayPal extends AbstractPayment
             'payment_action' => 'Sale',
             'currency'       => 'USD',
             'billing_type'   => 'MerchantInitiatedBilling',
-            'notify_url'     => (sysConfig('website_callback_url') ?: sysConfig('website_url')).'/callback/notify?method=paypal',
+            'notify_url'     => route('payment.notify', ['method' => 'paypal']),
             'locale'         => 'zh_CN',
             'validate_ssl'   => true,
         ];
@@ -86,8 +86,8 @@ class PayPal extends AbstractPayment
                 ],
             ],
             'invoice_description' => $trade_no,
-            'return_url'          => sysConfig('website_url').'/callback/checkout',
-            'cancel_url'          => sysConfig('website_url').'/invoices',
+            'return_url'          => route('paypal.checkout'),
+            'cancel_url'          => route('invoice'),
             'total'               => $amount,
         ];
     }
@@ -115,7 +115,7 @@ class PayPal extends AbstractPayment
             }
         }
 
-        return redirect('/invoices');
+        return redirect(route('invoice'));
     }
 
     public function notify($request): void

+ 1 - 1
app/Http/Controllers/User/AffiliateController.php

@@ -24,7 +24,7 @@ class AffiliateController extends Controller
         $view['referral_money'] = sysConfig('referral_money');
         $view['totalAmount'] = ReferralLog::uid()->sum('commission') / 100;
         $view['canAmount'] = ReferralLog::uid()->whereStatus(0)->sum('commission') / 100;
-        $view['aff_link'] = sysConfig('website_url').'/register?aff='.Auth::id();
+        $view['aff_link'] = route('register', ['aff' => Auth::id()]);
         $view['referralLogList'] = ReferralLog::uid()->with('invitee:id,email')->latest()->paginate(10, ['*'], 'log_page');
         $view['referralApplyList'] = ReferralApply::uid()->latest()->paginate(10, ['*'], 'apply_page');
         $view['referralUserList'] = Auth::getUser()->invitees()->select(['email', 'created_at'])->latest()->paginate(10, ['*'], 'user_page');

+ 1 - 1
app/Http/Controllers/User/SubscribeController.php

@@ -19,7 +19,7 @@ class SubscribeController extends Controller
     public function getSubscribeByCode(Request $request, $code)
     {
         if (empty($code)) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
         $this->subType = $request->input('type');
 

+ 12 - 12
app/Http/Controllers/UserController.php

@@ -163,44 +163,44 @@ class UserController extends Controller
             // 修改密码
             if ($old_password && $new_password) {
                 if (!Hash::check($old_password, $user->password)) {
-                    return Redirect::to('profile#tab_1')->withErrors('旧密码错误,请重新输入');
+                    return Redirect::back()->withErrors('旧密码错误,请重新输入');
                 }
 
                 if (Hash::check($new_password, $user->password)) {
-                    return Redirect::to('profile#tab_1')->withErrors('新密码不可与旧密码一样,请重新输入');
+                    return Redirect::back()->withErrors('新密码不可与旧密码一样,请重新输入');
                 }
 
                 // 演示环境禁止改管理员密码
                 if ($user->id === 1 && config('app.demo')) {
-                    return Redirect::to('profile#tab_1')->withErrors('演示环境禁止修改管理员密码');
+                    return Redirect::back()->withErrors('演示环境禁止修改管理员密码');
                 }
 
                 if (!$user->update(['password' => $new_password])) {
-                    return Redirect::to('profile#tab_1')->withErrors('修改失败');
+                    return Redirect::back()->withErrors('修改失败');
                 }
 
-                return Redirect::to('profile#tab_1')->with('successMsg', '修改成功');
+                return Redirect::back()->with('successMsg', '修改成功');
                 // 修改代理密码
             }
 
             if ($passwd) {
                 if (!$user->update(['passwd' => $passwd])) {
-                    return Redirect::to('profile#tab_3')->withErrors('修改失败');
+                    return Redirect::back()->withErrors('修改失败');
                 }
 
-                return Redirect::to('profile#tab_3')->with('successMsg', '修改成功');
+                return Redirect::back()->with('successMsg', '修改成功');
             }
 
             // 修改联系方式
             if (empty($username)) {
-                return Redirect::to('profile#tab_2')->withErrors('修改失败,昵称不能为空值');
+                return Redirect::back()->withErrors('修改失败,昵称不能为空值');
             }
 
             if (!$user->update(['username' => $username, 'wechat' => $wechat, 'qq' => $qq])) {
-                return Redirect::to('profile#tab_2')->withErrors('修改失败');
+                return Redirect::back()->withErrors('修改失败');
             }
 
-            return Redirect::to('profile#tab_2')->with('successMsg', '修改成功');
+            return Redirect::back()->with('successMsg', '修改成功');
         }
 
         return view('user.profile');
@@ -491,7 +491,7 @@ class UserController extends Controller
         $user = Auth::getUser();
         $goods = Goods::whereId($goods_id)->whereStatus(1)->first();
         if (empty($goods)) {
-            return Redirect::to('services');
+            return Redirect::route('shop');
         }
         // 有重置日时按照重置日为标准,否者就以过期日为标准
         $dataPlusDays = $user->reset_time ?? $user->expired_at;
@@ -528,7 +528,7 @@ class UserController extends Controller
         // 订阅连接
         $subscribe = UserSubscribe::whereUserId(Auth::id())->firstOrFail();
         $view['subscribe_status'] = $subscribe->status;
-        $subscribe_link = (sysConfig('subscribe_domain') ?: sysConfig('website_url')).'/s/'.$subscribe->code;
+        $subscribe_link = route('sub', $subscribe->code);
         $view['link'] = $subscribe_link;
         $view['subscribe_link'] = 'sub://'.base64url_encode($subscribe_link);
         $view['Shadowrocket_link'] = 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.(sysConfig('website_name').'-'.sysConfig('website_url'));

+ 1 - 1
app/Http/Middleware/isAdmin.php

@@ -20,7 +20,7 @@ class isAdmin
     public function handle(Request $request, Closure $next)
     {
         if (!Auth::getUser()->is_admin) {
-            return Redirect::to('/');
+            return Redirect::route('home');
         }
 
         return $next($request);

+ 1 - 1
app/Http/Middleware/isAdminlogin.php

@@ -19,7 +19,7 @@ class isAdminLogin
     public function handle(Request $request, Closure $next)
     {
         if (auth()->guest()) {
-            return Redirect::to('admin/login');
+            return Redirect::route('admin.login');
         }
 
         return $next($request);

+ 1 - 1
app/Http/Middleware/isLogin.php

@@ -19,7 +19,7 @@ class isLogin
     public function handle(Request $request, Closure $next)
     {
         if (auth()->guest()) {
-            return Redirect::to('login');
+            return Redirect::route('login');
         }
 
         return $next($request);

+ 1 - 5
app/Http/Middleware/isSecurity.php

@@ -32,11 +32,7 @@ class isSecurity
                 return Response::view(
                     'auth.error',
                     [
-                        'message' => trans('error.SecurityError').',
-                        '.trans(
-                                'error.Visit'
-                            ).'<a href="/login?securityCode=" target="_self">'.
-                            trans('error.SecurityEnter').'</a>',
+                        'message' => trans('error.SecurityError').','.trans('error.Visit').'<a href="'.route('login').'?securityCode=" target="_self">'.trans('error.SecurityEnter').'</a>',
                     ],
                     403
                 );

+ 1 - 1
config/version.php

@@ -1,6 +1,6 @@
 <?php
 
 return [
-    'number' => '2.5.a',
     'name'   => 'ProxyPanel',
+    'number' => '2.5.a',
 ];

+ 4 - 4
resources/views/admin/node/auth.blade.php

@@ -90,7 +90,7 @@
                                 <div class="text-center red-700 mb-5">VNET-V2Ray</div>
                                 (yum install curl 2> /dev/null || apt install curl 2> /dev/null) \<br>
                                 && curl -L -s http://mrw.so/5XKg2o \<br>
-                                | WEB_API="{{sysConfig('web_api_url') ?? sysConfig('website_url')}}" \<br>
+                                | WEB_API="{{sysConfig('web_api_url') ?: sysConfig('website_url')}}" \<br>
                                 NODE_ID={{$vl->node->id}} \<br>
                                 NODE_KEY={{$vl->key}} \<br>
                                 bash
@@ -115,7 +115,7 @@
                                 <div class="text-center red-700 mb-5">V2Ray-Poseidon</div>
                                 (yum install curl 2> /dev/null || apt install curl 2> /dev/null) \<br>
                                 && curl -L -s http://mrw.so/5Qe2UX \<br>
-                                | WEB_API="{{sysConfig('web_api_url') ?? sysConfig('website_url')}}" \<br>
+                                | WEB_API="{{sysConfig('web_api_url') ?: sysConfig('website_url')}}" \<br>
                                 NODE_ID={{$vl->node->id}} \<br>
                                 NODE_KEY={{$vl->key}} \<br>
                                 bash
@@ -145,7 +145,7 @@
                                     <div class="text-center red-700 mb-5">Trojan-Poseidon</div>
                                     (yum install curl 2> /dev/null || apt install curl 2> /dev/null) \<br>
                                     && curl -L -s http://mrw.so/6cMfGy \<br>
-                                    | WEB_API="{{sysConfig('web_api_url') ?? sysConfig('website_url')}}" \<br>
+                                    | WEB_API="{{sysConfig('web_api_url') ?: sysConfig('website_url')}}" \<br>
                                     NODE_ID={{$vl->node->id}} \<br>
                                     NODE_KEY={{$vl->key}} \<br>
                                     NODE_HOST={{$vl->node->server}} \<br>
@@ -173,7 +173,7 @@
                                 <div class="text-center red-700 mb-5">VNET</div>
                                 (yum install curl 2> /dev/null || apt install curl 2> /dev/null) \<br>
                                 && curl -L -s http://mrw.so/6kit3t \<br>
-                                | WEB_API="{{sysConfig('web_api_url') ?? sysConfig('website_url')}}" \<br>
+                                | WEB_API="{{sysConfig('web_api_url') ?: sysConfig('website_url')}}" \<br>
                                 NODE_ID={{$vl->node->id}} \<br>
                                 NODE_KEY={{$vl->key}} \<br>
                                 bash

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

@@ -8,6 +8,6 @@
         <x-alert type="success" :message="Session::get('successMsg')"/>
     @endif
     <form action="{{url(Request::getRequestUri())}}" method="post">
-        <a href="/login" class="btn btn-lg btn-block btn-success">{{trans('auth.login')}}</a>
+        <a href="{{route('login')}}" class="btn btn-lg btn-block btn-success">{{trans('auth.login')}}</a>
     </form>
 @endsection

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

@@ -7,7 +7,7 @@
     @if($errors->any())
         <x-alert type="danger" :message="$errors->all()"/>
     @endif
-    <form action="/activeUser" method="post">
+    <form action="{{route('active')}}" method="post">
         @csrf
         @if(sysConfig('is_activate_account') == 2)
             <div class="form-title">
@@ -20,8 +20,9 @@
         @else
             <x-alert type="danger" :message="trans('auth.system_maintenance_tip',['email' => sysConfig('webmaster_email')])"/>
         @endif
-        <a href="/login"
-           class="btn btn-danger btn-lg {{sysConfig('is_activate_account')==2? 'float-left':'btn-block'}}">{{trans('auth.back')}}</a>
+        <a href="{{route('login')}}" class="btn btn-danger btn-lg {{sysConfig('is_activate_account')==2? 'float-left':'btn-block'}}">
+            {{trans('auth.back')}}
+        </a>
         @if(sysConfig('is_activate_account')==2)
             <button type="submit" class="btn btn-lg btn-primary float-right">{{trans('auth.active')}}</button>
         @endif

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

@@ -15,7 +15,7 @@
                     <tbody>
                     @foreach($inviteList as $invite)
                         <tr>
-                            <td><a href="/register?code={{$invite->code}}" target="_blank">{{$invite->code}}</a></td>
+                            <td><a href="{{route('register', ['code' => $invite->code])}}" target="_blank">{{$invite->code}}</a></td>
                             <td> {{$invite->dateline}} </td>
                         </tr>
                     @endforeach
@@ -32,7 +32,7 @@
     </div>
     @if(sysConfig('is_invite_register') && sysConfig('is_free_code'))
         <div class="mt-20">
-            <a href="/login" class="btn btn-danger btn-lg float-left">{{trans('auth.back')}}</a>
+            <a href="{{route('login')}}" class="btn btn-danger btn-lg float-left">{{trans('auth.back')}}</a>
             <nav class="Page navigation float-right">
                 {{$inviteList->links()}}
             </nav>

+ 11 - 15
resources/views/auth/layouts.blade.php

@@ -55,11 +55,10 @@
         }
     </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">
-            <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 中打开
+        <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 中打开
             </p>
             <p>您就可以正常访问本站了呦~</p>
         </div>
@@ -72,31 +71,28 @@
                 <div class="panel-heading">
                     <div class="panel-title">
                         <div class="brand">
-                            <img
-                                src="{{sysConfig('website_home_logo')? :'/assets/images/logo64.png'}}"
-                                class="brand-img" alt="logo"/>
+                            <img src="{{sysConfig('website_home_logo')? :'/assets/images/logo64.png'}}" class="brand-img" alt="logo"/>
                             <h3 class="brand-text">{{sysConfig('website_name')}}</h3>
                         </div>
                     </div>
                     <div class="ribbon ribbon-reverse ribbon-info ribbon-clip">
-                        <button class="ribbon-inner btn dropdown-toggle pt-0" id="language" data-toggle="dropdown"
-                                aria-expanded="false">
+                        <button class="ribbon-inner btn dropdown-toggle pt-0" id="language" data-toggle="dropdown" aria-expanded="false">
                             <i class="font-size-20 wb-globe"></i>
                         </button>
                         <div class="dropdown-menu dropdown-menu-bullet" aria-labelledby="language" role="menu">
-                            <a class="dropdown-item" href="{{url('lang', ['locale' => 'zh-CN'])}}" role="menuitem">
+                            <a class="dropdown-item" href="{{route('lang', ['locale' => 'zh-CN'])}}" role="menuitem">
                                 <span class="flag-icon flag-icon-cn"></span>
                                 简体中文</a>
-                            <a class="dropdown-item" href="{{url('lang', ['locale' => 'zh-tw'])}}" role="menuitem">
+                            <a class="dropdown-item" href="{{route('lang', ['locale' => 'zh-tw'])}}" role="menuitem">
                                 <span class="flag-icon flag-icon-tw"></span>
                                 繁體中文</a>
-                            <a class="dropdown-item" href="{{url('lang', ['locale' => 'en'])}}" role="menuitem">
+                            <a class="dropdown-item" href="{{route('lang', ['locale' => 'en'])}}" role="menuitem">
                                 <span class="flag-icon flag-icon-gb"></span>
                                 English</a>
-                            <a class="dropdown-item" href="{{url('lang', ['locale' => 'ja'])}}" role="menuitem">
+                            <a class="dropdown-item" href="{{route('lang', ['locale' => 'ja'])}}" role="menuitem">
                                 <span class="flag-icon flag-icon-jp"></span>
                                 日本語</a>
-                            <a class="dropdown-item" href="{{url('lang', ['locale' => 'ko'])}}" role="menuitem">
+                            <a class="dropdown-item" href="{{route('lang', ['locale' => 'ko'])}}" role="menuitem">
                                 <span class="flag-icon flag-icon-kr"></span>
                                 한국어</a>
                         </div>

+ 14 - 13
resources/views/auth/login.blade.php

@@ -14,8 +14,7 @@
             <label class="floating-label" for="email">{{trans('auth.email')}}</label>
         </div>
         <div class="form-group form-material floating" data-plugin="formMaterial">
-            <input type="password" class="form-control" name="password" value="{{Request::old('password')}}"
-                   autocomplete required/>
+            <input type="password" class="form-control" name="password" value="{{Request::old('password')}}" autocomplete required/>
             <label class="floating-label" for="password">{{trans('auth.password')}}</label>
         </div>
         @switch(sysConfig('is_captcha'))
@@ -23,8 +22,7 @@
             <div class="form-group form-material floating input-group" data-plugin="formMaterial">
                 <input type="text" class="form-control" name="captcha"/>
                 <label class="floating-label" for="captcha">{{trans('auth.captcha')}}</label>
-                <img src="{{captcha_src()}}" class="float-right" onclick="this.src='/captcha/default?'+Math.random()"
-                     alt="{{trans('auth.captcha')}}"/>
+                <img src="{{captcha_src()}}" class="float-right" onclick="this.src='/captcha/default?'+Math.random()" alt="{{trans('auth.captcha')}}"/>
             </div>
             @break
             @case(2)<!-- Geetest -->
@@ -35,13 +33,13 @@
             @case(3)<!-- Google reCaptcha -->
             <div class="form-group form-material floating vertical-align-middle" data-plugin="formMaterial">
                 {!! NoCaptcha::display() !!}
-                {!! NoCaptcha::renderJs(session::get('locale')) !!}
+                {!! NoCaptcha::renderJs(Session::get('locale')) !!}
             </div>
             @break
             @case(4)<!-- hCaptcha -->
             <div class="form-group form-material floating vertical-align-middle" data-plugin="formMaterial">
                 {!! HCaptcha::display() !!}
-                {!! HCaptcha::renderJs(session::get('locale')) !!}
+                {!! HCaptcha::renderJs(Session::get('locale')) !!}
             </div>
             @break
             @default
@@ -51,16 +49,19 @@
                 <input type="checkbox" id="inputCheckbox" name="remember">
                 <label for="inputCheckbox" for="remember">{{trans('auth.remember')}}</label>
             </div>
-            <a href="/resetPassword"
-               class="btn btn-xs bg-red-500 text-white float-right">{{trans('auth.forget_password')}}</a>
+            <a href="{{route('resetPasswd')}}" class="btn btn-xs bg-red-500 text-white float-right">
+                {{trans('auth.forget_password')}}
+            </a>
         </div>
-        <button type="submit"
-                class="btn btn-lg btn-block mt-40 bg-indigo-500 text-white">{{trans('auth.login')}}</button>
+        <button type="submit" class="btn btn-lg btn-block mt-40 bg-indigo-500 text-white">{{trans('auth.login')}}</button>
     </form>
     @if(sysConfig('is_register'))
-        <p>{{trans('auth.register_tip')}} <a href="/register"
-                                             class="btn btn-xs bg-purple-500 text-white">{{trans('auth.register')}} <i
-                    class="icon wb-arrow-right" aria-hidden="true"></i></a></p>
+        <p>
+            {{trans('auth.register_tip')}}
+            <a href="{{route('register')}}" class="btn btn-xs bg-purple-500 text-white">
+                {{trans('auth.register')}}<i class="icon wb-arrow-right" aria-hidden="true"></i>
+            </a>
+        </p>
     @endif
 @endsection
 @section('script')

+ 32 - 44
resources/views/auth/register.blade.php

@@ -5,30 +5,27 @@
     <link href="/assets/custom/Plugin/sweetalert2/sweetalert2.min.css" type="text/css" rel="stylesheet">
 @endsection
 @section('content')
-    <form action="/register" method="post" id="register-form">
+    <form action="{{route('register')}}" method="post" id="register-form">
         @if(sysConfig('is_register'))
             @if($errors->any())
                 <x-alert type="danger" :message="$errors->all()"/>
             @endif
             @csrf
-            <input type="hidden" name="register_token" value="{{Session::input('register_token')}}"/>
-            <input type="hidden" name="aff" value="{{Session::input('register_aff')}}"/>
+            <input type="hidden" name="register_token" value="{{Session::get('register_token')}}"/>
+            <input type="hidden" name="aff" value="{{Session::get('register_aff')}}"/>
             <div class="form-group form-material floating" data-plugin="formMaterial">
-                <input type="text" class="form-control" name="username"
-                       value="{{Request::old('username') ? : Request::input('username')}}" required/>
+                <input type="text" class="form-control" name="username" value="{{Request::old('username') ? : Request::input('username')}}" required/>
                 <label class="floating-label" for="username">{{trans('auth.username')}}</label>
             </div>
             <div class="form-group form-material floating" data-plugin="formMaterial">
                 @if($emailList)
                     <div class="input-group">
-                        <input type="text" class="form-control" autocomplete="off" name="emailHead"
-                               value="{{Request::old('emailHead')}}" id="emailHead" required/>
+                        <input type="text" class="form-control" autocomplete="off" name="emailHead" value="{{Request::old('emailHead')}}" id="emailHead" required/>
                         <label class="floating-label" for="emailHead">{{trans('auth.email')}}</label>
                         <div class="input-group-prepend">
                             <span class="input-group-text bg-indigo-600 text-white">@</span>
                         </div>
-                        <select class="form-control" name="emailTail" id="emailTail" data-plugin="selectpicker"
-                                data-style="btn-outline-primary">
+                        <select class="form-control" name="emailTail" id="emailTail" data-plugin="selectpicker" data-style="btn-outline-primary">
                             @foreach($emailList as $email)
                                 <option value="{{$email->words}}">{{$email->words}}</option>
                             @endforeach
@@ -36,16 +33,14 @@
                         <input type="text" name="email" id="email" hidden/>
                     </div>
                 @else
-                    <input type="email" class="form-control" autocomplete="off" name="email"
-                           value="{{Request::old('email')}}" id="email" required/>
+                    <input type="email" class="form-control" autocomplete="off" name="email" value="{{Request::old('email')}}" id="email" required/>
                     <label class="floating-label" for="email">{{trans('auth.email')}}</label>
                 @endif
             </div>
             @if(sysConfig('is_activate_account') == 1)
                 <div class="form-group form-material floating" data-plugin="formMaterial">
                     <div class="input-group" data-plugin="inputGroupFile">
-                        <input type="text" class="form-control" name="verify_code"
-                               value="{{Request::old('verify_code')}}" required/>
+                        <input type="text" class="form-control" name="verify_code" value="{{Request::old('verify_code')}}" required/>
                         <label class="floating-label" for="verify_code">{{trans('auth.captcha')}}</label>
                         <span class="input-group-btn">
                             <button class="btn btn-success" id="sendCode" onclick="sendVerifyCode()">
@@ -65,16 +60,14 @@
             </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/>
-                    <label class="floating-label"
-                           for="code">{{trans('auth.code')}}@if(sysConfig('is_invite_register') == 1)
-                            ({{trans('auth.optional')}}) @endif</label>
+                    <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>
                 </div>
                 @if(sysConfig('is_free_code'))
                     <p class="hint">
-                        <a href="/free" target="_blank">{{trans('auth.get_free_code')}}</a>
+                        <a href="{{route('freeInvitationCode')}}" target="_blank">{{trans('auth.get_free_code')}}</a>
                     </p>
                 @endif
             @endif
@@ -83,8 +76,7 @@
                 <div class="form-group form-material floating input-group" data-plugin="formMaterial">
                     <input type="text" class="form-control" name="captcha" required/>
                     <label class="floating-label" for="captcha">{{trans('auth.captcha')}}</label>
-                    <img src="{{captcha_src()}}" class="float-right"
-                         onclick="this.src='/captcha/default?'+Math.random()" alt="{{trans('auth.captcha')}}"/>
+                    <img src="{{captcha_src()}}" class="float-right" onclick="this.src='/captcha/default?'+Math.random()" alt="{{trans('auth.captcha')}}"/>
                 </div>
                 @break
                 @case(2)<!-- Geetest -->
@@ -95,13 +87,13 @@
                 @case(3)<!-- Google reCaptcha -->
                 <div class="form-group form-material floating" data-plugin="formMaterial">
                     {!! NoCaptcha::display() !!}
-                    {!! NoCaptcha::renderJs(session::get('locale')) !!}
+                    {!! NoCaptcha::renderJs(Session::get('locale')) !!}
                 </div>
                 @break
                 @case(4)<!-- hCaptcha -->
                 <div class="form-group form-material floating" data-plugin="formMaterial">
                     {!! HCaptcha::display() !!}
-                    {!! HCaptcha::renderJs(session::get('locale')) !!}
+                    {!! HCaptcha::renderJs(Session::get('locale')) !!}
                 </div>
                 @break
                 @default
@@ -110,19 +102,21 @@
                 <div class="checkbox-custom checkbox-primary">
                     <input type="checkbox" name="term" id="term" {{Request::old('term') ? 'checked':''}} />
                     <label for="term">{{trans('auth.accept_term')}}
-                        <button class="btn btn-xs btn-primary" data-target="#tos" data-toggle="modal"
-                                type="button">{{trans('auth.tos')}}</button>
-                        &
-                        <button class="btn btn-xs btn-primary" data-target="#aup" data-toggle="modal"
-                                type="button">{{trans('auth.aup')}}</button>
+                        <button class="btn btn-xs btn-primary" data-target="#tos" data-toggle="modal" type="button">
+                            {{trans('auth.tos')}}
+                        </button>&
+                        <button class="btn btn-xs btn-primary" data-target="#aup" data-toggle="modal" type="button">
+                            {{trans('auth.aup')}}
+                        </button>
                     </label>
                 </div>
             </div>
         @else
             <x-alert type="danger" :message="trans('auth.system_maintenance')"/>
         @endif
-        <a href="/login"
-           class="btn btn-danger btn-lg {{sysConfig('is_register')? 'float-left': 'btn-block'}}">{{trans('auth.back')}}</a>
+        <a href="{{route('login')}}" class="btn btn-danger btn-lg {{sysConfig('is_register')? 'float-left': 'btn-block'}}">
+            {{trans('auth.back')}}
+        </a>
         @if(sysConfig('is_register'))
             <button type="submit" class="btn btn-primary btn-lg float-right">{{trans('auth.register')}}</button>
         @endif
@@ -134,19 +128,16 @@
         <div class="modal-dialog modal-simple modal-sidebar modal-lg">
             <div class="modal-content">
                 <div class="modal-header">
-                    <button type="button" class="close mr-15" data-dismiss="modal" aria-label="Close"
-                            style="position:absolute;">
+                    <button type="button" class="close mr-15" data-dismiss="modal" aria-label="Close" style="position:absolute;">
                         <span aria-hidden="true">×</span>
                     </button>
-                    <h4 class="modal-title">{{sysConfig('website_name')}}
-                        - {{trans('auth.tos')}} <small>2019112810:49</small></h4>
+                    <h4 class="modal-title">{{sysConfig('website_name')}}- {{trans('auth.tos')}} <small>2019112810:49</small></h4>
                 </div>
                 <div class="modal-body">
                     @include('auth.docs.tos')
                 </div>
                 <div class="modal-footer">
-                    <button type="button" class="btn btn-block bg-red-500 text-white mb-25"
-                            data-dismiss="modal">{{trans('auth.close')}}</button>
+                    <button type="button" class="btn btn-block bg-red-500 text-white mb-25" data-dismiss="modal">{{trans('auth.close')}}</button>
                 </div>
             </div>
         </div>
@@ -156,19 +147,16 @@
         <div class="modal-dialog modal-simple modal-sidebar modal-lg">
             <div class="modal-content">
                 <div class="modal-header">
-                    <button type="button" class="close mr-15" data-dismiss="modal" aria-label="Close"
-                            style="position:absolute;">
+                    <button type="button" class="close mr-15" data-dismiss="modal" aria-label="Close" style="position:absolute;">
                         <span aria-hidden="true">×</span>
                     </button>
-                    <h4 class="modal-title">{{sysConfig('website_name')}}
-                        - {{trans('auth.aup')}} <small>2019112810:49</small></h4>
+                    <h4 class="modal-title">{{sysConfig('website_name')}}- {{trans('auth.aup')}} <small>2019112810:49</small></h4>
                 </div>
                 <div class="modal-body">
                     @include('auth.docs.aup')
                 </div>
                 <div class="modal-footer">
-                    <button type="button" class="btn btn-block bg-red-500 text-white mb-25"
-                            data-dismiss="modal">{{trans('auth.close')}}</button>
+                    <button type="button" class="btn btn-block bg-red-500 text-white mb-25" data-dismiss="modal">{{trans('auth.close')}}</button>
                 </div>
             </div>
         </div>
@@ -211,7 +199,7 @@
 
             $.ajax({
                 method: 'POST',
-                url: '/sendCode',
+                url: '{{route('sendVerificationCode')}}',
                 async: false,
                 data: {_token: '{{csrf_token()}}', email: email},
                 dataType: 'json',

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

@@ -25,8 +25,8 @@
             </div>
         @endif
         <a href="/login"
-           class="btn btn-danger btn-lg {{$verify->status== 0? 'float-left': 'btn-block'}}">{{trans('auth.back')}}</a>
-        @if ($verify->status == 0)
+           class="btn btn-danger btn-lg {{$verify->status=== 0? 'float-left': 'btn-block'}}">{{trans('auth.back')}}</a>
+        @if ($verify->status === 0)
             <button type="submit" class="btn btn-primary btn-lg float-right">{{trans('auth.submit')}}</button>
         @endif
     </form>

+ 5 - 5
resources/views/auth/resetPassword.blade.php

@@ -7,22 +7,22 @@
     @if($errors->any())
         <x-alert type="danger" :message="$errors->all()"/>
     @endif
-    <form method="post" action="/resetPassword">
+    <form method="post" action="{{route('resetPasswd')}}">
         @csrf
         @if(sysConfig('is_reset_password'))
             <div class="form-title">
                 {{trans('auth.resetPassword')}}
             </div>
             <div class="form-group form-material floating" data-plugin="formMaterial">
-                <input type="email" class="form-control" name="email" value="{{Request::old('email')}}"
-                       required="required" autofocus="autofocus"/>
+                <input type="email" class="form-control" name="email" value="{{Request::old('email')}}" required="required" autofocus="autofocus"/>
                 <label class="floating-label">{{trans('auth.email')}}</label>
             </div>
         @else
             <x-alert type="danger" :message="trans('auth.system_maintenance_tip' ,['email' => sysConfig('webmaster_email')])"/>
         @endif
-        <a href="/login"
-           class="btn btn-danger btn-lg {{sysConfig('is_reset_password')? 'float-left':'btn-block'}}">{{trans('auth.back')}}</a>
+        <a href="{{route('login')}}" class="btn btn-danger btn-lg {{sysConfig('is_reset_password')? 'float-left':'btn-block'}}">
+            {{trans('auth.back')}}
+        </a>
         @if(sysConfig('is_reset_password'))
             <button type="submit" class="btn btn-primary btn-lg float-right">{{trans('auth.submit')}}</button>
         @endif

+ 19 - 21
resources/views/user/buy.blade.php

@@ -20,7 +20,7 @@
                         <tr>
                             <td class="text-middle">{{$goods->name}} </td>
                             <td>{{trans('home.service_days')}}
-                                <strong>{{$goods->type==1? $dataPlusDays:$goods->days}} {{trans('home.day')}}</strong>
+                                <strong>{{$goods->type === 1? $dataPlusDays:$goods->days}} {{trans('home.day')}}</strong>
                                 <br>
                                 <strong>{{$goods->traffic_label}}</strong> {{trans('home.bandwidth')}}
                             </td>
@@ -30,12 +30,11 @@
                         </tbody>
                     </table>
                 </div>
-                @if($goods->type <= 2)
-                    <div class="row">
+                <div class="row">
+                    @if($goods->type <= 2)
                         <div class="col-lg-3 pl-30">
                             <div class="input-group">
-                                <input type="text" class="form-control" name="coupon_sn" id="coupon_sn"
-                                       placeholder="{{trans('home.coupon')}}"/>
+                                <input type="text" class="form-control" name="coupon_sn" id="coupon_sn" placeholder="{{trans('home.coupon')}}"/>
                                 <div class="input-group-btn">
                                     <button type="submit" class="btn btn-info" onclick="redeemCoupon()">
                                         <i class="icon wb-loop" aria-hidden="true"></i> {{trans('home.redeem_coupon')}}
@@ -51,20 +50,20 @@
                                 <span class="grand-total">¥{{$goods->price}}</span>
                             </p>
                         </div>
-                        @endif
-                        <div class="col-md-12 mb-30">
-                            <div class="float-right">
-                                <div class="btn-group btn-group-lg">
-                                    @include('user.components.purchase')
-                                    @if($goods->type <= 2)
-                                        <button class="btn btn-flat" onclick="pay('credit','0')">
-                                            <img src="/assets/images/payment/creditpay.svg" height="48px" alt="{{trans('home.service_pay_button')}}"/>
-                                        </button>
-                                    @endif
-                                </div>
+                    @endif
+                    <div class="col-md-12 mb-30">
+                        <div class="float-right">
+                            <div class="btn-group btn-group-lg">
+                                @include('user.components.purchase')
+                                @if($goods->type <= 2)
+                                    <button class="btn btn-flat" onclick="pay('credit','0')">
+                                        <img src="/assets/images/payment/creditpay.svg" height="48px" alt="{{trans('home.service_pay_button')}}"/>
+                                    </button>
+                                @endif
                             </div>
                         </div>
                     </div>
+                </div>
             </div>
         </div>
     </div>
@@ -77,7 +76,7 @@
             const goods_price = '{{$goods->price}}';
             $.ajax({
                 method: 'POST',
-                url: '/redeemCoupon',
+                url: '{{route('redeemCoupon')}}',
                 async: false,
                 data: {_token: '{{csrf_token()}}', coupon_sn: coupon_sn, price: '{{$goods->price}}'},
                 dataType: 'json',
@@ -160,7 +159,7 @@
             const coupon_sn = $('#coupon_sn').val();
             $.ajax({
                 method: 'POST',
-                url: '/payment/purchase',
+                url: '{{route('purchase')}}',
                 async: false,
                 data: {
                     _token: '{{csrf_token()}}',
@@ -179,11 +178,10 @@
                             showConfirmButton: false,
                         });
                         if (method === 'credit') {
-                            swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.href = '/invoices');
+                            swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.href = '{{route('invoice')}}');
                         }
                         if (ret.data) {
-                            window.location.href = '/payment/' + ret.data;
+                            window.location.href = '{{route('orderDetail', '')}}/' + ret.data;
                         }
                         else if (ret.url) {
                             window.location.href = ret.url;

+ 12 - 13
resources/views/user/help.blade.php

@@ -142,13 +142,14 @@
                                              role="tabpanel">
                                             <div class="panel-body">
                                                 <ol>
-                                                    <li>在线支付,本支付方式支持支付宝。支付后即开即用。前往<a
-                                                            href="/services">【{{trans('home.services')}}】</a>选择想要购买的套餐,在订单界面选择<code>在线支付</code>即可。
+                                                    <li>在线支付,本支付方式支持支付宝。支付后即开即用。前往
+                                                        <a href="{{route('shop')}}">【{{trans('home.services')}}】</a>
+                                                        选择想要购买的套餐,在订单界面选择<code>在线支付</code>即可。
                                                     </li>
                                                     <li>余额支付,本支付方法支持微信,支付宝。支付后需要等待充值到账,再购买服务。
                                                         ,充值后等待充值到账,一般会在<code>24小时</code>内到账,到账后可以在
-                                                        <a href="/services">【{{trans('home.services')}}】</a>页面查看您的账号余额。
-                                                        在<a href="/services">【{{trans('home.services')}}】</a>
+                                                        <a href="{{route('shop')}}">【{{trans('home.services')}}】</a>页面查看您的账号余额。
+                                                        在<a href="{{route('shop')}}">【{{trans('home.services')}}】</a>
                                                         选择想要购买的套餐,在订单界面选择<code>余额支付</code>即可。
                                                     </li>
                                                 </ol>
@@ -172,7 +173,7 @@
                                                     请选择其一种方式联系客服,请勿重复发送请求!!!
                                                 </blockquote>
                                                 <ol>
-                                                    <li>在<a href="/tickets">【{{trans('home.tickets')}}】</a>界面,创建新的工单,客服人员在上线后会在第一时刻处理。
+                                                    <li>在<a href="{{route('ticket')}}">【{{trans('home.tickets')}}】</a>界面,创建新的工单,客服人员在上线后会在第一时刻处理。
                                                     </li>
                                                 </ol>
                                             </div>
@@ -202,8 +203,7 @@
                                                         <ol>
                                                             <li>
                                                                 键盘操作<code>Win</code> + <code>X</code>,或右击左下角开始菜单键
-                                                                (Win键看起来像 <i class="icon fa-windows"
-                                                                             aria-hidden="true"></i> 这样)
+                                                                (Win键看起来像 <i class="icon fa-windows" aria-hidden="true"></i> 这样)
                                                             </li>
                                                             <li>
                                                                 按下 <code>A</code>键 或者 手动选择
@@ -211,8 +211,7 @@
                                                             </li>
                                                             <li>
                                                                 输入<code>Netsh winsock reset</code> 后回车,再输入
-                                                                <code>netsh advfirewall reset</code>
-                                                                后回车;
+                                                                <code>netsh advfirewall reset</code> 后回车;
                                                             </li>
                                                         </ol>
                                                     </li>
@@ -236,7 +235,7 @@
                                                 <ol>
                                                     <li>
                                                         套餐过期/流量枯竭;此情况您需要重新
-                                                        <a href="/services">【{{trans('home.services')}}】</a>;
+                                                        <a href="{{route('shop')}}">【{{trans('home.services')}}】</a>;
                                                     </li>
                                                     <li>
                                                         近期流量使用异常;在<code>1小时</code>内使用流量超过
@@ -245,7 +244,7 @@
                                                         <code>{{sysConfig('traffic_ban_time')}}分钟</code>
                                                     </li>
                                                 </ol>
-                                                如您对禁用情况有疑问,可以创建<a href="/tickets">【{{trans('home.tickets')}}】</a>,联系售后人员。
+                                                如您对禁用情况有疑问,可以创建<a href="{{route('ticket')}}">【{{trans('home.tickets')}}】</a>,联系售后人员。
                                             </div>
                                         </div>
                                     </div>
@@ -266,7 +265,7 @@
                                                     <code>24小时</code>内,订阅地址只允许请求
                                                     <code>{{sysConfig('subscribe_ban_times')}}次</code>
                                                 </p>
-                                                <p>解封,请在过一段时间并确定无误后,创建<a href="/tickets">【{{trans('home.tickets')}}】</a>,联系售后人员
+                                                <p>解封,请在过一段时间并确定无误后,创建<a href="{{route('ticket')}}">【{{trans('home.tickets')}}】</a>,联系售后人员
                                                 </p>
                                                 <p>小知识:如果您无意间的截图忘记将订阅地址打码了,您可以
                                                     <button class="btn btn-sm btn-outline-info" onclick="exchangeSubscribe();">
@@ -312,7 +311,7 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('/exchangeSubscribe', {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post('{{route('changeSub')}}', {_token: '{{csrf_token()}}'}, function(ret) {
                         if (ret.status === 'success') {
                             swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).
                                 then(() => window.location.reload());

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

@@ -97,7 +97,7 @@
                             @else
                                 <span class="font-size-40 font-weight-100">{{trans('home.expired')}}</span>
                                 <br/>
-                                <a href="/services" class="btn btn-danger">{{trans('home.service_buy_button')}}</a>
+                                <a href="{{route('shop')}}" class="btn btn-danger">{{trans('home.service_buy_button')}}</a>
                             @endif
                         </div>
                     </div>
@@ -132,7 +132,7 @@
                                 <i class="font-size-40 wb-wrench"></i>
                                 <h4 class="card-title">客户端</h4>
                                 <p class="card-text">下载 & 教程 </p>
-                                <a href="/help#answer-2" class="btn btn-primary mb-10">前往</a>
+                                <a href="{{route('help')}}#answer-2" class="btn btn-primary mb-10">前往</a>
                             </div>
                         </div>
                     </div>
@@ -175,7 +175,7 @@
                                             @foreach($noticeList as $notice)
                                                 <h3 class="text-center">{!!$notice->title!!}</h3>
                                                 {!! $notice->content !!}
-                                                @if ($notice->updated_at)
+                                                @if($notice->updated_at)
                                                     <small class="text-bottom">更新于 <code>{{$notice->updated_at}}</code></small>
                                                 @endif
                                             @endforeach
@@ -245,7 +245,7 @@
     <script type="text/javascript">
         // 签到
         function checkIn() {
-            $.post('/checkIn', {_token: '{{csrf_token()}}'}, function(ret) {
+            $.post('{{route('checkIn')}}', {_token: '{{csrf_token()}}'}, function(ret) {
                 if (ret.status === 'success') {
                     swal.fire('长者的微笑', ret.message, 'success');
                 }

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

@@ -42,15 +42,14 @@
                                     <tr>
                                         <td> {{$loop->iteration}} </td>
                                         <td>
-                                            <a href="javascript:void(0)" class="mt-clipboard"
-                                               data-clipboard-action="copy"
-                                               data-clipboard-text="{{url('/register?aff='.Auth::id().'&code='.$invite->code)}}">{{$invite->code}}</a>
+                                            <a href="javascript:void(0)" class="mt-clipboard" data-clipboard-action="copy"
+                                               data-clipboard-text="{{route('register', ['aff' => Auth::id(), 'code' => $invite->code])}}">{{$invite->code}}</a>
                                         </td>
                                         <td> {{$invite->dateline}} </td>
                                         <td>
                                             {!!$invite->status_label!!}
                                         </td>
-                                        {{$invite->status == 1 ? (empty($invite->invitee) ? '【账号已删除】' : $invite->invitee->email) : ''}}
+                                        {{$invite->status === 1 ? ($invite->invitee->email ?? '【账号已删除】') : ''}}
                                     </tr>
                                 @endforeach
                                 </tbody>
@@ -77,14 +76,13 @@
 @section('script')
     <script src="/assets/custom/Plugin/clipboardjs/clipboard.min.js" type="text/javascript"></script>
     <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 src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
     <script type="text/javascript">
         // 生成邀请码
         function makeInvite() {
             $.ajax({
                 method: 'POST',
-                url: '/makeInvite',
+                url: '{{route('createInvite')}}',
                 async: false,
                 data: {_token: '{{csrf_token()}}'},
                 dataType: 'json',

+ 18 - 20
resources/views/user/invoiceDetail.blade.php

@@ -9,16 +9,14 @@
                 <div class="row">
                     <div class="col-lg-3">
                         <h3>
-                            <img
-                                src="{{sysConfig('website_logo')? :'/assets/images/logo64.png'}}"
-                                class="navbar-brand-logo" alt="logo">
+                            <img src="{{sysConfig('website_logo')? :'/assets/images/logo64.png'}}" class="navbar-brand-logo" alt="logo">
                             {{sysConfig('website_name')}}
                         </h3>
                     </div>
                     <div class="col-lg-3 offset-lg-6 text-right">
                         <h4>{{trans('home.invoice_title')}}</h4>
-                        <p>{{trans('home.invoice_table_id')}}:<a class="font-size-20"
-                                                                 href="javascript:void(0)">{{$order->order_sn}}</a>
+                        <p>{{trans('home.invoice_table_id')}}:
+                            <a class="font-size-20" href="javascript:void(0)">{{$order->order_sn}}</a>
                         </p>
                         <p>{{trans('home.invoice_table_pay_way')}}
                             :{{$order->pay_way === 1 ? trans('home.service_pay_button') : trans('home.online_pay')}}</p>
@@ -26,13 +24,13 @@
                         <p>{{trans('home.invoice_table_expired_at')}}: {{$order->expired_at}}</p>
                         <p>
                         @if(!$order->is_expire)
-                            @if($order->status == -1)
+                            @if($order->status === -1)
                                 <p class="badge badge-lg badge-dark">{{trans('home.invoice_table_closed')}}</p>
-                            @elseif($order->status == 0)
+                            @elseif($order->status === 0)
                                 <p class="badge badge-lg badge-default">{{trans('home.invoice_table_wait_payment')}}</p>
-                            @elseif($order->status == 1)
+                            @elseif($order->status === 1)
                                 <p class="badge badge-lg badge-info">{{trans('home.invoice_table_wait_confirm')}}</p>
-                            @elseif($order->status == 2)
+                            @elseif($order->status === 2)
                                 <p class="badge badge-lg badge-success">{{trans('home.invoice_table_wait_active')}}</p>
                             @else
                                 <p class="badge badge-lg badge-danger">{{trans('home.invoice_table_expired')}}</p>
@@ -58,19 +56,21 @@
                         <tbody>
                         <tr>
                             <td>
-                                <h3>{{empty($order->goods) ? ($order->goods_id == 0 ? '余额充值': trans('home.invoice_table_goods_deleted')) : $order->goods->name}}</h3>
+                                <h3>{{$order->goods->name ?? ($order->goods_id === 0 ? '余额充值': trans('home.invoice_table_goods_deleted'))}}</h3>
                             </td>
                             <td>
                                 @if($order->goods)
                                     {{trans('home.service_days')}}
                                     <code>{{$order->goods->days}}</code> {{trans('home.day')}}
                                     <br/>
-                                    @if($order->goods->type == '2')
-                                        <code>{{$order->goods->traffic_label}}</code> {{trans('home.bandwidth')}}
-                                        /{{trans('home.month')}}
+                                    @if($order->goods->type === 2)
+                                        <code>{{$order->goods->traffic_label}}</code>
+                                        {{trans('home.bandwidth')}}/{{trans('home.month')}}
                                     @else
-                                        <code>{{$order->goods->traffic_label}}</code> {{trans('home.bandwidth')}}/
-                                        <code>{{$order->goods->days}}</code> {{trans('home.day')}}
+                                        <code>{{$order->goods->traffic_label}}</code>
+                                        {{trans('home.bandwidth')}}/
+                                        <code>{{$order->goods->days}}</code>
+                                        {{trans('home.day')}}
                                     @endif
                                 @else
                                     余额充值
@@ -78,7 +78,7 @@
                             </td>
                             <td><strong>¥</strong> {{$order->origin_amount}} </td>
                             <td> 1</td>
-                            <td>{{$order->coupon ? $order->coupon->name : '无'}}</td>
+                            <td>{{$order->coupon->name ?? '无'}}</td>
                             <td> ¥{{$order->amount}} </td>
                             <td> {{$order->status_label}} </td>
                         </tr>
@@ -86,8 +86,7 @@
                     </table>
                 </div>
                 <div class="text-right">
-                    <button type="button" class="btn btn-animate btn-animate-side btn-outline-info"
-                            onclick="window.print();">
+                    <button type="button" class="btn btn-animate btn-animate-side btn-outline-info" onclick="window.print();">
                         <span><i class="icon wb-print" aria-hidden="true"></i> Print | 打印</span>
                     </button>
                 </div>
@@ -97,6 +96,5 @@
 @endsection
 @section('script')
     <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 src="/assets/global/vendor/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js" type="text/javascript"></script>
 @endsection

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

@@ -33,11 +33,11 @@
                         <tr>
                             <td>{{$loop->iteration}}</td>
                             <td><a href="/invoice/{{$order->order_sn}}" target="_blank">{{$order->order_sn}}</a></td>
-                            <td>{{empty($order->goods) ? ($order->goods_id == 0 ? '余额充值': trans('home.invoice_table_goods_deleted')) : $order->goods->name}}</td>
+                            <td>{{$order->goods->name ?? ($order->goods_id === 0 ? '余额充值': trans('home.invoice_table_goods_deleted'))}}</td>
                             <td>{{$order->pay_way === 1 ? trans('home.service_pay_button') : trans('home.online_pay')}}</td>
                             <td>¥{{$order->amount}}</td>
                             <td>{{$order->created_at}}</td>
-                            <td>{{empty($order->goods) || $order->goods_id == 0 || $order->status == 3 ? '' : $order->expired_at}}</td>
+                            <td>{{empty($order->goods) || $order->goods_id === 0 || $order->status === 3 ? '' : $order->expired_at}}</td>
                             <td>
                                 @switch($order->status)
                                     @case(-1)
@@ -50,7 +50,7 @@
                                     <span class="badge badge-info">{{trans('home.invoice_status_wait_confirm')}}</span>
                                     @break
                                     @case(2)
-                                    @if ($order->goods_id == 0)
+                                    @if ($order->goods_id === 0)
                                         <span class="badge badge-default">{{trans('home.invoice_status_payment_confirm')}}</span>
                                     @else
                                         @if($order->is_expire)
@@ -66,14 +66,14 @@
                             @endswitch
                             <td>
                                 <div class="btn-group">
-                                    @if($order->status == 0 && $order->payment)
+                                    @if($order->status === 0 && $order->payment)
                                         @if($order->payment->qr_code)
-                                            <a href="/payment/{{$order->payment->trade_no}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
+                                            <a href="{{route('orderDetail', $order->payment->trade_no)}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
                                         @elseif($order->payment->url)
                                             <a href="{{$order->payment->url}}" target="_blank" class="btn btn-primary">{{trans('home.pay')}}</a>
                                         @endif
                                         <button onclick="closeOrder('{{$order->id}}')" class="btn btn-danger">{{trans('home.cancel')}}</button>
-                                    @elseif ($order->status == 1)
+                                    @elseif ($order->status === 1)
                                         <button onClick="window.location.reload();" class="btn btn-primary">
                                             <i class="icon wb-refresh" aria-hidden="true"></i></button>
                                     @endif
@@ -112,7 +112,7 @@
                 if (result.value) {
                     $.ajax({
                         method: 'POST',
-                        url: '/closePlan',
+                        url: '{{route('cancelPlan')}}',
                         async: false,
                         data: {_token: '{{csrf_token()}}'},
                         dataType: 'json',
@@ -141,7 +141,7 @@
                 if (result.value) {
                     $.ajax({
                         method: 'POST',
-                        url: 'payment/close',
+                        url: '{{route('closeOrder')}}',
                         async: false,
                         data: {_token: '{{csrf_token()}}', id: id},
                         dataType: 'json',

+ 31 - 34
resources/views/user/layouts.blade.php

@@ -60,7 +60,7 @@
             <i class="icon wb-more-horizontal" aria-hidden="true"></i>
         </button>
         <div class="navbar-brand navbar-brand-center">
-            <img src="{{sysConfig('website_logo')? :'/assets/images/logo64.png'}}"
+            <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>
@@ -91,19 +91,19 @@
                         <span class="flag-icon icon wb-chevron-down-mini"></span>
                     </a>
                     <div class="dropdown-menu" role="menu">
-                        <a href="{{url('lang', ['locale' => 'zh-CN'])}}" class="dropdown-item" role="menuitem">
+                        <a href="{{route('lang', ['locale' => 'zh-CN'])}}" class="dropdown-item" role="menuitem">
                             <span class="flag-icon flag-icon-cn"></span>
                             简体中文</a>
-                        <a href="{{url('lang', ['locale' => 'zh-tw'])}}" class="dropdown-item" role="menuitem">
+                        <a href="{{route('lang', ['locale' => 'zh-tw'])}}" class="dropdown-item" role="menuitem">
                             <span class="flag-icon flag-icon-tw"></span>
                             繁體中文</a>
-                        <a href="{{url('lang', ['locale' => 'en'])}}" class="dropdown-item" role="menuitem">
+                        <a href="{{route('lang', ['locale' => 'en'])}}" class="dropdown-item" role="menuitem">
                             <span class="flag-icon flag-icon-gb"></span>
                             English</a>
-                        <a href="{{url('lang', ['locale' => 'ja'])}}" class="dropdown-item" role="menuitem">
+                        <a href="{{route('lang', ['locale' => 'ja'])}}" class="dropdown-item" role="menuitem">
                             <span class="flag-icon flag-icon-jp"></span>
                             日本語</a>
-                        <a href="{{url('lang', ['locale' => 'ko'])}}" class="dropdown-item" role="menuitem">
+                        <a href="{{route('lang', ['locale' => 'ko'])}}" class="dropdown-item" role="menuitem">
                             <span class="flag-icon flag-icon-kr"></span>
                             한국어</a>
                     </div>
@@ -112,8 +112,7 @@
                     <a href="#" aria-expanded="false" class="nav-link navbar-avatar" data-animation="scale-up"
                        data-toggle="dropdown" role="button">
                         <span class="avatar avatar-online">
-                            <x-avatar :user="Auth::getUser()"/>
-                            <i></i>
+                            <x-avatar :user="Auth::getUser()"/><i></i>
                         </span>
                     </a>
                     <div class="dropdown-menu" role="menu">
@@ -123,12 +122,12 @@
                                 {{trans('home.console')}}
                             </a>
                         @endif
-                        <a href="/profile" class="dropdown-item" role="menuitem">
+                        <a href="{{route('profile')}}" class="dropdown-item" role="menuitem">
                             <i class="icon wb-user" aria-hidden="true"></i>
                             {{trans('home.profile')}}
                         </a>
                         <div class="dropdown-divider" role="presentation"></div>
-                        <a href="/logout" class="dropdown-item" role="menuitem">
+                        <a href="{{route('logout')}}" class="dropdown-item" role="menuitem">
                             <i class="icon wb-power" aria-hidden="true"></i>
                             {{trans('home.logout')}}
                         </a>
@@ -141,54 +140,54 @@
 <div class="site-menubar site-menubar-light">
     <div class="site-menubar-body">
         <ul class="site-menu" data-plugin="menu">
-            <li class="site-menu-item {{in_array(Request::path(), ['/', 'profile', 'article']) ? 'active open' : ''}}">
-                <a href="/">
+            <li class="site-menu-item {{request()->routeIs('home', 'profile' ,'article') ? 'active open' : ''}}">
+                <a href="{{route('home')}}">
                     <i class="site-menu-icon wb-dashboard" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.home')}}</span>
                 </a>
             </li>
-            <li class="site-menu-item {{in_array(Request::path(), ['services']) || in_array(Request::segment(1), ['buy', 'payment']) ? 'active open' : ''}}">
-                <a href="/services">
+            <li class="site-menu-item {{request()->routeIs('shop', 'buy', 'orderDetail') ? 'active open' : ''}}">
+                <a href="{{route('shop')}}">
                     <i class="site-menu-icon wb-shopping-cart" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.services')}}</span>
                 </a>
             </li>
-            <li class="site-menu-item {{in_array(Request::path(), ['nodeList']) || in_array(Request::segment(1), ['nodeList']) ? 'active open' : ''}}">
-                <a href="/nodeList">
+            <li class="site-menu-item {{request()->routeIs('node') ? 'active open' : ''}}">
+                <a href="{{route('node')}}">
                     <i class="site-menu-icon wb-grid-4" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.nodeList')}}</span>
                 </a>
             </li>
-            <li class="site-menu-item {{in_array(Request::path(), ['help', 'article']) ? 'active open' : ''}}">
-                <a href="/help">
+            <li class="site-menu-item {{request()->routeIs('help') ? 'active open' : ''}}">
+                <a href="{{route('help')}}">
                     <i class="site-menu-icon wb-info-circle" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.help')}}</span>
                 </a>
             </li>
-            <li class="site-menu-item {{in_array(Request::path(), ['tickets', 'replyTicket']) ? 'active open' : ''}}">
-                <a href="/tickets">
+            <li class="site-menu-item {{request()->routeIs('ticket', 'replyTicket') ? 'active open' : ''}}">
+                <a href="{{route('ticket')}}">
                     <i class="site-menu-icon wb-chat-working" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.ticket_title')}}</span>
                 </a>
             </li>
-            <li class="site-menu-item {{in_array(Request::path(), ['invoices']) ? 'active open' : ''}}">
-                <a href="/invoices">
+            <li class="site-menu-item {{request()->routeIs('invoice', 'invoiceInfo') ? 'active open' : ''}}">
+                <a href="{{route('invoice')}}">
                     <i class="site-menu-icon wb-bookmark" aria-hidden="true"></i>
                     <span class="site-menu-title">{{trans('home.invoices')}}</span>
                 </a>
             </li>
-            @if(\App\Models\Order::uid()->whereStatus(2)->exists() || \App\Models\ReferralLog::uid()->exists())
+            @if(\App\Models\ReferralLog::uid()->exists() || \App\Models\Order::uid()->whereStatus(2)->exists())
                 @if(sysConfig('is_invite_register'))
-                    <li class="site-menu-item {{in_array(Request::path(), ['invite']) ? 'active open' : ''}}">
-                        <a href="/invite">
+                    <li class="site-menu-item {{request()->routeIs('invite') ? 'active open' : ''}}">
+                        <a href="{{route('invite')}}">
                             <i class="site-menu-icon wb-extension" aria-hidden="true"></i>
                             <span class="site-menu-title">{{trans('home.invite_code')}}</span>
                         </a>
                     </li>
                 @endif
                 @if((sysConfig('referral_status')))
-                    <li class="site-menu-item {{in_array(Request::path(), ['referral']) ? 'active open' : ''}}">
-                        <a href="/referral">
+                    <li class="site-menu-item {{request()->routeIs('commission') ? 'active open' : ''}}">
+                        <a href="{{route('commission')}}">
                             <i class="site-menu-icon wb-star-outline" aria-hidden="true"></i>
                             <span class="site-menu-title">{{trans('home.referrals')}}</span>
                         </a>
@@ -208,14 +207,12 @@
     @yield('content')
 </div>
 <footer class="site-footer">
-    <div class="site-footer-legal"> Copyright &copy; 2017 - 2020
-        <a href="{{sysConfig('website_url')}}" target="_blank">{{sysConfig('website_name')}}</a> |
-                                    基于<a href="https://github.com/ZBrettonYe/ProxyPane">{{config('version.name')}}</a>
-                                    版本: {{config('version.number')}} 开发
+    <div class="site-footer-legal">
+        Copyright ©️2017 - 2020 <a href="https://github.com/ProxyPanel/ProxyPanel" target="_blank">{{config('version.name')}}</a>
+        🚀 版本: {{config('version.number')}}
     </div>
     <div class="site-footer-right">
-        由 <i class="red-600 wb-heart"></i>
-        <a href="https://github.com/ZBrettonYe">兔姬菌</a> 开发
+        由 <a href="{{sysConfig('website_url')}}" target="_blank">{{sysConfig('website_name')}}</a> 🈺运营
     </div>
 </footer>
 @if(Session::get("admin"))
@@ -284,7 +281,7 @@
         $('#return_to_admin').click(function() {
             $.ajax({
                 method: 'POST',
-                url: '/switchToAdmin',
+                url: '{{route('switch')}}',
                 data: {'_token': '{{csrf_token()}}'},
                 dataType: 'json',
                 success: function(ret) {

+ 1 - 1
resources/views/user/nodeList.blade.php

@@ -170,7 +170,7 @@
             const oldClass = $('#' + type + id).attr('class');
             $.ajax({
                 method: 'POST',
-                url: '/nodeList',
+                url: '{{route('node')}}',
                 data: {_token: '{{csrf_token()}}', id: id, type: type},
                 beforeSend: function() {
                     $('#' + type + id).removeAttr('class').addClass('icon wb-loop icon-spin');

+ 3 - 3
resources/views/user/payment.blade.php

@@ -58,19 +58,19 @@
         const r = window.setInterval(function() {
             $.ajax({
                 method: 'GET',
-                url: '/payment/getStatus',
+                url: '{{route('orderStatus')}}',
                 data: {trade_no: '{{$payment->trade_no}}'},
                 dataType: 'json',
                 success: function(ret) {
                     window.clearInterval();
                     if (ret.status === 'success') {
                         swal.fire({title: ret.message, type: 'success', timer: 1500, showConfirmButton: false}).then(() => {
-                            window.location.href = '/invoices';
+                            window.location.href = '{{route('invoice')}}';
                         });
                     }
                     else if (ret.status === 'error') {
                         swal.fire({title: ret.message, type: 'error', timer: 1500, showConfirmButton: false}).then(() => {
-                            window.location.href = '/invoices';
+                            window.location.href = '{{route('invoice')}}';
                         });
                     }
                 },

+ 9 - 7
resources/views/user/profile.blade.php

@@ -11,12 +11,14 @@
                         <div class="float-left">
                             <div class="font-size-20 mb-15">{{Auth::getUser()->username}}</div>
                             <p class="mb-5 text-nowrap"><i class="icon bd-webchat mr-10" aria-hidden="true"></i>
-                                <span class="text-break">微信: @if(Auth::getUser()->wechat) {{Auth::getUser()->wechat}} @else
-                                        未添加 @endif</span>
+                                <span class="text-break">微信:
+                                    @if(Auth::getUser()->wechat) {{Auth::getUser()->wechat}} @else未添加 @endif
+                                </span>
                             </p>
                             <p class="mb-5 text-nowrap"><i class="icon bd-qq mr-10" aria-hidden="true"></i>
-                                <span class="text-break">QQ: @if(Auth::getUser()->qq) {{Auth::getUser()->qq}} @else
-                                        未添加 @endif</span>
+                                <span class="text-break">QQ:
+                                    @if(Auth::getUser()->qq) {{Auth::getUser()->qq}} @else 未添加 @endif
+                                </span>
                             </p>
                         </div>
                     </div>
@@ -44,7 +46,7 @@
                         </ul>
                         <div class="tab-content py-10">
                             <div class="tab-pane active animation-slide-left" id="tab_1" role="tabpanel">
-                                <form action="/profile" method="post" enctype="multipart/form-data" class="form-horizontal" autocomplete="off">
+                                <form action="{{route('profile')}}" method="post" enctype="multipart/form-data" class="form-horizontal" autocomplete="off">
                                     @csrf
                                     <div class="form-group row">
                                         <label for="old_password" class="col-md-2 col-form-label">{{trans('home.current_password')}}</label>
@@ -60,7 +62,7 @@
                                 </form>
                             </div>
                             <div class="tab-pane animation-slide-left" id="tab_2" role="tabpanel">
-                                <form action="/profile" method="post" enctype="multipart/form-data" class="form-horizontal">
+                                <form action="{{route('profile')}}" method="post" enctype="multipart/form-data" class="form-horizontal">
                                     @csrf
                                     <div class="form-group row">
                                         <label for="username" class="col-md-2 col-form-label">{{trans('auth.username')}}</label>
@@ -80,7 +82,7 @@
                                 </form>
                             </div>
                             <div class="tab-pane animation-slide-left" id="tab_3" role="tabpanel">
-                                <form action="/profile" method="post" enctype="multipart/form-data" class="form-horizontal">
+                                <form action="{{route('profile')}}" method="post" enctype="multipart/form-data" class="form-horizontal">
                                     @csrf
                                     <div class="form-group row">
                                         <label for="passwd" class="col-md-2 col-form-label"> {{trans('home.connection_password')}} </label>

+ 8 - 7
resources/views/user/referral.blade.php

@@ -13,7 +13,8 @@
                 <!-- 推广链接 -->
                 <div class="card">
                     <div class="card-block">
-                        <h4 class="card-title cyan-600"><i class="icon wb-link"></i> {{trans('home.referral_my_link')}}
+                        <h4 class="card-title cyan-600"><i class="icon wb-link"></i>
+                            {{trans('home.referral_my_link')}}
                         </h4>
                         <div class="card-text form">
                             <div class="mt-clipboard-container input-group">
@@ -91,9 +92,9 @@
                                     <td> ¥{{$referralLog->amount}} </td>
                                     <td> ¥{{$referralLog->commission}} </td>
                                     <td>
-                                        @if ($referralLog->status == 1)
+                                        @if ($referralLog->status === 1)
                                             <span class="badge badge-sm badge-info">申请中</span>
-                                        @elseif($referralLog->status == 2)
+                                        @elseif($referralLog->status === 2)
                                             <span>已提现</span>
                                         @else
                                             <span class="badge badge-sm badge-success">未提现</span>
@@ -138,11 +139,11 @@
                                     <td> {{$vo->created_at}} </td>
                                     <td> ¥{{$vo->amount}} </td>
                                     <td>
-                                        @if ($vo->status == 0)
+                                        @if ($vo->status === 0)
                                             <span class="badge badge-sm badge-warning">待审核</span>
-                                        @elseif($vo->status == 1)
+                                        @elseif($vo->status === 1)
                                             <span class="badge badge-sm badge-info">审核通过 - 待打款</span>
-                                        @elseif($vo->status == 2)
+                                        @elseif($vo->status === 2)
                                             <span>已打款</span>
                                         @else
                                             <span class="badge badge-sm badge-dark">驳回</span>
@@ -171,7 +172,7 @@
     <script type="text/javascript">
         // 申请提现
         function extractMoney() {
-            $.post('/extractMoney', {_token: '{{csrf_token()}}'}, function(ret) {
+            $.post('{{route('applyCommission')}}', {_token: '{{csrf_token()}}'}, function(ret) {
                 if (ret.status === 'success') {
                     swal.fire({
                         title: ret.message,

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

@@ -7,7 +7,7 @@
         <div class="panel panel-bordered">
             <div class="panel-heading">
                 <h1 class="panel-title cyan-600"><i class="icon wb-help-circle"></i> {{$ticket->title}} </h1>
-                @if($ticket->status != 2)
+                @if($ticket->status !== 2)
                     <div class="panel-actions">
                         <button class="btn btn-danger" onclick="closeTicket()"> {{trans('home.ticket_close')}} </button>
                     </div>
@@ -23,7 +23,7 @@
                     </div>
                 </div>
             </div>
-            @if($ticket->status != 2)
+            @if($ticket->status !== 2)
                 <div class="panel-footer pb-30">
                     <form>
                         <div class="input-group">
@@ -61,7 +61,7 @@
                 if (result.value) {
                     $.ajax({
                         method: 'POST',
-                        url: '/closeTicket',
+                        url: '{{route('closeTicket')}}',
                         async: true,
                         data: {_token: '{{csrf_token()}}', id: '{{$ticket->id}}'},
                         dataType: 'json',
@@ -70,7 +70,7 @@
                                 title: ret.message,
                                 type: 'success',
                                 timer: 1300,
-                            }).then(() => window.location.href = '/tickets');
+                            }).then(() => window.location.href = '{{route('ticket')}}');
                         },
                         error: function() {
                             swal.fire('未知错误!请通知客服!');
@@ -97,7 +97,7 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('/replyTicket', {
+                    $.post('{{route('replyTicket')}}', {
                         _token: '{{csrf_token()}}',
                         id: '{{$ticket->id}}',
                         content: content,

+ 9 - 9
resources/views/user/services.blade.php

@@ -58,10 +58,10 @@
                                                     <span class="ribbon-inner h-auto">热<br>销</span>
                                                 </div>
                                             @endif
-                                            <div class="pricing-price text-white @if($goods->type == 1) text-center @endif">
+                                            <div class="pricing-price text-white @if($goods->type === 1) text-center @endif">
                                                 <span class="pricing-currency">¥</span>
                                                 <span class="pricing-amount">{{$goods->price}}</span>
-                                                @if($goods->type == 2)
+                                                @if($goods->type === 2)
                                                     <span class="pricing-period">/ {{$goods->days}}{{trans('home.day')}}</span>
                                                 @endif
                                             </div>
@@ -71,7 +71,8 @@
                                         </div>
                                         <ul class="pricing-features">
                                             <li>
-                                                <strong>{{$goods->traffic_label}}</strong> {{trans('home.bandwidth')}}{!!$goods->type == 1? ' <code>'.$dataPlusDays.'</code> '.trans('home.day'):'/'.trans('home.month')!!}
+                                                <strong>{{$goods->traffic_label}}</strong>{{trans('home.bandwidth')}}
+                                                {!!$goods->type === 1? ' <code>'.$dataPlusDays.'</code> '.trans('home.day'):'/'.trans('home.month')!!}
                                             </li>
                                             <li>
                                                 <strong>{{trans('home.service_unlimited')}}</strong> {{trans('home.service_device')}}
@@ -79,7 +80,7 @@
                                             {!!$goods->info!!}
                                         </ul>
                                         <div class="pricing-footer text-center bg-blue-grey-100">
-                                            <a href="/buy/{{$goods->id}}" class="btn btn-lg btn-primary"> {{trans('home.service_buy_button')}}</a>
+                                            <a href="{{route('buy', $goods->id)}}" class="btn btn-lg btn-primary"> {{trans('home.service_buy_button')}}</a>
                                         </div>
                                     </div>
                                 </div>
@@ -218,7 +219,7 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('/resetUserTraffic', {_token: '{{csrf_token()}}'}, function(ret) {
+                    $.post('{{route('resetTraffic')}}', {_token: '{{csrf_token()}}'}, function(ret) {
                         if (ret.status === 'success') {
                             swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).
                                 then(() => window.location.reload());
@@ -248,7 +249,7 @@
 
                 $.ajax({
                     method: 'POST',
-                    url: '/payment/purchase',
+                    url: '{{route('purchase')}}',
                     data: {_token: '{{csrf_token()}}', amount: amount, method: method, pay_type: pay_type},
                     dataType: 'json',
                     beforeSend: function() {
@@ -261,7 +262,7 @@
                         else {
                             $('#charge_msg').show().html(ret.message);
                             if (ret.data) {
-                                window.location.href = '/payment/' + ret.data;
+                                window.location.href = '{{route('orderDetail' , '')}}/' + ret.data;
                             }
                             else if (ret.url) {
                                 window.location.href = ret.url;
@@ -282,7 +283,7 @@
 
                 $.ajax({
                     method: 'POST',
-                    url: '/charge',
+                    url: '{{route('recharge')}}',
                     data: {_token: '{{csrf_token()}}', coupon_sn: charge_coupon},
                     beforeSend: function() {
                         $('#charge_msg').show().html("{{trans('home.recharging')}}");
@@ -302,6 +303,5 @@
                 });
             }
         }
-
     </script>
 @endsection

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

@@ -37,9 +37,9 @@
                                         <td>{{$ticket->title}}</td>
                                         <td>{!!$ticket->status_label!!}</td>
                                         <td>
-                                            <a href="/replyTicket?id={{$ticket->id}}" class="btn btn-animate btn-animate-vertical btn-outline-info">
+                                            <a href="{{route('replyTicket', ['id' => $ticket->id])}}" class="btn btn-animate btn-animate-vertical btn-outline-info">
                                                 <span>
-                                                    @if($ticket->status == 2)
+                                                    @if($ticket->status === 2)
                                                         <i class="icon wb-eye" aria-hidden="true" style="left: 40%"> </i>{{trans('home.ticket_table_view')}}
                                                     @else
                                                         <i class="icon wb-check" aria-hidden="true" style="left: 40%"> </i>{{trans('home.ticket_open')}}
@@ -153,14 +153,13 @@
                 confirmButtonText: '{{trans('home.ticket_confirm')}}',
             }).then((result) => {
                 if (result.value) {
-                    $.post('/createTicket', {
+                    $.post('{{route('openTicket')}}', {
                         _token: '{{csrf_token()}}',
                         title: title,
                         content: content,
                     }, function(ret) {
                         if (ret.status === 'success') {
-                            swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).
-                                then(() => window.location.reload());
+                            swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}).then(() => window.location.reload());
                         }
                         else {
                             swal.fire({title: ret.message, type: 'error'}).then(() => window.location.reload());

+ 34 - 30
routes/web.php

@@ -1,11 +1,15 @@
 <?php
 
-Route::get('s/{code}', 'User\SubscribeController@getSubscribeByCode'); // 节点订阅地址
+Route::domain(sysConfig('subscribe_domain') ?: sysConfig('website_url'))->group(function () {
+    Route::get('s/{code}', 'User\SubscribeController@getSubscribeByCode')->name('sub'); // 节点订阅地址
+});
 
 // 支付回调相关
 Route::prefix('callback')->group(function () {
-    Route::get('checkout', 'Gateway\PayPal@getCheckout');
-    Route::get('notify', 'PaymentController@notify'); //支付回调
+    Route::get('checkout', 'Gateway\PayPal@getCheckout')->name('paypal.checkout');
+    Route::domain(sysConfig('website_callback_url') ?: sysConfig('website_url'))->group(function () {
+        Route::get('notify', 'PaymentController@notify')->name('payment.notify'); //支付回调
+    });
 });
 
 // 登录相关
@@ -28,38 +32,38 @@ Route::any('admin/login', 'AuthController@login')->name('admin.login')->middlewa
 // 用户相关
 Route::middleware(['isForbidden', 'isMaintenance', 'isLogin'])->group(function () {
     Route::get('/', 'UserController@index')->name('home'); // 用户首页
-    Route::get('article', 'UserController@article'); // 文章详情
-    Route::post('exchangeSubscribe', 'UserController@exchangeSubscribe'); // 更换节点订阅地址
-    Route::any('nodeList', 'UserController@nodeList'); // 节点列表
-    Route::post('checkIn', 'UserController@checkIn'); // 签到
-    Route::get('services', 'UserController@services'); // 商品列表
-    Route::get('tickets', 'UserController@ticketList'); // 工单
-    Route::post('createTicket', 'UserController@createTicket'); // 快速添加工单
-    Route::any('replyTicket', 'UserController@replyTicket'); // 回复工单
-    Route::post('closeTicket', 'UserController@closeTicket'); // 关闭工单
-    Route::get('invoices', 'UserController@invoices'); // 订单列表
-    Route::post('closePlan', 'UserController@closePlan'); // 激活预支付套餐
-    Route::get('invoice/{sn}', 'UserController@invoiceDetail'); // 订单明细
-    Route::post('resetUserTraffic', 'UserController@resetUserTraffic'); // 重置用户流量
-    Route::get('buy/{id}', 'UserController@buy'); // 购买商品
-    Route::post('redeemCoupon', 'UserController@redeemCoupon'); // 使用优惠券
-    Route::get('invite', 'UserController@invite'); // 邀请码
-    Route::post('makeInvite', 'UserController@makeInvite'); // 生成邀请码
-    Route::any('profile', 'UserController@profile'); // 修改个人信息
-    Route::post("switchToAdmin", "UserController@switchToAdmin"); // 转换成管理员的身份
-    Route::post("charge", "UserController@charge"); // 卡券余额充值
-    Route::get("help", "UserController@help"); // 帮助中心
+    Route::get('article', 'UserController@article')->name('article'); // 文章详情
+    Route::post('exchangeSubscribe', 'UserController@exchangeSubscribe')->name('changeSub'); // 更换节点订阅地址
+    Route::any('nodeList', 'UserController@nodeList')->name('node'); // 节点列表
+    Route::post('checkIn', 'UserController@checkIn')->name('checkIn'); // 签到
+    Route::get('services', 'UserController@services')->name('shop'); // 商品列表
+    Route::get('tickets', 'UserController@ticketList')->name('ticket'); // 工单
+    Route::post('createTicket', 'UserController@createTicket')->name('openTicket'); // 快速添加工单
+    Route::any('replyTicket', 'UserController@replyTicket')->name('replyTicket'); // 回复工单
+    Route::post('closeTicket', 'UserController@closeTicket')->name('closeTicket'); // 关闭工单
+    Route::get('invoices', 'UserController@invoices')->name('invoice'); // 订单列表
+    Route::post('closePlan', 'UserController@closePlan')->name('cancelPlan'); // 激活预支付套餐
+    Route::get('invoice/{sn}', 'UserController@invoiceDetail')->name('invoiceInfo'); // 订单明细
+    Route::post('resetUserTraffic', 'UserController@resetUserTraffic')->name('resetTraffic'); // 重置用户流量
+    Route::get('buy/{id}', 'UserController@buy')->name('buy'); // 购买商品
+    Route::post('redeemCoupon', 'UserController@redeemCoupon')->name('redeemCoupon'); // 使用优惠券
+    Route::get('invite', 'UserController@invite')->name('invite'); // 邀请码
+    Route::post('makeInvite', 'UserController@makeInvite')->name('createInvite'); // 生成邀请码
+    Route::any('profile', 'UserController@profile')->name('profile'); // 修改个人信息
+    Route::post("switchToAdmin", "UserController@switchToAdmin")->name('switch'); // 转换成管理员的身份
+    Route::post("charge", "UserController@charge")->name('recharge'); // 卡券余额充值
+    Route::get("help", "UserController@help")->name('help'); // 帮助中心
 
     Route::namespace('User')->group(function () {
-        Route::get('referral', 'AffiliateController@referral'); // 推广返利
-        Route::post('extractMoney', 'AffiliateController@extractMoney'); // 申请提现
+        Route::get('referral', 'AffiliateController@referral')->name('commission'); // 推广返利
+        Route::post('extractMoney', 'AffiliateController@extractMoney')->name('applyCommission'); // 申请提现
     });
 
     Route::prefix('payment')->group(function () {
-        Route::post('purchase', 'PaymentController@purchase'); // 创建支付
-        Route::post('close', 'PaymentController@close'); // 关闭支付单
-        Route::get('getStatus', 'PaymentController@getStatus'); // 获取支付单状态
-        Route::get('{trade_no}', 'PaymentController@detail'); // 支付单详情
+        Route::post('purchase', 'PaymentController@purchase')->name('purchase'); // 创建支付
+        Route::post('close', 'PaymentController@close')->name('closeOrder'); // 关闭支付单
+        Route::get('getStatus', 'PaymentController@getStatus')->name('orderStatus'); // 获取支付单状态
+        Route::get('{trade_no}', 'PaymentController@detail')->name('orderDetail'); // 支付单详情
     });
 });