Browse Source

文件排版规划

兔姬桑 4 years ago
parent
commit
4dda989058
87 changed files with 1323 additions and 1411 deletions
  1. 1 1
      app/Components/CaptchaVerify.php
  2. 1 0
      app/Components/Helpers.php
  3. 1 1
      app/Components/Namesilo.php
  4. 2 2
      app/Components/NetworkDetection.php
  5. 9 8
      app/Components/PushNotification.php
  6. 27 21
      app/Console/Commands/AutoClearLog.php
  7. 1 1
      app/Console/Commands/AutoJob.php
  8. 1 1
      app/Console/Commands/ServiceTimer.php
  9. 3 3
      app/Console/Commands/updateUserName.php
  10. 118 0
      app/Http/Controllers/Admin/AffiliateController.php
  11. 6 5
      app/Http/Controllers/Admin/CouponController.php
  12. 6 5
      app/Http/Controllers/Admin/MarketingController.php
  13. 4 3
      app/Http/Controllers/Admin/SensitiveWordsController.php
  14. 9 8
      app/Http/Controllers/Admin/ShopController.php
  15. 136 0
      app/Http/Controllers/Admin/SubscribeController.php
  16. 5 4
      app/Http/Controllers/Admin/TicketController.php
  17. 103 195
      app/Http/Controllers/AdminController.php
  18. 1 1
      app/Http/Controllers/Api/LoginController.php
  19. 1 1
      app/Http/Controllers/Api/PingController.php
  20. 47 46
      app/Http/Controllers/AuthController.php
  21. 7 5
      app/Http/Controllers/Controller.php
  22. 7 7
      app/Http/Controllers/Gateway/AbstractPayment.php
  23. 26 26
      app/Http/Controllers/Gateway/BitpayX.php
  24. 1 1
      app/Http/Controllers/Gateway/Local.php
  25. 3 3
      app/Http/Controllers/PaymentController.php
  26. 82 0
      app/Http/Controllers/User/AffiliateController.php
  27. 2 118
      app/Http/Controllers/User/SubscribeController.php
  28. 3 65
      app/Http/Controllers/UserController.php
  29. 1 0
      app/Http/Middleware/isAdminlogin.php
  30. 1 0
      app/Http/Models/Goods.php
  31. 1 0
      app/Http/Models/User.php
  32. 1 0
      app/Listeners/EventListener.php
  33. 1 1
      app/helpers.php
  34. 11 17
      resources/views/admin/affiliate/affiliateDetail.blade.php
  35. 38 48
      resources/views/admin/affiliate/affiliateList.blade.php
  36. 31 37
      resources/views/admin/affiliate/userRebateList.blade.php
  37. 0 0
      resources/views/admin/article/addArticle.blade.php
  38. 25 31
      resources/views/admin/article/articleList.blade.php
  39. 0 0
      resources/views/admin/article/editArticle.blade.php
  40. 78 108
      resources/views/admin/config.blade.php
  41. 0 0
      resources/views/admin/coupon/addCoupon.blade.php
  42. 43 49
      resources/views/admin/coupon/couponList.blade.php
  43. 0 0
      resources/views/admin/group/addGroup.blade.php
  44. 0 0
      resources/views/admin/group/editGroup.blade.php
  45. 11 17
      resources/views/admin/group/groupList.blade.php
  46. 0 0
      resources/views/admin/label/addLabel.blade.php
  47. 0 0
      resources/views/admin/label/editLabel.blade.php
  48. 13 19
      resources/views/admin/label/labelList.blade.php
  49. 13 3
      resources/views/admin/layouts.blade.php
  50. 11 17
      resources/views/admin/logs/callbackList.blade.php
  51. 8 14
      resources/views/admin/logs/nodePingLog.blade.php
  52. 19 25
      resources/views/admin/logs/notificationLog.blade.php
  53. 18 24
      resources/views/admin/logs/onlineIPMonitor.blade.php
  54. 31 37
      resources/views/admin/logs/orderList.blade.php
  55. 16 22
      resources/views/admin/logs/trafficLog.blade.php
  56. 16 22
      resources/views/admin/logs/userBalanceLogList.blade.php
  57. 10 16
      resources/views/admin/logs/userBanLogList.blade.php
  58. 0 0
      resources/views/admin/logs/userMonitor.blade.php
  59. 46 52
      resources/views/admin/logs/userOnlineIPList.blade.php
  60. 22 28
      resources/views/admin/logs/userTrafficLogList.blade.php
  61. 8 14
      resources/views/admin/marketing/emailList.blade.php
  62. 8 14
      resources/views/admin/marketing/pushList.blade.php
  63. 0 0
      resources/views/admin/node/addNode.blade.php
  64. 0 0
      resources/views/admin/node/editNode.blade.php
  65. 2 6
      resources/views/admin/node/nodeList.blade.php
  66. 0 0
      resources/views/admin/node/nodeMonitor.blade.php
  67. 0 0
      resources/views/admin/sensitiveWords/addSensitiveWords.blade.php
  68. 10 16
      resources/views/admin/sensitiveWords/sensitiveWordsList.blade.php
  69. 0 0
      resources/views/admin/shop/addGoods.blade.php
  70. 0 0
      resources/views/admin/shop/editGoods.blade.php
  71. 44 50
      resources/views/admin/shop/goodsList.blade.php
  72. 15 21
      resources/views/admin/subscribe/deviceList.blade.php
  73. 25 31
      resources/views/admin/subscribe/subscribeList.blade.php
  74. 7 13
      resources/views/admin/subscribe/subscribeLog.blade.php
  75. 0 0
      resources/views/admin/ticket/addTicket.blade.php
  76. 0 0
      resources/views/admin/ticket/replyTicket.blade.php
  77. 17 23
      resources/views/admin/ticket/ticketList.blade.php
  78. 0 0
      resources/views/admin/user/addUser.blade.php
  79. 0 0
      resources/views/admin/user/editUser.blade.php
  80. 49 55
      resources/views/admin/user/userList.blade.php
  81. 0 0
      resources/views/auth/docs/aup.blade.php
  82. 0 0
      resources/views/auth/docs/tos.blade.php
  83. 2 2
      resources/views/auth/register.blade.php
  84. 2 2
      resources/views/user/layouts.blade.php
  85. 1 1
      resources/views/user/payment.blade.php
  86. 5 5
      resources/views/user/services.blade.php
  87. 50 40
      routes/web.php

+ 1 - 1
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()

+ 1 - 0
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)

+ 1 - 1
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());
 

+ 2 - 2
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;

+ 9 - 8
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;
 	}
 }

+ 27 - 21
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();
 	}
 
 }

+ 1 - 1
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){

+ 1 - 1
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();

+ 3 - 3
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号

+ 118 - 0
app/Http/Controllers/Admin/AffiliateController.php

@@ -0,0 +1,118 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Components\Helpers;
+use App\Http\Controllers\Controller;
+use App\Http\Models\ReferralApply;
+use App\Http\Models\ReferralLog;
+use Illuminate\Http\Request;
+use Response;
+
+/**
+ * 推广控制器
+ *
+ * Class AffiliateController
+ *
+ * @package App\Http\Controllers\Controller
+ */
+class AffiliateController extends Controller
+{
+	protected static $systemConfig;
+
+	function __construct()
+	{
+		self::$systemConfig = Helpers::systemConfig();
+	}
+
+	// 提现申请列表
+	public function affiliateList(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.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);
+	}
+}

+ 6 - 5
app/Http/Controllers/CouponController.php → app/Http/Controllers/Admin/CouponController.php

@@ -1,7 +1,8 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Admin;
 
+use App\Http\Controllers\Controller;
 use App\Http\Models\Coupon;
 use DB;
 use Exception;
@@ -17,7 +18,7 @@ use Response;
  *
  * Class CouponController
  *
- * @package App\Http\Controllers
+ * @package App\Http\Controllers\Controller
  */
 class CouponController extends Controller
 {
@@ -44,7 +45,7 @@ class CouponController extends Controller
 
 		$view['couponList'] = $query->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');
 		}
 	}
 

+ 6 - 5
app/Http/Controllers/MarketingController.php → app/Http/Controllers/Admin/MarketingController.php

@@ -1,8 +1,9 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Admin;
 
 use App\Components\Helpers;
+use App\Http\Controllers\Controller;
 use App\Http\Models\Marketing;
 use DB;
 use Exception;
@@ -16,7 +17,7 @@ use Response;
  *
  * Class MarketingController
  *
- * @package App\Http\Controllers
+ * @package App\Http\Controllers\Controller
  */
 class MarketingController extends Controller
 {
@@ -40,7 +41,7 @@ class MarketingController extends Controller
 
 		$view['list'] = $query->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();

+ 4 - 3
app/Http/Controllers/SensitiveWordsController.php → app/Http/Controllers/Admin/SensitiveWordsController.php

@@ -1,7 +1,8 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Admin;
 
+use App\Http\Controllers\Controller;
 use App\Http\Models\SensitiveWords;
 use Illuminate\Http\Request;
 use Response;
@@ -12,7 +13,7 @@ use Validator;
  *
  * Class SensitiveWordsController
  *
- * @package App\Http\Controllers
+ * @package App\Http\Controllers\Controller
  */
 class SensitiveWordsController extends Controller
 {
@@ -21,7 +22,7 @@ class SensitiveWordsController extends Controller
 	{
 		$view['list'] = SensitiveWords::query()->orderBy('id', 'desc')->paginate(15);
 
-		return Response::view('sensitiveWords.sensitiveWordsList', $view);
+		return Response::view('admin.sensitiveWords.sensitiveWordsList', $view);
 	}
 
 	// 添加敏感词

+ 9 - 8
app/Http/Controllers/ShopController.php → app/Http/Controllers/Admin/ShopController.php

@@ -1,7 +1,8 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Admin;
 
+use App\Http\Controllers\Controller;
 use App\Http\Models\Goods;
 use App\Http\Models\GoodsLabel;
 use App\Http\Models\Label;
@@ -18,7 +19,7 @@ use Session;
  *
  * Class ShopController
  *
- * @package App\Http\Controllers
+ * @package App\Http\Controllers\Controller
  */
 class ShopController extends Controller
 {
@@ -40,7 +41,7 @@ class ShopController extends Controller
 
 		$view['goodsList'] = $query->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' => '删除成功']);
 	}

+ 136 - 0
app/Http/Controllers/Admin/SubscribeController.php

@@ -0,0 +1,136 @@
+<?php
+
+namespace App\Http\Controllers\Admin;
+
+use App\Components\Helpers;
+use App\Http\Controllers\Controller;
+use App\Http\Models\Device;
+use App\Http\Models\UserSubscribe;
+use App\Http\Models\UserSubscribeLog;
+use Illuminate\Http\Request;
+use Response;
+
+/**
+ * 订阅控制器
+ *
+ * Class SubscribeController
+ *
+ * @package App\Http\Controllers\Controller
+ */
+class SubscribeController extends Controller
+{
+	protected static $systemConfig;
+
+	function __construct()
+	{
+		self::$systemConfig = Helpers::systemConfig();
+	}
+
+	// 订阅码列表
+	public function subscribeList(Request $request)
+	{
+		$user_id = $request->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' => '操作成功']);
+	}
+}

+ 5 - 4
app/Http/Controllers/TicketController.php → app/Http/Controllers/Admin/TicketController.php

@@ -1,9 +1,10 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\Admin;
 
 use App\Components\Helpers;
 use App\Components\PushNotification;
+use App\Http\Controllers\Controller;
 use App\Http\Models\Ticket;
 use App\Http\Models\TicketReply;
 use App\Mail\closeTicket;
@@ -18,7 +19,7 @@ use Response;
  *
  * Class TicketController
  *
- * @package App\Http\Controllers
+ * @package App\Http\Controllers\Controller
  */
 class TicketController extends Controller
 {
@@ -44,7 +45,7 @@ class TicketController extends Controller
 
 		$view['ticketList'] = $query->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);
 		}
 	}
 

