From 4dda98905835267967e1eccef65dfdac7390b910 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= Date: Sun, 26 Apr 2020 06:04:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E6=8E=92=E7=89=88=E8=A7=84?= =?UTF-8?q?=E5=88=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Components/CaptchaVerify.php | 2 +- app/Components/Helpers.php | 1 + app/Components/Namesilo.php | 2 +- app/Components/NetworkDetection.php | 4 +- app/Components/PushNotification.php | 17 +- app/Console/Commands/AutoClearLog.php | 48 +-- app/Console/Commands/AutoJob.php | 2 +- app/Console/Commands/ServiceTimer.php | 2 +- app/Console/Commands/updateUserName.php | 6 +- .../Controllers/Admin/AffiliateController.php | 118 +++++++ .../{ => Admin}/CouponController.php | 11 +- .../{ => Admin}/MarketingController.php | 11 +- .../{ => Admin}/SensitiveWordsController.php | 7 +- .../{ => Admin}/ShopController.php | 17 +- .../Controllers/Admin/SubscribeController.php | 136 ++++++++ .../{ => Admin}/TicketController.php | 9 +- app/Http/Controllers/AdminController.php | 298 ++++++------------ app/Http/Controllers/Api/LoginController.php | 2 +- app/Http/Controllers/Api/PingController.php | 2 +- app/Http/Controllers/AuthController.php | 93 +++--- app/Http/Controllers/Controller.php | 12 +- .../Controllers/Gateway/AbstractPayment.php | 14 +- app/Http/Controllers/Gateway/BitpayX.php | 52 +-- app/Http/Controllers/Gateway/Local.php | 2 +- app/Http/Controllers/PaymentController.php | 6 +- .../Controllers/User/AffiliateController.php | 82 +++++ .../{ => User}/SubscribeController.php | 120 +------ app/Http/Controllers/UserController.php | 68 +--- app/Http/Middleware/isAdminlogin.php | 1 + app/Http/Models/Goods.php | 1 + app/Http/Models/User.php | 1 + app/Listeners/EventListener.php | 1 + app/helpers.php | 2 +- .../affiliateDetail.blade.php} | 28 +- .../affiliateList.blade.php} | 86 +++-- .../{ => affiliate}/userRebateList.blade.php | 68 ++-- .../admin/{ => article}/addArticle.blade.php | 0 .../admin/{ => article}/articleList.blade.php | 56 ++-- .../admin/{ => article}/editArticle.blade.php | 0 resources/views/admin/config.blade.php | 186 +++++------ .../{ => admin}/coupon/addCoupon.blade.php | 0 .../{ => admin}/coupon/couponList.blade.php | 98 +++--- .../admin/{ => group}/addGroup.blade.php | 0 .../admin/{ => group}/editGroup.blade.php | 0 .../admin/{ => group}/groupList.blade.php | 28 +- .../admin/{ => label}/addLabel.blade.php | 0 .../admin/{ => label}/editLabel.blade.php | 0 .../admin/{ => label}/labelList.blade.php | 32 +- resources/views/admin/layouts.blade.php | 16 +- .../logs}/callbackList.blade.php | 28 +- .../admin/{ => logs}/nodePingLog.blade.php | 22 +- .../{ => logs}/notificationLog.blade.php | 44 ++- .../{ => logs}/onlineIPMonitor.blade.php | 42 ++- .../admin/{ => logs}/orderList.blade.php | 68 ++-- .../admin/{ => logs}/trafficLog.blade.php | 38 +-- .../{ => logs}/userBalanceLogList.blade.php | 38 +-- .../admin/{ => logs}/userBanLogList.blade.php | 26 +- .../admin/{ => logs}/userMonitor.blade.php | 0 .../{ => logs}/userOnlineIPList.blade.php | 98 +++--- .../{ => logs}/userTrafficLogList.blade.php | 50 ++- .../{ => admin}/marketing/emailList.blade.php | 22 +- .../{ => admin}/marketing/pushList.blade.php | 22 +- .../views/admin/{ => node}/addNode.blade.php | 0 .../views/admin/{ => node}/editNode.blade.php | 0 .../views/admin/{ => node}/nodeList.blade.php | 8 +- .../admin/{ => node}/nodeMonitor.blade.php | 0 .../addSensitiveWords.blade.php | 0 .../sensitiveWordsList.blade.php | 26 +- .../views/{ => admin}/shop/addGoods.blade.php | 0 .../{ => admin}/shop/editGoods.blade.php | 0 .../{ => admin}/shop/goodsList.blade.php | 94 +++--- .../subscribe/deviceList.blade.php | 36 +-- .../subscribe/subscribeList.blade.php | 56 ++-- .../subscribe/subscribeLog.blade.php | 20 +- .../{ => admin}/ticket/addTicket.blade.php | 0 .../{ => admin}/ticket/replyTicket.blade.php | 0 .../{ => admin}/ticket/ticketList.blade.php | 40 +-- .../views/admin/{ => user}/addUser.blade.php | 0 .../views/admin/{ => user}/editUser.blade.php | 0 .../views/admin/{ => user}/userList.blade.php | 104 +++--- resources/views/{ => auth}/docs/aup.blade.php | 0 resources/views/{ => auth}/docs/tos.blade.php | 0 resources/views/auth/register.blade.php | 4 +- resources/views/user/layouts.blade.php | 4 +- .../payment.blade.php} | 2 +- resources/views/user/services.blade.php | 10 +- routes/web.php | 98 +++--- 87 files changed, 1330 insertions(+), 1418 deletions(-) create mode 100644 app/Http/Controllers/Admin/AffiliateController.php rename app/Http/Controllers/{ => Admin}/CouponController.php (96%) rename app/Http/Controllers/{ => Admin}/MarketingController.php (90%) rename app/Http/Controllers/{ => Admin}/SensitiveWordsController.php (88%) rename app/Http/Controllers/{ => Admin}/ShopController.php (94%) create mode 100644 app/Http/Controllers/Admin/SubscribeController.php rename app/Http/Controllers/{ => Admin}/TicketController.php (93%) create mode 100644 app/Http/Controllers/User/AffiliateController.php rename app/Http/Controllers/{ => User}/SubscribeController.php (58%) rename resources/views/admin/{applyDetail.blade.php => affiliate/affiliateDetail.blade.php} (74%) rename resources/views/admin/{applyList.blade.php => affiliate/affiliateList.blade.php} (58%) rename resources/views/admin/{ => affiliate}/userRebateList.blade.php (72%) rename resources/views/admin/{ => article}/addArticle.blade.php (100%) rename resources/views/admin/{ => article}/articleList.blade.php (70%) rename resources/views/admin/{ => article}/editArticle.blade.php (100%) rename resources/views/{ => admin}/coupon/addCoupon.blade.php (100%) rename resources/views/{ => admin}/coupon/couponList.blade.php (74%) rename resources/views/admin/{ => group}/addGroup.blade.php (100%) rename resources/views/admin/{ => group}/editGroup.blade.php (100%) rename resources/views/admin/{ => group}/groupList.blade.php (80%) rename resources/views/admin/{ => label}/addLabel.blade.php (100%) rename resources/views/admin/{ => label}/editLabel.blade.php (100%) rename resources/views/admin/{ => label}/labelList.blade.php (78%) rename resources/views/{payment => admin/logs}/callbackList.blade.php (86%) rename resources/views/admin/{ => logs}/nodePingLog.blade.php (83%) rename resources/views/admin/{ => logs}/notificationLog.blade.php (73%) rename resources/views/admin/{ => logs}/onlineIPMonitor.blade.php (79%) rename resources/views/admin/{ => logs}/orderList.blade.php (81%) rename resources/views/admin/{ => logs}/trafficLog.blade.php (86%) rename resources/views/admin/{ => logs}/userBalanceLogList.blade.php (78%) rename resources/views/admin/{ => logs}/userBanLogList.blade.php (79%) rename resources/views/admin/{ => logs}/userMonitor.blade.php (100%) rename resources/views/admin/{ => logs}/userOnlineIPList.blade.php (65%) rename resources/views/admin/{ => logs}/userTrafficLogList.blade.php (74%) rename resources/views/{ => admin}/marketing/emailList.blade.php (87%) rename resources/views/{ => admin}/marketing/pushList.blade.php (94%) rename resources/views/admin/{ => node}/addNode.blade.php (100%) rename resources/views/admin/{ => node}/editNode.blade.php (100%) rename resources/views/admin/{ => node}/nodeList.blade.php (98%) rename resources/views/admin/{ => node}/nodeMonitor.blade.php (100%) rename resources/views/{ => admin}/sensitiveWords/addSensitiveWords.blade.php (100%) rename resources/views/{ => admin}/sensitiveWords/sensitiveWordsList.blade.php (91%) rename resources/views/{ => admin}/shop/addGoods.blade.php (100%) rename resources/views/{ => admin}/shop/editGoods.blade.php (100%) rename resources/views/{ => admin}/shop/goodsList.blade.php (70%) rename resources/views/{ => admin}/subscribe/deviceList.blade.php (79%) rename resources/views/{ => admin}/subscribe/subscribeList.blade.php (73%) rename resources/views/{ => admin}/subscribe/subscribeLog.blade.php (74%) rename resources/views/{ => admin}/ticket/addTicket.blade.php (100%) rename resources/views/{ => admin}/ticket/replyTicket.blade.php (100%) rename resources/views/{ => admin}/ticket/ticketList.blade.php (79%) rename resources/views/admin/{ => user}/addUser.blade.php (100%) rename resources/views/admin/{ => user}/editUser.blade.php (100%) rename resources/views/admin/{ => user}/userList.blade.php (77%) rename resources/views/{ => auth}/docs/aup.blade.php (100%) rename resources/views/{ => auth}/docs/tos.blade.php (100%) rename resources/views/{payment/detail.blade.php => user/payment.blade.php} (98%) diff --git a/app/Components/CaptchaVerify.php b/app/Components/CaptchaVerify.php index bfb9b6b5..32cdb8c9 100644 --- a/app/Components/CaptchaVerify.php +++ b/app/Components/CaptchaVerify.php @@ -7,7 +7,7 @@ namespace App\Components; * * @package App\Components */ -Class CaptchaVerify +class CaptchaVerify { //从后台获取 hcaptcha_sitekey 和 hcaptcha_secret public static function hCaptchaGetConfig() diff --git a/app/Components/Helpers.php b/app/Components/Helpers.php index 5488f3bf..42a6ac02 100644 --- a/app/Components/Helpers.php +++ b/app/Components/Helpers.php @@ -66,6 +66,7 @@ class Helpers * @param string $transfer_enable 可用流量 * @param int $data 可使用天数 * @param int $referral_uid 邀请人 + * * @return int */ public static function addUser($email, $password, $transfer_enable, $data, $referral_uid = 0) diff --git a/app/Components/Namesilo.php b/app/Components/Namesilo.php index 83b59d37..745f18e2 100644 --- a/app/Components/Namesilo.php +++ b/app/Components/Namesilo.php @@ -47,7 +47,7 @@ class Namesilo } return $result['namesilo']['reply']; - } catch(Exception $e){ + }catch(Exception $e){ Log::error('CURL请求失败:'.$e->getMessage().' --- '.$e->getLine()); Helpers::addNotificationLog('[Namesilo API] - ['.$operation.']', $content, 1, self::$systemConfig['webmaster_email'], 0, $e->getMessage()); diff --git a/app/Components/NetworkDetection.php b/app/Components/NetworkDetection.php index fd8a33e5..e52ce91a 100644 --- a/app/Components/NetworkDetection.php +++ b/app/Components/NetworkDetection.php @@ -40,7 +40,7 @@ class NetworkDetection return FALSE; } - } catch(Exception $e){ + }catch(Exception $e){ Log::warning("【".$checkName."阻断检测】检测".$ip."时,接口请求超时".$e); return FALSE; @@ -79,7 +79,7 @@ class NetworkDetection return FALSE; } - } catch(Exception $e){ + }catch(Exception $e){ Log::warning("【Ping】检测".$ip."时,接口请求超时".$e); return FALSE; diff --git a/app/Components/PushNotification.php b/app/Components/PushNotification.php index d41c817b..467db748 100644 --- a/app/Components/PushNotification.php +++ b/app/Components/PushNotification.php @@ -19,9 +19,8 @@ class PushNotification return self::Bark($title, $content); break; default: + return FALSE; } - - return FALSE; } /** @@ -34,7 +33,7 @@ class PushNotification */ private static function ServerChan($title, $content) { - $result = FALSE; + $ret = FALSE; try{ // TODO:一天仅可发送不超过500条 $url = 'https://sc.ftqq.com/'.Helpers::systemConfig()['server_chan_key'].'.send?text='.$title.'&desp='.urlencode($content); @@ -46,15 +45,16 @@ class PushNotification } if($result != NULL && !$result->errno){ Helpers::addNotificationLog($title, $content, 2); + $ret = TRUE; }else{ Helpers::addNotificationLog($title, $content, 2, 'admin', 1, $result? $result->errmsg : '未知'); } - } catch(Exception $e){ + }catch(Exception $e){ Log::error('ServerChan消息推送异常:'.$e); } - return $result; + return $ret; } /** @@ -67,21 +67,22 @@ class PushNotification */ private static function Bark($title, $content) { - $result = FALSE; + $ret = FALSE; try{ $url = 'https://api.day.app/'.Helpers::systemConfig()['bark_key'].'/'.$title.'/'.$content; $result = json_decode(Curl::send($url)); if($result){ if($result->code == 200){ Helpers::addNotificationLog($title, $content, 3); + $ret = TRUE; }else{ Helpers::addNotificationLog($title, $content, 3, 'admin', $result->message); } } - } catch(Exception $e){ + }catch(Exception $e){ Log::error('Bark消息推送异常:'.$e); } - return $result; + return $ret; } } \ No newline at end of file diff --git a/app/Console/Commands/AutoClearLog.php b/app/Console/Commands/AutoClearLog.php index 545ef8aa..7d6d052d 100644 --- a/app/Console/Commands/AutoClearLog.php +++ b/app/Console/Commands/AutoClearLog.php @@ -14,6 +14,7 @@ use App\Http\Models\UserSubscribeLog; use App\Http\Models\UserTrafficDaily; use App\Http\Models\UserTrafficHourly; use App\Http\Models\UserTrafficLog; +use Exception; use Illuminate\Console\Command; use Log; @@ -46,37 +47,42 @@ class AutoClearLog extends Command private function clearLog() { // 自动清除30分钟以前的节点负载信息日志 - SsNodeInfo::query()->where('log_time', '<=', strtotime("-30 minutes"))->delete(); + try{ + SsNodeInfo::query()->where('log_time', '<=', strtotime("-30 minutes"))->delete(); - // 自动清除1小时以前的节点在线用户数日志 - SsNodeOnlineLog::query()->where('log_time', '<=', strtotime("-1 hour"))->delete(); + // 自动清除1小时以前的节点在线用户数日志 + SsNodeOnlineLog::query()->where('log_time', '<=', strtotime("-1 hour"))->delete(); - // 自动清除3天以前的用户流量日志 - UserTrafficLog::query()->where('log_time', '<=', strtotime("-3 days"))->delete(); + // 自动清除3天以前的用户流量日志 + UserTrafficLog::query()->where('log_time', '<=', strtotime("-3 days"))->delete(); - // 自动清除3天以前的用户每小时流量数据日志 - UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-3 days')))->delete(); + // 自动清除3天以前的用户每小时流量数据日志 + UserTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-3 days')))->delete(); - // 自动清除1个月以前的用户每天流量数据日志 - UserTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-1 month 5 days')))->delete(); + // 自动清除1个月以前的用户每天流量数据日志 + UserTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-1 month 5 days')))->delete(); - // 自动清除2个月以前的节点每小时流量数据日志 - SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-2 month')))->delete(); + // 自动清除2个月以前的节点每小时流量数据日志 + SsNodeTrafficHourly::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-2 month')))->delete(); - // 自动清除3个月以前的节点每天流量数据日志 - SsNodeTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-3 month')))->delete(); + // 自动清除3个月以前的节点每天流量数据日志 + SsNodeTrafficDaily::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime('-3 month')))->delete(); - // 自动清除30天以前用户封禁日志 - UserBanLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-1 month")))->delete(); + // 自动清除30天以前用户封禁日志 + UserBanLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-1 month")))->delete(); - // 自动清除1月前用户连接IP - SsNodeIp::query()->where('created_at', '<=', strtotime("-1 month"))->delete(); + // 自动清除1月前用户连接IP + SsNodeIp::query()->where('created_at', '<=', strtotime("-1 month"))->delete(); - // 自动清除3个月以前用户登陆日志 - UserLoginLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-3 month")))->delete(); + // 自动清除3个月以前用户登陆日志 + UserLoginLog::query()->where('created_at', '<=', date('Y-m-d H:i:s', strtotime("-3 month")))->delete(); + + // 自动清除1个月前的用户订阅记录 + UserSubscribeLog::query()->where('request_time', '<=', date('Y-m-d H:i:s', strtotime("-1 month")))->delete(); + }catch(Exception $e){ + Log::error('【清理日志】错误: '.$e->getMessage()); + } - // 自动清除1个月前的用户订阅记录 - UserSubscribeLog::query()->where('request_time', '<=', date('Y-m-d H:i:s', strtotime("-1 month")))->delete(); } } diff --git a/app/Console/Commands/AutoJob.php b/app/Console/Commands/AutoJob.php index 44649848..7bf450f1 100644 --- a/app/Console/Commands/AutoJob.php +++ b/app/Console/Commands/AutoJob.php @@ -122,7 +122,7 @@ class AutoJob extends Command try{ foreach($orderList as $order){ // 关闭订单 - Order::query()->whereKey($order->oid)->update(['status' => -1]); + Order::query()->whereOid($order->oid)->update(['status' => -1]); // 退回优惠券 if($order->coupon_id){ diff --git a/app/Console/Commands/ServiceTimer.php b/app/Console/Commands/ServiceTimer.php index 334ec984..fc4d73f1 100644 --- a/app/Console/Commands/ServiceTimer.php +++ b/app/Console/Commands/ServiceTimer.php @@ -77,7 +77,7 @@ class ServiceTimer extends Command } DB::commit(); - } catch(Exception $e){ + }catch(Exception $e){ Log::error($this->description.':'.$e); DB::rollBack(); diff --git a/app/Console/Commands/updateUserName.php b/app/Console/Commands/updateUserName.php index 12113ea0..1fd73f48 100644 --- a/app/Console/Commands/updateUserName.php +++ b/app/Console/Commands/updateUserName.php @@ -24,7 +24,7 @@ class updateUserName extends Command $userList = User::query()->get(); foreach($userList as $user){ $name = process($user->id); - User::query()->whereKey($user->id)->update(['username' => $name]); + User::query()->whereId($user->id)->update(['username' => $name]); Log::info('---用户[ID:'.$user->id.' - '.$user->email.'] :'.$user->username.'---'); } @@ -33,7 +33,7 @@ class updateUserName extends Command if($user->email == $user->username){ $name = process($user->id); - User::query()->whereKey($user->id)->update(['username' => $name]); + User::query()->whereId($user->id)->update(['username' => $name]); Log::info('---用户[ID:'.$user->id.' - '.$user->email.'] :'.$user->username.'---'); } @@ -45,7 +45,7 @@ class updateUserName extends Command function process($id) { - $user = User::query()->whereKey($id)->first(); + $user = User::query()->whereId($id)->first(); // 先设个默认值 $name = $user->email; // 用户是否设置了QQ号 diff --git a/app/Http/Controllers/Admin/AffiliateController.php b/app/Http/Controllers/Admin/AffiliateController.php new file mode 100644 index 00000000..a0d68057 --- /dev/null +++ b/app/Http/Controllers/Admin/AffiliateController.php @@ -0,0 +1,118 @@ +input('email'); + $status = $request->input('status'); + + $query = ReferralApply::with('user'); + if(isset($email)){ + $query->whereHas('user', function($q) use ($email){ + $q->where('email', 'like', '%'.$email.'%'); + }); + } + + if($status){ + $query->whereStatus($status); + } + + $view['applyList'] = $query->orderBy('id', 'desc')->paginate(15)->appends($request->except('page')); + + return Response::view('admin.affiliate.affiliateList', $view); + } + + // 提现申请详情 + public function affiliateDetail(Request $request) + { + $id = $request->input('id'); + + $list = NULL; + $apply = ReferralApply::query()->with(['user'])->whereId($id)->first(); + if($apply && $apply->link_logs){ + $link_logs = explode(',', $apply->link_logs); + $list = ReferralLog::query()->with(['user', 'order.goods'])->whereIn('id', $link_logs)->paginate(15)->appends($request->except('page')); + } + + $view['info'] = $apply; + $view['list'] = $list; + + return Response::view('admin.affiliate.affiliateDetail', $view); + } + + // 设置提现申请状态 + public function setAffiliateStatus(Request $request) + { + $id = $request->input('id'); + $status = $request->input('status'); + + $ret = ReferralApply::query()->whereId($id)->update(['status' => $status]); + if($ret){ + // 审核申请的时候将关联的 + $referralApply = ReferralApply::query()->whereId($id)->first(); + $log_ids = explode(',', $referralApply->link_logs); + if($referralApply && $status == 1){ + ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 1]); + }elseif($referralApply && $status == 2){ + ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 2]); + } + } + + return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); + } + + // 用户返利流水记录 + public function userRebateList(Request $request) + { + $email = $request->input('email'); + $ref_email = $request->input('ref_email'); + $status = $request->input('status'); + + $query = ReferralLog::query()->with(['user', 'order'])->orderBy('status', 'asc')->orderBy('id', 'desc'); + + if(isset($email)){ + $query->whereHas('user', function($q) use ($email){ + $q->where('email', 'like', '%'.$email.'%'); + }); + } + + if(isset($ref_email)){ + $query->whereHas('ref_user', function($q) use ($ref_email){ + $q->where('email', 'like', '%'.$ref_email.'%'); + }); + } + + if(isset($status)){ + $query->whereStatus($status); + } + + $view['list'] = $query->paginate(15)->appends($request->except('page')); + + return Response::view('admin.affiliate.userRebateList', $view); + } +} diff --git a/app/Http/Controllers/CouponController.php b/app/Http/Controllers/Admin/CouponController.php similarity index 96% rename from app/Http/Controllers/CouponController.php rename to app/Http/Controllers/Admin/CouponController.php index ae1c6fe3..ad4d40b7 100644 --- a/app/Http/Controllers/CouponController.php +++ b/app/Http/Controllers/Admin/CouponController.php @@ -1,7 +1,8 @@ orderBy('id', 'desc')->paginate(15)->appends($request->except('page')); - return Response::view('coupon.couponList', $view); + return Response::view('admin.coupon.couponList', $view); } // 添加商品 @@ -126,7 +127,7 @@ class CouponController extends Controller DB::commit(); return Redirect::back()->with('successMsg', '生成成功'); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::error('生成优惠券失败:'.$e->getMessage()); @@ -134,7 +135,7 @@ class CouponController extends Controller return Redirect::back()->withInput()->withErrors('生成失败:'.$e->getMessage()); } }else{ - return Response::view('coupon.addCoupon'); + return Response::view('admin.coupon.addCoupon'); } } diff --git a/app/Http/Controllers/MarketingController.php b/app/Http/Controllers/Admin/MarketingController.php similarity index 90% rename from app/Http/Controllers/MarketingController.php rename to app/Http/Controllers/Admin/MarketingController.php index 71f60bb5..0635dce9 100644 --- a/app/Http/Controllers/MarketingController.php +++ b/app/Http/Controllers/Admin/MarketingController.php @@ -1,8 +1,9 @@ paginate(15)->appends($request->except('page')); - return Response::view('marketing.emailList', $view); + return Response::view('admin.marketing.emailList', $view); } // 消息通道群发列表 @@ -56,7 +57,7 @@ class MarketingController extends Controller $view['list'] = $query->paginate(15); - return Response::view('marketing.pushList', $view); + return Response::view('admin.marketing.pushList', $view); } // 添加推送消息 @@ -86,7 +87,7 @@ class MarketingController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '推送成功']); - } catch(Exception $e){ + }catch(Exception $e){ Log::info('PushBear消息推送失败:'.$e->getMessage()); DB::rollBack(); diff --git a/app/Http/Controllers/SensitiveWordsController.php b/app/Http/Controllers/Admin/SensitiveWordsController.php similarity index 88% rename from app/Http/Controllers/SensitiveWordsController.php rename to app/Http/Controllers/Admin/SensitiveWordsController.php index d9be2924..c3526901 100644 --- a/app/Http/Controllers/SensitiveWordsController.php +++ b/app/Http/Controllers/Admin/SensitiveWordsController.php @@ -1,7 +1,8 @@ orderBy('id', 'desc')->paginate(15); - return Response::view('sensitiveWords.sensitiveWordsList', $view); + return Response::view('admin.sensitiveWords.sensitiveWordsList', $view); } // 添加敏感词 diff --git a/app/Http/Controllers/ShopController.php b/app/Http/Controllers/Admin/ShopController.php similarity index 94% rename from app/Http/Controllers/ShopController.php rename to app/Http/Controllers/Admin/ShopController.php index 5b7d439b..96215a49 100644 --- a/app/Http/Controllers/ShopController.php +++ b/app/Http/Controllers/Admin/ShopController.php @@ -1,7 +1,8 @@ orderBy('status', 'desc')->paginate(10)->appends($request->except('page')); - return Response::view('shop.goodsList', $view); + return Response::view('admin.shop.goodsList', $view); } // 添加商品 @@ -121,7 +122,7 @@ class ShopController extends Controller DB::commit(); return Redirect::back()->with('successMsg', '添加成功'); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::info($e); @@ -130,7 +131,7 @@ class ShopController extends Controller }else{ $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); - return Response::view('shop.addGoods', $view); + return Response::view('admin.shop.addGoods', $view); } } @@ -230,7 +231,7 @@ class ShopController extends Controller Session::flash('successMsg', '编辑成功'); DB::commit(); - } catch(Exception $e){ + }catch(Exception $e){ Session::flash('errorMsg', '编辑失败'); DB::rollBack(); @@ -250,14 +251,14 @@ class ShopController extends Controller $view['goods'] = $goods; $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); - return Response::view('shop.editGoods', $view); + return Response::view('admin.shop.editGoods', $view); } } // 删除商品 public function delGoods(Request $request) { - Goods::query()->where('id', $request->input('id'))->delete(); + Goods::query()->whereId($request->input('id'))->delete(); return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); } diff --git a/app/Http/Controllers/Admin/SubscribeController.php b/app/Http/Controllers/Admin/SubscribeController.php new file mode 100644 index 00000000..380e7c55 --- /dev/null +++ b/app/Http/Controllers/Admin/SubscribeController.php @@ -0,0 +1,136 @@ +input('user_id'); + $email = $request->input('email'); + $status = $request->input('status'); + + $query = UserSubscribe::with(['user:id,email']); + + if(isset($user_id)){ + $query->whereUserId($user_id); + } + + if(isset($email)){ + $query->whereHas('user', function($q) use ($email){ + $q->where('email', 'like', '%'.$email.'%'); + }); + } + + if(isset($status)){ + $query->whereStatus($status); + } + + $view['subscribeList'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page')); + + return Response::view('admin.subscribe.subscribeList', $view); + } + + //订阅记录 + public function subscribeLog(Request $request) + { + $id = $request->input('id'); + $query = UserSubscribeLog::with('user:email'); + + if(isset($id)){ + $query->whereSid($id); + } + + $view['subscribeLog'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page')); + + return Response::view('admin.subscribe.subscribeLog', $view); + } + + // 订阅设备列表 + public function deviceList(Request $request) + { + $type = $request->input('type'); + $platform = $request->input('platform'); + $name = $request->input('name'); + $status = $request->input('status'); + + $query = Device::query(); + + if(isset($type)){ + $query->whereType($type); + } + + if(isset($platform)){ + $query->wherePlatform($platform); + } + + if(isset($name)){ + $query->where('name', 'like', '%'.$name.'%'); + } + + if(isset($status)){ + $query->whereStatus($status); + } + + $view['deviceList'] = $query->paginate(20)->appends($request->except('page')); + + return Response::view('admin.subscribe.deviceList', $view); + } + + // 设置用户的订阅的状态 + public function setSubscribeStatus(Request $request) + { + $id = $request->input('id'); + $status = $request->input('status', 0); + + if(empty($id)){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => '操作异常']); + } + + if($status){ + UserSubscribe::query()->whereId($id)->update(['status' => 1, 'ban_time' => 0, 'ban_desc' => '']); + }else{ + UserSubscribe::query()->whereId($id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '后台手动封禁']); + } + + return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); + } + + // 设置设备是否允许订阅的状态 + public function setDeviceStatus(Request $request) + { + $id = $request->input('id'); + $status = $request->input('status', 0); + + if(empty($id)){ + return Response::json(['status' => 'fail', 'data' => '', 'message' => '操作异常']); + } + + Device::query()->whereId($id)->update(['status' => $status]); + + return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); + } +} diff --git a/app/Http/Controllers/TicketController.php b/app/Http/Controllers/Admin/TicketController.php similarity index 93% rename from app/Http/Controllers/TicketController.php rename to app/Http/Controllers/Admin/TicketController.php index 4486023b..755bc317 100644 --- a/app/Http/Controllers/TicketController.php +++ b/app/Http/Controllers/Admin/TicketController.php @@ -1,9 +1,10 @@ orderBy('id', 'desc')->paginate(10)->appends($request->except('page')); - return Response::view('ticket.ticketList', $view); + return Response::view('admin.ticket.ticketList', $view); } // 回复工单 @@ -97,7 +98,7 @@ class TicketController extends Controller $view['ticket'] = Ticket::query()->whereId($id)->with('user')->first(); $view['replyList'] = TicketReply::query()->whereTicketId($id)->with('user')->orderBy('id', 'asc')->get(); - return Response::view('ticket.replyTicket', $view); + return Response::view('admin.ticket.replyTicket', $view); } } diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 145598c5..890d5bfb 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -49,7 +49,6 @@ use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use Redirect; use Response; use Session; -use stdClass; /** * 管理员控制器 @@ -217,7 +216,7 @@ class AdminController extends Controller $view['userList'] = $userList; - return Response::view('admin.userList', $view); + return Response::view('admin.user.userList', $view); } // 添加账号 @@ -293,7 +292,7 @@ class AdminController extends Controller $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); $view['initial_labels'] = explode(",", self::$systemConfig['initial_labels_for_user']); - return Response::view('admin.addUser', $view); + return Response::view('admin.user.addUser', $view); } } @@ -345,7 +344,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '批量生成账号成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); return Response::json(['status' => 'fail', 'data' => '', 'message' => '批量生成账号失败:'.$e->getMessage()]); @@ -461,7 +460,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '编辑成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::error('编辑用户信息异常:'.$e->getMessage()); @@ -490,7 +489,7 @@ class AdminController extends Controller $view['level_list'] = Helpers::levelList(); $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); - return Response::view('admin.editUser', $view); + return Response::view('admin.user.editUser', $view); } } @@ -516,7 +515,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); - } catch(Exception $e){ + }catch(Exception $e){ Log::error($e); DB::rollBack(); @@ -529,7 +528,7 @@ class AdminController extends Controller { if($request->isMethod('POST')){ $id = $request->input('id'); - $node = SsNode::query()->whereKey($id)->first(); + $node = SsNode::query()->whereId($id)->first(); // 使用DDNS的node先通过gethostbyname获取ipv4地址 if($node->is_ddns){ $ip = gethostbyname($node->server); @@ -572,7 +571,7 @@ class AdminController extends Controller $view['nodeList'] = $nodeList; } - return Response::view('admin.nodeList', $view); + return Response::view('admin.node.nodeList', $view); } // 添加节点 @@ -668,7 +667,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::error('添加节点信息异常:'.$e->getMessage()); @@ -683,7 +682,7 @@ class AdminController extends Controller $view['country_list'] = Country::query()->orderBy('code', 'asc')->get(); $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); - return Response::view('admin.addNode', $view); + return Response::view('admin.group.addNode', $view); } } @@ -781,7 +780,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '编辑成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::error('编辑节点信息异常:'.$e->getMessage()); @@ -806,7 +805,7 @@ class AdminController extends Controller $view['country_list'] = Country::query()->orderBy('code', 'asc')->get(); $view['label_list'] = Label::query()->orderBy('sort', 'desc')->orderBy('id', 'asc')->get(); - return Response::view('admin.editNode', $view); + return Response::view('admin.node.editNode', $view); } } @@ -854,7 +853,7 @@ class AdminController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::error('删除节点信息异常:'.$e->getMessage()); @@ -919,7 +918,7 @@ class AdminController extends Controller $view['monthDays'] = "'".implode("','", $monthDays)."'"; $view['dayHours'] = "'".implode("','", $dayHours)."'"; - return Response::view('admin.nodeMonitor', $view); + return Response::view('admin.node.nodeMonitor', $view); } // Ping节点延迟 @@ -956,7 +955,7 @@ class AdminController extends Controller $view['nodeList'] = SsNode::query()->orderBy('id', 'asc')->get(); $view['pingLogs'] = $query->orderBy('id', 'asc')->paginate(15)->appends($request->except('page')); - return Response::view('admin.nodePingLog', $view); + return Response::view('admin.logs.nodePingLog', $view); } @@ -965,7 +964,7 @@ class AdminController extends Controller { $view['list'] = Article::query()->orderBy('sort', 'desc')->paginate(15)->appends($request->except('page')); - return Response::view('admin.articleList', $view); + return Response::view('admin.article.articleList', $view); } // 添加文章 @@ -1016,7 +1015,7 @@ class AdminController extends Controller return Redirect::to('admin/articleList'); }else{ - return Response::view('admin.addArticle'); + return Response::view('admin.article.addArticle'); } } @@ -1060,7 +1059,7 @@ class AdminController extends Controller $data['logo'] = $logo; } - $ret = Article::query()->where('id', $id)->update($data); + $ret = Article::query()->whereId('id', $id)->update($data); if($ret){ Session::flash('successMsg', '编辑成功'); }else{ @@ -1069,9 +1068,9 @@ class AdminController extends Controller return Redirect::to('admin/editArticle?id='.$id); }else{ - $view['article'] = Article::query()->where('id', $id)->first(); + $view['article'] = Article::query()->whereId($id)->first(); - return Response::view('admin.editArticle', $view); + return Response::view('admin.article.editArticle', $view); } } @@ -1080,7 +1079,7 @@ class AdminController extends Controller { $id = $request->input('id'); - $ret = Article::query()->where('id', $id)->delete(); + $ret = Article::query()->whereId($id)->delete(); if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); }else{ @@ -1100,7 +1099,7 @@ class AdminController extends Controller } $view['levelMap'] = $levelMap; - return Response::view('admin.groupList', $view); + return Response::view('admin.group.groupList', $view); } // 添加节点分组 @@ -1116,7 +1115,7 @@ class AdminController extends Controller }else{ $view['levelList'] = Helpers::levelList(); - return Response::view('admin.addGroup', $view); + return Response::view('admin.group.addGroup', $view); } } @@ -1129,17 +1128,17 @@ class AdminController extends Controller $data = ['name' => $name, 'level' => $level]; - $ret = SsGroup::query()->where('id', $id)->update($data); + $ret = SsGroup::query()->whereId($id)->update($data); if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '编辑成功']); }else{ return Response::json(['status' => 'fail', 'data' => '', 'message' => '编辑失败']); } }else{ - $view['group'] = SsGroup::query()->where('id', $id)->first(); + $view['group'] = SsGroup::query()->whereId($id)->first(); $view['levelList'] = Helpers::levelList(); - return Response::view('admin.editGroup', $view); + return Response::view('admin.group.editGroup', $view); } } @@ -1149,12 +1148,12 @@ class AdminController extends Controller $id = $request->input('id'); // 检查是否该分组下是否有节点 - $ssGroupNodeCount = SsGroupNode::query()->where('group_id', $id)->count(); + $ssGroupNodeCount = SsGroupNode::query()->whereGroupId($id)->count(); if($ssGroupNodeCount){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '删除失败:该分组下有节点关联,请先解除关联']); } - $ret = SsGroup::query()->where('id', $id)->delete(); + $ret = SsGroup::query()->whereId($id)->delete(); if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); }else{ @@ -1176,12 +1175,12 @@ class AdminController extends Controller if(isset($port)){ $query->whereHas('user', function($q) use ($port){ - $q->where('port', $port); + $q->wherePort($port); }); } if(isset($user_id)){ - $query->where('user_id', $user_id); + $query->whereUserId($user_id); } if(isset($email)){ @@ -1191,7 +1190,7 @@ class AdminController extends Controller } if(isset($nodeId)){ - $query->where('node_id', $nodeId); + $query->whereNodeId($nodeId); } if(isset($startTime)){ @@ -1215,7 +1214,7 @@ class AdminController extends Controller $view['list'] = $list; $view['nodeList'] = SsNode::query()->whereStatus(1)->orderBy('sort', 'desc')->orderBy('id', 'desc')->get(); - return Response::view('admin.trafficLog', $view); + return Response::view('admin.logs.trafficLog', $view); } // SS(R)链接反解析 @@ -1393,7 +1392,7 @@ class AdminController extends Controller } DB::commit(); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Session::flash('errorMsg', '出错了,可能是导入的配置中有端口已经存在了'); @@ -1416,7 +1415,7 @@ class AdminController extends Controller return Redirect::to('admin/userList'); } - $user = User::query()->where('id', $id)->first(); + $user = User::query()->whereId($id)->first(); if(empty($user)){ return Redirect::to('admin/userList'); } @@ -1425,7 +1424,7 @@ class AdminController extends Controller $node_id = $request->input('id'); $infoType = $request->input('type'); - $node = SsNode::query()->whereKey($node_id)->first(); + $node = SsNode::query()->whereId($node_id)->first(); $proxyType = $node->type == 1? ($node->compatible? 'SS' : 'SSR') : 'V2Ray'; $data = $this->getNodeInfo($id, $node->id, $infoType != 'text'? 0 : 1); @@ -1511,7 +1510,7 @@ EOF; return Redirect::to('admin/userList'); } - $user = User::query()->where('id', $id)->first(); + $user = User::query()->whereId($id)->first(); if(empty($user)){ return Redirect::to('admin/userList'); } @@ -1520,7 +1519,7 @@ EOF; $dailyData = []; $hourlyData = []; // 节点一个月内的流量 - $userTrafficDaily = UserTrafficDaily::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', date('Y-m', time()))->orderBy('created_at', 'asc')->pluck('total')->toArray(); + $userTrafficDaily = UserTrafficDaily::query()->whereUserId($user->id)->whereNodeId(0)->where('created_at', '>=', date('Y-m', time()))->orderBy('created_at', 'asc')->pluck('total')->toArray(); $dailyTotal = date('d')-1; // 今天不算,减一 $dailyCount = count($userTrafficDaily); @@ -1559,7 +1558,7 @@ EOF; $view['dayHours'] = "'".implode("','", $dayHours)."'"; $view['email'] = $user->email; - return Response::view('admin.userMonitor', $view); + return Response::view('admin.logs.userMonitor', $view); } // 生成端口 @@ -1582,7 +1581,7 @@ EOF; } // 校验是否已存在 - $config = SsConfig::type($type)->where('name', $name)->first(); + $config = SsConfig::type($type)->whereName($name)->first(); if($config){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '配置已经存在,请勿重复添加']); } @@ -1611,7 +1610,7 @@ EOF; { $id = $request->input('id'); - $ret = SsConfig::query()->where('id', $id)->delete(); + $ret = SsConfig::query()->whereId($id)->delete(); if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); }else{ @@ -1628,7 +1627,7 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => '非法请求']); } - $config = SsConfig::query()->where('id', $id)->first(); + $config = SsConfig::query()->whereId($id)->first(); if(!$config){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '配置不存在']); } @@ -1637,7 +1636,7 @@ EOF; SsConfig::default()->type($config->type)->update(['is_default' => 0]); // 将该ID对应记录值置为默认值 - SsConfig::query()->where('id', $id)->update(['is_default' => 1]); + SsConfig::query()->whereId($id)->update(['is_default' => 1]); return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); } @@ -1666,7 +1665,7 @@ EOF; $move = $file->move(base_path().'/public/upload/image/', $logoName); $websiteHomeLogo = $move? '/upload/image/'.$logoName : ''; - Config::query()->where('name', 'website_home_logo')->update(['value' => $websiteHomeLogo]); + Config::query()->whereName('website_home_logo')->update(['value' => $websiteHomeLogo]); } // 站内LOGO @@ -1685,18 +1684,18 @@ EOF; $move = $file->move(base_path().'/public/upload/image/', $logoName); $websiteLogo = $move? '/upload/image/'.$logoName : ''; - Config::query()->where('name', 'website_logo')->update(['value' => $websiteLogo]); + Config::query()->whereName('website_logo')->update(['value' => $websiteLogo]); } - Config::query()->where('name', 'website_analytics')->update(['value' => $websiteAnalytics]); - Config::query()->where('name', 'website_customer_service')->update(['value' => $websiteCustomerService]); + Config::query()->whereName('website_analytics')->update(['value' => $websiteAnalytics]); + Config::query()->whereName('website_customer_service')->update(['value' => $websiteCustomerService]); Session::flash('successMsg', '更新成功'); DB::commit(); return Redirect::back(); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Session::flash('errorMsg', '更新失败'); @@ -1756,7 +1755,7 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => '等级名称不能为空']); } - $exists = Level::query()->where('level', $level)->first(); + $exists = Level::query()->whereLevel($level)->first(); if($exists){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级已存在,请勿重复添加']); } @@ -1792,24 +1791,24 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => '等级名称不能为空']); } - $le = Level::query()->where('id', $id)->first(); + $le = Level::query()->whereId($id)->first(); if(!$le){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '等级不存在']); } // 校验该等级下是否存在关联分组 - $ssGroupCount = SsGroup::query()->where('level', $le->level)->count(); + $ssGroupCount = SsGroup::query()->whereLevel($le->level)->count(); if($ssGroupCount){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级下存在关联分组,请先取消关联']); } // 校验该等级下是否存在关联账号 - $userCount = User::query()->where('level', $le->level)->count(); + $userCount = User::query()->whereLevel($le->level)->count(); if($userCount){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级下存在关联账号,请先取消关联']); } - Level::query()->where('id', $id)->update(['level' => $level, 'level_name' => $level_name]); + Level::query()->whereId($id)->update(['level' => $level, 'level_name' => $level_name]); return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); } @@ -1823,26 +1822,26 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => 'ID不能为空']); } - $level = Level::query()->where('id', $id)->first(); + $level = Level::query()->whereId($id)->first(); if(empty($level)){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '等级不存在']); } // 校验该等级下是否存在关联分组 - $existGroups = SsGroup::query()->where('level', $level->level)->get(); + $existGroups = SsGroup::query()->whereLevel($level->level)->get(); if(!$existGroups->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级下存在关联分组,请先取消关联']); } // 校验该等级下是否存在关联账号 - $existUsers = User::query()->where('level', $level->level)->get(); + $existUsers = User::query()->whereLevel($level->level)->get(); if(!$existUsers->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该等级下存在关联账号,请先取消关联']); } $ret = FALSE; try{ - $ret = Level::query()->where('id', $id)->delete(); - } catch(Exception $e){ + $ret = Level::query()->whereId($id)->delete(); + }catch(Exception $e){ Log::error('删除等级时报错:'.$e); } if($ret){ @@ -1866,7 +1865,7 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => '国家/地区代码不能为空']); } - $exists = Country::query()->where('name', $name)->first(); + $exists = Country::query()->whereName($name)->first(); if($exists){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该国家/地区名称已存在,请勿重复添加']); } @@ -1902,18 +1901,18 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => '国家/地区代码不能为空']); } - $country = Country::query()->where('id', $id)->first(); + $country = Country::query()->whereId($id)->first(); if(empty($country)){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '国家/地区不存在']); } // 校验该国家/地区下是否存在关联节点 - $existNode = SsNode::query()->where('country_code', $country->code)->get(); + $existNode = SsNode::query()->whereCountryCode($country->code)->get(); if(!$existNode->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该国家/地区下存在关联节点,请先取消关联']); } - $ret = Country::query()->where('id', $id)->update(['name' => $name, 'code' => $code]); + $ret = Country::query()->whereId($id)->update(['name' => $name, 'code' => $code]); if($ret){ return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); }else{ @@ -1930,20 +1929,20 @@ EOF; return Response::json(['status' => 'fail', 'data' => '', 'message' => 'ID不能为空']); } - $country = Country::query()->where('id', $id)->first(); + $country = Country::query()->whereId($id)->first(); if(empty($country)){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '国家/地区不存在']); } // 校验该国家/地区下是否存在关联节点 - $existNode = SsNode::query()->where('country_code', $country->code)->get(); + $existNode = SsNode::query()->whereCountryCode($country->code)->get(); if(!$existNode->isEmpty()){ return Response::json(['status' => 'fail', 'data' => '', 'message' => '该国家/地区下存在关联节点,请先取消关联']); } $ret = FALSE; try{ - $ret = Country::query()->where('id', $id)->delete(); - } catch(Exception $e){ + $ret = Country::query()->whereId($id)->delete(); + }catch(Exception $e){ Log::error('删除国家/地区时报错:'.$e); } if($ret){ @@ -1978,13 +1977,13 @@ EOF; } // 如果开启用户邮件重置密码,则先设置网站名称和网址 - if(in_array($name, ['is_reset_password', 'is_activate_account', 'expire_warning','traffic_warning']) && $value != '0'){ - $config = Config::query()->where('name', 'website_name')->first(); + if(in_array($name, ['is_reset_password', 'is_activate_account', 'expire_warning', 'traffic_warning']) && $value != '0'){ + $config = Config::query()->whereName('website_name')->first(); if($config->value == ''){ return Response::json(['status' => 'fail', 'message' => '设置失败:启用该配置需要先设置【网站名称】']); } - $config = Config::query()->where('name', 'website_url')->first(); + $config = Config::query()->whereName('website_url')->first(); if($config->value == ''){ return Response::json(['status' => 'fail', 'message' => '设置失败:启用该配置需要先设置【网站地址】']); } @@ -2034,7 +2033,7 @@ EOF; } // 更新配置 - Config::query()->where('name', $name)->update(['value' => $value]); + Config::query()->whereName($name)->update(['value' => $value]); return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); } @@ -2119,51 +2118,11 @@ EOF; header('Cache-Control: max-age=0'); $writer = new Xlsx($spreadsheet); $writer->save('php://output'); - } catch(\PhpOffice\PhpSpreadsheet\Exception $e){ + }catch(\PhpOffice\PhpSpreadsheet\Exception $e){ Log::error('导出优惠券时报错'.$e); } } - // 提现申请列表 - public function applyList(Request $request) - { - $email = $request->input('email'); - $status = $request->input('status'); - - $query = ReferralApply::with('user'); - if(isset($email)){ - $query->whereHas('user', function($q) use ($email){ - $q->where('email', 'like', '%'.$email.'%'); - }); - } - - if($status){ - $query->whereStatus($status); - } - - $view['applyList'] = $query->orderBy('id', 'desc')->paginate(15)->appends($request->except('page')); - - return Response::view('admin.applyList', $view); - } - - // 提现申请详情 - public function applyDetail(Request $request) - { - $id = $request->input('id'); - - $list = new stdClass(); - $apply = ReferralApply::query()->with(['user'])->where('id', $id)->first(); - if($apply && $apply->link_logs){ - $link_logs = explode(',', $apply->link_logs); - $list = ReferralLog::query()->with(['user', 'order.goods'])->whereIn('id', $link_logs)->paginate(15)->appends($request->except('page')); - } - - $view['info'] = $apply; - $view['list'] = $list; - - return Response::view('admin.applyDetail', $view); - } - // 订单列表 public function orderList(Request $request) { @@ -2192,16 +2151,16 @@ EOF; if($is_coupon){ $query->where('coupon_id', '<>', 0); }else{ - $query->where('coupon_id', 0); + $query->whereCouponId(0); } } if(isset($is_expire)){ - $query->where('is_expire', $is_expire); + $query->whereIsExpire($is_expire); } if(isset($pay_way)){ - $query->where('pay_way', $pay_way); + $query->wherePayWay($pay_way); } if(isset($status)){ @@ -2214,7 +2173,7 @@ EOF; } if(isset($order_id)){ - $query->where('oid', $order_id); + $query->whereOid($order_id); } if($sort){ @@ -2225,28 +2184,7 @@ EOF; $view['orderList'] = $query->paginate(15)->appends($request->except('page')); - return Response::view('admin.orderList', $view); - } - - // 设置提现申请状态 - public function setApplyStatus(Request $request) - { - $id = $request->input('id'); - $status = $request->input('status'); - - $ret = ReferralApply::query()->where('id', $id)->update(['status' => $status]); - if($ret){ - // 审核申请的时候将关联的 - $referralApply = ReferralApply::query()->where('id', $id)->first(); - $log_ids = explode(',', $referralApply->link_logs); - if($referralApply && $status == 1){ - ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 1]); - }elseif($referralApply && $status == 2){ - ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 2]); - } - } - - return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); + return Response::view('admin.logs.orderList', $view); } // 重置用户流量 @@ -2254,7 +2192,7 @@ EOF; { $id = $request->input('id'); - User::query()->where('id', $id)->update(['u' => 0, 'd' => 0]); + User::query()->whereId($id)->update(['u' => 0, 'd' => 0]); return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); } @@ -2272,7 +2210,7 @@ EOF; DB::beginTransaction(); try{ - $user = User::query()->where('id', $userId)->first(); + $user = User::query()->whereId($userId)->first(); // 写入余额变动日志 Helpers::addUserBalanceLog($userId, 0, $user->balance, $user->balance+$amount, $amount, '后台手动充值'); @@ -2287,7 +2225,7 @@ EOF; DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '充值成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); return Response::json(['status' => 'fail', 'data' => '', 'message' => '充值失败:'.$e->getMessage()]); @@ -2312,7 +2250,7 @@ EOF; $view['list'] = $query->paginate(15)->appends($request->except('page')); - return Response::view('admin.userBalanceLogList', $view); + return Response::view('admin.logs.userBalanceLogList', $view); } // 用户封禁记录 @@ -2330,7 +2268,7 @@ EOF; $view['list'] = $query->paginate(15)->appends($request->except('page')); - return Response::view('admin.userBanLogList', $view); + return Response::view('admin.logs.userBanLogList', $view); } // 用户流量变动记录 @@ -2348,37 +2286,7 @@ EOF; $view['list'] = $query->orderBy('id', 'desc')->paginate(15)->appends($request->except('page')); - return Response::view('admin.userTrafficLogList', $view); - } - - // 用户返利流水记录 - public function userRebateList(Request $request) - { - $email = $request->input('email'); - $ref_email = $request->input('ref_email'); - $status = $request->input('status'); - - $query = ReferralLog::query()->with(['user', 'order'])->orderBy('status', 'asc')->orderBy('id', 'desc'); - - if(isset($email)){ - $query->whereHas('user', function($q) use ($email){ - $q->where('email', 'like', '%'.$email.'%'); - }); - } - - if(isset($ref_email)){ - $query->whereHas('ref_user', function($q) use ($ref_email){ - $q->where('email', 'like', '%'.$ref_email.'%'); - }); - } - - if(isset($status)){ - $query->whereStatus($status); - } - - $view['list'] = $query->paginate(15)->appends($request->except('page')); - - return Response::view('admin.userRebateList', $view); + return Response::view('admin.logs.userTrafficLogList', $view); } // 用户在线IP记录 @@ -2404,20 +2312,20 @@ EOF; } if(isset($port)){ - $query->where('port', $port); + $query->wherePort($port); } $userList = $query->paginate(15)->appends($request->except('page')); if(!$userList->isEmpty()){ foreach($userList as $user){ // 最近5条在线IP记录,如果后端设置为60秒上报一次,则为10分钟内的在线IP - $user->onlineIPList = SsNodeIp::query()->with(['node'])->where('type', 'tcp')->where('port', $user->port)->where('created_at', '>=', strtotime("-10 minutes"))->orderBy('id', 'desc')->limit(5)->get(); + $user->onlineIPList = SsNodeIp::query()->with(['node'])->whereType('tcp')->wherePort($user->port)->where('created_at', '>=', strtotime("-10 minutes"))->orderBy('id', 'desc')->limit(5)->get(); } } $view['userList'] = $userList; - return Response::view('admin.userOnlineIPList', $view); + return Response::view('admin.logs.userOnlineIPList', $view); } // 转换成某个用户的身份 @@ -2442,13 +2350,13 @@ EOF; { $labelList = Label::query()->paginate(15)->appends($request->except('page')); foreach($labelList as $label){ - $label->userCount = UserLabel::query()->where('label_id', $label->id)->groupBy('label_id')->count(); - $label->nodeCount = SsNodeLabel::query()->where('label_id', $label->id)->groupBy('label_id')->count(); + $label->userCount = UserLabel::query()->whereLabelId($label->id)->groupBy('label_id')->count(); + $label->nodeCount = SsNodeLabel::query()->whereLabelId($label->id)->groupBy('label_id')->count(); } $view['labelList'] = $labelList; - return Response::view('admin.labelList', $view); + return Response::view('admin.label.labelList', $view); } // 添加标签 @@ -2465,7 +2373,7 @@ EOF; return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']); }else{ - return Response::view('admin.addLabel'); + return Response::view('admin.label.addLabel'); } } @@ -2477,14 +2385,14 @@ EOF; $name = $request->input('name'); $sort = $request->input('sort'); - Label::query()->where('id', $id)->update(['name' => $name, 'sort' => $sort]); + Label::query()->whereId($id)->update(['name' => $name, 'sort' => $sort]); return Response::json(['status' => 'success', 'data' => '', 'message' => '添加成功']); }else{ $id = $request->input('id'); - $view['label'] = Label::query()->where('id', $id)->first(); + $view['label'] = Label::query()->whereId($id)->first(); - return Response::view('admin.editLabel', $view); + return Response::view('admin.label.editLabel', $view); } } @@ -2495,14 +2403,14 @@ EOF; DB::beginTransaction(); try{ - Label::query()->where('id', $id)->delete(); - UserLabel::query()->where('label_id', $id)->delete(); // 删除用户关联 - SsNodeLabel::query()->where('label_id', $id)->delete(); // 删除节点关联 + Label::query()->whereId($id)->delete(); + UserLabel::query()->whereLabelId($id)->delete(); // 删除用户关联 + SsNodeLabel::query()->whereLabelId($id)->delete(); // 删除节点关联 DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '删除成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); return Response::json(['status' => 'fail', 'data' => '', 'message' => '删除失败:'.$e->getMessage()]); @@ -2522,12 +2430,12 @@ EOF; } if(isset($type)){ - $query->where('type', $type); + $query->whereType($type); } $view['list'] = $query->orderBy('id', 'desc')->paginate(15)->appends($request->except('page')); - return Response::view('admin.notificationLog', $view); + return Response::view('admin.logs.notificationLog', $view); } // 在线IP监控(实时) @@ -2539,10 +2447,10 @@ EOF; $nodeId = $request->input('nodeId'); $userId = $request->input('id'); - $query = SsNodeIp::query()->with(['node', 'user'])->where('type', 'tcp')->where('created_at', '>=', strtotime("-120 seconds")); + $query = SsNodeIp::query()->with(['node', 'user'])->whereType('tcp')->where('created_at', '>=', strtotime("-120 seconds")); if(isset($ip)){ - $query->where('ip', $ip); + $query->whereIp($ip); } if(isset($email)){ @@ -2553,19 +2461,19 @@ EOF; if(isset($port)){ $query->whereHas('user', function($q) use ($port){ - $q->where('port', $port); + $q->wherePort($port); }); } if(isset($nodeId)){ $query->whereHas('node', function($q) use ($nodeId){ - $q->where('id', $nodeId); + $q->whereId($nodeId); }); } if(isset($userId)){ $query->whereHas('user', function($q) use ($userId){ - $q->where('id', $userId); + $q->whereId($userId); }); } @@ -2590,6 +2498,6 @@ EOF; $view['list'] = $list->paginate(20)->appends($request->except('page')); $view['nodeList'] = SsNode::query()->whereStatus(1)->orderBy('sort', 'desc')->orderBy('id', 'desc')->get(); - return Response::view('admin.onlineIPMonitor', $view); + return Response::view('admin.logs.onlineIPMonitor', $view); } } diff --git a/app/Http/Controllers/Api/LoginController.php b/app/Http/Controllers/Api/LoginController.php index aad88149..fa6459fc 100644 --- a/app/Http/Controllers/Api/LoginController.php +++ b/app/Http/Controllers/Api/LoginController.php @@ -130,7 +130,7 @@ class LoginController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => $data, 'message' => '登录成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); return Response::json(['status' => 'success', 'data' => [], 'message' => '登录失败']); diff --git a/app/Http/Controllers/Api/PingController.php b/app/Http/Controllers/Api/PingController.php index 34eb0522..c9f17932 100644 --- a/app/Http/Controllers/Api/PingController.php +++ b/app/Http/Controllers/Api/PingController.php @@ -73,7 +73,7 @@ class PingController extends Controller fclose($fp); return response()->json(['status' => $ret, 'message' => $message]); - } catch(Exception $e){ + }catch(Exception $e){ Log::info($e); return response()->json(['status' => 0, 'message' => 'port close']); diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index a4f4e90f..5873bd2f 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -110,6 +110,51 @@ class AuthController extends Controller } } + // 校验验证码 + private function check_captcha($request) + { + switch(self::$systemConfig['is_captcha']){ + case 1: // 默认图形验证码 + if(!Captcha::check($request->input('captcha'))){ + return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); + } + break; + case 2: // Geetest + $result = $this->validate($request, [ + 'geetest_challenge' => 'required|geetest' + ], [ + 'geetest' => trans('auth.captcha_fail') + ]); + + if(!$result){ + return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); + } + break; + case 3: // Google reCAPTCHA + $result = $this->validate($request, [ + 'g-recaptcha-response' => 'required|NoCaptcha' + ]); + + if(!$result){ + return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); + } + break; + case 4: // hCaptcha + $result = $this->validate($request, [ + 'h-captcha-response' => 'required|HCaptcha' + ]); + + if(!$result){ + return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); + } + break; + default: // 不启用验证码 + break; + } + + return 0; + } + /** * 添加用户登录日志 * @@ -158,53 +203,9 @@ class AuthController extends Controller $log->save(); } - // 校验验证码 - private function check_captcha($request) - { - switch(self::$systemConfig['is_captcha']){ - case 1: // 默认图形验证码 - if(!Captcha::check($request->input('captcha'))){ - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); - } - break; - case 2: // Geetest - $result = $this->validate($request, [ - 'geetest_challenge' => 'required|geetest' - ], [ - 'geetest' => trans('auth.captcha_fail') - ]); - - if(!$result){ - return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); - } - break; - case 3: // Google reCAPTCHA - $result = $this->validate($request, [ - 'g-recaptcha-response' => 'required|NoCaptcha' - ]); - - if(!$result){ - return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); - } - break; - case 4: // hCaptcha - $result = $this->validate($request, [ - 'h-captcha-response' => 'required|HCaptcha' - ]); - - if(!$result){ - return Redirect::back()->withInput()->withErrors(trans('auth.fail_captcha')); - } - break; - default: // 不启用验证码 - break; - } - - return 0; - } - // 退出 + public function logout() { Auth::logout(); @@ -331,7 +332,7 @@ class AuthController extends Controller return Redirect::back()->withInput()->withErrors(trans('auth.register_fail')); } // 更新昵称 - User::query()->whereKey($uid)->update(['username' => $username]); + User::query()->whereId($uid)->update(['username' => $username]); // 生成订阅码 $subscribe = new UserSubscribe(); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index 31b171bc..dc1e2511 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -7,7 +7,6 @@ use App\Http\Models\SensitiveWords; use App\Http\Models\SsGroup; use App\Http\Models\SsNode; use App\Http\Models\User; -use App\Http\Models\UserBalanceLog; use App\Http\Models\UserSubscribeLog; use Exception; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; @@ -52,7 +51,7 @@ class Controller extends BaseController while(count($lines) <= $n){ try{ fseek($fp, -$pos, SEEK_END); - } catch(Exception $e){ + }catch(Exception $e){ fseek(0); break; } @@ -68,7 +67,9 @@ class Controller extends BaseController /** * 计算文件行数 + * * @param $file + * * @return int */ public function countLine($file) @@ -127,15 +128,16 @@ class Controller extends BaseController * @param int $uid 用户ID * @param int $nodeId 节点ID * @param int $infoType 信息类型:0为链接,1为文字 + * * @return string */ function getNodeInfo($uid, $nodeId, $infoType) { - $user = User::whereKey($uid)->first(); - $node = SsNode::whereKey($nodeId)->first(); + $user = User::whereId($uid)->first(); + $node = SsNode::whereId($nodeId)->first(); $scheme = NULL; // 获取分组名称 - $group = SsGroup::query()->whereKey($node->group_id)->first(); + $group = SsGroup::query()->whereId($node->group_id)->first(); $host = $node->server? : $node->ip; if($node->type == 1){ diff --git a/app/Http/Controllers/Gateway/AbstractPayment.php b/app/Http/Controllers/Gateway/AbstractPayment.php index cd7189e5..f1d78d75 100644 --- a/app/Http/Controllers/Gateway/AbstractPayment.php +++ b/app/Http/Controllers/Gateway/AbstractPayment.php @@ -93,7 +93,7 @@ abstract class AbstractPayment }else{ // 如果买的是套餐,则先将之前购买的套餐都无效化,重置用户已用、可用流量为0 Order::query() - ->where('user_id', $user->id) + ->whereUserId($user->id) ->with(['goods']) ->whereHas('goods', function($q){ $q->where('type', '<=', 2); @@ -103,7 +103,7 @@ abstract class AbstractPayment ->where('oid', '<>', $order->oid) ->update(['expire_at' => date('Y-m-d H:i:s'), 'is_expire' => 1]); - User::query()->where('id', $order->user_id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => 0]); + User::query()->whereId($order->user_id)->update(['u' => 0, 'd' => 0, 'transfer_enable' => 0]); Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, 0, '['.$method.']用户购买新套餐,先清空流量'); $userTraffic = $goods->traffic*1048576; @@ -118,10 +118,10 @@ abstract class AbstractPayment // 写入用户标签 if($goods->label){ // 删除用户所有标签 - UserLabel::query()->where('user_id', $order->user_id)->delete(); + UserLabel::query()->whereUserId($order->user_id)->delete(); //取出 商品默认标签 & 系统默认标签 去重 - $newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->where('goods_id', $order->goods_id)->pluck('label_id')->toArray(), self::$systemConfig['initial_labels_for_user']? explode(',', self::$systemConfig['initial_labels_for_user']) : []))); + $newUserLabels = array_values(array_unique(array_merge(GoodsLabel::query()->whereGoodsId($order->goods_id)->pluck('label_id')->toArray(), self::$systemConfig['initial_labels_for_user']? explode(',', self::$systemConfig['initial_labels_for_user']) : []))); // 生成标签 foreach($newUserLabels as $Label){ @@ -132,18 +132,18 @@ abstract class AbstractPayment } } - User::query()->where('id', $order->user_id)->increment('invite_num', $goods->invite_num? : 0, ['transfer_enable' => $userTraffic, 'reset_time' => $nextResetTime, 'expire_time' => $expireTime, 'enable' => 1]); + User::query()->whereId($order->user_id)->increment('invite_num', $goods->invite_num? : 0, ['transfer_enable' => $userTraffic, 'reset_time' => $nextResetTime, 'expire_time' => $expireTime, 'enable' => 1]); Helpers::addUserTrafficModifyLog($order->user_id, $order->oid, $user->transfer_enable, $userTraffic, '['.$method.']加上用户购买的套餐流量'); } // 是否返利 if(self::$systemConfig['referral_type'] && $order->user->referral_uid){ //获取历史返利记录 - $referral = ReferralLog::where('user_id', $order->user_id)->get(); + $referral = ReferralLog::whereUserId($order->user_id)->get(); // 无记录 / 首次返利 if(!$referral && self::$systemConfig['is_invite_register']){ // 邀请注册功能开启时,返还邀请者邀请名额 - User::query()->where('id', $order->user->referral_uid)->increment('invite_num', 1); + User::query()->whereId($order->user->referral_uid)->increment('invite_num', 1); } //按照返利模式进行返利判断 if(self::$systemConfig['referral_type'] == 2 || (self::$systemConfig['referral_type'] == 1 && !$referral)){ diff --git a/app/Http/Controllers/Gateway/BitpayX.php b/app/Http/Controllers/Gateway/BitpayX.php index e38409e7..e991e147 100644 --- a/app/Http/Controllers/Gateway/BitpayX.php +++ b/app/Http/Controllers/Gateway/BitpayX.php @@ -11,32 +11,7 @@ use Response; class BitpayX extends AbstractPayment { - private $bitpayGatewayUri= 'https://api.mugglepay.com/v1/'; - - public function mprequest($data, $type = 'pay') - { - $headers = ['content-type: application/json', 'token: '.parent::$systemConfig['bitpay_secret']]; - $curl = curl_init(); - if($type === 'pay'){ - $this->bitpayGatewayUri .= 'orders'; - curl_setopt($curl, CURLOPT_URL, $this->bitpayGatewayUri); - curl_setopt($curl, CURLOPT_POST, 1); - $data_string = json_encode($data); - curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); - }elseif($type === 'query'){ - $this->bitpayGatewayUri .= 'orders/merchant_order_id/status?id='.$data['merchant_order_id']; - curl_setopt($curl, CURLOPT_URL, $this->bitpayGatewayUri); - curl_setopt($curl, CURLOPT_HTTPGET, 1); - } - curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); - curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); - curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); - $data = curl_exec($curl); - curl_close($curl); - - return $data; - } + private $bitpayGatewayUri = 'https://api.mugglepay.com/v1/'; /** * @param Request $request @@ -95,6 +70,31 @@ class BitpayX extends AbstractPayment return http_build_query($data_sign); } + public function mprequest($data, $type = 'pay') + { + $headers = ['content-type: application/json', 'token: '.parent::$systemConfig['bitpay_secret']]; + $curl = curl_init(); + if($type === 'pay'){ + $this->bitpayGatewayUri .= 'orders'; + curl_setopt($curl, CURLOPT_URL, $this->bitpayGatewayUri); + curl_setopt($curl, CURLOPT_POST, 1); + $data_string = json_encode($data); + curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); + }elseif($type === 'query'){ + $this->bitpayGatewayUri .= 'orders/merchant_order_id/status?id='.$data['merchant_order_id']; + curl_setopt($curl, CURLOPT_URL, $this->bitpayGatewayUri); + curl_setopt($curl, CURLOPT_HTTPGET, 1); + } + curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); + curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); + $data = curl_exec($curl); + curl_close($curl); + + return $data; + } + public function notify(Request $request) { $inputString = file_get_contents('php://input', 'r'); diff --git a/app/Http/Controllers/Gateway/Local.php b/app/Http/Controllers/Gateway/Local.php index 0516b9c9..a1c45ffd 100644 --- a/app/Http/Controllers/Gateway/Local.php +++ b/app/Http/Controllers/Gateway/Local.php @@ -18,7 +18,7 @@ class Local extends AbstractPayment { $amount = $request->input('amount'); $order = Order::whereOid($request->input('oid'))->first(); - $goods = Goods::query()->where('status', 1)->where('id', $request->input('goods_id'))->first(); + $goods = Goods::query()->whereStatus(1)->whereId($request->input('goods_id'))->first(); if($goods){ User::query()->whereId(Auth::user()->id)->decrement('balance', $amount*100); diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index 0d3fadff..56266140 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -3,9 +3,9 @@ namespace App\Http\Controllers; use App\Components\Helpers; -use App\Http\Controllers\Gateway\F2Fpay; use App\Http\Controllers\Gateway\BitpayX; use App\Http\Controllers\Gateway\CodePay; +use App\Http\Controllers\Gateway\F2Fpay; use App\Http\Controllers\Gateway\Local; use App\Http\Controllers\Gateway\PayJs; use App\Http\Models\Coupon; @@ -203,7 +203,7 @@ class PaymentController extends Controller $view['name'] = $payment->order->goods? $payment->order->goods->name : '余额充值'; $view['days'] = $payment->order->goods? $payment->order->goods->days : 0; - return Response::view('payment.detail', $view); + return Response::view('user.payment', $view); } // 回调日志 @@ -219,6 +219,6 @@ class PaymentController extends Controller $view['list'] = $query->orderBy('id', 'desc')->paginate(10)->appends($request->except('page')); - return Response::view('payment.callbackList', $view); + return Response::view('admin.logs.callbackList', $view); } } \ No newline at end of file diff --git a/app/Http/Controllers/User/AffiliateController.php b/app/Http/Controllers/User/AffiliateController.php new file mode 100644 index 00000000..d2d304a8 --- /dev/null +++ b/app/Http/Controllers/User/AffiliateController.php @@ -0,0 +1,82 @@ +whereStatus(2)->doesntExist() && ReferralLog::uid()->doesntExist()){ + return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 返 回']); + } + $view['referral_traffic'] = flowAutoShow(self::$systemConfig['referral_traffic']*1048576); + $view['referral_percent'] = self::$systemConfig['referral_percent']; + $view['referral_money'] = self::$systemConfig['referral_money']; + $view['totalAmount'] = ReferralLog::uid()->sum('ref_amount')/100; + $view['canAmount'] = ReferralLog::uid()->whereStatus(0)->sum('ref_amount')/100; + $view['link'] = self::$systemConfig['website_url'].'/register?aff='.Auth::user()->id; + $view['referralLogList'] = ReferralLog::uid()->with('user')->orderBy('id', 'desc')->paginate(10, ['*'], 'log_page'); + $view['referralApplyList'] = ReferralApply::uid()->with('user')->orderBy('id', 'desc')->paginate(10, ['*'], 'apply_page'); + $view['referralUserList'] = User::query()->select(['email', 'created_at'])->whereReferralUid(Auth::user()->id)->orderBy('id', 'desc')->paginate(10, ['*'], 'user_page'); + + return Response::view('user.referral', $view); + } + + // 申请提现 + public function extractMoney() + { + // 判断账户是否过期 + if(Auth::user()->expire_time < date('Y-m-d')){ + return Response::json(['status' => 'fail', 'message' => '申请失败:账号已过期,请先购买服务吧']); + } + + // 判断是否已存在申请 + $referralApply = ReferralApply::uid()->whereIn('status', [0, 1])->first(); + if($referralApply){ + return Response::json(['status' => 'fail', 'message' => '申请失败:已存在申请,请等待之前的申请处理完']); + } + + // 校验可以提现金额是否超过系统设置的阀值 + $ref_amount = ReferralLog::uid()->whereStatus(0)->sum('ref_amount'); + $ref_amount /= 100; + if($ref_amount < self::$systemConfig['referral_money']){ + return Response::json(['status' => 'fail', 'message' => '申请失败:满'.self::$systemConfig['referral_money'].'元才可以提现,继续努力吧']); + } + + // 取出本次申请关联返利日志ID + $link_logs = ''; + $referralLog = ReferralLog::uid()->whereStatus(0)->get(); + foreach($referralLog as $log){ + $link_logs .= $log->id.','; + } + $link_logs = rtrim($link_logs, ','); + + $obj = new ReferralApply(); + $obj->user_id = Auth::user()->id; + $obj->before = $ref_amount; + $obj->after = 0; + $obj->amount = $ref_amount; + $obj->link_logs = $link_logs; + $obj->status = 0; + $obj->save(); + + return Response::json(['status' => 'success', 'message' => '申请成功,请等待管理员审核']); + } +} diff --git a/app/Http/Controllers/SubscribeController.php b/app/Http/Controllers/User/SubscribeController.php similarity index 58% rename from app/Http/Controllers/SubscribeController.php rename to app/Http/Controllers/User/SubscribeController.php index 1ae586f7..8c997396 100644 --- a/app/Http/Controllers/SubscribeController.php +++ b/app/Http/Controllers/User/SubscribeController.php @@ -1,25 +1,17 @@ input('user_id'); - $email = $request->input('email'); - $status = $request->input('status'); - - $query = UserSubscribe::with(['user:id,email']); - - if(isset($user_id)){ - $query->whereUserId($user_id); - } - - if(isset($email)){ - $query->whereHas('user', function($q) use ($email){ - $q->where('email', 'like', '%'.$email.'%'); - }); - } - - if(isset($status)){ - $query->whereStatus($status); - } - - $view['subscribeList'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page')); - - return Response::view('subscribe.subscribeList', $view); - } - - //订阅记录 - public function subscribeLog(Request $request) - { - $id = $request->input('id'); - $query = UserSubscribeLog::with('user:email'); - - if(isset($id)){ - $query->whereSid($id); - } - - $view['subscribeLog'] = $query->orderBy('id', 'desc')->paginate(20)->appends($request->except('page')); - - return Response::view('subscribe.subscribeLog', $view); - } - - // 订阅设备列表 - public function deviceList(Request $request) - { - $type = $request->input('type'); - $platform = $request->input('platform'); - $name = $request->input('name'); - $status = $request->input('status'); - - $query = Device::query(); - - if(isset($type)){ - $query->whereType($type); - } - - if(isset($platform)){ - $query->wherePlatform($platform); - } - - if(isset($name)){ - $query->where('name', 'like', '%'.$name.'%'); - } - - if(isset($status)){ - $query->whereStatus($status); - } - - $view['deviceList'] = $query->paginate(20)->appends($request->except('page')); - - return Response::view('subscribe.deviceList', $view); - } - - // 设置用户的订阅的状态 - public function setSubscribeStatus(Request $request) - { - $id = $request->input('id'); - $status = $request->input('status', 0); - - if(empty($id)){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => '操作异常']); - } - - if($status){ - UserSubscribe::query()->whereId($id)->update(['status' => 1, 'ban_time' => 0, 'ban_desc' => '']); - }else{ - UserSubscribe::query()->whereId($id)->update(['status' => 0, 'ban_time' => time(), 'ban_desc' => '后台手动封禁']); - } - - return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); - } - - // 设置设备是否允许订阅的状态 - public function setDeviceStatus(Request $request) - { - $id = $request->input('id'); - $status = $request->input('status', 0); - - if(empty($id)){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => '操作异常']); - } - - Device::query()->whereId($id)->update(['status' => $status]); - - return Response::json(['status' => 'success', 'data' => '', 'message' => '操作成功']); - } - // 通过订阅码获取订阅信息 public function getSubscribeByCode(Request $request, $code) { diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 41903eb4..41bdf147 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -9,8 +9,6 @@ use App\Http\Models\Coupon; use App\Http\Models\Goods; use App\Http\Models\Invite; use App\Http\Models\Order; -use App\Http\Models\ReferralApply; -use App\Http\Models\ReferralLog; use App\Http\Models\SsNode; use App\Http\Models\SsNodeInfo; use App\Http\Models\SsNodeLabel; @@ -157,7 +155,7 @@ class UserController extends Controller $node_id = $request->input('id'); $infoType = $request->input('type'); - $node = SsNode::query()->whereKey($node_id)->first(); + $node = SsNode::query()->whereId($node_id)->first(); // 生成节点信息 $proxyType = $node->type == 1? ($node->compatible? 'SS' : 'SSR') : 'V2Ray'; $data = $this->getNodeInfo(Auth::user()->id, $node->id, $infoType != 'text'? 0 : 1); @@ -517,66 +515,6 @@ class UserController extends Controller return Response::view('user.buy', $view); } - // 推广返利 - public function referral() - { - if(Order::uid()->whereStatus(2)->whereIsExpire(0)->where('origin_amount', '>', 0)->doesntExist()){ - return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 返 回']); - } - $view['referral_traffic'] = flowAutoShow(self::$systemConfig['referral_traffic']*1048576); - $view['referral_percent'] = self::$systemConfig['referral_percent']; - $view['referral_money'] = self::$systemConfig['referral_money']; - $view['totalAmount'] = ReferralLog::uid()->sum('ref_amount')/100; - $view['canAmount'] = ReferralLog::uid()->whereStatus(0)->sum('ref_amount')/100; - $view['link'] = self::$systemConfig['website_url'].'/register?aff='.Auth::user()->id; - $view['referralLogList'] = ReferralLog::uid()->with('user')->orderBy('id', 'desc')->paginate(10, ['*'], 'log_page'); - $view['referralApplyList'] = ReferralApply::uid()->with('user')->orderBy('id', 'desc')->paginate(10, ['*'], 'apply_page'); - $view['referralUserList'] = User::query()->select(['email', 'created_at'])->whereReferralUid(Auth::user()->id)->orderBy('id', 'desc')->paginate(10, ['*'], 'user_page'); - - return Response::view('user.referral', $view); - } - - // 申请提现 - public function extractMoney() - { - // 判断账户是否过期 - if(Auth::user()->expire_time < date('Y-m-d')){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:账号已过期,请先购买服务吧']); - } - - // 判断是否已存在申请 - $referralApply = ReferralApply::uid()->whereIn('status', [0, 1])->first(); - if($referralApply){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:已存在申请,请等待之前的申请处理完']); - } - - // 校验可以提现金额是否超过系统设置的阀值 - $ref_amount = ReferralLog::uid()->whereStatus(0)->sum('ref_amount'); - $ref_amount = $ref_amount/100; - if($ref_amount < self::$systemConfig['referral_money']){ - return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:满'.self::$systemConfig['referral_money'].'元才可以提现,继续努力吧']); - } - - // 取出本次申请关联返利日志ID - $link_logs = ''; - $referralLog = ReferralLog::uid()->whereStatus(0)->get(); - foreach($referralLog as $log){ - $link_logs .= $log->id.','; - } - $link_logs = rtrim($link_logs, ','); - - $obj = new ReferralApply(); - $obj->user_id = Auth::user()->id; - $obj->before = $ref_amount; - $obj->after = 0; - $obj->amount = $ref_amount; - $obj->link_logs = $link_logs; - $obj->status = 0; - $obj->save(); - - return Response::json(['status' => 'success', 'data' => '', 'message' => '申请成功,请等待管理员审核']); - } - // 帮助中心 public function help() { @@ -615,7 +553,7 @@ class UserController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '更换成功']); - } catch(Exception $e){ + }catch(Exception $e){ DB::rollBack(); Log::info("更换订阅地址异常:".$e->getMessage()); @@ -669,7 +607,7 @@ class UserController extends Controller DB::commit(); return Response::json(['status' => 'success', 'data' => '', 'message' => '充值成功']); - } catch(Exception $e){ + }catch(Exception $e){ Log::error($e); DB::rollBack(); diff --git a/app/Http/Middleware/isAdminlogin.php b/app/Http/Middleware/isAdminlogin.php index 4971977f..716af5e5 100644 --- a/app/Http/Middleware/isAdminlogin.php +++ b/app/Http/Middleware/isAdminlogin.php @@ -13,6 +13,7 @@ class isAdminlogin * * @param Request $request * @param Closure $next + * * @return mixed */ public function handle($request, Closure $next) diff --git a/app/Http/Models/Goods.php b/app/Http/Models/Goods.php index 59ba2047..c6012b1f 100644 --- a/app/Http/Models/Goods.php +++ b/app/Http/Models/Goods.php @@ -73,6 +73,7 @@ use Illuminate\Support\Carbon; class Goods extends Model { use SoftDeletes; + protected $table = 'goods'; protected $primaryKey = 'id'; protected $dates = ['deleted_at']; diff --git a/app/Http/Models/User.php b/app/Http/Models/User.php index 46bc2ce6..f591ce46 100644 --- a/app/Http/Models/User.php +++ b/app/Http/Models/User.php @@ -115,6 +115,7 @@ use Illuminate\Support\Carbon; class User extends Authenticatable { use Notifiable; + protected $table = 'user'; protected $primaryKey = 'id'; diff --git a/app/Listeners/EventListener.php b/app/Listeners/EventListener.php index 549affab..6959c341 100644 --- a/app/Listeners/EventListener.php +++ b/app/Listeners/EventListener.php @@ -20,6 +20,7 @@ class EventListener * Handle the event. * * @param Event $event + * * @return void */ public function handle(Event $event) diff --git a/app/helpers.php b/app/helpers.php index b896bcc5..59c05ff8 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -204,7 +204,7 @@ if(!function_exists('getIPv6')){ } return $result; - } catch(Exception $e){ + }catch(Exception $e){ Log::error($e->getMessage()); return []; diff --git a/resources/views/admin/applyDetail.blade.php b/resources/views/admin/affiliate/affiliateDetail.blade.php similarity index 74% rename from resources/views/admin/applyDetail.blade.php rename to resources/views/admin/affiliate/affiliateDetail.blade.php index 2f23f9dd..d4b9c96d 100644 --- a/resources/views/admin/applyDetail.blade.php +++ b/resources/views/admin/affiliate/affiliateDetail.blade.php @@ -13,7 +13,7 @@ @elseif($info->status == 2) 已打款 @endif - 返 回 + 返 回
@@ -33,24 +33,18 @@ - @if($list->isEmpty()) + @foreach($list as $vo) - 暂无数据 + {{$vo->id}} + {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} + + {{$vo->order->goods->name}} + + ¥{{$vo->amount}} + ¥{{$vo->ref_amount}} + {{$vo->created_at}} - @else - @foreach($list as $vo) - - {{$vo->id}} - {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} - - {{$vo->order->goods->name}} - - ¥{{$vo->amount}} - ¥{{$vo->ref_amount}} - {{$vo->created_at}} - - @endforeach - @endif + @endforeach
diff --git a/resources/views/admin/applyList.blade.php b/resources/views/admin/affiliate/affiliateList.blade.php similarity index 58% rename from resources/views/admin/applyList.blade.php rename to resources/views/admin/affiliate/affiliateList.blade.php index b363e695..15d9a30f 100644 --- a/resources/views/admin/applyList.blade.php +++ b/resources/views/admin/affiliate/affiliateList.blade.php @@ -24,7 +24,7 @@
- 重 置 + 重 置
@@ -40,49 +40,43 @@ - @if($applyList->isEmpty()) + @foreach($applyList as $apply) - + + + + + + + - @else - @foreach($applyList as $apply) - - - - - - - - - - @endforeach - @endif + @endforeach
暂无数据 {{$apply->id}} {{$apply->created_at}} + @if(empty($apply->user)) + 【账号已删除】 + @else + {{$apply->user->email}} + @endif + ¥{{$apply->amount}} + @if($apply->status == -1) + 驳 回 + @elseif($apply->status == 0) + 待审核 + @elseif($apply->status == 2) + 已打款 + @else + 待打款 + @endif + {{$apply->created_at == $apply->updated_at ? '' : $apply->updated_at}} +
+ @if($apply->status == 0) + 通过 + 驳回 + @elseif($apply->status == 1) + 已打款 + @endif + +
+
{{$apply->id}} {{$apply->created_at}} - @if(empty($apply->user)) - 【账号已删除】 - @else - {{$apply->user->email}} - @endif - ¥{{$apply->amount}} - @if($apply->status == -1) - 驳 回 - @elseif($apply->status == 0) - 待审核 - @elseif($apply->status == 2) - 已打款 - @else - 待打款 - @endif - {{$apply->created_at == $apply->updated_at ? '' : $apply->updated_at}} -
- @if($apply->status == 0) - 通过 - 驳回 - @elseif($apply->status == 1) - 已打款 - @endif - -
-
@@ -120,16 +114,12 @@ // 搜索 function Search() { - window.location.href = '/admin/applyList?email=' + $("#email").val() + '&status=' + $("#status option:selected").val(); + window.location.href = '/admin/affList?email=' + $("#email").val() + '&status=' + $("#status option:selected").val(); } // 更改状态 function setStatus(id, status) { - $.post("/admin/setApplyStatus", { - _token: '{{csrf_token()}}', - id: id, - status: status - }, function (ret) { + $.post("/admin/setAffStatus", {_token: '{{csrf_token()}}', id: id, status: status}, function (ret) { if (ret.status === 'success') { swal.fire({title: ret.message, type: 'success', timer: 1000, showConfirmButton: false}) .then(() => window.location.reload()) diff --git a/resources/views/admin/userRebateList.blade.php b/resources/views/admin/affiliate/userRebateList.blade.php similarity index 72% rename from resources/views/admin/userRebateList.blade.php rename to resources/views/admin/affiliate/userRebateList.blade.php index 227cae70..d34373d7 100644 --- a/resources/views/admin/userRebateList.blade.php +++ b/resources/views/admin/affiliate/userRebateList.blade.php @@ -44,45 +44,39 @@ - @if($list->isEmpty()) + @foreach($list as $vo) - 暂无数据 + {{$vo->id}} + + @if(empty($vo->user)) + 【账号已删除】 + @else + {{$vo->user->email}} + @endif + + + @if(empty($vo->ref_user)) + 【账号已删除】 + @else + {{$vo->ref_user->email}} + @endif + + {{$vo->order_id}} + {{$vo->amount}} + {{$vo->ref_amount}} + {{$vo->created_at}} + {{$vo->updated_at}} + + @if ($vo->status == 1) + 申请中 + @elseif($vo->status == 2) + 已提现 + @else + 未提现 + @endif + - @else - @foreach($list as $vo) - - {{$vo->id}} - - @if(empty($vo->user)) - 【账号已删除】 - @else - {{$vo->user->email}} - @endif - - - @if(empty($vo->ref_user)) - 【账号已删除】 - @else - {{$vo->ref_user->email}} - @endif - - {{$vo->order_id}} - {{$vo->amount}} - {{$vo->ref_amount}} - {{$vo->created_at}} - {{$vo->updated_at}} - - @if ($vo->status == 1) - 申请中 - @elseif($vo->status == 2) - 已提现 - @else - 未提现 - @endif - - - @endforeach - @endif + @endforeach diff --git a/resources/views/admin/addArticle.blade.php b/resources/views/admin/article/addArticle.blade.php similarity index 100% rename from resources/views/admin/addArticle.blade.php rename to resources/views/admin/article/addArticle.blade.php diff --git a/resources/views/admin/articleList.blade.php b/resources/views/admin/article/articleList.blade.php similarity index 70% rename from resources/views/admin/articleList.blade.php rename to resources/views/admin/article/articleList.blade.php index c8f6bb6b..3f0377dc 100644 --- a/resources/views/admin/articleList.blade.php +++ b/resources/views/admin/article/articleList.blade.php @@ -24,39 +24,33 @@ - @if($list->isEmpty()) + @foreach($list as $vo) - 暂无数据 + {{$vo->id}} + @if ($vo->type == '1') + 文章 + @elseif ($vo->type == '2') + 公告 + @elseif ($vo->type == '3') + 购买说明 + @elseif ($vo->type == '4') + 使用教程 + @else + 未知 + @endif + + {{\Illuminate\Support\Str::limit($vo->title, 80)}} + + {{$vo->sort}} + {{$vo->created_at}} + +
+ + +
+ - @else - @foreach($list as $vo) - - {{$vo->id}} - @if ($vo->type == '1') - 文章 - @elseif ($vo->type == '2') - 公告 - @elseif ($vo->type == '3') - 购买说明 - @elseif ($vo->type == '4') - 使用教程 - @else - 未知 - @endif - - {{\Illuminate\Support\Str::limit($vo->title, 80)}} - - {{$vo->sort}} - {{$vo->created_at}} - -
- - -
- - - @endforeach - @endif + @endforeach diff --git a/resources/views/admin/editArticle.blade.php b/resources/views/admin/article/editArticle.blade.php similarity index 100% rename from resources/views/admin/editArticle.blade.php rename to resources/views/admin/article/editArticle.blade.php diff --git a/resources/views/admin/config.blade.php b/resources/views/admin/config.blade.php index ca891716..a064fd8a 100644 --- a/resources/views/admin/config.blade.php +++ b/resources/views/admin/config.blade.php @@ -40,29 +40,23 @@ - @if($method_list->isEmpty()) + @foreach($method_list as $method) - 暂无数据 + {{$method->name}} + + @if($method->is_default) + 默认 + @else +
+ + +
+ @endif + - @else - @foreach($method_list as $method) - - {{$method->name}} - - @if($method->is_default) - 默认 - @else -
- - -
- @endif - - - @endforeach - @endif + @endforeach @@ -77,29 +71,23 @@ - @if($protocol_list->isEmpty()) + @foreach($protocol_list as $protocol) - 暂无数据 + {{$protocol->name}} + + @if($protocol->is_default) + 默认 + @else +
+ + +
+ @endif + - @else - @foreach($protocol_list as $protocol) - - {{$protocol->name}} - - @if($protocol->is_default) - 默认 - @else -
- - -
- @endif - - - @endforeach - @endif + @endforeach @@ -114,27 +102,21 @@ - @if($obfs_list->isEmpty()) + @foreach($obfs_list as $obfs) - 暂无数据 + {{$obfs->name}} + + @if($obfs->is_default) + 默认 + @else + + + @endif + - @else - @foreach($obfs_list as $obfs) - - {{$obfs->name}} - - @if($obfs->is_default) - 默认 - @else - - - @endif - - - @endforeach - @endif + @endforeach @@ -150,30 +132,24 @@ - @if($level_list->isEmpty()) + @foreach($level_list as $level) - 暂无数据 + + + + + + + +
+ + +
+ - @else - @foreach($level_list as $level) - - - - - - - - -
- - -
- - - @endforeach - @endif + @endforeach @@ -190,33 +166,27 @@ - @if($country_list->isEmpty()) + @foreach($country_list as $country) - 暂无数据 + + + + + + + + + + +
+ + +
+ - @else - @foreach($country_list as $country) - - - - - - - - - - - -
- - -
- - - @endforeach - @endif + @endforeach diff --git a/resources/views/coupon/addCoupon.blade.php b/resources/views/admin/coupon/addCoupon.blade.php similarity index 100% rename from resources/views/coupon/addCoupon.blade.php rename to resources/views/admin/coupon/addCoupon.blade.php diff --git a/resources/views/coupon/couponList.blade.php b/resources/views/admin/coupon/couponList.blade.php similarity index 74% rename from resources/views/coupon/couponList.blade.php rename to resources/views/admin/coupon/couponList.blade.php index bcc23431..5b34d1d1 100644 --- a/resources/views/coupon/couponList.blade.php +++ b/resources/views/admin/coupon/couponList.blade.php @@ -54,60 +54,54 @@ - @if($couponList->isEmpty()) + @foreach($couponList as $coupon) - 暂无数据 + {{$coupon->id}} + {{$coupon->name}} + {{$coupon->sn}} + @if($coupon->logo) 优惠码logo @endif + + @if($coupon->type == '1') + 抵用券 + @elseif($coupon->type == '2') + 折扣券 + @else + 充值券 + @endif + + {{$coupon->usage == '1' ? '一次性' : '重复使用'}} + + @if($coupon->type == 2) + {{$coupon->discount}}折 + @else + {{$coupon->amount}}元 + @endif + + {{date('Y-m-d', $coupon->available_start)}} ~ {{date('Y-m-d', $coupon->available_end)}} + + @if($coupon->usage == 1) + @if($coupon->status == '1') + 已使用 + @elseif ($coupon->status == '2') + 已失效 + @else + 未使用 + @endif + @elseif ($coupon->usage == 2) + @if ($coupon->status == '2') + 已失效 + @else + 生效中 + @endif + @endif + + + @if($coupon->status != '1') + + @endif + - @else - @foreach($couponList as $coupon) - - {{$coupon->id}} - {{$coupon->name}} - {{$coupon->sn}} - @if($coupon->logo) 优惠码logo @endif - - @if($coupon->type == '1') - 抵用券 - @elseif($coupon->type == '2') - 折扣券 - @else - 充值券 - @endif - - {{$coupon->usage == '1' ? '一次性' : '重复使用'}} - - @if($coupon->type == 2) - {{$coupon->discount}}折 - @else - {{$coupon->amount}}元 - @endif - - {{date('Y-m-d', $coupon->available_start)}} ~ {{date('Y-m-d', $coupon->available_end)}} - - @if($coupon->usage == 1) - @if($coupon->status == '1') - 已使用 - @elseif ($coupon->status == '2') - 已失效 - @else - 未使用 - @endif - @elseif ($coupon->usage == 2) - @if ($coupon->status == '2') - 已失效 - @else - 生效中 - @endif - @endif - - - @if($coupon->status != '1') - - @endif - - - @endforeach - @endif + @endforeach diff --git a/resources/views/admin/addGroup.blade.php b/resources/views/admin/group/addGroup.blade.php similarity index 100% rename from resources/views/admin/addGroup.blade.php rename to resources/views/admin/group/addGroup.blade.php diff --git a/resources/views/admin/editGroup.blade.php b/resources/views/admin/group/editGroup.blade.php similarity index 100% rename from resources/views/admin/editGroup.blade.php rename to resources/views/admin/group/editGroup.blade.php diff --git a/resources/views/admin/groupList.blade.php b/resources/views/admin/group/groupList.blade.php similarity index 80% rename from resources/views/admin/groupList.blade.php rename to resources/views/admin/group/groupList.blade.php index fdb1c902..69b47587 100644 --- a/resources/views/admin/groupList.blade.php +++ b/resources/views/admin/group/groupList.blade.php @@ -22,25 +22,19 @@ - @if($groupList->isEmpty()) + @foreach($groupList as $group) - 暂无数据 + {{$group->id}} + {{$group->name}} + {{$levelMap[$group->level]}} + +
+ + +
+ - @else - @foreach($groupList as $group) - - {{$group->id}} - {{$group->name}} - {{$levelMap[$group->level]}} - -
- - -
- - - @endforeach - @endif + @endforeach diff --git a/resources/views/admin/addLabel.blade.php b/resources/views/admin/label/addLabel.blade.php similarity index 100% rename from resources/views/admin/addLabel.blade.php rename to resources/views/admin/label/addLabel.blade.php diff --git a/resources/views/admin/editLabel.blade.php b/resources/views/admin/label/editLabel.blade.php similarity index 100% rename from resources/views/admin/editLabel.blade.php rename to resources/views/admin/label/editLabel.blade.php diff --git a/resources/views/admin/labelList.blade.php b/resources/views/admin/label/labelList.blade.php similarity index 78% rename from resources/views/admin/labelList.blade.php rename to resources/views/admin/label/labelList.blade.php index 7ca24faf..6776baf3 100644 --- a/resources/views/admin/labelList.blade.php +++ b/resources/views/admin/label/labelList.blade.php @@ -26,27 +26,21 @@ - @if($labelList->isEmpty()) + @foreach($labelList as $label) - 暂无数据 + {{$label->id}} + {{$label->name}} + {{$label->userCount}} + {{$label->nodeCount}} + {{$label->sort}} + +
+ + +
+ - @else - @foreach($labelList as $label) - - {{$label->id}} - {{$label->name}} - {{$label->userCount}} - {{$label->nodeCount}} - {{$label->sort}} - -
- - -
- - - @endforeach - @endif + @endforeach diff --git a/resources/views/admin/layouts.blade.php b/resources/views/admin/layouts.blade.php index c8ac6362..38cc9db8 100644 --- a/resources/views/admin/layouts.blade.php +++ b/resources/views/admin/layouts.blade.php @@ -230,10 +230,15 @@ -