bingo 7 лет назад
Родитель
Сommit
0cdac07fd0
37 измененных файлов с 565 добавлено и 366 удалено
  1. 161 0
      app/Components/Namesilo.php
  2. 15 22
      app/Http/Controllers/AdminController.php
  3. 1 8
      app/Http/Controllers/Api/LoginController.php
  4. 32 42
      app/Http/Controllers/Api/V2rayController.php
  5. 2 9
      app/Http/Controllers/Api/YzyController.php
  6. 7 0
      app/Http/Controllers/Controller.php
  7. 11 18
      app/Http/Controllers/LoginController.php
  8. 2 11
      app/Http/Controllers/MarketingController.php
  9. 0 0
      app/Http/Controllers/Mu/v2ray/NodeController.php
  10. 0 0
      app/Http/Controllers/Mu/v2ray/UserController.php
  11. 6 13
      app/Http/Controllers/PaymentController.php
  12. 25 39
      app/Http/Controllers/RegisterController.php
  13. 1 8
      app/Http/Controllers/SubscribeController.php
  14. 5 12
      app/Http/Controllers/TicketController.php
  15. 90 97
      app/Http/Controllers/UserController.php
  16. 1 0
      app/Http/Kernel.php
  17. 3 2
      app/Http/Middleware/Admin.php
  18. 28 0
      app/Http/Middleware/Affiliate.php
  19. 2 1
      app/Http/Middleware/Forbidden.php
  20. 10 7
      app/Http/Middleware/Muv2.php
  21. 4 3
      app/Http/Middleware/RedirectIfAuthenticated.php
  22. 2 1
      app/Http/Middleware/User.php
  23. 1 1
      app/Http/Middleware/VerifyCsrfToken.php
  24. 5 1
      resources/lang/en/home.php
  25. 5 1
      resources/lang/ja/home.php
  26. 5 1
      resources/lang/ko/home.php
  27. 6 2
      resources/lang/zh-CN/home.php
  28. 6 2
      resources/lang/zh-tw/home.php
  29. 11 0
      resources/views/403.blade.php
  30. 11 0
      resources/views/404.blade.php
  31. 1 1
      resources/views/admin/decompile.blade.php
  32. 11 0
      resources/views/admin/layouts.blade.php
  33. 9 58
      resources/views/login.blade.php
  34. 12 0
      resources/views/register.blade.php
  35. 11 0
      resources/views/user/layouts.blade.php
  36. 61 4
      resources/views/user/referral.blade.php
  37. 2 2
      routes/web.php

+ 161 - 0
app/Components/Namesilo.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace App\Components;
+
+use App\Http\Models\Config;
+use App\Http\Models\EmailLog;
+use LSS\XML2Array;
+use Log;
+
+class Namesilo
+{
+    protected static $config;
+
+    function __construct()
+    {
+        self::$config = $this->systemConfig();
+    }
+
+    // 列出账号下所有域名
+    public function listDomains()
+    {
+        return $this->send('listDomains');
+    }
+
+    // 列出指定域名的所有DNS记录
+    public function dnsListRecords($domain)
+    {
+        $query = [
+            'domain' => $domain
+        ];
+
+        return $this->send('dnsListRecords', $query);
+    }
+
+    // 为指定域名添加DNS记录
+    public function dnsAddRecord($domain, $host, $value, $type = 'A', $ttl = 7207)
+    {
+        $query = [
+            'domain'  => $domain,
+            'rrtype'  => $type,
+            'rrhost'  => $host,
+            'rrvalue' => $value,
+            'rrttl'   => $ttl
+        ];
+
+        return $this->send('dnsAddRecord', $query);
+    }
+
+    // 更新DNS记录
+    public function dnsUpdateRecord($domain, $id, $host, $value, $ttl = 7207)
+    {
+        $query = [
+            'domain'  => $domain,
+            'rrid'    => $id,
+            'rrhost'  => $host,
+            'rrvalue' => $value,
+            'rrttl'   => $ttl
+        ];
+
+        return $this->send('dnsUpdateRecord', $query);
+    }
+
+    // 删除DNS记录
+    public function dnsDeleteRecord($domain, $id)
+    {
+        $data = [
+            'domain' => $domain,
+            'rrid'   => $id
+        ];
+
+        return $this->send('dnsDeleteRecord', $data);
+    }
+
+    // 发送请求
+    private function send($operation, $data = [])
+    {
+        $params = [
+            'version' => 1,
+            'type'    => 'xml',
+            //'key'     => self::$config['namesilo_key']
+            'key'     => '12d47532c95c7013b1ecc9a06'
+        ];
+        $query = array_merge($params, $data);
+
+        $content = '请求操作:[' . $operation . '] --- 请求数据:[' . http_build_query($query) . ']';
+
+        try {
+            $result = $this->curlRequest('https://www.namesilo.com/api/' . $operation . '?' . http_build_query($query));
+            $result = XML2Array::createArray($result);
+
+            // 出错
+            if (empty($result['namesilo']) || $result['namesilo']['reply']['code'] != 300 || $result['namesilo']['reply']['detail'] != 'success') {
+                $this->sendEmailLog(1, '[Namesilo API] - [' . $operation . ']', $content, 0, $result['namesilo']['reply']['detail']);
+            }
+
+            return $result['namesilo']['reply'];
+        } catch (\Exception $e) {
+            Log::error('CURL请求失败:' . $e->getMessage() . ' --- ' . $e->getLine());
+            $this->sendEmailLog(1, '[Namesilo API] - [' . $operation . ']', $content, 0, $e->getMessage());
+
+            return false;
+        }
+    }
+
+    /**
+     * 写入邮件发送日志
+     *
+     * @param int    $user_id 用户ID
+     * @param string $title   标题
+     * @param string $content 内容
+     * @param int    $status  投递状态
+     * @param string $error   投递失败时记录的异常信息
+     */
+    private function sendEmailLog($user_id, $title, $content, $status = 1, $error = '')
+    {
+        $emailLogObj = new EmailLog();
+        $emailLogObj->user_id = $user_id;
+        $emailLogObj->title = $title;
+        $emailLogObj->content = $content;
+        $emailLogObj->status = $status;
+        $emailLogObj->error = $error;
+        $emailLogObj->created_at = date('Y-m-d H:i:s');
+        $emailLogObj->save();
+    }
+
+    // 系统配置
+    private function systemConfig()
+    {
+        $config = Config::query()->get();
+        $data = [];
+        foreach ($config as $vo) {
+            $data[$vo->name] = $vo->value;
+        }
+
+        return $data;
+    }
+
+    // 发起一个CURL请求
+    private function curlRequest($url, $data = null)
+    {
+        $ch = curl_init();
+        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+        curl_setopt($ch, CURLOPT_TIMEOUT, 500);
+        // 为保证第三方服务器与微信服务器之间数据传输的安全性,所有微信接口采用https方式调用,必须使用下面2行代码打开ssl安全校验。
+        // 如果在部署过程中代码在此处验证失败,请到 http://curl.haxx.se/ca/cacert.pem 下载新的证书判别文件。
+        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
+        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
+        curl_setopt($ch, CURLOPT_URL, $url);
+
+        // 如果data有数据,则用POST请求
+        if ($data) {
+            curl_setopt($ch, CURLOPT_POST, 1);
+            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+        }
+
+        $res = curl_exec($ch);
+        curl_close($ch);
+
+        return $res;
+    }
+}

+ 15 - 22
app/Http/Controllers/AdminController.php

@@ -38,24 +38,17 @@ use DB;
 
 
 class AdminController extends Controller
 class AdminController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     public function index(Request $request)
     public function index(Request $request)
     {
     {
-        $past = strtotime(date('Y-m-d', strtotime("-" . self::$config['expire_days'] . " days")));
+        $past = strtotime(date('Y-m-d', strtotime("-" . $this->systemConfig['expire_days'] . " days")));
 
 
-        $view['expireDays'] = self::$config['expire_days'];
+        $view['expireDays'] = $this->systemConfig['expire_days'];
         $view['totalUserCount'] = User::query()->count(); // 总用户数
         $view['totalUserCount'] = User::query()->count(); // 总用户数
         $view['enableUserCount'] = User::query()->where('enable', 1)->count(); // 有效用户数
         $view['enableUserCount'] = User::query()->where('enable', 1)->count(); // 有效用户数
         $view['activeUserCount'] = User::query()->where('t', '>=', $past)->count(); // 活跃用户数
         $view['activeUserCount'] = User::query()->where('t', '>=', $past)->count(); // 活跃用户数
         $view['unActiveUserCount'] = User::query()->where('t', '<=', $past)->where('enable', 1)->where('t', '>', 0)->count(); // 不活跃用户数
         $view['unActiveUserCount'] = User::query()->where('t', '<=', $past)->where('enable', 1)->where('t', '>', 0)->count(); // 不活跃用户数
         $view['onlineUserCount'] = User::query()->where('t', '>=', time() - 600)->count(); // 10分钟内在线用户数
         $view['onlineUserCount'] = User::query()->where('t', '>=', time() - 600)->count(); // 10分钟内在线用户数
-        $view['expireWarningUserCount'] = User::query()->where('expire_time', '<=', date('Y-m-d', strtotime("+" . self::$config['expire_days'] . " days")))->whereIn('status', [0, 1])->where('enable', 1)->count(); // 临近过期用户数
+        $view['expireWarningUserCount'] = User::query()->where('expire_time', '<=', date('Y-m-d', strtotime("+" . $this->systemConfig['expire_days'] . " days")))->whereIn('status', [0, 1])->where('enable', 1)->count(); // 临近过期用户数
         $view['largeTrafficUserCount'] = User::query()->whereRaw('(u + d) >= 107374182400')->whereIn('status', [0, 1])->count(); // 流量超过100G的用户
         $view['largeTrafficUserCount'] = User::query()->whereRaw('(u + d) >= 107374182400')->whereIn('status', [0, 1])->count(); // 流量超过100G的用户
 
 
         // 24小时内流量异常用户
         // 24小时内流量异常用户
@@ -63,7 +56,7 @@ class AdminController extends Controller
         $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 24 * 60 * 60))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
         $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 24 * 60 * 60))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
         if (!$userTotalTrafficList->isEmpty()) {
         if (!$userTotalTrafficList->isEmpty()) {
             foreach ($userTotalTrafficList as $vo) {
             foreach ($userTotalTrafficList as $vo) {
-                if ($vo->totalTraffic > (self::$config['traffic_ban_value'] * 1024 * 1024 * 1024)) {
+                if ($vo->totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
                     $tempUsers[] = $vo->user_id;
                     $tempUsers[] = $vo->user_id;
                 }
                 }
             }
             }
@@ -138,7 +131,7 @@ class AdminController extends Controller
 
 
         // 临近过期提醒
         // 临近过期提醒
         if ($expireWarning) {
         if ($expireWarning) {
-            $query->whereIn('status', [0, 1])->where('expire_time', '<=', date('Y-m-d', strtotime("+" . self::$config['expire_days'] . " days")));
+            $query->whereIn('status', [0, 1])->where('expire_time', '<=', date('Y-m-d', strtotime("+" . $this->systemConfig['expire_days'] . " days")));
         }
         }
 
 
         // 当前在线
         // 当前在线
@@ -148,7 +141,7 @@ class AdminController extends Controller
 
 
         // 不活跃用户
         // 不活跃用户
         if ($unActive) {
         if ($unActive) {
-            $query->where('t', '>', 0)->where('t', '<=', strtotime(date('Y-m-d', strtotime("-" . self::$config['expire_days'] . " days"))))->where('enable', 1);
+            $query->where('t', '>', 0)->where('t', '<=', strtotime(date('Y-m-d', strtotime("-" . $this->systemConfig['expire_days'] . " days"))))->where('enable', 1);
         }
         }
 
 
         // 24小时内流量异常用户
         // 24小时内流量异常用户
@@ -157,7 +150,7 @@ class AdminController extends Controller
             $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 24 * 60 * 60))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
             $userTotalTrafficList = UserTrafficHourly::query()->where('node_id', 0)->where('total', '>', 104857600)->where('created_at', '>=', date('Y-m-d H:i:s', time() - 24 * 60 * 60))->groupBy('user_id')->selectRaw("user_id, sum(total) as totalTraffic")->get(); // 只统计100M以上的记录,加快速度
             if (!$userTotalTrafficList->isEmpty()) {
             if (!$userTotalTrafficList->isEmpty()) {
                 foreach ($userTotalTrafficList as $vo) {
                 foreach ($userTotalTrafficList as $vo) {
-                    if ($vo->totalTraffic > (self::$config['traffic_ban_value'] * 1024 * 1024 * 1024)) {
+                    if ($vo->totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024)) {
                         $tempUsers[] = $vo->user_id;
                         $tempUsers[] = $vo->user_id;
                     }
                     }
                 }
                 }
@@ -174,7 +167,7 @@ class AdminController extends Controller
             // 流量异常警告
             // 流量异常警告
             $time = date('Y-m-d H:i:s', time() - 24 * 60 * 60);
             $time = date('Y-m-d H:i:s', time() - 24 * 60 * 60);
             $totalTraffic = UserTrafficHourly::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', $time)->sum('total');
             $totalTraffic = UserTrafficHourly::query()->where('user_id', $user->id)->where('node_id', 0)->where('created_at', '>=', $time)->sum('total');
-            $user->trafficWarning = $totalTraffic > (self::$config['traffic_ban_value'] * 1024 * 1024 * 1024) ? 1 : 0;
+            $user->trafficWarning = $totalTraffic > ($this->systemConfig['traffic_ban_value'] * 1024 * 1024 * 1024) ? 1 : 0;
         }
         }
 
 
         $view['userList'] = $userList;
         $view['userList'] = $userList;