+ 103 - 195
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);
 	}
 }

+ 1 - 1
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' => '登录失败']);

+ 1 - 1
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']);

+ 47 - 46
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();

+ 7 - 5
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){

+ 7 - 7
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)){

+ 26 - 26
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');

+ 1 - 1
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);

+ 3 - 3
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);
 	}
 }

+ 82 - 0
app/Http/Controllers/User/AffiliateController.php

@@ -0,0 +1,82 @@
+<?php
+
+namespace App\Http\Controllers\User;
+
+use App\Components\Helpers;
+use App\Http\Controllers\Controller;
+use App\Http\Models\Order;
+use App\Http\Models\ReferralApply;
+use App\Http\Models\ReferralLog;
+use App\Http\Models\User;
+use Auth;
+use Response;
+
+class AffiliateController extends Controller
+{
+	protected static $systemConfig;
+
+	function __construct()
+	{
+		self::$systemConfig = Helpers::systemConfig();
+	}
+
+	// 推广返利
+	public function referral()
+	{
+		if(Order::uid()->whereStatus(2)->doesntExist() && ReferralLog::uid()->doesntExist()){
+			return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 <a class="btn btn-sm btn-danger" href="/">返 回</a>']);
+		}
+		$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' => '申请成功,请等待管理员审核']);
+	}
+}

+ 2 - 118
app/Http/Controllers/SubscribeController.php → app/Http/Controllers/User/SubscribeController.php

@@ -1,25 +1,17 @@
 <?php
 
-namespace App\Http\Controllers;
+namespace App\Http\Controllers\User;
 
 use App\Components\Helpers;
-use App\Http\Models\Device;
+use App\Http\Controllers\Controller;
 use App\Http\Models\SsNode;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
 use App\Http\Models\UserSubscribe;
-use App\Http\Models\UserSubscribeLog;
 use Illuminate\Http\Request;
 use Redirect;
 use Response;
 
-/**
- * 订阅控制器
- *
- * Class SubscribeController
- *
- * @package App\Http\Controllers
- */
 class SubscribeController extends Controller
 {
 	protected static $systemConfig;
@@ -29,114 +21,6 @@ class SubscribeController extends Controller
 		self::$systemConfig = Helpers::systemConfig();
 	}
 
-	// 订阅码列表
-	public function subscribeList(Request $request)
-	{
-		$user_id = $request->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)
 	{

+ 3 - 65
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' => '本功能对非付费用户禁用!请 <a class="btn btn-sm btn-danger" href="/">返 回</a>']);
-		}
-		$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();
 

+ 1 - 0
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)

+ 1 - 0
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'];

+ 1 - 0
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';
 

+ 1 - 0
app/Listeners/EventListener.php

@@ -20,6 +20,7 @@ class EventListener
 	 * Handle the event.
 	 *
 	 * @param Event $event
+	 *
 	 * @return void
 	 */
 	public function handle(Event $event)

+ 1 - 1
app/helpers.php

@@ -204,7 +204,7 @@ if(!function_exists('getIPv6')){
 			}
 
 			return $result;