@@ -247,8 +240,8 @@ class AdminController extends Controller
         } else {
         } else {
             // 生成一个可用端口
             // 生成一个可用端口
             $last_user = User::query()->orderBy('id', 'desc')->first();
             $last_user = User::query()->orderBy('id', 'desc')->first();
-            $view['last_port'] = self::$config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
-            $view['is_rand_port'] = self::$config['is_rand_port'];
+            $view['last_port'] = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+            $view['is_rand_port'] = $this->systemConfig['is_rand_port'];
             $view['method_list'] = $this->methodList();
             $view['method_list'] = $this->methodList();
             $view['protocol_list'] = $this->protocolList();
             $view['protocol_list'] = $this->protocolList();
             $view['obfs_list'] = $this->obfsList();
             $view['obfs_list'] = $this->obfsList();
@@ -267,7 +260,7 @@ class AdminController extends Controller
             for ($i = 0; $i < 5; $i++) {
             for ($i = 0; $i < 5; $i++) {
                 // 生成一个可用端口
                 // 生成一个可用端口
                 $last_user = User::query()->orderBy('id', 'desc')->first();
                 $last_user = User::query()->orderBy('id', 'desc')->first();
-                $port = self::$config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+                $port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
 
 
                 $user = new User();
                 $user = new User();
                 $user->username = '批量生成-' . makeRandStr();
                 $user->username = '批量生成-' . makeRandStr();
@@ -287,8 +280,8 @@ class AdminController extends Controller
                 $user->save();
                 $user->save();
 
 
                 // 初始化默认标签
                 // 初始化默认标签
-                if (count(self::$config['initial_labels_for_user']) > 0) {
-                    $labels = explode(',', self::$config['initial_labels_for_user']);
+                if (count($this->systemConfig['initial_labels_for_user']) > 0) {
+                    $labels = explode(',', $this->systemConfig['initial_labels_for_user']);
                     foreach ($labels as $label) {
                     foreach ($labels as $label) {
                         $userLabel = new UserLabel();
                         $userLabel = new UserLabel();
                         $userLabel->user_id = $user->id;
                         $userLabel->user_id = $user->id;
@@ -1435,7 +1428,7 @@ EOF;
     // 生成SS端口
     // 生成SS端口
     public function makePort(Request $request)
     public function makePort(Request $request)
     {
     {
-        $new_port = self::$config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+        $new_port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
         echo $new_port;
         echo $new_port;
         exit;
         exit;
     }
     }
@@ -1830,7 +1823,7 @@ EOF;
         }
         }
 
 
         // 屏蔽异常配置
         // 屏蔽异常配置
-        if (!array_key_exists($name, self::$config)) {
+        if (!array_key_exists($name, $this->systemConfig)) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '设置失败:配置不存在']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '设置失败:配置不存在']);
         }
         }
 
 

+ 1 - 8
app/Http/Controllers/Api/LoginController.php

@@ -19,13 +19,6 @@ use DB;
  */
  */
 class LoginController extends Controller
 class LoginController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 登录返回订阅信息
     // 登录返回订阅信息
     public function login(Request $request)
     public function login(Request $request)
     {
     {
@@ -82,7 +75,7 @@ class LoginController extends Controller
             $data['user'] = $user;
             $data['user'] = $user;
 
 
             // 订阅链接
             // 订阅链接
-            $data['link'] = self::$config['subscribe_domain'] ? self::$config['subscribe_domain'] . '/s/' . $code : self::$config['website_url'] . '/s/' . $code;
+            $data['link'] = $this->systemConfig['subscribe_domain'] ? $this->systemConfig['subscribe_domain'] . '/s/' . $code : $this->systemConfig['website_url'] . '/s/' . $code;
 
 
             DB::commit();
             DB::commit();
 
 

+ 32 - 42
app/Http/Controllers/Api/V2rayController.php

@@ -2,33 +2,23 @@
 
 
 namespace App\Http\Controllers\Api;
 namespace App\Http\Controllers\Api;
 
 
-use App\Components\Yzy;
 use App\Http\Controllers\Controller;
 use App\Http\Controllers\Controller;
-use App\Http\Models\Coupon;
-use App\Http\Models\CouponLog;
-use App\Http\Models\Goods;
-use App\Http\Models\GoodsLabel;
-use App\Http\Models\Order;
-use App\Http\Models\Payment;
-use App\Http\Models\PaymentCallback;
-use App\Http\Models\ReferralLog;
 use App\Http\Models\SsNode;
 use App\Http\Models\SsNode;
+use App\Http\Models\SsNodeInfo;
+use App\Http\Models\SsNodeLabel;
+use App\Http\Models\SsNodeOnlineLog;
 use App\Http\Models\User;
 use App\Http\Models\User;
 use App\Http\Models\UserLabel;
 use App\Http\Models\UserLabel;
+use App\Http\Models\UserTrafficLog;
+use App\Http\V2ray\V2rayGenerator;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
+use Response;
 use Log;
 use Log;
 use DB;
 use DB;
 
 
 class V2rayController extends Controller
 class V2rayController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
-    //V2ray 用户
+    // V2ray 用户
     public function users(Request $request)
     public function users(Request $request)
     {
     {
         $node_id = $request->route('id');
         $node_id = $request->route('id');
@@ -48,8 +38,8 @@ class V2rayController extends Controller
         $user_with_label = UserLabel::query()->whereIn('label_id', $ssr_node_label)->pluck('user_id');
         $user_with_label = UserLabel::query()->whereIn('label_id', $ssr_node_label)->pluck('user_id');
 
 
         //提取用户信息
         //提取用户信息
-        $userids = User::query()->whereIn('id', $user_with_label)->where('enable', 1)->where('id', '<>', self::$config['free_node_users_id'])->pluck('id')->toArray();
-        $users = User::query()->where('id', '<>', self::$config['free_node_users_id'])->select(
+        $userids = User::query()->whereIn('id', $user_with_label)->where('enable', 1)->where('id', '<>', $this->systemConfig['free_node_users_id'])->pluck('id')->toArray();
+        $users = User::query()->where('id', '<>', $this->systemConfig['free_node_users_id'])->select(
             "id", "username", "passwd", "t", "u", "d", "transfer_enable",
             "id", "username", "passwd", "t", "u", "d", "transfer_enable",
             "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
             "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
             "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->get();
             "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->get();
@@ -68,18 +58,18 @@ class V2rayController extends Controller
 
 
             //v2ray用户信息
             //v2ray用户信息
             $user->v2ray_user = [
             $user->v2ray_user = [
-                "uuid"     => $user->v2ray_uuid,
-                "email"    => sprintf("%[email protected]", $user->v2ray_uuid),
+                "uuid" => $user->v2ray_uuid,
+                "email" => sprintf("%[email protected]", $user->v2ray_uuid),
                 "alter_id" => $user->v2ray_alter_id,
                 "alter_id" => $user->v2ray_alter_id,
-                "level"    => $user->v2ray_level,
+                "level" => $user->v2ray_level,
             ];
             ];
 
 
             array_push($data, $user);
             array_push($data, $user);
         }
         }
 
 
-        if (self::$config['is_free_node']) {
-            if (self::$config['free_node_id'] == $node_id) {
-                $user = User::query()->whereIn('id', $user_with_label)->where('id', self::$config['free_node_users_id'])->select(
+        if ($this->systemConfig['is_free_node']) {
+            if ($this->systemConfig['free_node_id'] == $node_id) {
+                $user = User::query()->whereIn('id', $user_with_label)->where('id', $this->systemConfig['free_node_users_id'])->select(
                     "id", "enable", "username", "passwd", "t", "u", "d", "transfer_enable",
                     "id", "enable", "username", "passwd", "t", "u", "d", "transfer_enable",
                     "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
                     "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
                     "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->first();
                     "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->first();
@@ -91,10 +81,10 @@ class V2rayController extends Controller
 
 
                 //v2ray用户信息
                 //v2ray用户信息
                 $user->v2ray_user = [
                 $user->v2ray_user = [
-                    "uuid"     => $user->v2ray_uuid,
-                    "email"    => sprintf("%[email protected]", $user->v2ray_uuid),
+                    "uuid" => $user->v2ray_uuid,
+                    "email" => sprintf("%[email protected]", $user->v2ray_uuid),
                     "alter_id" => $user->v2ray_alter_id,
                     "alter_id" => $user->v2ray_alter_id,
-                    "level"    => $user->v2ray_level,
+                    "level" => $user->v2ray_level,
                 ];
                 ];
 
 
                 array_push($data, $user);
                 array_push($data, $user);
@@ -112,7 +102,7 @@ class V2rayController extends Controller
         $log->save();
         $log->save();
 
 
         $res = [
         $res = [
-            'msg'  => 'ok',
+            'msg' => 'ok',
             'data' => $data,
             'data' => $data,
         ];
         ];
 
 
@@ -221,7 +211,7 @@ class V2rayController extends Controller
     public function v2rayUsers(Request $request)
     public function v2rayUsers(Request $request)
     {
     {
         $node = SsNode::query()->where('id', $request->route('id'))->first();
         $node = SsNode::query()->where('id', $request->route('id'))->first();
-        $users = User::query()->where('enable', 1)->where('id', '<>', self::$config['free_node_users_id'])->get();
+        $users = User::query()->where('enable', 1)->where('id', '<>', $this->systemConfig['free_node_users_id'])->get();
 
 
         $v = new V2rayGenerator();
         $v = new V2rayGenerator();
         $v->setPort($node->v2ray_port);
         $v->setPort($node->v2ray_port);
@@ -231,9 +221,9 @@ class V2rayController extends Controller
             $v->addUser($user->v2ray_uuid, $user->v2ray_level, $user->v2ray_alter_id, $email);
             $v->addUser($user->v2ray_uuid, $user->v2ray_level, $user->v2ray_alter_id, $email);
         }
         }
 
 
-        if (self::$config['is_free_node']) {
-            if ($request->route('id') == self::$config['free_node_id']) {
-                $freeuser = User::query()->where('enable', 1)->where('id', self::$config['free_node_users_id'])->first();
+        if ($this->systemConfig['is_free_node']) {
+            if ($request->route('id') == $this->systemConfig['free_node_id']) {
+                $freeuser = User::query()->where('enable', 1)->where('id', $this->systemConfig['free_node_users_id'])->first();
                 $email = sprintf("%[email protected]", $freeuser->v2ray_uuid);
                 $email = sprintf("%[email protected]", $freeuser->v2ray_uuid);
                 $v->addUser($freeuser->v2ray_uuid, $freeuser->v2ray_level, $freeuser->v2ray_alter_id, $email);
                 $v->addUser($freeuser->v2ray_uuid, $freeuser->v2ray_level, $freeuser->v2ray_alter_id, $email);
             }
             }
@@ -245,16 +235,16 @@ class V2rayController extends Controller
     //用户列表
     //用户列表
     public function index()
     public function index()
     {
     {
-        $users= User::query()->where('enable',1)->select(
-            "id","username","passwd","t","u","d","transfer_enable",
-            "port","protocol","obfs","enable","expire_time as expire_time_d","method",
-            "v2ray_uuid","v2ray_level","v2ray_alter_id")->get();
+        $users = User::query()->where('enable', 1)->select(
+            "id", "username", "passwd", "t", "u", "d", "transfer_enable",
+            "port", "protocol", "obfs", "enable", "expire_time as expire_time_d", "method",
+            "v2ray_uuid", "v2ray_level", "v2ray_alter_id")->get();
 
 
-        foreach($users as $user){
+        foreach ($users as $user) {
             //datetime 转timestamp
             //datetime 转timestamp
-            $user['switch']=1;
-            $user['email']=$user['username'];
-            $user['expire_time']=strval((new \DateTime($user['expire_time_d']))->getTimestamp());
+            $user['switch'] = 1;
+            $user['email'] = $user['username'];
+            $user['expire_time'] = strval((new \DateTime($user['expire_time_d']))->getTimestamp());
         }
         }
 
 
         $res = [
         $res = [
@@ -286,7 +276,7 @@ class V2rayController extends Controller
                 "msg" => "update failed",
                 "msg" => "update failed",
             ];
             ];
 
 
-            return response()->json($res,400);
+            return response()->json($res, 400);
         }
         }
 
 
         // 写usertrafficlog
         // 写usertrafficlog

+ 2 - 9
app/Http/Controllers/Api/YzyController.php

@@ -26,13 +26,6 @@ use DB;
  */
  */
 class YzyController extends Controller
 class YzyController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 接收GET请求
     // 接收GET请求
     public function index(Request $request)
     public function index(Request $request)
     {
     {
@@ -53,7 +46,7 @@ class YzyController extends Controller
 
 
         // 判断消息是否合法
         // 判断消息是否合法
         $msg = $data['msg'];
         $msg = $data['msg'];
-        $sign_string = self::$config['youzan_client_id'] . "" . $msg . "" . self::$config['youzan_client_secret'];
+        $sign_string = $this->systemConfig['youzan_client_id'] . "" . $msg . "" . $this->systemConfig['youzan_client_secret'];
         $sign = md5($sign_string);
         $sign = md5($sign_string);
         if ($sign != $data['sign']) {
         if ($sign != $data['sign']) {
             Log::info('YZY-POST:回调数据签名错误,可能是非法请求');
             Log::info('YZY-POST:回调数据签名错误,可能是非法请求');
@@ -184,7 +177,7 @@ class YzyController extends Controller
                         $referralLog->ref_user_id = $order->user->referral_uid;
                         $referralLog->ref_user_id = $order->user->referral_uid;
                         $referralLog->order_id = $order->oid;
                         $referralLog->order_id = $order->oid;
                         $referralLog->amount = $order->amount;
                         $referralLog->amount = $order->amount;
-                        $referralLog->ref_amount = $order->amount * self::$config['referral_percent'];
+                        $referralLog->ref_amount = $order->amount * $this->systemConfig['referral_percent'];
                         $referralLog->status = 0;
                         $referralLog->status = 0;
                         $referralLog->save();
                         $referralLog->save();
                     }
                     }

+ 7 - 0
app/Http/Controllers/Controller.php

@@ -17,6 +17,13 @@ class Controller extends BaseController
 {
 {
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
 
 
+    public $systemConfig;
+
+    public function __construct()
+    {
+        $this->systemConfig = $this->systemConfig();
+    }
+
     // 生成订阅地址的唯一码
     // 生成订阅地址的唯一码
     public function makeSubscribeCode()
     public function makeSubscribeCode()
     {
     {

+ 11 - 18
app/Http/Controllers/LoginController.php

@@ -19,13 +19,6 @@ use Cache;
  */
  */
 class LoginController extends Controller
 class LoginController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 登录页
     // 登录页
     public function index(Request $request)
     public function index(Request $request)
     {
     {
@@ -41,7 +34,7 @@ class LoginController extends Controller
             }
             }
 
 
             // 是否校验验证码
             // 是否校验验证码
-            if (self::$config['is_captcha']) {
+            if ($this->systemConfig['is_captcha']) {
                 if (!Captcha::check($captcha)) {
                 if (!Captcha::check($captcha)) {
                     Session::flash('errorMsg', '验证码错误,请重新输入');
                     Session::flash('errorMsg', '验证码错误,请重新输入');
 
 
@@ -54,11 +47,11 @@ class LoginController extends Controller
                 Session::flash('errorMsg', '用户名或密码错误');
                 Session::flash('errorMsg', '用户名或密码错误');
 
 
                 return Redirect::back()->withInput();
                 return Redirect::back()->withInput();
-            } else if ($user->status < 0) {
+            } else if (!$user->is_admin && $user->status < 0) {
                 Session::flash('errorMsg', '账号已禁用');
                 Session::flash('errorMsg', '账号已禁用');
 
 
                 return Redirect::back();
                 return Redirect::back();
-            } else if ($user->status == 0 && self::$config['is_active_register'] && $user->is_admin == 0) {
+            } else if ($user->status == 0 && $this->systemConfig['is_active_register'] && $user->is_admin == 0) {
                 Session::flash('errorMsg', '账号未激活,请先<a href="/activeUser?username=' . $user->username . '" target="_blank"><span style="color:#000">【激活账号】</span></a>');
                 Session::flash('errorMsg', '账号未激活,请先<a href="/activeUser?username=' . $user->username . '" target="_blank"><span style="color:#000">【激活账号】</span></a>');
 
 
                 return Redirect::back()->withInput();
                 return Redirect::back()->withInput();
@@ -77,9 +70,9 @@ class LoginController extends Controller
 
 
 
 
             // 登录送积分
             // 登录送积分
-            if (self::$config['login_add_score']) {
+            if ($this->systemConfig['login_add_score']) {
                 if (!Cache::has('loginAddScore_' . md5($username))) {
                 if (!Cache::has('loginAddScore_' . md5($username))) {
-                    $score = mt_rand(self::$config['min_rand_score'], self::$config['max_rand_score']);
+                    $score = mt_rand($this->systemConfig['min_rand_score'], $this->systemConfig['max_rand_score']);
                     $ret = User::query()->where('id', $user->id)->increment('score', $score);
                     $ret = User::query()->where('id', $user->id)->increment('score', $score);
                     if ($ret) {
                     if ($ret) {
                         $obj = new UserScoreLog();
                         $obj = new UserScoreLog();
@@ -92,7 +85,7 @@ class LoginController extends Controller
                         $obj->save();
                         $obj->save();
 
 
                         // 登录多久后再登录可以获取积分
                         // 登录多久后再登录可以获取积分
-                        $ttl = self::$config['login_add_score_range'] ? self::$config['login_add_score_range'] : 1440;
+                        $ttl = $this->systemConfig['login_add_score_range'] ? $this->systemConfig['login_add_score_range'] : 1440;
                         Cache::put('loginAddScore_' . md5($username), '1', $ttl);
                         Cache::put('loginAddScore_' . md5($username), '1', $ttl);
 
 
                         Session::flash('successMsg', '欢迎回来,系统自动赠送您 ' . $score . ' 积分,您可以用它兑换流量包');
                         Session::flash('successMsg', '欢迎回来,系统自动赠送您 ' . $score . ' 积分,您可以用它兑换流量包');
@@ -125,11 +118,11 @@ class LoginController extends Controller
                 }
                 }
             }
             }
 
 
-            $view['is_captcha'] = self::$config['is_captcha'];
-            $view['is_register'] = self::$config['is_register'];
-            $view['website_home_logo'] = self::$config['website_home_logo'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
+            $view['is_captcha'] = $this->systemConfig['is_captcha'];
+            $view['is_register'] = $this->systemConfig['is_register'];
+            $view['website_home_logo'] = $this->systemConfig['website_home_logo'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
             return Response::view('login', $view);
             return Response::view('login', $view);
         }
         }

+ 2 - 11
app/Http/Controllers/MarketingController.php

@@ -3,8 +3,6 @@ namespace App\Http\Controllers;
 
 
 use App\Http\Models\Marketing;
 use App\Http\Models\Marketing;
 use GuzzleHttp\Client;
 use GuzzleHttp\Client;
-use GuzzleHttp\Psr7;
-use GuzzleHttp\Exception\RequestException;
 use Illuminate\Http\Request;
 use Illuminate\Http\Request;
 use Response;
 use Response;
 use Log;
 use Log;
@@ -12,13 +10,6 @@ use DB;
 
 
 class MarketingController extends Controller
 class MarketingController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 邮件群发消息列表
     // 邮件群发消息列表
     public function emailList(Request $request)
     public function emailList(Request $request)
     {
     {
@@ -49,7 +40,7 @@ class MarketingController extends Controller
         $title = trim($request->get('title'));
         $title = trim($request->get('title'));
         $content = $request->get('content');
         $content = $request->get('content');
 
 
-        if (!self::$config['is_push_bear']) {
+        if (!$this->systemConfig['is_push_bear']) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '推送失败:请先启用并配置PushBear']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '推送失败:请先启用并配置PushBear']);
         }
         }
 
 
@@ -58,7 +49,7 @@ class MarketingController extends Controller
             $client = new Client();
             $client = new Client();
             $response = $client->request('GET', 'https://pushbear.ftqq.com/sub', [
             $response = $client->request('GET', 'https://pushbear.ftqq.com/sub', [
                 'query' => [
                 'query' => [
-                    'sendkey' => self::$config['push_bear_send_key'],
+                    'sendkey' => $this->systemConfig['push_bear_send_key'],
                     'text'    => $title,
                     'text'    => $title,
                     'desp'    => $content
                     'desp'    => $content
                 ]
                 ]

+ 0 - 0
app/Http/Controllers/Muv2/NodeController.php → app/Http/Controllers/Mu/v2ray/NodeController.php


+ 0 - 0
app/Http/Controllers/Muv2/UserController.php → app/Http/Controllers/Mu/v2ray/UserController.php


+ 6 - 13
app/Http/Controllers/PaymentController.php

@@ -16,13 +16,6 @@ use DB;
 
 
 class PaymentController extends Controller
 class PaymentController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 创建支付单
     // 创建支付单
     public function create(Request $request)
     public function create(Request $request)
     {
     {
@@ -36,7 +29,7 @@ class PaymentController extends Controller
         }
         }
 
 
         // 判断是否开启有赞云支付
         // 判断是否开启有赞云支付
-        if (!self::$config['is_youzan']) {
+        if (!$this->systemConfig['is_youzan']) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:系统并未开启在线支付功能']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '创建支付单失败:系统并未开启在线支付功能']);
         }
         }
 
 
@@ -47,7 +40,7 @@ class PaymentController extends Controller
         }
         }
 
 
         // 限购控制
         // 限购控制
-        $strategy = self::$config['goods_purchase_limit_strategy'];
+        $strategy = $this->systemConfig['goods_purchase_limit_strategy'];
         if ($strategy == 'all' || ($strategy == 'free' && $goods->price == 0)) {
         if ($strategy == 'all' || ($strategy == 'free' && $goods->price == 0)) {
             // 判断是否已经购买过该商品
             // 判断是否已经购买过该商品
             $none_expire_good_exist = Order::query()->where('user_id', $user['id'])->where('goods_id', $goods_id)->where('is_expire', 0)->exists();
             $none_expire_good_exist = Order::query()->where('user_id', $user['id'])->where('goods_id', $goods_id)->where('is_expire', 0)->exists();
@@ -125,7 +118,7 @@ class PaymentController extends Controller
 
 
             DB::commit();
             DB::commit();
 
 
-            return Response::json(['status' => 'success', 'data' => $sn, 'message' => '创建支付单成功']);
+            return Response::json(['status' => 'success', 'data' => $sn, 'message' => '创建支付单成功,正在转到付款页面,请稍后']);
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             DB::rollBack();
             DB::rollBack();
 
 
@@ -157,9 +150,9 @@ class PaymentController extends Controller
         }
         }
 
 
         $view['payment'] = $payment;
         $view['payment'] = $payment;
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         return Response::view('payment/detail', $view);
         return Response::view('payment/detail', $view);
     }
     }

+ 25 - 39
app/Http/Controllers/RegisterController.php

@@ -24,13 +24,6 @@ use Mail;
  */
  */
 class RegisterController extends Controller
 class RegisterController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 注册页
     // 注册页
     public function index(Request $request)
     public function index(Request $request)
     {
     {
@@ -78,7 +71,7 @@ class RegisterController extends Controller
             }
             }
 
 
             // 是否校验验证码
             // 是否校验验证码
-            if (self::$config['is_captcha']) {
+            if ($this->systemConfig['is_captcha']) {
                 if (!Captcha::check($captcha)) {
                 if (!Captcha::check($captcha)) {
                     Session::flash('errorMsg', '验证码错误,请重新输入');
                     Session::flash('errorMsg', '验证码错误,请重新输入');
 
 
@@ -87,14 +80,14 @@ class RegisterController extends Controller
             }
             }
 
 
             // 是否开启注册
             // 是否开启注册
-            if (!self::$config['is_register']) {
+            if (!$this->systemConfig['is_register']) {
                 Session::flash('errorMsg', '系统维护暂停注册');
                 Session::flash('errorMsg', '系统维护暂停注册');
 
 
                 return Redirect::back();
                 return Redirect::back();
             }
             }
 
 
             // 如果需要邀请注册
             // 如果需要邀请注册
-            if (self::$config['is_invite_register']) {
+            if ($this->systemConfig['is_invite_register']) {
                 if (empty($code)) {
                 if (empty($code)) {
                     Session::flash('errorMsg', '请输入邀请码');
                     Session::flash('errorMsg', '请输入邀请码');
 
 
@@ -111,10 +104,10 @@ class RegisterController extends Controller
             }
             }
 
 
             // 24小时内同IP注册限制
             // 24小时内同IP注册限制
-            if (self::$config['register_ip_limit']) {
+            if ($this->systemConfig['register_ip_limit']) {
                 if (Cache::has($cacheKey)) {
                 if (Cache::has($cacheKey)) {
                     $registerTimes = Cache::get($cacheKey);
                     $registerTimes = Cache::get($cacheKey);
-                    if ($registerTimes >= self::$config['register_ip_limit']) {
+                    if ($registerTimes >= $this->systemConfig['register_ip_limit']) {
                         Session::flash('errorMsg', '系统已开启防刷机制,请勿频繁注册');
                         Session::flash('errorMsg', '系统已开启防刷机制,请勿频繁注册');
 
 
                         return Redirect::back()->withInput($request->except(['code']));
                         return Redirect::back()->withInput($request->except(['code']));
@@ -131,6 +124,7 @@ class RegisterController extends Controller
             }
             }
 
 
             // 校验aff对应账号是否存在
             // 校验aff对应账号是否存在
+            $aff = $aff ? $aff : $request->cookie('register_aff');
             if ($aff) {
             if ($aff) {
                 $affUser = User::query()->where('id', $aff)->first();
                 $affUser = User::query()->where('id', $aff)->first();
                 $referral_uid = $affUser ? $aff : 0;
                 $referral_uid = $affUser ? $aff : 0;
@@ -149,10 +143,9 @@ class RegisterController extends Controller
             }
             }
 
 
             // 获取可用端口
             // 获取可用端口
-            $last_user = User::query()->orderBy('id', 'desc')->first();
-            $port = self::$config['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
-            if ($port > self::$config['max_port']) {
-                Session::flash('errorMsg', '用户已满');
+            $port = $this->systemConfig['is_rand_port'] ? $this->getRandPort() : $this->getOnlyPort();
+            if ($port > $this->systemConfig['max_port']) {
+                Session::flash('errorMsg', '用户已满,请联系管理员');
 
 
                 return Redirect::back()->withInput();
                 return Redirect::back()->withInput();
             }
             }
@@ -163,7 +156,7 @@ class RegisterController extends Controller
             $obfs = SsConfig::query()->where('type', 3)->where('is_default', 1)->first();
             $obfs = SsConfig::query()->where('type', 3)->where('is_default', 1)->first();
 
 
             // 创建新用户
             // 创建新用户
-            $transfer_enable = $referral_uid ? (self::$config['default_traffic'] + self::$config['referral_traffic']) * 1048576 : self::$config['default_traffic'] * 1048576;
+            $transfer_enable = $referral_uid ? ($this->systemConfig['default_traffic'] + $this->systemConfig['referral_traffic']) * 1048576 : $this->systemConfig['default_traffic'] * 1048576;
             $user = new User();
             $user = new User();
             $user->username = $username;
             $user->username = $username;
             $user->password = md5($password);
             $user->password = md5($password);
@@ -174,7 +167,7 @@ class RegisterController extends Controller
             $user->protocol = $protocol ? $protocol->name : 'auth_chain_a';
             $user->protocol = $protocol ? $protocol->name : 'auth_chain_a';
             $user->obfs = $obfs ? $obfs->name : 'tls1.2_ticket_auth';
             $user->obfs = $obfs ? $obfs->name : 'tls1.2_ticket_auth';
             $user->enable_time = date('Y-m-d H:i:s');
             $user->enable_time = date('Y-m-d H:i:s');
-            $user->expire_time = date('Y-m-d H:i:s', strtotime("+" . self::$config['default_days'] . " days"));
+            $user->expire_time = date('Y-m-d H:i:s', strtotime("+" . $this->systemConfig['default_days'] . " days"));
             $user->reg_ip = $request->getClientIp();
             $user->reg_ip = $request->getClientIp();
             $user->referral_uid = $referral_uid;
             $user->referral_uid = $referral_uid;
             $user->save();
             $user->save();
@@ -188,8 +181,8 @@ class RegisterController extends Controller
                 }
                 }
 
 
                 // 初始化默认标签
                 // 初始化默认标签
-                if (strlen(self::$config['initial_labels_for_user'])) {
-                    $labels = explode(',', self::$config['initial_labels_for_user']);
+                if (strlen($this->systemConfig['initial_labels_for_user'])) {
+                    $labels = explode(',', $this->systemConfig['initial_labels_for_user']);
                     foreach ($labels as $label) {
                     foreach ($labels as $label) {
                         $userLabel = new UserLabel();
                         $userLabel = new UserLabel();
                         $userLabel->user_id = $user->id;
                         $userLabel->user_id = $user->id;
@@ -199,15 +192,15 @@ class RegisterController extends Controller
                 }
                 }
 
 
                 // 更新邀请码
                 // 更新邀请码
-                if (self::$config['is_invite_register']) {
+                if ($this->systemConfig['is_invite_register']) {
                     Invite::query()->where('id', $code->id)->update(['fuid' => $user->id, 'status' => 1]);
                     Invite::query()->where('id', $code->id)->update(['fuid' => $user->id, 'status' => 1]);
                 }
                 }
             }
             }
 
 
             // 发送邮件
             // 发送邮件
-            if (self::$config['is_active_register']) {
+            if ($this->systemConfig['is_active_register']) {
                 // 生成激活账号的地址
                 // 生成激活账号的地址
-                $token = md5(self::$config['website_name'] . $username . microtime());
+                $token = md5($this->systemConfig['website_name'] . $username . microtime());
                 $verify = new Verify();
                 $verify = new Verify();
                 $verify->user_id = $user->id;
                 $verify->user_id = $user->id;
                 $verify->username = $username;
                 $verify->username = $username;
@@ -215,12 +208,12 @@ class RegisterController extends Controller
                 $verify->status = 0;
                 $verify->status = 0;
                 $verify->save();
                 $verify->save();
 
 
-                $activeUserUrl = self::$config['website_url'] . '/active/' . $token;
+                $activeUserUrl = $this->systemConfig['website_url'] . '/active/' . $token;
                 $title = '注册激活';
                 $title = '注册激活';
                 $content = '请求地址:' . $activeUserUrl;
                 $content = '请求地址:' . $activeUserUrl;
 
 
                 try {
                 try {
-                    Mail::to($username)->send(new activeUser(self::$config['website_name'], $activeUserUrl));
+                    Mail::to($username)->send(new activeUser($this->systemConfig['website_name'], $activeUserUrl));
                     $this->sendEmailLog($user->id, $title, $content);
                     $this->sendEmailLog($user->id, $title, $content);
                 } catch (\Exception $e) {
                 } catch (\Exception $e) {
                     $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
                     $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
@@ -230,7 +223,7 @@ class RegisterController extends Controller
             } else {
             } else {
                 // 如果不需要激活,则直接给推荐人加流量
                 // 如果不需要激活,则直接给推荐人加流量
                 if ($referral_uid) {
                 if ($referral_uid) {
-                    $transfer_enable = self::$config['referral_traffic'] * 1048576;
+                    $transfer_enable = $this->systemConfig['referral_traffic'] * 1048576;
 
 
                     User::query()->where('id', $referral_uid)->increment('transfer_enable', $transfer_enable);
                     User::query()->where('id', $referral_uid)->increment('transfer_enable', $transfer_enable);
                     User::query()->where('id', $referral_uid)->update(['enable' => 1]);
                     User::query()->where('id', $referral_uid)->update(['enable' => 1]);
@@ -243,19 +236,12 @@ class RegisterController extends Controller
         } else {
         } else {
             Session::put('register_token', makeRandStr(16));
             Session::put('register_token', makeRandStr(16));
 
 
-            // 如果第一次打开带返aff,则存储aff,防止再次打开无返利aff
-            if (intval($request->get('aff'))) {
-                if (!Session::get('register_aff')) {
-                    Session::put('register_aff', intval($request->get('aff')));
-                }
-            }
-
-            $view['is_captcha'] = self::$config['is_captcha'];
-            $view['is_register'] = self::$config['is_register'];
-            $view['is_invite_register'] = self::$config['is_invite_register'];
-            $view['is_free_code'] = self::$config['is_free_code'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
+            $view['is_captcha'] = $this->systemConfig['is_captcha'];
+            $view['is_register'] = $this->systemConfig['is_register'];
+            $view['is_invite_register'] = $this->systemConfig['is_invite_register'];
+            $view['is_free_code'] = $this->systemConfig['is_free_code'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
             return Response::view('register', $view);
             return Response::view('register', $view);
         }
         }

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

@@ -20,13 +20,6 @@ use DB;
  */
  */
 class SubscribeController extends Controller
 class SubscribeController extends Controller
 {
 {
-    protected static $config;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 获取订阅信息
     // 获取订阅信息
     public function index(Request $request, $code)
     public function index(Request $request, $code)
     {
     {
@@ -78,7 +71,7 @@ class SubscribeController extends Controller
         $scheme = '';
         $scheme = '';
         foreach ($nodeList as $key => $node) {
         foreach ($nodeList as $key => $node) {
             // 控制显示的节点数
             // 控制显示的节点数
-            if (self::$config['subscribe_max'] && $key >= self::$config['subscribe_max']) {
+            if ($this->systemConfig['subscribe_max'] && $key >= $this->systemConfig['subscribe_max']) {
                 break;
                 break;
             }
             }
 
 

+ 5 - 12
app/Http/Controllers/TicketController.php

@@ -20,13 +20,6 @@ use Mail;
  */
  */
 class TicketController extends Controller
 class TicketController extends Controller
 {
 {
-    protected static $config;
-
-    public function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     // 工单列表
     // 工单列表
     public function ticketList(Request $request)
     public function ticketList(Request $request)
     {
     {
@@ -63,9 +56,9 @@ class TicketController extends Controller
 
 
                 // 发通知邮件
                 // 发通知邮件
                 if (!$user['is_admin']) {
                 if (!$user['is_admin']) {
-                    if (self::$config['crash_warning_email']) {
+                    if ($this->systemConfig['crash_warning_email']) {
                         try {
                         try {
-                            Mail::to(self::$config['crash_warning_email'])->send(new replyTicket(self::$config['website_name'], $title, $content));
+                            Mail::to($this->systemConfig['crash_warning_email'])->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
                             $this->sendEmailLog(1, $title, $content);
                             $this->sendEmailLog(1, $title, $content);
                         } catch (\Exception $e) {
                         } catch (\Exception $e) {
                             $this->sendEmailLog(1, $title, $content, 0, $e->getMessage());
                             $this->sendEmailLog(1, $title, $content, 0, $e->getMessage());
@@ -73,7 +66,7 @@ class TicketController extends Controller
                     }
                     }
                 } else {
                 } else {
                     try {
                     try {
-                        Mail::to($ticket->user->username)->send(new replyTicket(self::$config['website_name'], $title, $content));
+                        Mail::to($ticket->user->username)->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
                         $this->sendEmailLog($ticket->user_id, $title, $content);
                         $this->sendEmailLog($ticket->user_id, $title, $content);
                     } catch (\Exception $e) {
                     } catch (\Exception $e) {
                         $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());
                         $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());
@@ -81,7 +74,7 @@ class TicketController extends Controller
                 }
                 }
 
 
                 // 通过ServerChan发微信消息提醒管理员
                 // 通过ServerChan发微信消息提醒管理员
-                if (!$user['is_admin'] && self::$config['is_server_chan'] && self::$config['server_chan_key']) {
+                if (!$user['is_admin'] && $this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
                     $serverChan = new ServerChan();
                     $serverChan = new ServerChan();
                     $serverChan->send($title, $content);
                     $serverChan->send($title, $content);
                 }
                 }
@@ -115,7 +108,7 @@ class TicketController extends Controller
 
 
         // 发邮件通知用户
         // 发邮件通知用户
         try {
         try {
-            Mail::to($ticket->user->username)->send(new closeTicket(self::$config['website_name'], $title, $content));
+            Mail::to($ticket->user->username)->send(new closeTicket($this->systemConfig['website_name'], $title, $content));
             $this->sendEmailLog($ticket->user_id, $title, $content);
             $this->sendEmailLog($ticket->user_id, $title, $content);
         } catch (\Exception $e) {
         } catch (\Exception $e) {
             $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());
             $this->sendEmailLog($ticket->user_id, $title, $content, 0, $e->getMessage());

+ 90 - 97
app/Http/Controllers/UserController.php

@@ -41,14 +41,6 @@ use DB;
 
 
 class UserController extends Controller
 class UserController extends Controller
 {
 {
-    protected static $config;
-    protected static $userLevel;
-
-    function __construct()
-    {
-        self::$config = $this->systemConfig();
-    }
-
     public function index(Request $request)
     public function index(Request $request)
     {
     {
         $user = Session::get('user');
         $user = Session::get('user');
@@ -62,18 +54,18 @@ class UserController extends Controller
         $view['info'] = $user->toArray();
         $view['info'] = $user->toArray();
         $view['notice'] = Article::query()->where('type', 2)->where('is_del', 0)->orderBy('id', 'desc')->first();
         $view['notice'] = Article::query()->where('type', 2)->where('is_del', 0)->orderBy('id', 'desc')->first();
         $view['articleList'] = Article::query()->where('type', 1)->where('is_del', 0)->orderBy('sort', 'desc')->orderBy('id', 'desc')->paginate(5);
         $view['articleList'] = Article::query()->where('type', 1)->where('is_del', 0)->orderBy('sort', 'desc')->orderBy('id', 'desc')->paginate(5);
-        $view['wechat_qrcode'] = self::$config['wechat_qrcode'];
-        $view['alipay_qrcode'] = self::$config['alipay_qrcode'];
-        $view['login_add_score'] = self::$config['login_add_score'];
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
-        $view['is_push_bear'] = self::$config['is_push_bear'];
-        $view['push_bear_qrcode'] = self::$config['push_bear_qrcode'];
+        $view['wechat_qrcode'] = $this->systemConfig['wechat_qrcode'];
+        $view['alipay_qrcode'] = $this->systemConfig['alipay_qrcode'];
+        $view['login_add_score'] = $this->systemConfig['login_add_score'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['is_push_bear'] = $this->systemConfig['is_push_bear'];
+        $view['push_bear_qrcode'] = $this->systemConfig['push_bear_qrcode'];
 
 
         // 推广返利是否可见
         // 推广返利是否可见
         if (!Session::has('referral_status')) {
         if (!Session::has('referral_status')) {
-            Session::put('referral_status', self::$config['referral_status']);
+            Session::put('referral_status', $this->systemConfig['referral_status']);
         }
         }
 
 
         // 节点列表
         // 节点列表
@@ -158,9 +150,9 @@ class UserController extends Controller
             return Redirect::to('user');
             return Redirect::to('user');
         }
         }
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         return Response::view('user/article', $view);
         return Response::view('user/article', $view);
     }
     }
@@ -275,9 +267,9 @@ class UserController extends Controller
             $view['protocol_list'] = $this->protocolList();
             $view['protocol_list'] = $this->protocolList();
             $view['obfs_list'] = $this->obfsList();
             $view['obfs_list'] = $this->obfsList();
             $view['info'] = User::query()->where('id', $user['id'])->first();
             $view['info'] = User::query()->where('id', $user['id'])->first();
-            $view['website_logo'] = self::$config['website_logo'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
+            $view['website_logo'] = $this->systemConfig['website_logo'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
             return Response::view('user/profile', $view);
             return Response::view('user/profile', $view);
         }
         }
@@ -317,9 +309,9 @@ class UserController extends Controller
         $view['trafficDaily'] = "'" . implode("','", $dailyData) . "'";
         $view['trafficDaily'] = "'" . implode("','", $dailyData) . "'";
         $view['trafficHourly'] = "'" . implode("','", $hourlyData) . "'";
         $view['trafficHourly'] = "'" . implode("','", $hourlyData) . "'";
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         return Response::view('user/trafficLog', $view);
         return Response::view('user/trafficLog', $view);
     }
     }
@@ -334,9 +326,9 @@ class UserController extends Controller
 
 
         $view['goodsList'] = $goodsList;
         $view['goodsList'] = $goodsList;
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         return Response::view('user/goodsList', $view);
         return Response::view('user/goodsList', $view);
     }
     }
@@ -346,9 +338,9 @@ class UserController extends Controller
     {
     {
         $user = Session::get('user');
         $user = Session::get('user');
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         $view['ticketList'] = Ticket::query()->where('user_id', $user['id'])->paginate(10)->appends($request->except('page'));
         $view['ticketList'] = Ticket::query()->where('user_id', $user['id'])->paginate(10)->appends($request->except('page'));
 
 
@@ -362,9 +354,9 @@ class UserController extends Controller
 
 
         $view['orderList'] = Order::query()->with(['user', 'goods', 'coupon', 'payment'])->where('user_id', $user['id'])->orderBy('oid', 'desc')->paginate(10)->appends($request->except('page'));
         $view['orderList'] = Order::query()->with(['user', 'goods', 'coupon', 'payment'])->where('user_id', $user['id'])->orderBy('oid', 'desc')->paginate(10)->appends($request->except('page'));
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
         return Response::view('user/orderList', $view);
         return Response::view('user/orderList', $view);
     }
     }
@@ -395,8 +387,8 @@ class UserController extends Controller
 
 
             // 发邮件通知管理员
             // 发邮件通知管理员
             try {
             try {
-                if (self::$config['crash_warning_email']) {
-                    Mail::to(self::$config['crash_warning_email'])->send(new newTicket(self::$config['website_name'], $emailTitle, $content));
+                if ($this->systemConfig['crash_warning_email']) {
+                    Mail::to($this->systemConfig['crash_warning_email'])->send(new newTicket($this->systemConfig['website_name'], $emailTitle, $content));
                     $this->sendEmailLog(1, $emailTitle, $content);
                     $this->sendEmailLog(1, $emailTitle, $content);
                 }
                 }
             } catch (\Exception $e) {
             } catch (\Exception $e) {
@@ -404,7 +396,7 @@ class UserController extends Controller
             }
             }
 
 
             // 通过ServerChan发微信消息提醒管理员
             // 通过ServerChan发微信消息提醒管理员
-            if (self::$config['is_server_chan'] && self::$config['server_chan_key']) {
+            if ($this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
                 $serverChan = new ServerChan();
                 $serverChan = new ServerChan();
                 $serverChan->send($emailTitle, $content);
                 $serverChan->send($emailTitle, $content);
             }
             }
@@ -440,8 +432,8 @@ class UserController extends Controller
 
 
                 // 发邮件通知管理员
                 // 发邮件通知管理员
                 try {
                 try {
-                    if (self::$config['crash_warning_email']) {
-                        Mail::to(self::$config['crash_warning_email'])->send(new replyTicket(self::$config['website_name'], $title, $content));
+                    if ($this->systemConfig['crash_warning_email']) {
+                        Mail::to($this->systemConfig['crash_warning_email'])->send(new replyTicket($this->systemConfig['website_name'], $title, $content));
                         $this->sendEmailLog(1, $title, $content);
                         $this->sendEmailLog(1, $title, $content);
                     }
                     }
                 } catch (\Exception $e) {
                 } catch (\Exception $e) {
@@ -449,7 +441,7 @@ class UserController extends Controller
                 }
                 }
 
 
                 // 通过ServerChan发微信消息提醒管理员
                 // 通过ServerChan发微信消息提醒管理员
-                if (self::$config['is_server_chan'] && self::$config['server_chan_key']) {
+                if ($this->systemConfig['is_server_chan'] && $this->systemConfig['server_chan_key']) {
                     $serverChan = new ServerChan();
                     $serverChan = new ServerChan();
                     $serverChan->send($title, $content);
                     $serverChan->send($title, $content);
                 }
                 }
@@ -467,9 +459,9 @@ class UserController extends Controller
             $view['ticket'] = $ticket;
             $view['ticket'] = $ticket;
             $view['replyList'] = TicketReply::query()->where('ticket_id', $id)->with('user')->orderBy('id', 'asc')->get();
             $view['replyList'] = TicketReply::query()->where('ticket_id', $id)->with('user')->orderBy('id', 'asc')->get();
 
 
-            $view['website_logo'] = self::$config['website_logo'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
+            $view['website_logo'] = $this->systemConfig['website_logo'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
             return Response::view('user/replyTicket', $view);
             return Response::view('user/replyTicket', $view);
         }
         }
@@ -498,13 +490,13 @@ class UserController extends Controller
         // 已生成的邀请码数量
         // 已生成的邀请码数量
         $num = Invite::query()->where('uid', $user['id'])->count();
         $num = Invite::query()->where('uid', $user['id'])->count();
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
-        $view['num'] = self::$config['invite_num'] - $num <= 0 ? 0 : self::$config['invite_num'] - $num; // 还可以生成的邀请码数量
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['num'] = $this->systemConfig['invite_num'] - $num <= 0 ? 0 : $this->systemConfig['invite_num'] - $num; // 还可以生成的邀请码数量
         $view['inviteList'] = Invite::query()->where('uid', $user['id'])->with(['generator', 'user'])->paginate(10); // 邀请码列表
         $view['inviteList'] = Invite::query()->where('uid', $user['id'])->with(['generator', 'user'])->paginate(10); // 邀请码列表
-        $view['referral_traffic'] = flowAutoShow(self::$config['referral_traffic'] * 1048576);
-        $view['referral_percent'] = self::$config['referral_percent'];
+        $view['referral_traffic'] = flowAutoShow($this->systemConfig['referral_traffic'] * 1048576);
+        $view['referral_percent'] = $this->systemConfig['referral_percent'];
 
 
         return Response::view('user/invite', $view);
         return Response::view('user/invite', $view);
     }
     }
@@ -512,11 +504,11 @@ class UserController extends Controller
     // 公开的邀请码列表
     // 公开的邀请码列表
     public function free(Request $request)
     public function free(Request $request)
     {
     {
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
-        $view['is_invite_register'] = self::$config['is_invite_register'];
-        $view['is_free_code'] = self::$config['is_free_code'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['is_invite_register'] = $this->systemConfig['is_invite_register'];
+        $view['is_free_code'] = $this->systemConfig['is_free_code'];
         $view['inviteList'] = Invite::query()->where('uid', 1)->where('status', 0)->paginate();
         $view['inviteList'] = Invite::query()->where('uid', 1)->where('status', 0)->paginate();
 
 
         return Response::view('user/free', $view);
         return Response::view('user/free', $view);
@@ -529,8 +521,8 @@ class UserController extends Controller
 
 
         // 已生成的邀请码数量
         // 已生成的邀请码数量
         $num = Invite::query()->where('uid', $user['id'])->count();
         $num = Invite::query()->where('uid', $user['id'])->count();
-        if ($num >= self::$config['invite_num']) {
-            return Response::json(['status' => 'fail', 'data' => '', 'message' => '生成失败:最多只能生成' . self::$config['invite_num'] . '个邀请码']);
+        if ($num >= $this->systemConfig['invite_num']) {
+            return Response::json(['status' => 'fail', 'data' => '', 'message' => '生成失败:最多只能生成' . $this->systemConfig['invite_num'] . '个邀请码']);
         }
         }
 
 
         $obj = new Invite();
         $obj = new Invite();
@@ -551,7 +543,7 @@ class UserController extends Controller
             $username = trim($request->get('username'));
             $username = trim($request->get('username'));
 
 
             // 是否开启账号激活
             // 是否开启账号激活
-            if (!self::$config['is_active_register']) {
+            if (!$this->systemConfig['is_active_register']) {
                 Session::flash('errorMsg', '系统未开启账号激活功能,请联系管理员');
                 Session::flash('errorMsg', '系统未开启账号激活功能,请联系管理员');
 
 
                 return Redirect::back()->withInput();
                 return Redirect::back()->withInput();
@@ -577,15 +569,15 @@ class UserController extends Controller
             $activeTimes = 0;
             $activeTimes = 0;
             if (Cache::has('activeUser_' . md5($username))) {
             if (Cache::has('activeUser_' . md5($username))) {
                 $activeTimes = Cache::get('activeUser_' . md5($username));
                 $activeTimes = Cache::get('activeUser_' . md5($username));
-                if ($activeTimes >= self::$config['active_times']) {
-                    Session::flash('errorMsg', '同一个账号24小时内只能请求激活' . self::$config['active_times'] . '次,请勿频繁操作');
+                if ($activeTimes >= $this->systemConfig['active_times']) {
+                    Session::flash('errorMsg', '同一个账号24小时内只能请求激活' . $this->systemConfig['active_times'] . '次,请勿频繁操作');
 
 
                     return Redirect::back();
                     return Redirect::back();
                 }
                 }
             }
             }
 
 
             // 生成激活账号的地址
             // 生成激活账号的地址
-            $token = md5(self::$config['website_name'] . $username . microtime());
+            $token = md5($this->systemConfig['website_name'] . $username . microtime());
             $verify = new Verify();
             $verify = new Verify();
             $verify->user_id = $user->id;
             $verify->user_id = $user->id;
             $verify->username = $username;
             $verify->username = $username;
@@ -594,12 +586,12 @@ class UserController extends Controller
             $verify->save();
             $verify->save();
 
 
             // 发送邮件
             // 发送邮件
-            $activeUserUrl = self::$config['website_url'] . '/active/' . $token;
+            $activeUserUrl = $this->systemConfig['website_url'] . '/active/' . $token;
             $title = '重新激活账号';
             $title = '重新激活账号';
             $content = '请求地址:' . $activeUserUrl;
             $content = '请求地址:' . $activeUserUrl;
 
 
             try {
             try {
-                Mail::to($user->username)->send(new activeUser(self::$config['website_name'], $activeUserUrl));
+                Mail::to($user->username)->send(new activeUser($this->systemConfig['website_name'], $activeUserUrl));
                 $this->sendEmailLog($user->id, $title, $content);
                 $this->sendEmailLog($user->id, $title, $content);
             } catch (\Exception $e) {
             } catch (\Exception $e) {
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
@@ -610,7 +602,7 @@ class UserController extends Controller
 
 
             return Redirect::back();
             return Redirect::back();
         } else {
         } else {
-            $view['is_active_register'] = self::$config['is_active_register'];
+            $view['is_active_register'] = $this->systemConfig['is_active_register'];
 
 
             return Response::view('user/activeUser', $view);
             return Response::view('user/activeUser', $view);
         }
         }
@@ -662,7 +654,7 @@ class UserController extends Controller
 
 
         // 账号激活后给邀请人送流量
         // 账号激活后给邀请人送流量
         if ($verify->user->referral_uid) {
         if ($verify->user->referral_uid) {
-            $transfer_enable = self::$config['referral_traffic'] * 1048576;
+            $transfer_enable = $this->systemConfig['referral_traffic'] * 1048576;
 
 
             User::query()->where('id', $verify->user->referral_uid)->increment('transfer_enable', $transfer_enable);
             User::query()->where('id', $verify->user->referral_uid)->increment('transfer_enable', $transfer_enable);
             User::query()->where('id', $verify->user->referral_uid)->update(['enable' => 1]);
             User::query()->where('id', $verify->user->referral_uid)->update(['enable' => 1]);
@@ -680,7 +672,7 @@ class UserController extends Controller
             $username = trim($request->get('username'));
             $username = trim($request->get('username'));
 
 
             // 是否开启重设密码
             // 是否开启重设密码
-            if (!self::$config['is_reset_password']) {
+            if (!$this->systemConfig['is_reset_password']) {
                 Session::flash('errorMsg', '系统未开启重置密码功能,请联系管理员');
                 Session::flash('errorMsg', '系统未开启重置密码功能,请联系管理员');
 
 
                 return Redirect::back()->withInput();
                 return Redirect::back()->withInput();
@@ -698,15 +690,15 @@ class UserController extends Controller
             $resetTimes = 0;
             $resetTimes = 0;
             if (Cache::has('resetPassword_' . md5($username))) {
             if (Cache::has('resetPassword_' . md5($username))) {
                 $resetTimes = Cache::get('resetPassword_' . md5($username));
                 $resetTimes = Cache::get('resetPassword_' . md5($username));
-                if ($resetTimes >= self::$config['reset_password_times']) {
-                    Session::flash('errorMsg', '同一个账号24小时内只能重设密码' . self::$config['reset_password_times'] . '次,请勿频繁操作');
+                if ($resetTimes >= $this->systemConfig['reset_password_times']) {
+                    Session::flash('errorMsg', '同一个账号24小时内只能重设密码' . $this->systemConfig['reset_password_times'] . '次,请勿频繁操作');
 
 
                     return Redirect::back();
                     return Redirect::back();
                 }
                 }
             }
             }
 
 
             // 生成取回密码的地址
             // 生成取回密码的地址
-            $token = md5(self::$config['website_name'] . $username . microtime());
+            $token = md5($this->systemConfig['website_name'] . $username . microtime());
             $verify = new Verify();
             $verify = new Verify();
             $verify->user_id = $user->id;
             $verify->user_id = $user->id;
             $verify->username = $username;
             $verify->username = $username;
@@ -715,12 +707,12 @@ class UserController extends Controller
             $verify->save();
             $verify->save();
 
 
             // 发送邮件
             // 发送邮件
-            $resetPasswordUrl = self::$config['website_url'] . '/reset/' . $token;
+            $resetPasswordUrl = $this->systemConfig['website_url'] . '/reset/' . $token;
             $title = '重置密码';
             $title = '重置密码';
             $content = '请求地址:' . $resetPasswordUrl;
             $content = '请求地址:' . $resetPasswordUrl;
 
 
             try {
             try {
-                Mail::to($user->username)->send(new resetPassword(self::$config['website_name'], $resetPasswordUrl));
+                Mail::to($user->username)->send(new resetPassword($this->systemConfig['website_name'], $resetPasswordUrl));
                 $this->sendEmailLog($user->id, $title, $content);
                 $this->sendEmailLog($user->id, $title, $content);
             } catch (\Exception $e) {
             } catch (\Exception $e) {
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
                 $this->sendEmailLog($user->id, $title, $content, 0, $e->getMessage());
@@ -731,10 +723,10 @@ class UserController extends Controller
 
 
             return Redirect::back();
             return Redirect::back();
         } else {
         } else {
-            $view['website_logo'] = self::$config['website_logo'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
-            $view['is_reset_password'] = self::$config['is_reset_password'];
+            $view['website_logo'] = $this->systemConfig['website_logo'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+            $view['is_reset_password'] = $this->systemConfig['is_reset_password'];
 
 
             return Response::view('user/resetPassword', $view);
             return Response::view('user/resetPassword', $view);
         }
         }
@@ -829,7 +821,7 @@ class UserController extends Controller
         }
         }
 
 
         $coupon = Coupon::query()->where('sn', $coupon_sn)->whereIn('type', [1, 2])->where('is_del', 0)->first();
         $coupon = Coupon::query()->where('sn', $coupon_sn)->whereIn('type', [1, 2])->where('is_del', 0)->first();
-        if (empty($coupon)) {
+        if (!$coupon) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '该优惠券不存在']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '该优惠券不存在']);
         } else if ($coupon->status == 1) {
         } else if ($coupon->status == 1) {
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '该优惠券已使用,请换一个试试']);
             return Response::json(['status' => 'fail', 'data' => '', 'message' => '该优惠券已使用,请换一个试试']);
@@ -866,11 +858,11 @@ class UserController extends Controller
             }
             }
 
 
             // 检查配置是否启用了限购:all-所有商品限购, free-价格为0的商品限购, none-不限购(默认)
             // 检查配置是否启用了限购:all-所有商品限购, free-价格为0的商品限购, none-不限购(默认)
-            if (!isset(self::$config['goods_purchase_limit_strategy'])) {
-                self::$config['goods_purchase_limit_strategy'] = 'none';
+            if (!isset($this->systemConfig['goods_purchase_limit_strategy'])) {
+                $this->systemConfig['goods_purchase_limit_strategy'] = 'none';
             }
             }
 
 
-            $strategy = self::$config['goods_purchase_limit_strategy'];
+            $strategy = $this->systemConfig['goods_purchase_limit_strategy'];
             if ($strategy == 'all' || ($strategy == 'free' && $goods->price == 0)) {
             if ($strategy == 'all' || ($strategy == 'free' && $goods->price == 0)) {
                 // 判断是否已经购买过该商品
                 // 判断是否已经购买过该商品
                 $none_expire_good_exist = Order::query()->where('user_id', $user['id'])->where('goods_id', $goods_id)->where('is_expire', 0)->where('status', '>=', 0)->exists();
                 $none_expire_good_exist = Order::query()->where('user_id', $user['id'])->where('goods_id', $goods_id)->where('is_expire', 0)->where('status', '>=', 0)->exists();
@@ -1000,7 +992,7 @@ class UserController extends Controller
                     $referralLog->ref_user_id = $user->referral_uid;
                     $referralLog->ref_user_id = $user->referral_uid;
                     $referralLog->order_id = $order->oid;
                     $referralLog->order_id = $order->oid;
                     $referralLog->amount = $amount;
                     $referralLog->amount = $amount;
-                    $referralLog->ref_amount = $amount * self::$config['referral_percent'];
+                    $referralLog->ref_amount = $amount * $this->systemConfig['referral_percent'];
                     $referralLog->status = 0;
                     $referralLog->status = 0;
                     $referralLog->save();
                     $referralLog->save();
                 }
                 }
@@ -1023,10 +1015,10 @@ class UserController extends Controller
 
 
             $goods->traffic = flowAutoShow($goods->traffic * 1048576);
             $goods->traffic = flowAutoShow($goods->traffic * 1048576);
             $view['goods'] = $goods;
             $view['goods'] = $goods;
-            $view['is_youzan'] = self::$config['is_youzan'];
-            $view['website_logo'] = self::$config['website_logo'];
-            $view['website_analytics'] = self::$config['website_analytics'];
-            $view['website_customer_service'] = self::$config['website_customer_service'];
+            $view['is_youzan'] = $this->systemConfig['is_youzan'];
+            $view['website_logo'] = $this->systemConfig['website_logo'];
+            $view['website_analytics'] = $this->systemConfig['website_analytics'];
+            $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
 
 
             return Response::view('user/addOrder', $view);
             return Response::view('user/addOrder', $view);
         }
         }
@@ -1081,16 +1073,17 @@ class UserController extends Controller
         // 生成个人推广链接
         // 生成个人推广链接
         $user = Session::get('user');
         $user = Session::get('user');
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
-        $view['referral_traffic'] = flowAutoShow(self::$config['referral_traffic'] * 1048576);
-        $view['referral_percent'] = self::$config['referral_percent'];
-        $view['referral_money'] = self::$config['referral_money'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
+        $view['referral_traffic'] = flowAutoShow($this->systemConfig['referral_traffic'] * 1048576);
+        $view['referral_percent'] = $this->systemConfig['referral_percent'];
+        $view['referral_money'] = $this->systemConfig['referral_money'];
         $view['totalAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->sum('ref_amount') / 100;
         $view['totalAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->sum('ref_amount') / 100;
         $view['canAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount') / 100;
         $view['canAmount'] = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount') / 100;
-        $view['link'] = self::$config['website_url'] . '/register?aff=' . $user['id'];
+        $view['link'] = $this->systemConfig['website_url'] . '/register?aff=' . $user['id'];
         $view['referralLogList'] = ReferralLog::query()->where('ref_user_id', $user['id'])->with('user')->paginate(10);
         $view['referralLogList'] = ReferralLog::query()->where('ref_user_id', $user['id'])->with('user')->paginate(10);
+        $view['referralApplyList'] = ReferralApply::query()->where('user_id', $user['id'])->with('user')->paginate(10);
 
 
         return Response::view('user/referral', $view);
         return Response::view('user/referral', $view);
     }
     }
@@ -1108,8 +1101,8 @@ class UserController extends Controller
 
 
         // 校验可以提现金额是否超过系统设置的阀值
         // 校验可以提现金额是否超过系统设置的阀值
         $ref_amount = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount');
         $ref_amount = ReferralLog::query()->where('ref_user_id', $user['id'])->where('status', 0)->sum('ref_amount');
-        if ($ref_amount / 100 < self::$config['referral_money']) {
-            return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:满' . self::$config['referral_money'] . '元才可以提现,继续努力吧']);
+        if ($ref_amount / 100 < $this->systemConfig['referral_money']) {
+            return Response::json(['status' => 'fail', 'data' => '', 'message' => '申请失败:满' . $this->systemConfig['referral_money'] . '元才可以提现,继续努力吧']);
         }
         }
 
 
         // 取出本次申请关联返利日志ID
         // 取出本次申请关联返利日志ID
@@ -1151,11 +1144,11 @@ class UserController extends Controller
             $code = $subscribe->code;
             $code = $subscribe->code;
         }
         }
 
 
-        $view['website_logo'] = self::$config['website_logo'];
-        $view['website_analytics'] = self::$config['website_analytics'];
-        $view['website_customer_service'] = self::$config['website_customer_service'];
+        $view['website_logo'] = $this->systemConfig['website_logo'];
+        $view['website_analytics'] = $this->systemConfig['website_analytics'];
+        $view['website_customer_service'] = $this->systemConfig['website_customer_service'];
         $view['subscribe_status'] = !$subscribe ? 1 : $subscribe->status;
         $view['subscribe_status'] = !$subscribe ? 1 : $subscribe->status;
-        $view['link'] = self::$config['subscribe_domain'] ? self::$config['subscribe_domain'] . '/s/' . $code : self::$config['website_url'] . '/s/' . $code;
+        $view['link'] = $this->systemConfig['subscribe_domain'] ? $this->systemConfig['subscribe_domain'] . '/s/' . $code : $this->systemConfig['website_url'] . '/s/' . $code;
 
 
         return Response::view('/user/subscribe', $view);
         return Response::view('/user/subscribe', $view);
     }
     }

+ 1 - 0
app/Http/Kernel.php

@@ -60,6 +60,7 @@ class Kernel extends HttpKernel
         'admin' => \App\Http\Middleware\Admin::class,
         'admin' => \App\Http\Middleware\Admin::class,
         'user' => \App\Http\Middleware\User::class,
         'user' => \App\Http\Middleware\User::class,
         'forbidden' => \App\Http\Middleware\Forbidden::class,
         'forbidden' => \App\Http\Middleware\Forbidden::class,
+        'affiliate' => \App\Http\Middleware\Affiliate::class,
         'Muv2' => \App\Http\Middleware\Muv2::class
         'Muv2' => \App\Http\Middleware\Muv2::class
 
 
     ];
     ];

+ 3 - 2
app/Http/Middleware/Admin.php

@@ -10,8 +10,9 @@ class Admin
     /**
     /**
      * Handle an incoming request.
      * Handle an incoming request.
      *
      *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
+     * @param  \Illuminate\Http\Request $request
+     * @param  \Closure                 $next
+     *
      * @return mixed
      * @return mixed
      */
      */
     public function handle($request, Closure $next)
     public function handle($request, Closure $next)

+ 28 - 0
app/Http/Middleware/Affiliate.php

@@ -0,0 +1,28 @@
+<?php
+
+namespace App\Http\Middleware;
+
+use Cookie;
+use Closure;
+use Redirect;
+
+class Affiliate
+{
+    /**
+     * Handle an incoming request.
+     *
+     * @param  \Illuminate\Http\Request $request
+     * @param  \Closure                 $next
+     *
+     * @return mixed
+     */
+    public function handle($request, Closure $next)
+    {
+        $aff = trim($request->get('aff', 0));
+        if ($aff) {
+            Cookie::queue('register_aff', $aff, 129600);
+        }
+
+        return $next($request);
+    }
+}

+ 2 - 1
app/Http/Middleware/Forbidden.php

@@ -14,7 +14,8 @@ class Forbidden
      * Handle an incoming request.
      * Handle an incoming request.
      *
      *
      * @param  \Illuminate\Http\Request $request
      * @param  \Illuminate\Http\Request $request
-     * @param  \Closure $next
+     * @param  \Closure                 $next
+     *
      * @return mixed
      * @return mixed
      */
      */
     public function handle($request, Closure $next)
     public function handle($request, Closure $next)

+ 10 - 7
app/Http/Middleware/Muv2.php

@@ -6,12 +6,14 @@ use App\Http\Models\SsNode;
 use Closure;
 use Closure;
 use Redirect;
 use Redirect;
 
 
-class Muv2{
+class Muv2
+{
     /**
     /**
      * Handle an incoming request.
      * Handle an incoming request.
      *
      *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
+     * @param  \Illuminate\Http\Request $request
+     * @param  \Closure                 $next
+     *
      * @return mixed
      * @return mixed
      */
      */
     public function handle($request, Closure $next)
     public function handle($request, Closure $next)
@@ -22,15 +24,16 @@ class Muv2{
             return response()->json([
             return response()->json([
                 'ret' => 0,
                 'ret' => 0,
                 'msg' => 'token or source is invalid'
                 'msg' => 'token or source is invalid'
-            ],401);
+            ], 401);
         }
         }
+
         //验证ip是否在节点ip列表当中
         //验证ip是否在节点ip列表当中
-        $ssnode = SsNode::query()->where('ip',$_SERVER["REMOTE_ADDR"])->orWhere('ipv6',$_SERVER["REMOTE_ADDR"])->first();
-        if($ssnode == null && $_SERVER["REMOTE_ADDR"] != '127.0.0.1'){
+        $ssnode = SsNode::query()->where('ip', $_SERVER["REMOTE_ADDR"])->orWhere('ipv6', $_SERVER["REMOTE_ADDR"])->first();
+        if ($ssnode == null && $_SERVER["REMOTE_ADDR"] != '127.0.0.1') {
             return response()->json([
             return response()->json([
                 'ret' => 0,
                 'ret' => 0,
                 'msg' => 'token or source is invalid'
                 'msg' => 'token or source is invalid'
-            ],401);
+            ], 401);
         }
         }
 
 
         return $next($request);
         return $next($request);

+ 4 - 3
app/Http/Middleware/RedirectIfAuthenticated.php

@@ -10,9 +10,10 @@ class RedirectIfAuthenticated
     /**
     /**
      * Handle an incoming request.
      * Handle an incoming request.
      *
      *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
-     * @param  string|null  $guard
+     * @param  \Illuminate\Http\Request $request
+     * @param  \Closure                 $next
+     * @param  string|null              $guard
+     *
      * @return mixed
      * @return mixed
      */
      */
     public function handle($request, Closure $next, $guard = null)
     public function handle($request, Closure $next, $guard = null)

+ 2 - 1
app/Http/Middleware/User.php

@@ -12,7 +12,8 @@ class User
      * Handle an incoming request.
      * Handle an incoming request.
      *
      *
      * @param  \Illuminate\Http\Request $request
      * @param  \Illuminate\Http\Request $request
-     * @param  \Closure $next
+     * @param  \Closure                 $next
+     *
      * @return mixed
      * @return mixed
      */
      */
     public function handle($request, Closure $next)
     public function handle($request, Closure $next)

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

@@ -12,6 +12,6 @@ class VerifyCsrfToken extends BaseVerifier
      * @var array
      * @var array
      */
      */
     protected $except = [
     protected $except = [
-        "payment/*","mu/v2/*"
+        "payment/*", "mu/v2/*"
     ];
     ];
 }
 }

+ 5 - 1
resources/lang/en/home.php

@@ -100,7 +100,7 @@ return [
     'traffic_log_30days'              => '30 Days Statistics',
     'traffic_log_30days'              => '30 Days Statistics',
     'traffic_log_24hours'             => '24 Hours Statistics',
     'traffic_log_24hours'             => '24 Hours Statistics',
     'traffic_log_keywords'            => 'Bandwidth',
     'traffic_log_keywords'            => 'Bandwidth',
-    'traffic_log_unit'                => 'unit: M',
+    'traffic_log_unit'                => 'unit: G',
     'traffic_log_max'                 => 'Max',
     'traffic_log_max'                 => 'Max',
 
 
     // 邀请码
     // 邀请码
@@ -162,6 +162,10 @@ return [
     'referral_table_none'             => 'None Data',
     'referral_table_none'             => 'None Data',
     'referral_table_apply'            => 'Apply',
     'referral_table_apply'            => 'Apply',
     'referral_summary'                => 'Total rebate :amount RMB (:total times), full :money RMB can apply for withdrawals.',
     'referral_summary'                => 'Total rebate :amount RMB (:total times), full :money RMB can apply for withdrawals.',
+    'referral_apply_title'            => 'Present Record',
+    'referral_apply_table_amount'     => 'Amount',
+    'referral_apply_table_status'     => 'Status',
+    'referral_apply_table_date'       => 'Date',
     'console'                         => 'Console',
     'console'                         => 'Console',
     'profile'                         => 'Profile',
     'profile'                         => 'Profile',
     'logout'                          => 'Log Out',
     'logout'                          => 'Log Out',

+ 5 - 1
resources/lang/ja/home.php

@@ -100,7 +100,7 @@ return [
     'traffic_log_30days'              => '30 日内のデータ通信量消耗',
     'traffic_log_30days'              => '30 日内のデータ通信量消耗',
     'traffic_log_24hours'             => '24 時間内のデータ通信量消耗',
     'traffic_log_24hours'             => '24 時間内のデータ通信量消耗',
     'traffic_log_keywords'            => 'データ通信量消耗',
     'traffic_log_keywords'            => 'データ通信量消耗',
-    'traffic_log_unit'                => '単位/M',
+    'traffic_log_unit'                => '単位 / G',
     'traffic_log_max'                 => '最大値',
     'traffic_log_max'                 => '最大値',
 
 
     // 邀请码
     // 邀请码
@@ -162,6 +162,10 @@ return [
     'referral_table_none'             => 'データなし',
     'referral_table_none'             => 'データなし',
     'referral_table_apply'            => '引き出しを申請する',
     'referral_table_apply'            => '引き出しを申請する',
     'referral_summary'                => '全部 :total 件の記録があり、合計 :amount のリベートがあり、 :total に達すると現金引き出しを申請することができます。',
     'referral_summary'                => '全部 :total 件の記録があり、合計 :amount のリベートがあり、 :total に達すると現金引き出しを申請することができます。',
+    'referral_apply_title'            => '記録を現す',
+    'referral_apply_table_amount'     => '金額',
+    'referral_apply_table_status'     => '狀態',
+    'referral_apply_table_date'       => '日付',
     'console'                         => '管理センター',
     'console'                         => '管理センター',
     'profile'                         => '個人設定',
     'profile'                         => '個人設定',
     'logout'                          => 'ログアウト',
     'logout'                          => 'ログアウト',

+ 5 - 1
resources/lang/ko/home.php

@@ -98,7 +98,7 @@ return [
     'traffic_log_30days'              => '30 일트래픽 사용현황',
     'traffic_log_30days'              => '30 일트래픽 사용현황',
     'traffic_log_24hours'             => '24 간트패픽 사용현환',
     'traffic_log_24hours'             => '24 간트패픽 사용현환',
     'traffic_log_keywords'            => '사용된트래픽',
     'traffic_log_keywords'            => '사용된트래픽',
-    'traffic_log_unit'                => '단위M',
+    'traffic_log_unit'                => '단위 / G',
     'traffic_log_max'                 => '최대치',
     'traffic_log_max'                 => '최대치',
 
 
     // 邀请码
     // 邀请码
@@ -160,6 +160,10 @@ return [
     'referral_table_none'             => '데이터 없음',
     'referral_table_none'             => '데이터 없음',
     'referral_table_apply'            => '출금신청 ',
     'referral_table_apply'            => '출금신청 ',
     'referral_summary'                => '총 :total 개기록,합계리턴 :amount 원, :money 원되여야 리턴가능 합니다。',
     'referral_summary'                => '총 :total 개기록,합계리턴 :amount 원, :money 원되여야 리턴가능 합니다。',
+    'referral_apply_title'            => '현금 인출 기록',
+    'referral_apply_table_amount'     => '양',
+    'referral_apply_table_status'     => '상태',
+    'referral_apply_table_date'       => '날짜',
     'console'                         => '관리센트',
     'console'                         => '관리센트',
     'profile'                         => '개인정보',
     'profile'                         => '개인정보',
     'logout'                          => '로그아웃',
     'logout'                          => '로그아웃',

+ 6 - 2
resources/lang/zh-CN/home.php

@@ -96,11 +96,11 @@ return [
     'service_type_2'                  => '套餐',
     'service_type_2'                  => '套餐',
 
 
     // 流量日志
     // 流量日志
-    'traffic_log_tips'                => '提示:流量统计图更新会有延迟。按天统计图在次日更新,按小时统计图在次小时更新。(每月1日月流量不显示流量)',
+    'traffic_log_tips'                => '提示:流量统计更新会有延迟。按天统计于次日更新,按小时统计于次小时更新。(每月1日不显示月流量统计数据)',
     'traffic_log_30days'              => '本月流量使用情况',
     'traffic_log_30days'              => '本月流量使用情况',
     'traffic_log_24hours'             => '今日流量使用情况',
     'traffic_log_24hours'             => '今日流量使用情况',
     'traffic_log_keywords'            => '使用流量',
     'traffic_log_keywords'            => '使用流量',
-    'traffic_log_unit'                => '单位 / MB',
+    'traffic_log_unit'                => '单位 / G',
     'traffic_log_max'                 => '使用高峰',
     'traffic_log_max'                 => '使用高峰',
 
 
     // 邀请码
     // 邀请码
@@ -162,6 +162,10 @@ return [
     'referral_table_none'             => '暂无数据',
     'referral_table_none'             => '暂无数据',
     'referral_table_apply'            => '提现',
     'referral_table_apply'            => '提现',
     'referral_summary'                => '合计返利 :amount 元( :total 次),满 :money 元可以申请提现。',
     'referral_summary'                => '合计返利 :amount 元( :total 次),满 :money 元可以申请提现。',
+    'referral_apply_title'            => '提现记录',
+    'referral_apply_table_amount'     => '提现金额',
+    'referral_apply_table_status'     => '状态',
+    'referral_apply_table_date'       => '提现日期',
     'console'                         => '管理中心',
     'console'                         => '管理中心',
     'profile'                         => '个人设置',
     'profile'                         => '个人设置',
     'logout'                          => '退出登入',
     'logout'                          => '退出登入',

+ 6 - 2
resources/lang/zh-tw/home.php

@@ -96,11 +96,11 @@ return [
     'service_type_2'                  => '套餐',
     'service_type_2'                  => '套餐',
 
 
     // 流量日志
     // 流量日志
-    'traffic_log_tips'                => '提示:流量統計圖更新會有延遲。按天統計圖在次日更新,按小時統計圖在次小時更新。',
+    'traffic_log_tips'                => '提示:流量統計更新會有延遲。按天統計于次日更新,按小時統計圖于次小時更新。(每月1日不顯示月流量統計數據)',
     'traffic_log_30days'              => '最近 30 天的流量使用情况',
     'traffic_log_30days'              => '最近 30 天的流量使用情况',
     'traffic_log_24hours'             => '最近 24 小時的流量使用情况',
     'traffic_log_24hours'             => '最近 24 小時的流量使用情况',
     'traffic_log_keywords'            => '使用流量',
     'traffic_log_keywords'            => '使用流量',
-    'traffic_log_unit'                => '組織 / MB',
+    'traffic_log_unit'                => '單位 / G',
     'traffic_log_max'                 => '使用高峰',
     'traffic_log_max'                 => '使用高峰',
 
 
     // 邀请码
     // 邀请码
@@ -162,6 +162,10 @@ return [
     'referral_table_none'             => '暫無數據',
     'referral_table_none'             => '暫無數據',
     'referral_table_apply'            => '提現',
     'referral_table_apply'            => '提現',
     'referral_summary'                => '合計返利 :amount 元(:total次),滿 :money元 可以申請提現。',
     'referral_summary'                => '合計返利 :amount 元(:total次),滿 :money元 可以申請提現。',
+    'referral_apply_title'            => '提現記錄',
+    'referral_apply_table_amount'     => '提現金額',
+    'referral_apply_table_status'     => '狀態',
+    'referral_apply_table_date'       => '提現日期',
     'console'                         => '管理中心',
     'console'                         => '管理中心',
     'profile'                         => '個人設置',
     'profile'                         => '個人設置',
     'logout'                          => '登出',
     'logout'                          => '登出',

+ 11 - 0
resources/views/403.blade.php

@@ -54,6 +54,17 @@
 <!-- END CORE PLUGINS -->
 <!-- END CORE PLUGINS -->
 <!-- BEGIN THEME GLOBAL SCRIPTS -->
 <!-- BEGIN THEME GLOBAL SCRIPTS -->
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
+</script>
+
 <!-- END THEME GLOBAL SCRIPTS -->
 <!-- END THEME GLOBAL SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->

+ 11 - 0
resources/views/404.blade.php

@@ -56,6 +56,17 @@
 <!-- END CORE PLUGINS -->
 <!-- END CORE PLUGINS -->
 <!-- BEGIN THEME GLOBAL SCRIPTS -->
 <!-- BEGIN THEME GLOBAL SCRIPTS -->
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
+</script>
+
 <!-- END THEME GLOBAL SCRIPTS -->
 <!-- END THEME GLOBAL SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->

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

@@ -19,7 +19,7 @@
                     <div class="portlet-body">
                     <div class="portlet-body">
                         <div class="row">
                         <div class="row">
                             <div class="col-md-6">
                             <div class="col-md-6">
-                                <textarea class="form-control" rows="33" name="content" id="content" placeholder="请填入要反解析的SS(R)链接,一行一条" autofocus></textarea>
+                                <textarea class="form-control" rows="33" name="content" id="content" placeholder="请填入要反解析的SSR(R)链接,一行一条" autofocus></textarea>
                             </div>
                             </div>
                             <div class="col-md-6">
                             <div class="col-md-6">
                                 <textarea class="form-control" rows="33" name="result" id="result" readonly="readonly"></textarea>
                                 <textarea class="form-control" rows="33" name="result" id="result" readonly="readonly"></textarea>

+ 11 - 0
resources/views/admin/layouts.blade.php

@@ -357,6 +357,17 @@
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <script src="/assets/layouts/layout4/scripts/layout.min.js" type="text/javascript"></script>
 <script src="/assets/layouts/layout4/scripts/layout.min.js" type="text/javascript"></script>
 <!-- END THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
+</script>
+
 </body>
 </body>
 
 
 </html>
 </html>

+ 9 - 58
resources/views/login.blade.php

@@ -142,66 +142,17 @@
 <script src="/assets/global/plugins/jquery-validation/js/localization/messages_zh.min.js" type="text/javascript"></script>
 <script src="/assets/global/plugins/jquery-validation/js/localization/messages_zh.min.js" type="text/javascript"></script>
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
 <script src="/assets/global/scripts/app.min.js" type="text/javascript"></script>
 <script src="/assets/pages/scripts/login.js" type="text/javascript"></script>
 <script src="/assets/pages/scripts/login.js" type="text/javascript"></script>
-<script type="text/javascript">
-    // 雪花特效
-    /*
-     (function () {
-     var style = document.createElement("style");
-     style.innerText = "body .snow{position: fixed;color: #fff;line-height: 1;text-shadow: 0 0 .2em #ffffff;z-index: 2;}";
-     document.getElementsByTagName("head")[0].appendChild(style);
 
 
-     var dpr = ~~document.documentElement.getAttribute("data-dpr") || 1;
-     var wWidth = window.innerWidth;
-     var wHeight = window.innerHeight;
-     var maxNum = wWidth / 50;
-     var snowArr = [];
-     function createSnow (r) {
-     var size = Math.random() + .8;
-     var left = wWidth * Math.random();
-     var speed = (Math.random() * .5 + .6) * size * dpr;
-     var snow = document.createElement("div");
-     snow.innerText = "❅";
-     snow.className = "snow";
-     var text = "";
-     text += "font-size:";
-     text += size;
-     text += "em;left:";
-     text += left;
-     text += "px;bottom:100%;";
-     snow.style.cssText = text;
-     document.body.appendChild(snow);
-     var top = r ? wHeight * Math.random() : (-snow.offsetHeight);
-     snow.style.top = top + "px";
-     snow.style.bottom = "auto";
-     return {
-     snow: snow,
-     speed: speed,
-     top: top
-     }
-     }
-     function draw () {
-     for (var i = 0; i < maxNum; i++) {
-     if (!snowArr[i]) {
-     if (typeof snowArr[i] == "undefined") {
-     snowArr[i] = createSnow(true);
-     } else {
-     snowArr[i] = createSnow();
-     }
-     }
-     var data = snowArr[i];
-     data.top += data.speed;
-     data.snow.style.top = data.top + "px";
-     if (data.top > wHeight) {
-     document.body.removeChild(data.snow);
-     snowArr[i] = null;
-     }
-     }
-     requestAnimationFrame(draw);
-     }
-     draw();
-     })();
-     */
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
 </script>
 </script>
+
 <!-- 统计 -->
 <!-- 统计 -->
 {!! $website_analytics !!}
 {!! $website_analytics !!}
 <!-- 客服 -->
 <!-- 客服 -->

+ 12 - 0
resources/views/register.blade.php

@@ -168,6 +168,18 @@
         });
         });
     }
     }
 </script>
 </script>
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
+</script>
+
+
 <!-- 统计 -->
 <!-- 统计 -->
 {!! $website_analytics !!}
 {!! $website_analytics !!}
 <!-- 客服 -->
 <!-- 客服 -->

+ 11 - 0
resources/views/user/layouts.blade.php

@@ -232,6 +232,17 @@
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <!-- BEGIN THEME LAYOUT SCRIPTS -->
 <script src="/assets/layouts/layout4/scripts/layout.min.js" type="text/javascript"></script>
 <script src="/assets/layouts/layout4/scripts/layout.min.js" type="text/javascript"></script>
 <!-- END THEME LAYOUT SCRIPTS -->
 <!-- END THEME LAYOUT SCRIPTS -->
+
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-122312249-1"></script>
+<script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag('js', new Date());
+
+    gtag('config', 'UA-122312249-1');
+</script>
+
 <!-- 统计 -->
 <!-- 统计 -->
 {!! $website_analytics !!}
 {!! $website_analytics !!}
 <!-- 客服 -->
 <!-- 客服 -->

+ 61 - 4
resources/views/user/referral.blade.php

@@ -39,7 +39,8 @@
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
-                <!-- BEGIN EXAMPLE TABLE PORTLET-->
+
+                <!-- 推广记录 -->
                 <div class="portlet light bordered">
                 <div class="portlet light bordered">
                     <div class="portlet-title">
                     <div class="portlet-title">
                         <div class="caption font-dark">
                         <div class="caption font-dark">
@@ -55,11 +56,11 @@
                                 <thead>
                                 <thead>
                                 <tr>
                                 <tr>
                                     <th> # </th>
                                     <th> # </th>
+                                    <th> {{trans('home.referral_table_date')}} </th>
                                     <th> {{trans('home.referral_table_user')}} </th>
                                     <th> {{trans('home.referral_table_user')}} </th>
                                     <th> {{trans('home.referral_table_amount')}} </th>
                                     <th> {{trans('home.referral_table_amount')}} </th>
                                     <th> {{trans('home.referral_table_commission')}} </th>
                                     <th> {{trans('home.referral_table_commission')}} </th>
                                     <th> {{trans('home.referral_table_status')}} </th>
                                     <th> {{trans('home.referral_table_status')}} </th>
-                                    <th> {{trans('home.referral_table_date')}} </th>
                                 </tr>
                                 </tr>
                                 </thead>
                                 </thead>
                                 <tbody>
                                 <tbody>
@@ -71,6 +72,7 @@
                                     @foreach($referralLogList as $key => $referralLog)
                                     @foreach($referralLogList as $key => $referralLog)
                                         <tr class="odd gradeX">
                                         <tr class="odd gradeX">
                                             <td> {{$key + 1}} </td>
                                             <td> {{$key + 1}} </td>
+                                            <td> {{$referralLog->created_at}} </td>
                                             <td> {{$referralLog->user->username}} </td>
                                             <td> {{$referralLog->user->username}} </td>
                                             <td> ¥{{$referralLog->amount}} </td>
                                             <td> ¥{{$referralLog->amount}} </td>
                                             <td> ¥{{$referralLog->ref_amount}} </td>
                                             <td> ¥{{$referralLog->ref_amount}} </td>
@@ -83,7 +85,6 @@
                                                     <span class="label label-sm label-info">未提现</span>
                                                     <span class="label label-sm label-info">未提现</span>
                                                 @endif
                                                 @endif
                                             </td>
                                             </td>
-                                            <td> {{$referralLog->created_at}} </td>
                                         </tr>
                                         </tr>
                                     @endforeach
                                     @endforeach
                                 @endif
                                 @endif
@@ -102,7 +103,63 @@
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
-                <!-- END EXAMPLE TABLE PORTLET-->
+
+                <!-- 提现记录 -->
+                <div class="portlet light bordered">
+                    <div class="portlet-title">
+                        <div class="caption font-dark">
+                            <span class="caption-subject bold"> {{trans('home.referral_apply_title')}} </span>
+                        </div>
+                    </div>
+                    <div class="portlet-body">
+                        <div class="table-scrollable">
+                            <table class="table table-striped table-bordered table-hover table-checkable order-column">
+                                <thead>
+                                <tr>
+                                    <th> # </th>
+                                    <th> {{trans('home.referral_apply_table_date')}} </th>
+                                    <th> {{trans('home.referral_apply_table_amount')}} </th>
+                                    <th> {{trans('home.referral_apply_table_status')}} </th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                @if($referralApplyList->isEmpty())
+                                    <tr>
+                                        <td colspan="6" style="text-align: center;"> {{trans('home.referral_table_none')}} </td>
+                                    </tr>
+                                @else
+                                    @foreach($referralApplyList as $key => $vo)
+                                        <tr class="odd gradeX">
+                                            <td> {{$key + 1}} </td>
+                                            <td> {{$vo->created_at}} </td>
+                                            <td> {{$vo->amount}} </td>
+                                            <td>
+                                                @if ($vo->status == 0)
+                                                    <span class="label label-sm label-danger">待审核</span>
+                                                @elseif($vo->status == 1)
+                                                    <span class="label label-sm label-default">审核通过待打款</span>
+                                                @elseif($vo->status == 2)
+                                                    <span class="label label-sm label-default">已打款</span>
+                                                @else
+                                                    <span class="label label-sm label-info">驳回</span>
+                                                @endif
+                                            </td>
+                                        </tr>
+                                    @endforeach
+                                @endif
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="row">
+                            <div class="col-md-7 col-sm-7">
+                                <div class="dataTables_paginate paging_bootstrap_full_number pull-right">
+                                    {{ $referralLogList->links() }}
+                                </div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+
             </div>
             </div>
         </div>
         </div>
         <!-- END PAGE BASE CONTENT -->
         <!-- END PAGE BASE CONTENT -->

+ 2 - 2
routes/web.php

@@ -2,7 +2,7 @@
 
 
 Route::get('s/{code}', 'SubscribeController@index'); // 节点订阅地址
 Route::get('s/{code}', 'SubscribeController@index'); // 节点订阅地址
 
 
-Route::group(['middleware' => ['forbidden']], function () {
+Route::group(['middleware' => ['forbidden', 'affiliate']], function () {
     Route::get('lang/{locale}', 'UserController@switchLang'); // 语言切换
     Route::get('lang/{locale}', 'UserController@switchLang'); // 语言切换
     Route::any('login', 'LoginController@index'); // 登录
     Route::any('login', 'LoginController@index'); // 登录
     Route::get('logout', 'LoginController@logout'); // 退出
     Route::get('logout', 'LoginController@logout'); // 退出
@@ -97,7 +97,7 @@ Route::group(['middleware' => ['forbidden', 'user', 'admin']], function () {
     Route::post("marketing/addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
     Route::post("marketing/addPushMarketing", "MarketingController@addPushMarketing"); // 推送消息
 });
 });
 
 
-Route::group(['middleware' => ['forbidden', 'user']], function () {
+Route::group(['middleware' => ['forbidden', 'user', 'affiliate']], function () {
     Route::any('/', 'UserController@index'); // 用户首页
     Route::any('/', 'UserController@index'); // 用户首页
     Route::any('user', 'UserController@index'); // 用户首页
     Route::any('user', 'UserController@index'); // 用户首页
     Route::any('user/article', 'UserController@article'); // 文章详情
     Route::any('user/article', 'UserController@article'); // 文章详情