-		} catch(Exception $e){
+		}catch(Exception $e){
 			Log::error($e->getMessage());
 
 			return [];

+ 11 - 17
resources/views/admin/applyDetail.blade.php → resources/views/admin/affiliate/affiliateDetail.blade.php

@@ -13,7 +13,7 @@
 					@elseif($info->status == 2)
 						<span class="badge badge-lg badge-success"> 已打款 </span>
 					@endif
-					<a href="/admin/applyList" class="btn btn-danger"> 返 回</a>
+					<a href="/admin/affList" class="btn btn-danger"> 返 回</a>
 				</div>
 			</div>
 			<div class="panel-body">
@@ -33,24 +33,18 @@
 						</tr>
 						</thead>
 						<tbody>
-						@if($list->isEmpty())
+						@foreach($list as $vo)
 							<tr>
-								<td colspan="6">暂无数据</td>
+								<td> {{$vo->id}} </td>
+								<td> {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} </td>
+								<td>
+									<a href="/admin/orderList?order_sn={{$vo->order->order_sn}}" target="_blank">{{$vo->order->goods->name}}</a>
+								</td>
+								<td> ¥{{$vo->amount}} </td>
+								<td> ¥{{$vo->ref_amount}} </td>
+								<td> {{$vo->created_at}} </td>
 							</tr>
-						@else
-							@foreach($list as $vo)
-								<tr>
-									<td> {{$vo->id}} </td>
-									<td> {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} </td>
-									<td>
-										<a href="/admin/orderList?order_sn={{$vo->order->order_sn}}" target="_blank">{{$vo->order->goods->name}}</a>
-									</td>
-									<td> ¥{{$vo->amount}} </td>
-									<td> ¥{{$vo->ref_amount}} </td>
-									<td> {{$vo->created_at}} </td>
-								</tr>
-							@endforeach
-						@endif
+						@endforeach
 						</tbody>
 					</table>
 				</div>

+ 38 - 48
resources/views/admin/applyList.blade.php → resources/views/admin/affiliate/affiliateList.blade.php

@@ -24,7 +24,7 @@
 					</div>
 					<div class="form-group col-lg-1 col-sm-4 btn-group">
 						<button class="btn btn-primary" onclick="Search()">搜 索</button>
-						<a href="/admin/applyList" class="btn btn-danger">重 置</a>
+						<a href="/admin/affList" class="btn btn-danger">重 置</a>
 					</div>
 				</div>
 				<table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
@@ -40,49 +40,43 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($applyList->isEmpty())
+					@foreach($applyList as $apply)
 						<tr>
-							<td colspan="7">暂无数据</td>
-						</tr>
-					@else
-						@foreach($applyList as $apply)
-							<tr>
-								<td> {{$apply->id}} </td>
-								<td> {{$apply->created_at}} </td>
-								<td>
-									@if(empty($apply->user))
-										【账号已删除】
-									@else
-										<a href="/admin/userList?id={{$apply->user_id}}" target="_blank">{{$apply->user->email}}</a>
-									@endif
-								</td>
-								<td> ¥{{$apply->amount}} </td>
-								<td>
-									@if($apply->status == -1)
-										<span class="badge badge-lg badge-danger"> 驳 回 </span>
-									@elseif($apply->status == 0)
-										<span class="badge badge-lg badge-info"> 待审核 </span>
-									@elseif($apply->status == 2)
-										<span class="badge badge-lg badge-success"> 已打款 </span>
-									@else
-										<span class="badge badge-lg badge-default"> 待打款 </span>
+							<td> {{$apply->id}} </td>
+							<td> {{$apply->created_at}} </td>
+							<td>
+								@if(empty($apply->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userList?id={{$apply->user_id}}" target="_blank">{{$apply->user->email}}</a>
+								@endif
+							</td>
+							<td> ¥{{$apply->amount}} </td>
+							<td>
+								@if($apply->status == -1)
+									<span class="badge badge-lg badge-danger"> 驳 回 </span>
+								@elseif($apply->status == 0)
+									<span class="badge badge-lg badge-info"> 待审核 </span>
+								@elseif($apply->status == 2)
+									<span class="badge badge-lg badge-success"> 已打款 </span>
+								@else
+									<span class="badge badge-lg badge-default"> 待打款 </span>
+								@endif
+							</td>
+							<td> {{$apply->created_at == $apply->updated_at ? '' : $apply->updated_at}} </td>
+							<td>
+								<div class="btn-group">
+									@if($apply->status == 0)
+										<a href="javascript:setStatus('{{$apply->id}}','1')" class="btn btn-sm btn-success"><i class="icon wb-check" aria-hidden="true"></i>通过</a>
+										<a href="javascript:setStatus('{{$apply->id}}','-1')" class="btn btn-sm btn-danger"><i class="icon wb-close" aria-hidden="true"></i>驳回</a>
+									@elseif($apply->status == 1)
+										<a href="javascript:setStatus('{{$apply->id}}','2')" class="btn btn-sm btn-primary"><i class="icon wb-check-circle" aria-hidden="true"></i>已打款</a>
 									@endif
-								</td>
-								<td> {{$apply->created_at == $apply->updated_at ? '' : $apply->updated_at}} </td>
-								<td>
-									<div class="btn-group">
-										@if($apply->status == 0)
-											<a href="javascript:setStatus('{{$apply->id}}','1')" class="btn btn-sm btn-success"><i class="icon wb-check" aria-hidden="true"></i>通过</a>
-											<a href="javascript:setStatus('{{$apply->id}}','-1')" class="btn btn-sm btn-danger"><i class="icon wb-close" aria-hidden="true"></i>驳回</a>
-										@elseif($apply->status == 1)
-											<a href="javascript:setStatus('{{$apply->id}}','2')" class="btn btn-sm btn-primary"><i class="icon wb-check-circle" aria-hidden="true"></i>已打款</a>
-										@endif
-										<a href="/admin/applyDetail?id={{$apply->id}}" class="btn btn-sm btn-default"><i class="icon wb-search"></i></a>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+									<a href="/admin/affDetail?id={{$apply->id}}" class="btn btn-sm btn-default"><i class="icon wb-search"></i></a>
+								</div>
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>
@@ -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())

+ 31 - 37
resources/views/admin/userRebateList.blade.php → resources/views/admin/affiliate/userRebateList.blade.php

@@ -44,45 +44,39 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="9">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td>
+								@if(empty($vo->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userRebateList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
+								@endif
+							</td>
+							<td>
+								@if(empty($vo->ref_user))
+									【账号已删除】
+								@else
+									<a href="/admin/userRebateList?ref_email={{$vo->ref_user->email}}"> {{$vo->ref_user->email}} </a>
+								@endif
+							</td>
+							<td> {{$vo->order_id}} </td>
+							<td> {{$vo->amount}} </td>
+							<td> {{$vo->ref_amount}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td> {{$vo->updated_at}} </td>
+							<td>
+								@if ($vo->status == 1)
+									<span class="badge badge-danger">申请中</span>
+								@elseif($vo->status == 2)
+									<span class="badge badge-default">已提现</span>
+								@else
+									<span class="badge badge-info">未提现</span>
+								@endif
+							</td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td>
-									@if(empty($vo->user))
-										【账号已删除】
-									@else
-										<a href="/admin/userRebateList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
-									@endif
-								</td>
-								<td>
-									@if(empty($vo->ref_user))
-										【账号已删除】
-									@else
-										<a href="/admin/userRebateList?ref_email={{$vo->ref_user->email}}"> {{$vo->ref_user->email}} </a>
-									@endif
-								</td>
-								<td> {{$vo->order_id}} </td>
-								<td> {{$vo->amount}} </td>
-								<td> {{$vo->ref_amount}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td> {{$vo->updated_at}} </td>
-								<td>
-									@if ($vo->status == 1)
-										<span class="badge badge-danger">申请中</span>
-									@elseif($vo->status == 2)
-										<span class="badge badge-default">已提现</span>
-									@else
-										<span class="badge badge-info">未提现</span>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/addArticle.blade.php → resources/views/admin/article/addArticle.blade.php


+ 25 - 31
resources/views/admin/articleList.blade.php → resources/views/admin/article/articleList.blade.php

@@ -24,39 +24,33 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							@if ($vo->type == '1')
+								<td> 文章</td>
+							@elseif ($vo->type == '2')
+								<td> 公告</td>
+							@elseif ($vo->type == '3')
+								<td> 购买说明</td>
+							@elseif ($vo->type == '4')
+								<td> 使用教程</td>
+							@else
+								<td> 未知</td>
+							@endif
+							<td>
+								<a href="/article?id={{$vo->id}}" target="_blank"> {{\Illuminate\Support\Str::limit($vo->title, 80)}} </a>
+							</td>
+							<td> {{$vo->sort}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td>
+								<div class="btn-group">
+									<a href="/admin/editArticle?id={{$vo->id}}&page={{Request::get('page', 1)}}" class="btn btn-outline-primary"><i class="icon wb-edit"></i></a>
+									<button class="btn btn-outline-danger" onclick="delArticle('{{$vo->id}}')"><i class="icon wb-close"></i></button>
+								</div>
+							</td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								@if ($vo->type == '1')
-									<td> 文章</td>
-								@elseif ($vo->type == '2')
-									<td> 公告</td>
-								@elseif ($vo->type == '3')
-									<td> 购买说明</td>
-								@elseif ($vo->type == '4')
-									<td> 使用教程</td>
-								@else
-									<td> 未知</td>
-								@endif
-								<td>
-									<a href="/article?id={{$vo->id}}" target="_blank"> {{\Illuminate\Support\Str::limit($vo->title, 80)}} </a>
-								</td>
-								<td> {{$vo->sort}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td>
-									<div class="btn-group">
-										<a href="/admin/editArticle?id={{$vo->id}}&page={{Request::get('page', 1)}}" class="btn btn-outline-primary"><i class="icon wb-edit"></i></a>
-										<button class="btn btn-outline-danger" onclick="delArticle('{{$vo->id}}')"><i class="icon wb-close"></i></button>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/editArticle.blade.php → resources/views/admin/article/editArticle.blade.php


+ 78 - 108
resources/views/admin/config.blade.php

@@ -40,29 +40,23 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($method_list->isEmpty())
+								@foreach($method_list as $method)
 									<tr>
-										<td colspan="2">暂无数据</td>
+										<td> {{$method->name}}</td>
+										<td>
+											@if($method->is_default)
+												<span class='badge badge-lg badge-default'>默认</span>
+											@else
+												<div class="btn-group">
+													<button class="btn btn-primary" onclick="setDefault('{{$method->id}}')">默认</button>
+													<button class="btn btn-danger" onclick="delConfig('{{$method->id}}','{{$method->name}}')">
+														<i class="icon wb-trash"></i>
+													</button>
+												</div>
+											@endif
+										</td>
 									</tr>
-								@else
-									@foreach($method_list as $method)
-										<tr>
-											<td> {{$method->name}}</td>
-											<td>
-												@if($method->is_default)
-													<span class='badge badge-lg badge-default'>默认</span>
-												@else
-													<div class="btn-group">
-														<button class="btn btn-primary" onclick="setDefault('{{$method->id}}')">默认</button>
-														<button class="btn btn-danger" onclick="delConfig('{{$method->id}}','{{$method->name}}')">
-															<i class="icon wb-trash"></i>
-														</button>
-													</div>
-												@endif
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>
@@ -77,29 +71,23 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($protocol_list->isEmpty())
+								@foreach($protocol_list as $protocol)
 									<tr>
-										<td colspan="2">暂无数据</td>
+										<td> {{$protocol->name}}</td>
+										<td>
+											@if($protocol->is_default)
+												<span class="badge badge-lg badge-default">默认</span>
+											@else
+												<div class="btn-group">
+													<button class="btn btn-primary" onclick="setDefault('{{$protocol->id}}')">默认</button>
+													<button class="btn btn-danger" onclick="delConfig('{{$protocol->id}}','{{$protocol->name}}')">
+														<i class="icon wb-trash"></i>
+													</button>
+												</div>
+											@endif
+										</td>
 									</tr>
-								@else
-									@foreach($protocol_list as $protocol)
-										<tr>
-											<td> {{$protocol->name}}</td>
-											<td>
-												@if($protocol->is_default)
-													<span class="badge badge-lg badge-default">默认</span>
-												@else
-													<div class="btn-group">
-														<button class="btn btn-primary" onclick="setDefault('{{$protocol->id}}')">默认</button>
-														<button class="btn btn-danger" onclick="delConfig('{{$protocol->id}}','{{$protocol->name}}')">
-															<i class="icon wb-trash"></i>
-														</button>
-													</div>
-												@endif
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>
@@ -114,27 +102,21 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($obfs_list->isEmpty())
+								@foreach($obfs_list as $obfs)
 									<tr>
-										<td colspan="2">暂无数据</td>
+										<td> {{$obfs->name}}</td>
+										<td>
+											@if($obfs->is_default)
+												<span class="badge badge-lg badge-default">默认</span>
+											@else
+												<button class="btn btn-primary" onclick="setDefault('{{$obfs->id}}')">默认</button>
+												<button class="btn btn-danger" onclick="delConfig('{{$obfs->id}}','{{$obfs->name}}')">
+													<i class="icon wb-trash"></i>
+												</button>
+											@endif
+										</td>
 									</tr>
-								@else
-									@foreach($obfs_list as $obfs)
-										<tr>
-											<td> {{$obfs->name}}</td>
-											<td>
-												@if($obfs->is_default)
-													<span class="badge badge-lg badge-default">默认</span>
-												@else
-													<button class="btn btn-primary" onclick="setDefault('{{$obfs->id}}')">默认</button>
-													<button class="btn btn-danger" onclick="delConfig('{{$obfs->id}}','{{$obfs->name}}')">
-														<i class="icon wb-trash"></i>
-													</button>
-												@endif
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>
@@ -150,30 +132,24 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($level_list->isEmpty())
+								@foreach($level_list as $level)
 									<tr>
-										<td colspan="3">暂无数据</td>
+										<td>
+											<input type="text" class="form-control" name="level" id="level_{{$level->id}}" value="{{$level->level}}"/>
+										</td>
+										<td>
+											<input type="text" class="form-control" name="level_name" id="level_name_{{$level->id}}" value="{{$level->level_name}}"/>
+										</td>
+										<td>
+											<div class="btn-group">
+												<button type="button" class="btn btn-primary" onclick="updateLevel('{{$level->id}}')">修改</button>
+												<button type="button" class="btn btn-danger" onclick="delLevel('{{$level->id}}','{{$level->level_name}}')">
+													<i class="icon wb-trash"></i>
+												</button>
+											</div>
+										</td>
 									</tr>
-								@else
-									@foreach($level_list as $level)
-										<tr>
-											<td>
-												<input type="text" class="form-control" name="level" id="level_{{$level->id}}" value="{{$level->level}}"/>
-											</td>
-											<td>
-												<input type="text" class="form-control" name="level_name" id="level_name_{{$level->id}}" value="{{$level->level_name}}"/>
-											</td>
-											<td>
-												<div class="btn-group">
-													<button type="button" class="btn btn-primary" onclick="updateLevel('{{$level->id}}')">修改</button>
-													<button type="button" class="btn btn-danger" onclick="delLevel('{{$level->id}}','{{$level->level_name}}')">
-														<i class="icon wb-trash"></i>
-													</button>
-												</div>
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>
@@ -190,33 +166,27 @@
 								</tr>
 								</thead>
 								<tbody>
-								@if($country_list->isEmpty())
+								@foreach($country_list as $country)
 									<tr>
-										<td colspan="4">暂无数据</td>
+										<td>
+											<svg class="w-40 h-40 text-center" aria-hidden="true">
+												<use xlink:href="@if($country->code)#icon-{{$country->code}}@endif"></use>
+											</svg>
+										</td>
+										<td>
+											<input type="text" class="form-control" name="country_name" id="country_name_{{$country->id}}" value="{{$country->name}}"/>
+										</td>
+										<td>
+											<input type="text" class="form-control" name="country_code" id="country_code_{{$country->id}}" value="{{$country->code}}"/>
+										</td>
+										<td>
+											<div class="btn-group">
+												<button type="button" class="btn btn-primary" onclick="updateCountry('{{$country->id}}')">修改</button>
+												<button type="button" class="btn btn-danger" onclick="delCountry('{{$country->id}}','{{$country->name}}')"><i class="icon wb-trash"></i></button>
+											</div>
+										</td>
 									</tr>
-								@else
-									@foreach($country_list as $country)
-										<tr>
-											<td>
-												<svg class="w-40 h-40 text-center" aria-hidden="true">
-													<use xlink:href="@if($country->code)#icon-{{$country->code}}@endif"></use>
-												</svg>
-											</td>
-											<td>
-												<input type="text" class="form-control" name="country_name" id="country_name_{{$country->id}}" value="{{$country->name}}"/>
-											</td>
-											<td>
-												<input type="text" class="form-control" name="country_code" id="country_code_{{$country->id}}" value="{{$country->code}}"/>
-											</td>
-											<td>
-												<div class="btn-group">
-													<button type="button" class="btn btn-primary" onclick="updateCountry('{{$country->id}}')">修改</button>
-													<button type="button" class="btn btn-danger" onclick="delCountry('{{$country->id}}','{{$country->name}}')"><i class="icon wb-trash"></i></button>
-												</div>
-											</td>
-										</tr>
-									@endforeach
-								@endif
+								@endforeach
 								</tbody>
 							</table>
 						</div>

+ 0 - 0
resources/views/coupon/addCoupon.blade.php → resources/views/admin/coupon/addCoupon.blade.php


+ 43 - 49
resources/views/coupon/couponList.blade.php → resources/views/admin/coupon/couponList.blade.php

@@ -54,60 +54,54 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($couponList->isEmpty())
+					@foreach($couponList as $coupon)
 						<tr>
-							<td colspan="10">暂无数据</td>
-						</tr>
-					@else
-						@foreach($couponList as $coupon)
-							<tr>
-								<td> {{$coupon->id}} </td>
-								<td> {{$coupon->name}} </td>
-								<td> {{$coupon->sn}} </td>
-								<td> @if($coupon->logo) <img src="{{$coupon->logo}}" alt="优惠码logo"/> @endif </td>
-								<td>
-									@if($coupon->type == '1')
-										抵用券
-									@elseif($coupon->type == '2')
-										折扣券
+							<td> {{$coupon->id}} </td>
+							<td> {{$coupon->name}} </td>
+							<td> {{$coupon->sn}} </td>
+							<td> @if($coupon->logo) <img src="{{$coupon->logo}}" alt="优惠码logo"/> @endif </td>
+							<td>
+								@if($coupon->type == '1')
+									抵用券
+								@elseif($coupon->type == '2')
+									折扣券
+								@else
+									充值券
+								@endif
+							</td>
+							<td> {{$coupon->usage == '1' ? '一次性' : '重复使用'}} </td>
+							<td>
+								@if($coupon->type == 2)
+									{{$coupon->discount}}折
+								@else
+									{{$coupon->amount}}元
+								@endif
+							</td>
+							<td> {{date('Y-m-d', $coupon->available_start)}} ~ {{date('Y-m-d', $coupon->available_end)}} </td>
+							<td>
+								@if($coupon->usage == 1)
+									@if($coupon->status == '1')
+										<span class="badge badge-lg badge-default"> 已使用 </span>
+									@elseif ($coupon->status == '2')
+										<span class="badge badge-lg badge-default"> 已失效 </span>
 									@else
-										充值券
+										<span class="badge badge-lg badge-success"> 未使用 </span>
 									@endif
-								</td>
-								<td> {{$coupon->usage == '1' ? '一次性' : '重复使用'}} </td>
-								<td>
-									@if($coupon->type == 2)
-										{{$coupon->discount}}折
+								@elseif ($coupon->usage == 2)
+									@if ($coupon->status == '2')
+										<span class="badge badge-lg badge-default"> 已失效 </span>
 									@else
-										{{$coupon->amount}}元
-									@endif
-								</td>
-								<td> {{date('Y-m-d', $coupon->available_start)}} ~ {{date('Y-m-d', $coupon->available_end)}} </td>
-								<td>
-									@if($coupon->usage == 1)
-										@if($coupon->status == '1')
-											<span class="badge badge-lg badge-default"> 已使用 </span>
-										@elseif ($coupon->status == '2')
-											<span class="badge badge-lg badge-default"> 已失效 </span>
-										@else
-											<span class="badge badge-lg badge-success"> 未使用 </span>
-										@endif
-									@elseif ($coupon->usage == 2)
-										@if ($coupon->status == '2')
-											<span class="badge badge-lg badge-default"> 已失效 </span>
-										@else
-											<span class="badge badge-lg badge-success"> 生效中 </span>
-										@endif
+										<span class="badge badge-lg badge-success"> 生效中 </span>
 									@endif
-								</td>
-								<td>
-									@if($coupon->status != '1')
-										<button class="btn btn-danger" onclick="delCoupon('{{$coupon->id}}','{{$coupon->name}}')"><i class="icon wb-close"></i></button>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+								@endif
+							</td>
+							<td>
+								@if($coupon->status != '1')
+									<button class="btn btn-danger" onclick="delCoupon('{{$coupon->id}}','{{$coupon->name}}')"><i class="icon wb-close"></i></button>
+								@endif
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/addGroup.blade.php → resources/views/admin/group/addGroup.blade.php


+ 0 - 0
resources/views/admin/editGroup.blade.php → resources/views/admin/group/editGroup.blade.php


+ 11 - 17
resources/views/admin/groupList.blade.php → resources/views/admin/group/groupList.blade.php

@@ -22,25 +22,19 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($groupList->isEmpty())
+					@foreach($groupList as $group)
 						<tr>
-							<td colspan="4">暂无数据</td>
+							<td> {{$group->id}} </td>
+							<td> {{$group->name}} </td>
+							<td> {{$levelMap[$group->level]}} </td>
+							<td>
+								<div class="btn-group">
+									<a href="/admin/editGroup/{{$group->id}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
+									<button class="btn btn-danger" onclick="delGroup('{{$group->id}}','{{$group->name}}')"><i class="icon wb-trash"></i></button>
+								</div>
+							</td>
 						</tr>
-					@else
-						@foreach($groupList as $group)
-							<tr>
-								<td> {{$group->id}} </td>
-								<td> {{$group->name}} </td>
-								<td> {{$levelMap[$group->level]}} </td>
-								<td>
-									<div class="btn-group">
-										<a href="/admin/editGroup/{{$group->id}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
-										<button class="btn btn-danger" onclick="delGroup('{{$group->id}}','{{$group->name}}')"><i class="icon wb-trash"></i></button>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/addLabel.blade.php → resources/views/admin/label/addLabel.blade.php


+ 0 - 0
resources/views/admin/editLabel.blade.php → resources/views/admin/label/editLabel.blade.php


+ 13 - 19
resources/views/admin/labelList.blade.php → resources/views/admin/label/labelList.blade.php

@@ -26,27 +26,21 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($labelList->isEmpty())
+					@foreach($labelList as $label)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$label->id}} </td>
+							<td> {{$label->name}} </td>
+							<td> {{$label->userCount}} </td>
+							<td> {{$label->nodeCount}} </td>
+							<td> {{$label->sort}} </td>
+							<td>
+								<div class="btn-group">
+									<a href="/admin/editLabel?id={{$label->id}}&page={{Request::get('page', 1)}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
+									<button class="btn btn-danger" onclick="delLabel('{{$label->id}}','{{$label->name}}')"><i class="icon wb-trash"></i></button>
+								</div>
+							</td>
 						</tr>
-					@else
-						@foreach($labelList as $label)
-							<tr>
-								<td> {{$label->id}} </td>
-								<td> {{$label->name}} </td>
-								<td> {{$label->userCount}} </td>
-								<td> {{$label->nodeCount}} </td>
-								<td> {{$label->sort}} </td>
-								<td>
-									<div class="btn-group">
-										<a href="/admin/editLabel?id={{$label->id}}&page={{Request::get('page', 1)}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
-										<button class="btn btn-danger" onclick="delLabel('{{$label->id}}','{{$label->name}}')"><i class="icon wb-trash"></i></button>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 13 - 3
resources/views/admin/layouts.blade.php

@@ -230,10 +230,15 @@
 					</li>
 				</ul>
 			</li>
-			<li class="site-menu-item has-sub {{in_array(Request::path(), ['admin/inviteList', 'admin/applyList', 'admin/applyDetail', 'admin/userRebateList']) ? 'active open' : ''}}">
+			<li class="site-menu-item has-sub {{in_array(Request::path(), ['admin/inviteList', 'admin/affList', 'admin/affDetail', 'admin/userRebateList']) ? 'active open' : ''}}">
 				<a href="javascript:void(0)">
 					<i class="site-menu-icon wb-thumb-up" aria-hidden="true"></i>
 					<span class="site-menu-title">推广系统</span>
+					@if(\App\Http\Models\ReferralApply::query()->whereStatus(0)->count() > 0 )
+						<div class="site-menu-badge">
+							<span class="badge badge-pill badge-success">{{\App\Http\Models\Ticket::query()->whereStatus(0)->count()}}</span>
+						</div>
+					@endif
 				</a>
 				<ul class="site-menu-sub">
 					<li class="site-menu-item {{in_array(Request::path(), ['admin/inviteList']) ? 'active open' : ''}}">
@@ -241,9 +246,14 @@
 							<span class="site-menu-title">邀请管理</span>
 						</a>
 					</li>
-					<li class="site-menu-item {{in_array(Request::path(), ['admin/applyList', 'admin/applyDetail']) ? 'active open' : ''}}">
-						<a href="/admin/applyList" class="animsition-link">
+					<li class="site-menu-item {{in_array(Request::path(), ['admin/affList', 'admin/affDetail']) ? 'active open' : ''}}">
+						<a href="/admin/affList" class="animsition-link">
 							<span class="site-menu-title">提现管理</span>
+							@if(\App\Http\Models\ReferralApply::query()->whereStatus(0)->count() > 0 )
+								<div class="site-menu-label">
+									<span class="badge badge-danger badge-round mr-25">{{\App\Http\Models\Ticket::query()->whereStatus(0)->count()}}</span>
+								</div>
+							@endif
 						</a>
 					</li>
 					<li class="site-menu-item {{in_array(Request::path(), ['admin/userRebateList']) ? 'active open' : ''}}">

+ 11 - 17
resources/views/payment/callbackList.blade.php → resources/views/admin/logs/callbackList.blade.php

@@ -51,25 +51,19 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->type_label}} </td>
+							<td> {{$vo->trade_no}} </td>
+							<td>
+								<a href="/admin/orderList?order_sn={{$vo->out_trade_no}}" target="_blank"> {{$vo->out_trade_no}} </a>
+							</td>
+							<td> {{$vo->amount}}元</td>
+							<td> {!! $vo->trade_status_label !!} </td>
+							<td> {{$vo->created_at}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->type_label}} </td>
-								<td> {{$vo->trade_no}} </td>
-								<td>
-									<a href="/admin/orderList?order_sn={{$vo->out_trade_no}}" target="_blank"> {{$vo->out_trade_no}} </a>
-								</td>
-								<td> {{$vo->amount}}元</td>
-								<td> {!! $vo->trade_status_label !!} </td>
-								<td> {{$vo->created_at}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 8 - 14
resources/views/admin/nodePingLog.blade.php → resources/views/admin/logs/nodePingLog.blade.php

@@ -38,22 +38,16 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($pingLogs->isEmpty())
+					@foreach($pingLogs as $log)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td> {{$log->id}} </td>
+							<td> {{$log->node->name}} </td>
+							<td> {{$log->ct? $log->ct.' ms': '无'}} </td>
+							<td> {{$log->cu? $log->cu.' ms': '无'}} </td>
+							<td> {{$log->cm? $log->cm.' ms': '无'}} </td>
+							<td> {{$log->hk? $log->hk.' ms': '无'}} </td>
 						</tr>
-					@else
-						@foreach($pingLogs as $log)
-							<tr>
-								<td> {{$log->id}} </td>
-								<td> {{$log->node->name}} </td>
-								<td> {{$log->ct? $log->ct.' ms': '无'}} </td>
-								<td> {{$log->cu? $log->cu.' ms': '无'}} </td>
-								<td> {{$log->cm? $log->cm.' ms': '无'}} </td>
-								<td> {{$log->hk? $log->hk.' ms': '无'}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 19 - 25
resources/views/admin/notificationLog.blade.php → resources/views/admin/logs/notificationLog.blade.php

@@ -41,33 +41,27 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->type == 1 ? 'Email' : ($vo->type == 2? 'ServerChan': 'Bark')}} </td>
+							<td> @if($vo->type == 3)
+									<a href="/b/{{$vo->code}}" target="_blank">{{$vo->code}}</a> @endif </td>
+							<td> {{$vo->address}} </td>
+							<td> {{$vo->title}} </td>
+							<td> {{$vo->content}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td>
+								@if($vo->status < 0)
+									<span class="badge badge-danger"> {{\Illuminate\Support\Str::limit($vo->error)}} </span>
+								@elseif($vo->status > 0)
+									<labe class="badge badge-success">投递成功</labe>
+								@else
+									<span class="badge badge-default"> 等待投递 </span>
+								@endif
+							</td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->type == 1 ? 'Email' : ($vo->type == 2? 'ServerChan': 'Bark')}} </td>
-								<td> @if($vo->type == 3)
-										<a href="/b/{{$vo->code}}" target="_blank">{{$vo->code}}</a> @endif </td>
-								<td> {{$vo->address}} </td>
-								<td> {{$vo->title}} </td>
-								<td> {{$vo->content}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td>
-									@if($vo->status < 0)
-										<span class="badge badge-danger"> {{\Illuminate\Support\Str::limit($vo->error)}} </span>
-									@elseif($vo->status > 0)
-										<labe class="badge badge-success">投递成功</labe>
-									@else
-										<span class="badge badge-default"> 等待投递 </span>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 18 - 24
resources/views/admin/onlineIPMonitor.blade.php → resources/views/admin/logs/onlineIPMonitor.blade.php

@@ -51,32 +51,26 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if ($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td>{{$vo->id}}</td>
+							<td>{{$vo->created_at}}</td>
+							<td>{{$vo->type}}</td>
+							<td>{{$vo->node ? $vo->node->name : '【节点已删除】'}}</td>
+							<td>{{$vo->user ? $vo->user->email : '【用户已删除】'}}</td>
+							<td>{{$vo->user ? $vo->user->address : '【用户已删除】'}}</td>
+							<td>
+								@if (strpos($vo->ip, ',') == TRUE)
+									@foreach (explode(',', $vo->ip) as $ip)
+										<a href="https://www.ipip.net/ip/{{$ip}}.html" target="_blank">{{$ip}}</a>
+									@endforeach
+								@else
+									<a href="https://www.ipip.net/ip/{{$vo->ip}}.html" target="_blank">{{$vo->ip}}</a>
+								@endif
+							</td>
+							<td>{{strpos($vo->ip, ',') == TRUE? '':$vo->ipInfo}}</td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td>{{$vo->id}}</td>
-								<td>{{$vo->created_at}}</td>
-								<td>{{$vo->type}}</td>
-								<td>{{$vo->node ? $vo->node->name : '【节点已删除】'}}</td>
-								<td>{{$vo->user ? $vo->user->email : '【用户已删除】'}}</td>
-								<td>{{$vo->user ? $vo->user->address : '【用户已删除】'}}</td>
-								<td>
-									@if (strpos($vo->ip, ',') == TRUE)
-										@foreach (explode(',', $vo->ip) as $ip)
-											<a href="https://www.ipip.net/ip/{{$ip}}.html" target="_blank">{{$ip}}</a>
-										@endforeach
-									@else
-										<a href="https://www.ipip.net/ip/{{$vo->ip}}.html" target="_blank">{{$vo->ip}}</a>
-									@endif
-								</td>
-								<td>{{strpos($vo->ip, ',') == TRUE? '':$vo->ipInfo}}</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 31 - 37
resources/views/admin/orderList.blade.php → resources/views/admin/logs/orderList.blade.php

@@ -97,45 +97,39 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($orderList->isEmpty())
+					@foreach($orderList as $order)
 						<tr>
-							<td colspan="11">暂无数据</td>
+							<td> {{$order->oid}} </td>
+							<td>
+								@if(empty($order->user) )
+									【账号不存在】
+								@else
+									<a href="/admin/userList?id={{$order->user->id}}" target="_blank">{{$order->user->email}} </a>
+								@endif
+							</td>
+							<td> {{$order->order_sn}}</td>
+							<td> {{$order->goods_id == -1? "余额充值" :$order->goods->name}} </td>
+							<td> {{$order->is_expire ? '已过期' : $order->expire_at}} </td>
+							<td> {{$order->coupon ? $order->coupon->name . ' - ' . $order->coupon->sn : ''}} </td>
+							<td> ¥{{$order->origin_amount}} </td>
+							<td> ¥{{$order->amount}} </td>
+							<td>
+								<span class="badge badge-lg badge-info"> {{$order->pay_way_label}} </span>
+							</td>
+							<td>
+								@if($order->status == '-1')
+									<span class="badge badge-lg badge-danger"> 已关闭 </span>
+								@elseif ($order->status == '0')
+									<span class="badge badge-lg badge-default"> 待支付 </span>
+								@elseif ($order->status == '1')
+									<span class="badge badge-lg badge-default"> 已支付待确认 </span>
+								@else
+									<span class="badge badge-lg badge-success"> 已完成 </span>
+								@endif
+							</td>
+							<td> {{$order->created_at}} </td>
 						</tr>
-					@else
-						@foreach($orderList as $order)
-							<tr>
-								<td> {{$order->oid}} </td>
-								<td>
-									@if(empty($order->user) )
-										【账号不存在】
-									@else
-										<a href="/admin/userList?id={{$order->user->id}}" target="_blank">{{$order->user->email}} </a>
-									@endif
-								</td>
-								<td> {{$order->order_sn}}</td>
-								<td> {{$order->goods_id == -1? "余额充值" :$order->goods->name}} </td>
-								<td> {{$order->is_expire ? '已过期' : $order->expire_at}} </td>
-								<td> {{$order->coupon ? $order->coupon->name . ' - ' . $order->coupon->sn : ''}} </td>
-								<td> ¥{{$order->origin_amount}} </td>
-								<td> ¥{{$order->amount}} </td>
-								<td>
-									<span class="badge badge-lg badge-info"> {{$order->pay_way_label}} </span>
-								</td>
-								<td>
-									@if($order->status == '-1')
-										<span class="badge badge-lg badge-danger"> 已关闭 </span>
-									@elseif ($order->status == '0')
-										<span class="badge badge-lg badge-default"> 待支付 </span>
-									@elseif ($order->status == '1')
-										<span class="badge badge-lg badge-default"> 已支付待确认 </span>
-									@else
-										<span class="badge badge-lg badge-success"> 已完成 </span>
-									@endif
-								</td>
-								<td> {{$order->created_at}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 16 - 22
resources/views/admin/trafficLog.blade.php → resources/views/admin/logs/trafficLog.blade.php

@@ -59,30 +59,24 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td>
+								@if(empty($vo->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userList?id={{$vo->user->id}}" target="_blank"> {{$vo->user->email}} </a>
+								@endif
+							</td>
+							<td> {{$vo->node ? $vo->node->name : '【节点已删除】'}} </td>
+							<td> {{$vo->rate}} </td>
+							<td> {{$vo->u}} </td>
+							<td> {{$vo->d}} </td>
+							<td><span class="badge badge-danger"> {{$vo->traffic}} </span></td>
+							<td> {{$vo->log_time}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td>
-									@if(empty($vo->user))
-										【账号已删除】
-									@else
-										<a href="/admin/userList?id={{$vo->user->id}}" target="_blank"> {{$vo->user->email}} </a>
-									@endif
-								</td>
-								<td> {{$vo->node ? $vo->node->name : '【节点已删除】'}} </td>
-								<td> {{$vo->rate}} </td>
-								<td> {{$vo->u}} </td>
-								<td> {{$vo->d}} </td>
-								<td><span class="badge badge-danger"> {{$vo->traffic}} </span></td>
-								<td> {{$vo->log_time}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 16 - 22
resources/views/admin/userBalanceLogList.blade.php → resources/views/admin/logs/userBalanceLogList.blade.php

@@ -32,30 +32,24 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td>
+								@if(empty($vo->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userBalanceLogList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
+								@endif
+							</td>
+							<td> {{$vo->order_id}} </td>
+							<td> {{$vo->before}} </td>
+							<td> {{$vo->amount}} </td>
+							<td> {{$vo->after}} </td>
+							<td> {{$vo->desc}} </td>
+							<td> {{$vo->created_at}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td>
-									@if(empty($vo->user))
-										【账号已删除】
-									@else
-										<a href="/admin/userBalanceLogList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
-									@endif
-								</td>
-								<td> {{$vo->order_id}} </td>
-								<td> {{$vo->before}} </td>
-								<td> {{$vo->amount}} </td>
-								<td> {{$vo->after}} </td>
-								<td> {{$vo->desc}} </td>
-								<td> {{$vo->created_at}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 10 - 16
resources/views/admin/userBanLogList.blade.php → resources/views/admin/logs/userBanLogList.blade.php

@@ -30,24 +30,18 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td>
+								<a href="/admin/userList?email={{$vo->id}}" target="_blank" rel="noopener"> {{$vo->id}}</a>
+							</td>
+							<td> {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} </td>
+							<td> {{$vo->minutes}}分钟</td>
+							<td> {{$vo->desc}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td> {{date("Y-m-d H:i:s", $vo->user->t)}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td>
-									<a href="/admin/userList?email={{$vo->id}}" target="_blank" rel="noopener"> {{$vo->id}}</a>
-								</td>
-								<td> {{empty($vo->user) ? '【账号已删除】' : $vo->user->email}} </td>
-								<td> {{$vo->minutes}}分钟</td>
-								<td> {{$vo->desc}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td> {{date("Y-m-d H:i:s", $vo->user->t)}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/userMonitor.blade.php → resources/views/admin/logs/userMonitor.blade.php


+ 46 - 52
resources/views/admin/userOnlineIPList.blade.php → resources/views/admin/logs/userOnlineIPList.blade.php

@@ -44,61 +44,55 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if ($userList->isEmpty())
+					@foreach ($userList as $user)
 						<tr>
-							<td colspan="6">暂无数据</td>
-						</tr>
-					@else
-						@foreach ($userList as $user)
-							<tr>
-								<td> {{$user->id}} </td>
-								<td> {{$user->email}} </td>
-								<td> {{$user->port}} </td>
-								<td>
-									@if ($user->status > 0)
-										<span class="badge badge-lg badge-success">正常</span>
-									@elseif ($user->status < 0)
-										<span class="badge badge-lg badge-danger">禁用</span>
-									@else
-										<span class="badge badge-lg badge-default">未激活</span>
-									@endif
-								</td>
-								<td>
-									@if ($user->enable)
-										<span class="badge badge-lg badge-success">启用</span>
-									@else
-										<span class="badge badge-lg badge-danger">禁用</span>
-									@endif
-								</td>
-								<td>
-									@if(!$user->onlineIPList->isEmpty())
-										<table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
-											<thead>
+							<td> {{$user->id}} </td>
+							<td> {{$user->email}} </td>
+							<td> {{$user->port}} </td>
+							<td>
+								@if ($user->status > 0)
+									<span class="badge badge-lg badge-success">正常</span>
+								@elseif ($user->status < 0)
+									<span class="badge badge-lg badge-danger">禁用</span>
+								@else
+									<span class="badge badge-lg badge-default">未激活</span>
+								@endif
+							</td>
+							<td>
+								@if ($user->enable)
+									<span class="badge badge-lg badge-success">启用</span>
+								@else
+									<span class="badge badge-lg badge-danger">禁用</span>
+								@endif
+							</td>
+							<td>
+								@if(!$user->onlineIPList->isEmpty())
+									<table class="text-md-center" data-toggle="table" data-mobile-responsive="true">
+										<thead>
+										<tr>
+											<th> 时间</th>
+											<th> 节点</th>
+											<th> 类型</th>
+											<th> IP</th>
+										</tr>
+										</thead>
+										<tbody>
+										@foreach($user->onlineIPList as $vo)
 											<tr>
-												<th> 时间</th>
-												<th> 节点</th>
-												<th> 类型</th>
-												<th> IP</th>
+												<td>{{$vo->created_at}}</td>
+												<td>{{$vo->node ? $vo->node->name : '【节点已删除】'}}</td>
+												<td>{{$vo->type}}</td>
+												<td>
+													<a href="https://www.ipip.net/ip/{{$vo->ip}}.html" target="_blank">{{$vo->ip}}</a>
+												</td>
 											</tr>
-											</thead>
-											<tbody>
-											@foreach($user->onlineIPList as $vo)
-												<tr>
-													<td>{{$vo->created_at}}</td>
-													<td>{{$vo->node ? $vo->node->name : '【节点已删除】'}}</td>
-													<td>{{$vo->type}}</td>
-													<td>
-														<a href="https://www.ipip.net/ip/{{$vo->ip}}.html" target="_blank">{{$vo->ip}}</a>
-													</td>
-												</tr>
-											@endforeach
-											</tbody>
-										</table>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+										@endforeach
+										</tbody>
+									</table>
+								@endif
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 22 - 28
resources/views/admin/userTrafficLogList.blade.php → resources/views/admin/logs/userTrafficLogList.blade.php

@@ -31,37 +31,31 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="7">暂无数据</td>
-						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td>
-									@if(empty($vo->user))
-										【账号已删除】
+							<td> {{$vo->id}} </td>
+							<td>
+								@if(empty($vo->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userTrafficLogList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
+								@endif
+							</td>
+							<td>
+								@if ($vo->order_id)
+									@if($vo->order)
+										<a href="/admin/orderList?oid={{$vo->order_id}}">{{$vo->order->goods->name}}</a>
 									@else
-										<a href="/admin/userTrafficLogList?email={{$vo->user->email}}"> {{$vo->user->email}} </a>
-									@endif
-								</td>
-								<td>
-									@if ($vo->order_id)
-										@if($vo->order)
-											<a href="/admin/orderList?oid={{$vo->order_id}}">{{$vo->order->goods->name}}</a>
-										@else
-											【订单已删除】
-										@endif
+										【订单已删除】
 									@endif
-								</td>
-								<td> {{$vo->before}} </td>
-								<td> {{$vo->after}} </td>
-								<td> {{$vo->desc}} </td>
-								<td> {{$vo->created_at}} </td>
-							</tr>
-						@endforeach
-					@endif
+								@endif
+							</td>
+							<td> {{$vo->before}} </td>
+							<td> {{$vo->after}} </td>
+							<td> {{$vo->desc}} </td>
+							<td> {{$vo->created_at}} </td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 8 - 14
resources/views/marketing/emailList.blade.php → resources/views/admin/marketing/emailList.blade.php

@@ -38,22 +38,16 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if ($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->title}} </td>
+							<td> {{$vo->content}} </td>
+							<td> {{$vo->status_label}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td> {{$vo->error}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->title}} </td>
-								<td> {{$vo->content}} </td>
-								<td> {{$vo->status_label}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td> {{$vo->error}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 8 - 14
resources/views/marketing/pushList.blade.php → resources/views/admin/marketing/pushList.blade.php

@@ -44,22 +44,16 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if ($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->title}} </td>
+							<td> {{$vo->content}} </td>
+							<td> {{$vo->status_label}} </td>
+							<td> {{$vo->created_at}} </td>
+							<td> {{$vo->error}} </td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->title}} </td>
-								<td> {{$vo->content}} </td>
-								<td> {{$vo->status_label}} </td>
-								<td> {{$vo->created_at}} </td>
-								<td> {{$vo->error}} </td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/addNode.blade.php → resources/views/admin/node/addNode.blade.php


+ 0 - 0
resources/views/admin/editNode.blade.php → resources/views/admin/node/editNode.blade.php


+ 2 - 6
resources/views/admin/nodeList.blade.php → resources/views/admin/node/nodeList.blade.php

@@ -35,7 +35,7 @@
 					</tr>
 					</thead>
 					<tbody>
-					@forelse($nodeList as $node)
+					@foreach($nodeList as $node)
 						<tr class="{{!$node->isOnline && $node->status ? 'table-danger' : ''}}">
 							<td>
 								{{$node->id}}
@@ -70,11 +70,7 @@
 								</div>
 							</td>
 						</tr>
-					@empty
-						<tr>
-							<td colspan="12">暂无数据</td>
-						</tr>
-					@endforelse
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/nodeMonitor.blade.php → resources/views/admin/node/nodeMonitor.blade.php


+ 0 - 0
resources/views/sensitiveWords/addSensitiveWords.blade.php → resources/views/admin/sensitiveWords/addSensitiveWords.blade.php


+ 10 - 16
resources/views/sensitiveWords/sensitiveWordsList.blade.php → resources/views/admin/sensitiveWords/sensitiveWordsList.blade.php

@@ -24,24 +24,18 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($list->isEmpty())
+					@foreach($list as $vo)
 						<tr>
-							<td colspan="3">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->type==1? '黑':'白'}} </td>
+							<td> {{$vo->words}} </td>
+							<td>
+								<button class="btn btn-danger" onclick="delWord('{{$vo->id}}','{{$vo->words}}')">
+									<i class="icon wb-trash"></i>
+								</button>
+							</td>
 						</tr>
-					@else
-						@foreach($list as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->type==1? '黑':'白'}} </td>
-								<td> {{$vo->words}} </td>
-								<td>
-									<button class="btn btn-danger" onclick="delWord('{{$vo->id}}','{{$vo->words}}')">
-										<i class="icon wb-trash"></i>
-									</button>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/shop/addGoods.blade.php → resources/views/admin/shop/addGoods.blade.php


+ 0 - 0
resources/views/shop/editGoods.blade.php → resources/views/admin/shop/editGoods.blade.php


+ 44 - 50
resources/views/shop/goodsList.blade.php → resources/views/admin/shop/goodsList.blade.php

@@ -49,58 +49,52 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($goodsList->isEmpty())
+					@foreach($goodsList as $goods)
 						<tr>
-							<td colspan="11">暂无数据</td>
+							<td> {{$goods->id}} </td>
+							<td> {{$goods->name}} </td>
+							<td>
+								@if($goods->type == 1)
+									流量包
+								@elseif($goods->type == 2)
+									套餐
+								@else
+									充值
+								@endif
+							</td>
+							<td>
+								@if($goods->logo)
+									<a href="{{$goods->logo}}" target="_blank"><img src="{{$goods->logo}}" alt="logo" class="h-50"/></a>
+								@endif
+							</td>
+							<td> {{$goods->traffic_label}} </td>
+							<td> {{$goods->price}}元</td>
+							<td> {{$goods->sort}} </td>
+							<td>
+								@if($goods->is_hot)
+									<span class="badge badge-lg badge-danger">是</span>
+								@else
+									<span class="badge badge-lg badge-default">否</span>
+								@endif
+							</td>
+							<td>
+								{{$goods->limit_num}}
+							</td>
+							<td>
+								@if($goods->status)
+									<span class="badge badge-lg badge-success">上架</span>
+								@else
+									<span class="badge badge-lg badge-default">下架</span>
+								@endif
+							</td>
+							<td>
+								<div class="btn-group">
+									<a href="/shop/editGoods/{{$goods->id}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
+									<button class="btn btn-danger" onclick="delGoods('{{$goods->id}}','{{$goods->name}}')"><i class="icon wb-trash"></i></button>
+								</div>
+							</td>
 						</tr>
-					@else
-						@foreach($goodsList as $goods)
-							<tr>
-								<td> {{$goods->id}} </td>
-								<td> {{$goods->name}} </td>
-								<td>
-									@if($goods->type == 1)
-										流量包
-									@elseif($goods->type == 2)
-										套餐
-									@else
-										充值
-									@endif
-								</td>
-								<td>
-									@if($goods->logo)
-										<a href="{{$goods->logo}}" target="_blank"><img src="{{$goods->logo}}" alt="logo" class="h-50"/></a>
-									@endif
-								</td>
-								<td> {{$goods->traffic_label}} </td>
-								<td> {{$goods->price}}元</td>
-								<td> {{$goods->sort}} </td>
-								<td>
-									@if($goods->is_hot)
-										<span class="badge badge-lg badge-danger">是</span>
-									@else
-										<span class="badge badge-lg badge-default">否</span>
-									@endif
-								</td>
-								<td>
-									{{$goods->limit_num}}
-								</td>
-								<td>
-									@if($goods->status)
-										<span class="badge badge-lg badge-success">上架</span>
-									@else
-										<span class="badge badge-lg badge-default">下架</span>
-									@endif
-								</td>
-								<td>
-									<div class="btn-group">
-										<a href="/shop/editGoods/{{$goods->id}}" class="btn btn-primary"><i class="icon wb-edit"></i></a>
-										<button class="btn btn-danger" onclick="delGoods('{{$goods->id}}','{{$goods->name}}')"><i class="icon wb-trash"></i></button>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 15 - 21
resources/views/subscribe/deviceList.blade.php → resources/views/admin/subscribe/deviceList.blade.php

@@ -35,29 +35,23 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($deviceList->isEmpty())
+					@foreach($deviceList as $vo)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td> {{$vo->id}} </td>
+							<td> {{$vo->name}} </td>
+							<td> {!! $vo->type_label !!} </td>
+							<td> {!! $vo->platform_label !!} </td>
+							<td> {{$vo->header}} </td>
+							<td>
+								@if($vo->status == 0)
+									<button class="btn btn-sm btn-outline-success" onclick="setDeviceStatus('{{$vo->id}}', '1')">启用</button>
+								@endif
+								@if($vo->status == 1)
+									<button class="btn btn-sm btn-outline-danger" onclick="setDeviceStatus('{{$vo->id}}', '0')">禁用</button>
+								@endif
+							</td>
 						</tr>
-					@else
-						@foreach($deviceList as $vo)
-							<tr>
-								<td> {{$vo->id}} </td>
-								<td> {{$vo->name}} </td>
-								<td> {!! $vo->type_label !!} </td>
-								<td> {!! $vo->platform_label !!} </td>
-								<td> {{$vo->header}} </td>
-								<td>
-									@if($vo->status == 0)
-										<button class="btn btn-sm btn-outline-success" onclick="setDeviceStatus('{{$vo->id}}', '1')">启用</button>
-									@endif
-									@if($vo->status == 1)
-										<button class="btn btn-sm btn-outline-danger" onclick="setDeviceStatus('{{$vo->id}}', '0')">禁用</button>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 25 - 31
resources/views/subscribe/subscribeList.blade.php → resources/views/admin/subscribe/subscribeList.blade.php

@@ -42,39 +42,33 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($subscribeList->isEmpty())
+					@foreach($subscribeList as $subscribe)
 						<tr>
-							<td colspan="8">暂无数据</td>
+							<td> {{$subscribe->id}} </td>
+							<td>
+								@if(empty($subscribe->user))
+									【账号已删除】
+								@else
+									<a href="/admin/userList?id={{$subscribe->user->id}}" target="_blank">{{$subscribe->user->email}}</a>
+								@endif
+							</td>
+							<td> {{$subscribe->code}} </td>
+							<td>
+								<a href="/subscribe/subscribeLog?id={{$subscribe->id}}" target="_blank">{{$subscribe->times}}</a>
+							</td>
+							<td> {{$subscribe->updated_at}} </td>
+							<td> {{$subscribe->ban_time > 0 ? date('Y-m-d H:i', $subscribe->ban_time): ''}} </td>
+							<td> {{$subscribe->ban_desc}} </td>
+							<td>
+								@if($subscribe->status == 0)
+									<button class="btn btn-sm btn-outline-success" onclick="setSubscribeStatus('{{$subscribe->id}}', 1)">启用</button>
+								@endif
+								@if($subscribe->status == 1)
+									<button class="btn btn-sm btn-outline-danger" onclick="setSubscribeStatus('{{$subscribe->id}}', 0)">禁用</button>
+								@endif
+							</td>
 						</tr>
-					@else
-						@foreach($subscribeList as $subscribe)
-							<tr>
-								<td> {{$subscribe->id}} </td>
-								<td>
-									@if(empty($subscribe->user))
-										【账号已删除】
-									@else
-										<a href="/admin/userList?id={{$subscribe->user->id}}" target="_blank">{{$subscribe->user->email}}</a>
-									@endif
-								</td>
-								<td> {{$subscribe->code}} </td>
-								<td>
-									<a href="/subscribe/subscribeLog?id={{$subscribe->id}}" target="_blank">{{$subscribe->times}}</a>
-								</td>
-								<td> {{$subscribe->updated_at}} </td>
-								<td> {{$subscribe->ban_time > 0 ? date('Y-m-d H:i', $subscribe->ban_time): ''}} </td>
-								<td> {{$subscribe->ban_desc}} </td>
-								<td>
-									@if($subscribe->status == 0)
-										<button class="btn btn-sm btn-outline-success" onclick="setSubscribeStatus('{{$subscribe->id}}', 1)">启用</button>
-									@endif
-									@if($subscribe->status == 1)
-										<button class="btn btn-sm btn-outline-danger" onclick="setSubscribeStatus('{{$subscribe->id}}', 0)">禁用</button>
-									@endif
-								</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 7 - 13
resources/views/subscribe/subscribeLog.blade.php → resources/views/admin/subscribe/subscribeLog.blade.php

@@ -20,21 +20,15 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($subscribeLog->isEmpty())
+					@foreach($subscribeLog as $subscribe)
 						<tr>
-							<td colspan="6">暂无数据</td>
+							<td>{{$subscribe->id}}</td>
+							<td>{{empty($subscribe->user) ? '用户已删除' : $subscribe->user[0]->email}}</td>
+							<td>{{$subscribe->request_ip}}</td>
+							<td>{{$subscribe->request_time}}</td>
+							<td>{{$subscribe->request_header}}</td>
 						</tr>
-					@else
-						@foreach($subscribeLog as $subscribe)
-							<tr>
-								<td>{{$subscribe->id}}</td>
-								<td>{{empty($subscribe->user) ? '用户已删除' : $subscribe->user[0]->email}}</td>
-								<td>{{$subscribe->request_ip}}</td>
-								<td>{{$subscribe->request_time}}</td>
-								<td>{{$subscribe->request_header}}</td>
-							</tr>
-						@endforeach
-					@endif
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/ticket/addTicket.blade.php → resources/views/admin/ticket/addTicket.blade.php


+ 0 - 0
resources/views/ticket/replyTicket.blade.php → resources/views/admin/ticket/replyTicket.blade.php


+ 17 - 23
resources/views/ticket/ticketList.blade.php → resources/views/admin/ticket/ticketList.blade.php

@@ -33,31 +33,25 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if($ticketList->isEmpty())
+					@foreach($ticketList as $ticket)
 						<tr>
-							<td colspan="4">暂无数据</td>
-						</tr>
-					@else
-						@foreach($ticketList as $ticket)
-							<tr>
-								<td> {{$ticket->id}} </td>
-								<td>
-									@if(!$ticket->user)
-										【账号已删除】
-									@else
-										<a href="/admin/userList?id={{$ticket->user->id}}" target="_blank">{{$ticket->user->email}}</a>
-									@endif
-								</td>
+							<td> {{$ticket->id}} </td>
+							<td>
+								@if(!$ticket->user)
+									【账号已删除】
+								@else
+									<a href="/admin/userList?id={{$ticket->user->id}}" target="_blank">{{$ticket->user->email}}</a>
+								@endif
+							</td>
 
-								<td>
-									<a href="/ticket/replyTicket?id={{$ticket->id}}" target="_blank">{{$ticket->title}}</a>
-								</td>
-								<td>
-									{!!$ticket->status_label!!}
-								</td>
-							</tr>
-						@endforeach
-					@endif
+							<td>
+								<a href="/ticket/replyTicket?id={{$ticket->id}}" target="_blank">{{$ticket->title}}</a>
+							</td>
+							<td>
+								{!!$ticket->status_label!!}
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/admin/addUser.blade.php → resources/views/admin/user/addUser.blade.php


+ 0 - 0
resources/views/admin/editUser.blade.php → resources/views/admin/user/editUser.blade.php


+ 49 - 55
resources/views/admin/userList.blade.php → resources/views/admin/user/userList.blade.php

@@ -84,62 +84,56 @@
 					</tr>
 					</thead>
 					<tbody>
-					@if ($userList->isEmpty())
-						<tr>
-							<td colspan="11">暂无数据</td>
-						</tr>
-					@else
-						@foreach ($userList as $user)
-							<tr class="{{$user->trafficWarning ? ' table-danger' : ''}}">
-								<td> {{$user->id}} </td>
-								<td> {{$user->email}} </td>
-								<td> {{$user->balance}} </td>
-								<td>
-									{!!$user->port? : '<span class="badge badge-lg badge-danger"> 未分配 </span>'!!}
-								</td>
-								<td>
-									<a href="javascript:" class="copySubscribeLink" data-clipboard-action="copy" data-clipboard-text="{{$user->link}}">{{$user->subscribe->code}}</a>
-								</td>
-								<td> {{$user->used_flow}} / {{$user->transfer_enable}} </td>
-								<td> {{$user->t? date('Y-m-d H:i', $user->t): '未使用'}} </td>
+					@foreach ($userList as $user)
+						<tr class="{{$user->trafficWarning ? ' table-danger' : ''}}">
+							<td> {{$user->id}} </td>
+							<td> {{$user->email}} </td>
+							<td> {{$user->balance}} </td>
+							<td>
+								{!!$user->port? : '<span class="badge badge-lg badge-danger"> 未分配 </span>'!!}
+							</td>
+							<td>
+								<a href="javascript:" class="copySubscribeLink" data-clipboard-action="copy" data-clipboard-text="{{$user->link}}">{{$user->subscribe->code}}</a>
+							</td>
+							<td> {{$user->used_flow}} / {{$user->transfer_enable}} </td>
+							<td> {{$user->t? date('Y-m-d H:i', $user->t): '未使用'}} </td>
 
-								<td>
-									@if ($user->expireWarning == '-1')
-										<span class="badge badge-lg badge-danger"> {{$user->expire_time}} </span>
-									@elseif ($user->expireWarning == '0')
-										<span class="badge badge-lg badge-warning"> {{$user->expire_time}} </span>
-									@elseif ($user->expireWarning == '1')
-										<span class="badge badge-lg badge-default"> {{$user->expire_time}} </span>
-									@else
-										{{$user->expire_time}}
-									@endif
-								</td>
-								<td>
-									@if ($user->status > 0)
-										<span class="badge badge-lg badge-primary"><i class="wb-check" aria-hidden="true"></i></span>
-									@elseif ($user->status < 0)
-										<span class="badge badge-lg badge-danger"><i class="wb-close" aria-hidden="true"></i></span>
-									@else
-										<span class="badge badge-lg badge-default"><i class="wb-minus" aria-hidden="true"></i></span>
-									@endif
-								</td>
-								<td>
-									<span class="badge badge-lg badge-{{$user->enable?'info':'danger'}}"><i class="wb-{{$user->enable?'check':'close'}}" aria-hidden="true"></i></span>
-								</td>
-								<td>
-									<div class="btn-group">
-										<a href="/admin/editUser/{{$user->id}}{{Request::getQueryString()? '?'.Request::getQueryString() : ''}}" class="btn btn-primary"><i class="icon wb-edit" aria-hidden="true"></i></a>
-										<a href="javascript:delUser('{{$user->id}}','{{$user->email}}');" class="btn btn-danger"><i class="icon wb-trash" aria-hidden="true"></i></a>
-										<a href="/admin/export/{{$user->id}}" class="btn btn-primary"><i class="icon wb-code" aria-hidden="true"></i></a>
-										<a href="/admin/userMonitor/{{$user->id}}" class="btn btn-primary"><i class="icon wb-stats-bars" aria-hidden="true"></i></a>
-										<a href="/admin/onlineIPMonitor?id={{$user->id}}" class="btn btn-primary"><i class="icon wb-cloud" aria-hidden="true"></i></a>
-										<a href="javascript:resetTraffic('{{$user->id}}','{{$user->email}}');" class="btn btn-primary"><i class="icon wb-reload" aria-hidden="true"></i></a>
-										<a href="javascript:switchToUser('{{$user->id}}');" class="btn btn-primary"><i class="icon wb-user" aria-hidden="true"></i></a>
-									</div>
-								</td>
-							</tr>
-						@endforeach
-					@endif
+							<td>
+								@if ($user->expireWarning == '-1')
+									<span class="badge badge-lg badge-danger"> {{$user->expire_time}} </span>
+								@elseif ($user->expireWarning == '0')
+									<span class="badge badge-lg badge-warning"> {{$user->expire_time}} </span>
+								@elseif ($user->expireWarning == '1')
+									<span class="badge badge-lg badge-default"> {{$user->expire_time}} </span>
+								@else
+									{{$user->expire_time}}
+								@endif
+							</td>
+							<td>
+								@if ($user->status > 0)
+									<span class="badge badge-lg badge-primary"><i class="wb-check" aria-hidden="true"></i></span>
+								@elseif ($user->status < 0)
+									<span class="badge badge-lg badge-danger"><i class="wb-close" aria-hidden="true"></i></span>
+								@else
+									<span class="badge badge-lg badge-default"><i class="wb-minus" aria-hidden="true"></i></span>
+								@endif
+							</td>
+							<td>
+								<span class="badge badge-lg badge-{{$user->enable?'info':'danger'}}"><i class="wb-{{$user->enable?'check':'close'}}" aria-hidden="true"></i></span>
+							</td>
+							<td>
+								<div class="btn-group">
+									<a href="/admin/editUser/{{$user->id}}{{Request::getQueryString()? '?'.Request::getQueryString() : ''}}" class="btn btn-primary"><i class="icon wb-edit" aria-hidden="true"></i></a>
+									<a href="javascript:delUser('{{$user->id}}','{{$user->email}}');" class="btn btn-danger"><i class="icon wb-trash" aria-hidden="true"></i></a>
+									<a href="/admin/export/{{$user->id}}" class="btn btn-primary"><i class="icon wb-code" aria-hidden="true"></i></a>
+									<a href="/admin/userMonitor/{{$user->id}}" class="btn btn-primary"><i class="icon wb-stats-bars" aria-hidden="true"></i></a>
+									<a href="/admin/onlineIPMonitor?id={{$user->id}}" class="btn btn-primary"><i class="icon wb-cloud" aria-hidden="true"></i></a>
+									<a href="javascript:resetTraffic('{{$user->id}}','{{$user->email}}');" class="btn btn-primary"><i class="icon wb-reload" aria-hidden="true"></i></a>
+									<a href="javascript:switchToUser('{{$user->id}}');" class="btn btn-primary"><i class="icon wb-user" aria-hidden="true"></i></a>
+								</div>
+							</td>
+						</tr>
+					@endforeach
 					</tbody>
 				</table>
 			</div>

+ 0 - 0
resources/views/docs/aup.blade.php → resources/views/auth/docs/aup.blade.php


+ 0 - 0
resources/views/docs/tos.blade.php → resources/views/auth/docs/tos.blade.php


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

@@ -132,7 +132,7 @@
 					<h4 class="modal-title">{{\App\Components\Helpers::systemConfig()['website_name']}} - {{trans('auth.tos')}} <small>2019年11月28日10:49</small></h4>
 				</div>
 				<div class="modal-body">
-					@include('docs.tos')
+					@include('auth.docs.tos')
 				</div>
 				<div class="modal-footer">
 					<button type="button" class="btn btn-block bg-red-500 text-white mb-25" data-dismiss="modal">{{trans('auth.close')}}</button>
@@ -150,7 +150,7 @@
 					<h4 class="modal-title">{{\App\Components\Helpers::systemConfig()['website_name']}} - {{trans('auth.aup')}} <small>2019年11月28日10:49</small></h4>
 				</div>
 				<div class="modal-body">
-					@include('docs.aup')
+					@include('auth.docs.aup')
 				</div>
 				<div class="modal-footer">
 					<button type="button" class="btn btn-block bg-red-500 text-white mb-25" data-dismiss="modal">{{trans('auth.close')}}</button>

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

@@ -170,7 +170,7 @@
 					<span class="site-menu-title">{{trans('home.invoices')}}</span>
 				</a>
 			</li>
-			@if(!\App\Http\Models\Order::uid()->whereStatus(2)->where('is_expire', 0)->where('origin_amount', '>', 0)->doesntExist())
+			@if(\App\Http\Models\Order::uid()->whereStatus(2)->exists() || \App\Http\Models\ReferralLog::uid()->exists())
 				@if(\App\Components\Helpers::systemConfig()['is_invite_register'])
 					<li class="site-menu-item {{in_array(Request::path(), ['invite']) ? 'active open' : ''}}">
 						<a href="/invite">
@@ -179,7 +179,7 @@
 						</a>
 					</li>
 				@endif
-				@if((\App\Components\Helpers::systemConfig()['referral_status']) )
+				@if((\App\Components\Helpers::systemConfig()['referral_status']))
 					<li class="site-menu-item {{in_array(Request::path(), ['referral']) ? 'active open' : ''}}">
 						<a href="/referral">
 							<i class="site-menu-icon wb-star-outline" aria-hidden="true"></i>

+ 1 - 1
resources/views/payment/detail.blade.php → resources/views/user/payment.blade.php

@@ -42,7 +42,7 @@
 @endsection
 @section('script')
 	<script type="text/javascript">
-		// 检查支付单状态
+        // 检查支付单状态
         const r = window.setInterval(function () {
             $.ajax({
                 type: 'GET',

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

@@ -142,7 +142,7 @@
 									@endif
 								</div>
 							</div>
-							@endif
+						@endif
 						<div class="form-group row" id="charge_coupon_code">
 							<label for="charge_coupon" class="offset-md-2 col-md-2 col-form-label"> {{trans('home.coupon_code')}} </label>
 							<div class="col-md-6">
@@ -184,13 +184,13 @@
         $(document).ready(function () {
             itemControl(parseInt($('#charge_type').val()))
             let which_selected;
-	        @if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
+			@if(\App\Components\Helpers::systemConfig()['is_onlinePay'])
                 which_selected = 1;
-	        @elseif(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'])
+			@elseif(\App\Components\Helpers::systemConfig()['alipay_qrcode'] || \App\Components\Helpers::systemConfig()['wechat_qrcode'])
                 which_selected = 2;
-	        @else
+			@else
                 which_selected = 3
-	        @endif
+			@endif
 
             $('charge_type').val(which_selected)
         });

+ 50 - 40
routes/web.php

@@ -1,6 +1,6 @@
 <?php
 
-Route::get('s/{code}', 'SubscribeController@getSubscribeByCode'); // 节点订阅地址
+Route::get('s/{code}', 'User\SubscribeController@getSubscribeByCode'); // 节点订阅地址
 
 Route::group(['middleware' => ['isForbidden', 'affiliate', 'isMaintenance']], function(){
 	Route::get('lang/{locale}', 'AuthController@switchLang'); // 语言切换
@@ -51,9 +51,6 @@ Route::group(['middleware' => ['isForbidden', 'isAdminLogin', 'isAdmin']], funct
 		Route::get('inviteList', 'AdminController@inviteList'); // 邀请码列表
 		Route::post('makeInvite', 'AdminController@makeInvite'); // 生成邀请码
 		Route::get('exportInvite', 'AdminController@exportInvite'); // 导出邀请码
-		Route::get('applyList', 'AdminController@applyList'); // 提现申请列表
-		Route::get('applyDetail', 'AdminController@applyDetail'); // 提现申请详情
-		Route::post('setApplyStatus', 'AdminController@setApplyStatus'); // 设置提现申请状态
 		Route::any('config', 'AdminController@config'); // 配置列表
 		Route::any('addConfig', 'AdminController@addConfig'); // 添加配置
 		Route::post('delConfig', 'AdminController@delConfig'); // 删除配置
@@ -69,7 +66,6 @@ Route::group(['middleware' => ['isForbidden', 'isAdminLogin', 'isAdmin']], funct
 		Route::post('setConfig', 'AdminController@setConfig'); // 设置某个配置项
 		Route::get('userBalanceLogList', 'AdminController@userBalanceLogList'); // 余额变动记录
 		Route::get('userTrafficLogList', 'AdminController@userTrafficLogList'); // 流量变动记录
-		Route::get('userRebateList', 'AdminController@userRebateList'); // 返利流水记录
 		Route::get('userBanLogList', 'AdminController@userBanLogList'); // 用户封禁记录
 		Route::get('userOnlineIPList', 'AdminController@userOnlineIPList'); // 用户在线IP记录
 		Route::any('export/{id}', 'AdminController@export'); // 导出(查看)配置信息
@@ -88,47 +84,58 @@ Route::group(['middleware' => ['isForbidden', 'isAdminLogin', 'isAdmin']], funct
 		Route::post('sendTestNotification', 'AdminController@sendTestNotification'); //推送通知测试
 		Route::any('profile', 'AdminController@profile'); // 修改个人信息
 		Route::get('makePort', 'AdminController@makePort'); // 生成端口
-	});
 
-	Route::group(['prefix' => 'ticket'], function(){
-		Route::get('ticketList', 'TicketController@ticketList'); // 工单列表
-		Route::any('replyTicket', 'TicketController@replyTicket'); // 回复工单
-		Route::post('closeTicket', 'TicketController@closeTicket'); // 关闭工单
+		//返利相关
+		Route::group(['namespace' => 'Admin'], function(){
+			Route::get('affList', 'AffiliateController@affiliateList'); // 提现申请列表
+			Route::get('affDetail', 'AffiliateController@affiliateDetail'); // 提现申请详情
+			Route::post('setAffStatus', 'AffiliateController@setAffiliateStatus'); // 设置提现申请状态
+			Route::get('userRebateList', 'AffiliateController@userRebateList'); // 返利流水记录
+		});
 	});
 
-	Route::group(['prefix' => 'coupon'], function(){
-		Route::any('couponList', 'CouponController@couponList'); // 优惠券列表
-		Route::any('addCoupon', 'CouponController@addCoupon'); // 添加优惠券
-		Route::post('delCoupon', 'CouponController@delCoupon'); // 删除优惠券
-		Route::get('exportCoupon', 'CouponController@exportCoupon'); // 导出优惠券
-	});
+	Route::group(['namespace' => 'Admin'], function(){
+		Route::group(['prefix' => 'ticket'], function(){
+			Route::get('ticketList', 'TicketController@ticketList'); // 工单列表
+			Route::any('replyTicket', 'TicketController@replyTicket'); // 回复工单
+			Route::post('closeTicket', 'TicketController@closeTicket'); // 关闭工单
+		});
 
-	Route::group(['prefix' => 'shop'], function(){
-		Route::any('goodsList', 'ShopController@goodsList'); // 商品列表
-		Route::any('addGoods', 'ShopController@addGoods'); // 添加商品
-		Route::any('editGoods/{id}', 'ShopController@editGoods'); // 编辑商品
-		Route::post('delGoods', 'ShopController@delGoods'); // 删除商品
-	});
+		Route::group(['prefix' => 'coupon'], function(){
+			Route::any('couponList', 'CouponController@couponList'); // 优惠券列表
+			Route::any('addCoupon', 'CouponController@addCoupon'); // 添加优惠券
+			Route::post('delCoupon', 'CouponController@delCoupon'); // 删除优惠券
+			Route::get('exportCoupon', 'CouponController@exportCoupon'); // 导出优惠券
+		});
 
-	Route::group(['prefix' => 'subscribe'], function(){
-		Route::get('subscribeList', 'SubscribeController@subscribeList'); // 订阅码列表
-		Route::get('subscribeLog', 'SubscribeController@subscribeLog'); // 订阅码记录
-		Route::get('deviceList', 'SubscribeController@deviceList'); // 订阅设备列表
-		Route::post('setSubscribeStatus', 'SubscribeController@setSubscribeStatus'); // 启用禁用用户的订阅
-		Route::post('setDeviceStatus', 'SubscribeController@setDeviceStatus'); // 是否允许设备订阅
-	});
+		Route::group(['prefix' => 'shop'], function(){
+			Route::any('goodsList', 'ShopController@goodsList'); // 商品列表
+			Route::any('addGoods', 'ShopController@addGoods'); // 添加商品
+			Route::any('editGoods/{id}', 'ShopController@editGoods'); // 编辑商品
+			Route::post('delGoods', 'ShopController@delGoods'); // 删除商品
+		});
 
-	Route::group(['prefix' => 'marketing'], function(){
-		Route::get("marketing/emailList", "MarketingController@emailList"); // 邮件消息列表
-		Route::get("marketing/pushList", "MarketingController@pushList"); // 推送消息列表
-		Route::post("marketing/addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
-	});
+		Route::group(['prefix' => 'subscribe'], function(){
+			Route::get('subscribeList', 'SubscribeController@subscribeList'); // 订阅码列表
+			Route::get('subscribeLog', 'SubscribeController@subscribeLog'); // 订阅码记录
+			Route::get('deviceList', 'SubscribeController@deviceList'); // 订阅设备列表
+			Route::post('setSubscribeStatus', 'SubscribeController@setSubscribeStatus'); // 启用禁用用户的订阅
+			Route::post('setDeviceStatus', 'SubscribeController@setDeviceStatus'); // 是否允许设备订阅
+		});
 
-	Route::group(['prefix' => 'sensitiveWords'], function(){
-		Route::get("list", "SensitiveWordsController@sensitiveWordslist"); // 敏感词列表
-		Route::post("add", "SensitiveWordsController@addSensitiveWords"); // 添加敏感词
-		Route::post("del", "SensitiveWordsController@delSensitiveWords"); // 删除敏感词
+		Route::group(['prefix' => 'marketing'], function(){
+			Route::get("emailList", "MarketingController@emailList"); // 邮件消息列表
+			Route::get("pushList", "MarketingController@pushList"); // 推送消息列表
+			Route::post("addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
+		});
+
+		Route::group(['prefix' => 'sensitiveWords'], function(){
+			Route::get("list", "SensitiveWordsController@sensitiveWordslist"); // 敏感词列表
+			Route::post("add", "SensitiveWordsController@addSensitiveWords"); // 添加敏感词
+			Route::post("del", "SensitiveWordsController@delSensitiveWords"); // 删除敏感词
+		});
 	});
+
 	Route::get("payment/callbackList", "PaymentController@callbackList"); // 支付回调日志
 	Route::get('logs', '\Rap2hpoutre\LaravelLogViewer\LogViewerController@index'); // 系统运行日志
 });
@@ -153,12 +160,15 @@ Route::group(['middleware' => ['isForbidden', 'isMaintenance', 'isLogin']], func
 	Route::get('invite', 'UserController@invite'); // 邀请码
 	Route::post('makeInvite', 'UserController@makeInvite'); // 生成邀请码
 	Route::any('profile', 'UserController@profile'); // 修改个人信息
-	Route::get('referral', 'UserController@referral'); // 推广返利
-	Route::post('extractMoney', 'UserController@extractMoney'); // 申请提现
 	Route::post("switchToAdmin", "UserController@switchToAdmin"); // 转换成管理员的身份
 	Route::post("charge", "UserController@charge"); // 卡券余额充值
 	Route::get("help", "UserController@help"); // 帮助中心
 
+	Route::group(['namespace' => 'User'], function(){
+		Route::get('referral', 'AffiliateController@referral'); // 推广返利
+		Route::post('extractMoney', 'AffiliateController@extractMoney'); // 申请提现
+	});
+
 	Route::group(['prefix' => 'payment'], function(){
 		Route::post('purchase', 'PaymentController@purchase'); // 创建支付
 		Route::get('getStatus', 'PaymentController@getStatus'); // 获取支付单状态