Browse Source

small fixes

iamsaltedfish 3 years ago
parent
commit
8f8ab1d5a3

+ 1 - 0
.gitignore

@@ -19,6 +19,7 @@ config/.config.php.bak
 config/appprofile.php
 config/appprofile.php
 config/ClientDownloadVersion.json
 config/ClientDownloadVersion.json
 
 
+public/mazer
 public/ssr-download/
 public/ssr-download/
 public/clients/
 public/clients/
 public/images/*.*
 public/images/*.*

+ 12 - 1
app/routes.php

@@ -87,7 +87,10 @@ return function (SlimApp $app) {
         $this->get('/bought',                   App\Controllers\UserController::class . ':bought');
         $this->get('/bought',                   App\Controllers\UserController::class . ':bought');
         $this->delete('/bought',                App\Controllers\UserController::class . ':deleteBoughtGet');
         $this->delete('/bought',                App\Controllers\UserController::class . ':deleteBoughtGet');
         $this->get('/url_reset',                App\Controllers\UserController::class . ':resetURL');
         $this->get('/url_reset',                App\Controllers\UserController::class . ':resetURL');
-        $this->get('/inviteurl_reset',          App\Controllers\UserController::class . ':resetInviteURL');
+        $this->put('/invite',                   App\Controllers\UserController::class . ':resetInviteURL');
+
+        $this->get('/order',                    App\Controllers\UserController::class . ':user_order');
+        $this->get('/product',                  App\Controllers\UserController::class . ':product_index');
 
 
         // 订阅记录
         // 订阅记录
         $this->get('/subscribe_log',            App\Controllers\UserController::class . ':subscribe_log');
         $this->get('/subscribe_log',            App\Controllers\UserController::class . ':subscribe_log');
@@ -175,6 +178,14 @@ return function (SlimApp $app) {
         $this->delete('/bought',                App\Controllers\Admin\ShopController::class . ':deleteBoughtGet');
         $this->delete('/bought',                App\Controllers\Admin\ShopController::class . ':deleteBoughtGet');
         $this->post('/bought/ajax',             App\Controllers\Admin\ShopController::class . ':ajax_bought');
         $this->post('/bought/ajax',             App\Controllers\Admin\ShopController::class . ':ajax_bought');
 
 
+        // Product
+        $this->get('/product',                  App\Controllers\Admin\ProductController::class . ':index');
+        $this->get('/product/create',           App\Controllers\Admin\ProductController::class . ':create');
+        $this->post('/product',                 App\Controllers\Admin\ProductController::class . ':save');
+        $this->get('/product/{id}/edit',        App\Controllers\Admin\ProductController::class . ':edit');
+        $this->put('/product/{id}',             App\Controllers\Admin\ProductController::class . ':update');
+        $this->delete('/product/{id}',          App\Controllers\Admin\ProductController::class . ':delete');
+
         // Ann Mange
         // Ann Mange
         $this->get('/announcement',             App\Controllers\Admin\AnnController::class . ':index');
         $this->get('/announcement',             App\Controllers\Admin\AnnController::class . ':index');
         $this->get('/announcement/create',      App\Controllers\Admin\AnnController::class . ':create');
         $this->get('/announcement/create',      App\Controllers\Admin\AnnController::class . ':create');

+ 1 - 1
resources/views/material/user/invite.tpl

@@ -26,7 +26,7 @@
                         </div>
                         </div>
                     </div>
                     </div>
                 </div>
                 </div>
-                {if $user->class!=0}
+                {if $user->class>=0}
                     {if $user->invite_num!=-1}
                     {if $user->invite_num!=-1}
                         <div class="col-lg-6 col-md-6">
                         <div class="col-lg-6 col-md-6">
                             <div class="card margin-bottom-no">
                             <div class="card margin-bottom-no">

+ 1 - 2
resources/views/material/user/subscribe_log.tpl

@@ -36,8 +36,7 @@
                                                 <td>#{$log->id}</td>
                                                 <td>#{$log->id}</td>
                                                 <td>{$log->subscribe_type}</td>
                                                 <td>{$log->subscribe_type}</td>
                                                 <td>{$log->request_ip}</td>
                                                 <td>{$log->request_ip}</td>
-                                                {assign var="location" value=$iplocation->getlocation($log->request_ip)}
-                                                <td>{iconv("gbk", "utf-8//IGNORE", $location.country)} {iconv("gbk", "utf-8//IGNORE", $location.area)}</td>
+                                                <td>{Tools::getIpInfo($log->request_ip)}</td>
                                                 <td>{$log->request_time}</td>
                                                 <td>{$log->request_time}</td>
                                                 <td>{$log->request_user_agent}</td>
                                                 <td>{$log->request_user_agent}</td>
                                             </tr>
                                             </tr>

+ 17 - 28
src/Controllers/AuthController.php

@@ -310,43 +310,34 @@ class AuthController extends BaseController
     {
     {
         if (Setting::obtain('reg_mode') == 'close') {
         if (Setting::obtain('reg_mode') == 'close') {
             $res['ret'] = 0;
             $res['ret'] = 0;
-            $res['msg'] = '未开放注册。';
+            $res['msg'] = '暂时不对外开放注册';
             return $res;
             return $res;
         }
         }
 
 
         if ($code == '') {
         if ($code == '') {
             $res['ret'] = 0;
             $res['ret'] = 0;
-            $res['msg'] = '目前注册模式为邀请注册,请填写邀请码,然后重试';
+            $res['msg'] = '注册需要填写邀请码';
             return $res;
             return $res;
         }
         }
 
 
-        //dumplin:1、邀请人等级为0则邀请码不可用;2、邀请人invite_num为可邀请次数,填负数则为无限
-        if ($code != null) {
-            $c = InviteCode::where('code', $code)->first();
-        }
+        $c = InviteCode::where('code', $code)->first();
         if ($c == null) {
         if ($c == null) {
             if (Setting::obtain('reg_mode') == 'invite') {
             if (Setting::obtain('reg_mode') == 'invite') {
                 $res['ret'] = 0;
                 $res['ret'] = 0;
-                $res['msg'] = '邀请码无效';
+                $res['msg'] = '这个邀请码不存在';
                 return $res;
                 return $res;
             }
             }
         } elseif ($c->user_id != 0) {
         } elseif ($c->user_id != 0) {
-            $gift_user = User::where('id', '=', $c->user_id)->first();
+            $gift_user = User::where('id', $c->user_id)->first();
             if ($gift_user == null) {
             if ($gift_user == null) {
                 $res['ret'] = 0;
                 $res['ret'] = 0;
-                $res['msg'] = '邀请人不存在';
-                return $res;
-            }
-
-            if ($gift_user->class == 0) {
-                $res['ret'] = 0;
-                $res['msg'] = '邀请人不是VIP';
+                $res['msg'] = '邀请码已失效';
                 return $res;
                 return $res;
             }
             }
 
 
             if ($gift_user->invite_num == 0) {
             if ($gift_user->invite_num == 0) {
                 $res['ret'] = 0;
                 $res['ret'] = 0;
-                $res['msg'] = '邀请人可用邀请次数为0';
+                $res['msg'] = '邀请码不可用';
                 return $res;
                 return $res;
             }
             }
         }
         }
@@ -392,13 +383,21 @@ class AuthController extends BaseController
             $user->money = $invitation['invitation_to_register_balance_reward'];
             $user->money = $invitation['invitation_to_register_balance_reward'];
             // 给邀请人反流量
             // 给邀请人反流量
             $gift_user->transfer_enable += $invitation['invitation_to_register_traffic_reward'] * 1024 * 1024 * 1024;
             $gift_user->transfer_enable += $invitation['invitation_to_register_traffic_reward'] * 1024 * 1024 * 1024;
-            --$gift_user->invite_num;
+            if (($gift_user->invite_num - 1) >= 0) {
+                --$gift_user->invite_num;
+                // 避免设置为不限制邀请次数的值 -1 发生变动
+            }
             $gift_user->save();
             $gift_user->save();
         }
         }
+
         if ($telegram_id) {
         if ($telegram_id) {
             $user->telegram_id = $telegram_id;
             $user->telegram_id = $telegram_id;
         }
         }
 
 
+        $ga                     = new GA();
+        $secret                 = $ga->createSecret();
+        $user->ga_token         = $secret;
+        $user->ga_enable        = 0;
         $user->class_expire     = date('Y-m-d H:i:s', time() + $configs['sign_up_for_class_time'] * 86400);
         $user->class_expire     = date('Y-m-d H:i:s', time() + $configs['sign_up_for_class_time'] * 86400);
         $user->class            = $configs['sign_up_for_class'];
         $user->class            = $configs['sign_up_for_class'];
         $user->node_connector   = $configs['connection_device_limit'];
         $user->node_connector   = $configs['connection_device_limit'];
@@ -407,28 +406,18 @@ class AuthController extends BaseController
         $user->reg_date         = date('Y-m-d H:i:s');
         $user->reg_date         = date('Y-m-d H:i:s');
         $user->reg_ip           = $_SERVER['REMOTE_ADDR'];
         $user->reg_ip           = $_SERVER['REMOTE_ADDR'];
         $user->theme            = $_ENV['theme'];
         $user->theme            = $_ENV['theme'];
-
         $groups                 = explode(',', $_ENV['random_group']);
         $groups                 = explode(',', $_ENV['random_group']);
-
         $user->node_group       = $groups[array_rand($groups)];
         $user->node_group       = $groups[array_rand($groups)];
 
 
-        $ga = new GA();
-        $secret = $ga->createSecret();
-
-        $user->ga_token = $secret;
-        $user->ga_enable = 0;
-
         if ($user->save()) {
         if ($user->save()) {
             Auth::login($user->id, 3600);
             Auth::login($user->id, 3600);
-
-            // 记录登录成功
             $user->collectLoginIP($_SERVER['REMOTE_ADDR']);
             $user->collectLoginIP($_SERVER['REMOTE_ADDR']);
 
 
             $res['ret'] = 1;
             $res['ret'] = 1;
             $res['msg'] = '注册成功!正在进入登录界面';
             $res['msg'] = '注册成功!正在进入登录界面';
-
             return $res;
             return $res;
         }
         }
+
         $res['ret'] = 0;
         $res['ret'] = 0;
         $res['msg'] = '未知错误';
         $res['msg'] = '未知错误';
         return $res;
         return $res;

+ 61 - 23
src/Controllers/UserController.php

@@ -18,6 +18,7 @@ use App\Models\{
     Token,
     Token,
     Bought,
     Bought,
     Coupon,
     Coupon,
+    Product,
     Payback,
     Payback,
     BlockIp,
     BlockIp,
     LoginIp,
     LoginIp,
@@ -28,6 +29,7 @@ use App\Models\{
     InviteCode,
     InviteCode,
     StreamMedia,
     StreamMedia,
     EmailVerify,
     EmailVerify,
+    ProductOrder,
     UserSubscribeLog
     UserSubscribeLog
 };
 };
 use App\Utils\{
 use App\Utils\{
@@ -55,6 +57,33 @@ use Slim\Http\{
  */
  */
 class UserController extends BaseController
 class UserController extends BaseController
 {
 {
+    public function user_order($request, $response, $args)
+    {
+        $user = $this->user;
+        $pageNum = $request->getQueryParams()['page'] ?? 1;
+        $orders = ProductOrder::where('user_id', $user->id)->orderBy('id', 'desc')->paginate(15, ['*'], 'page', $pageNum);
+        $orders->setPath('/user/order');
+        $render = Tools::paginate_render($orders);
+
+        return $response->write(
+            $this->view()
+                ->assign('orders', $orders)
+                ->assign('render', $render)
+                ->display('user/order.tpl')
+        );
+    }
+
+    public function product_index($request, $response, $args)
+    {
+        $products = Product::all();
+
+        return $response->write(
+            $this->view()
+                ->assign('products', $products)
+                ->display('user/product.tpl')
+        );
+    }
+
     /**
     /**
      * @param Request   $request
      * @param Request   $request
      * @param Response  $response
      * @param Response  $response
@@ -88,6 +117,12 @@ class UserController extends BaseController
             $geetest_html = null;
             $geetest_html = null;
         }
         }
 
 
+        $data = [
+            'today_traffic_usage' => ($this->user->transfer_enable == 0) ? 0 : ($this->user->u + $this->user->d - $this->user->last_day_t) / $this->user->transfer_enable * 100,
+            'past_traffic_usage' => ($this->user->transfer_enable == 0) ? 0 : $this->user->last_day_t / $this->user->transfer_enable * 100,
+            'residual_flow' => ($this->user->transfer_enable==0) ? 0 : ($this->user->transfer_enable - ($this->user->u + $this->user->d)) / $this->user->transfer_enable * 100,
+        ];
+
         return $response->write(
         return $response->write(
             $this->view()
             $this->view()
                 ->assign('ssr_sub_token', $this->user->getSublink())
                 ->assign('ssr_sub_token', $this->user->getSublink())
@@ -104,6 +139,7 @@ class UserController extends BaseController
                 ->assign('subInfo', LinkController::getSubinfo($this->user, 0))
                 ->assign('subInfo', LinkController::getSubinfo($this->user, 0))
                 ->assign('getUniversalSub', SubController::getUniversalSub($this->user))
                 ->assign('getUniversalSub', SubController::getUniversalSub($this->user))
                 ->assign('getClient', $token)
                 ->assign('getClient', $token)
+                ->assign('data', $data)
                 ->display('user/index.tpl')
                 ->display('user/index.tpl')
         );
         );
     }
     }
@@ -223,14 +259,15 @@ class UserController extends BaseController
         if ($code == '') {
         if ($code == '') {
             return $response->withJson([
             return $response->withJson([
                 'ret' => 0,
                 'ret' => 0,
-                'msg' => '非法输入'
+                'msg' => '请填写充值码'
             ]);
             ]);
         }
         }
+
         $codeq = Code::where('code', $code)->where('isused', 0)->first();
         $codeq = Code::where('code', $code)->where('isused', 0)->first();
         if ($codeq == null) {
         if ($codeq == null) {
             return $response->withJson([
             return $response->withJson([
                 'ret' => 0,
                 'ret' => 0,
-                'msg' => '此充值码错误'
+                'msg' => '没有这个充值码'
             ]);
             ]);
         }
         }
 
 
@@ -259,7 +296,7 @@ class UserController extends BaseController
 
 
             return $response->withJson([
             return $response->withJson([
                 'ret' => 1,
                 'ret' => 1,
-                'msg' => '充值成功,充值的金额为' . $codeq->number . '元。'
+                'msg' => '兑换成功,金额为 ' . $codeq->number . ' 元'
             ]);
             ]);
         }
         }
 
 
@@ -485,7 +522,7 @@ class UserController extends BaseController
             ->where('created_at', '>', time() - 86460) // 只获取最近一天零一分钟内上报的数据
             ->where('created_at', '>', time() - 86460) // 只获取最近一天零一分钟内上报的数据
             ->first();
             ->first();
             
             
-            if ($unlock != null) {
+            if ($unlock != null && $node != null) {
                 $details = json_decode($unlock->result, true);
                 $details = json_decode($unlock->result, true);
                 $details = str_replace('Originals Only', '仅限自制', $details);
                 $details = str_replace('Originals Only', '仅限自制', $details);
                 $details = str_replace('Oversea Only', '仅限海外', $details);
                 $details = str_replace('Oversea Only', '仅限海外', $details);
@@ -583,17 +620,26 @@ class UserController extends BaseController
         }
         }
 
 
         $pageNum = $request->getQueryParams()['page'] ?? 1;
         $pageNum = $request->getQueryParams()['page'] ?? 1;
-        $paybacks = Payback::where('ref_by', $this->user->id)->orderBy('id', 'desc')->paginate(15, ['*'], 'page', $pageNum);
+
+        $paybacks = Payback::where('ref_by', $this->user->id)
+        ->orderBy('id', 'desc')
+        ->paginate(15, ['*'], 'page', $pageNum);
+
         if (!$paybacks_sum = Payback::where('ref_by', $this->user->id)->sum('ref_get')) {
         if (!$paybacks_sum = Payback::where('ref_by', $this->user->id)->sum('ref_get')) {
             $paybacks_sum = 0;
             $paybacks_sum = 0;
         }
         }
+
         $paybacks->setPath('/user/invite');
         $paybacks->setPath('/user/invite');
         $render = Tools::paginate_render($paybacks);
         $render = Tools::paginate_render($paybacks);
+
+        $invite_url = $_ENV['baseUrl'] . '/auth/register?code=' . $code->code;
+
         return $this->view()
         return $this->view()
             ->assign('code', $code)
             ->assign('code', $code)
+            ->assign('render', $render)
             ->assign('paybacks', $paybacks)
             ->assign('paybacks', $paybacks)
+            ->assign('invite_url', $invite_url)
             ->assign('paybacks_sum', $paybacks_sum)
             ->assign('paybacks_sum', $paybacks_sum)
-            ->assign('render', $render)
             ->display('user/invite.tpl');
             ->display('user/invite.tpl');
     }
     }
 
 
@@ -1402,7 +1448,7 @@ class UserController extends BaseController
     {
     {
         if ($_ENV['enable_checkin'] === false) {
         if ($_ENV['enable_checkin'] === false) {
             $res['ret'] = 0;
             $res['ret'] = 0;
-            $res['msg'] = '目前站点没有启用签到功能。';
+            $res['msg'] = '暂时还不能签到';
             return $response->withJson($res);
             return $response->withJson($res);
         }
         }
 
 
@@ -1411,14 +1457,14 @@ class UserController extends BaseController
             if (!$ret) {
             if (!$ret) {
                 return $response->withJson([
                 return $response->withJson([
                     'ret' => 0,
                     'ret' => 0,
-                    'msg' => '系统无法接受您的验证结果,请刷新页面后重试'
+                    'msg' => '系统无法接受您的验证结果,请刷新页面后重试'
                 ]);
                 ]);
             }
             }
         }
         }
 
 
         if (strtotime($this->user->expire_in) < time()) {
         if (strtotime($this->user->expire_in) < time()) {
             $res['ret'] = 0;
             $res['ret'] = 0;
-            $res['msg'] = '您的账户已过期,无法签到。';
+            $res['msg'] = '没有过期的账户才可以签到';
             return $response->withJson($res);
             return $response->withJson($res);
         }
         }
 
 
@@ -1591,7 +1637,10 @@ class UserController extends BaseController
     {
     {
         $user = $this->user;
         $user = $this->user;
         $user->clear_inviteCodes();
         $user->clear_inviteCodes();
-        return $response->withStatus(302)->withHeader('Location', '/user/invite');
+
+        $res['ret'] = 1;
+        $res['msg'] = '重置成功';
+        return $response->withJson($res);
     }
     }
 
 
     /**
     /**
@@ -1682,27 +1731,16 @@ class UserController extends BaseController
         if ($_ENV['subscribeLog_show'] === false) {
         if ($_ENV['subscribeLog_show'] === false) {
             return $response->withStatus(302)->withHeader('Location', '/user');
             return $response->withStatus(302)->withHeader('Location', '/user');
         }
         }
+
         $pageNum = $request->getQueryParams()['page'] ?? 1;
         $pageNum = $request->getQueryParams()['page'] ?? 1;
         $logs = UserSubscribeLog::orderBy('id', 'desc')->where('user_id', $this->user->id)->paginate(15, ['*'], 'page', $pageNum);
         $logs = UserSubscribeLog::orderBy('id', 'desc')->where('user_id', $this->user->id)->paginate(15, ['*'], 'page', $pageNum);
-        $iplocation = new QQWry();
         $logs->setPath('/user/subscribe_log');
         $logs->setPath('/user/subscribe_log');
 
 
-        if (($request->getParam('json') == 1)) {
-            $res['ret'] = 1;
-            $res['logs'] = $logs;
-            foreach ($logs as $log) {
-                $location = $iplocation->getlocation($log->request_ip);
-                $log->country = iconv("gbk", "utf-8//IGNORE", $location['country']);
-                $log->area = iconv("gbk", "utf-8//IGNORE", $location['area']);
-            }
-            $res['subscribeLog_keep_days'] = $_ENV['subscribeLog_keep_days'];
-            return $response->withJson($res);
-        }
         $render = Tools::paginate_render($logs);
         $render = Tools::paginate_render($logs);
         return $this->view()
         return $this->view()
             ->assign('logs', $logs)
             ->assign('logs', $logs)
-            ->assign('iplocation', $iplocation)
             ->assign('render', $render)
             ->assign('render', $render)
+            ->registerClass('Tools', Tools::class)
             ->fetch('user/subscribe_log.tpl');
             ->fetch('user/subscribe_log.tpl');
     }
     }
 
 

+ 1 - 1
src/Models/User.php

@@ -209,7 +209,7 @@ class User extends Model
     public function addInviteCode(): string
     public function addInviteCode(): string
     {
     {
         while (true) {
         while (true) {
-            $temp_code = Tools::genRandomChar(4);
+            $temp_code = Tools::genRandomChar(10);
             if (InviteCode::where('code', $temp_code)->first() == null) {
             if (InviteCode::where('code', $temp_code)->first() == null) {
                 if (InviteCode::where('user_id', $this->id)->count() == 0) {
                 if (InviteCode::where('user_id', $this->id)->count() == 0) {
                     $code          = new InviteCode();
                     $code          = new InviteCode();

+ 10 - 10
src/Utils/Tools.php

@@ -907,23 +907,23 @@ class Tools
     {
     {
         $totalPage   = $data->lastPage();
         $totalPage   = $data->lastPage();
         $currentPage = $data->currentPage();
         $currentPage = $data->currentPage();
-        $html = '<ul class="pagination">';
+        $html = '<ul class="pagination pagination-primary justify-content-end">';
         for ($i = 1; $i <= $totalPage; $i++) {
         for ($i = 1; $i <= $totalPage; $i++) {
-            $active = '<li class="active"><span>' . $i . '</span></li>';
-            $page   = '<li><a href="' . $data->url($i) . '">' . $i . '</a></li>';
+            $active = '<li class="page-item active"><span class="page-link">' . $i . '</span></li>';
+            $page   = '<li class="page-item"><a class="page-link" href="' . $data->url($i) . '">' . $i . '</a></li>';
             if ($i == 1) {
             if ($i == 1) {
                 // 当前为第一页
                 // 当前为第一页
                 if ($currentPage == $i) {
                 if ($currentPage == $i) {
-                    $html .= '<li class="disabled"><span>«</span></li>';
+                    $html .= '<li class="page-item disabled"><a class="page-link">上一页</a></li>';
                     $html .= $active;
                     $html .= $active;
                     if ($i == $totalPage) {
                     if ($i == $totalPage) {
-                        $html .= '<li class="disabled"><span>»</span></li>';
+                        $html .= '<li class="page-item disabled"><a class="page-link">下一页</a></li>';
                         continue;
                         continue;
                     }
                     }
                 } else {
                 } else {
-                    $html .= '<li><a href="' . $data->url($currentPage - 1) . '" rel="prev">«</a></li>';
+                    $html .= '<li class="page-item"><a class="page-link" href="' . $data->url($currentPage - 1) . '">上一页</a></li>';
                     if ($currentPage > 4) {
                     if ($currentPage > 4) {
-                        $html .= '<li><a href="javascript:void(0)">...</a></li>';
+                        $html .= '<li class="page-item disabled"><a class="page-link">...</a></li>';
                     } else {
                     } else {
                         $html .= $page;
                         $html .= $page;
                     }
                     }
@@ -933,14 +933,14 @@ class Tools
                 // 当前为最后一页
                 // 当前为最后一页
                 if ($currentPage == $i) {
                 if ($currentPage == $i) {
                     $html .= $active;
                     $html .= $active;
-                    $html .= '<li class="disabled"><span>»</span></li>';
+                    $html .= '<li class="page-item disabled"><a class="page-link">下一页</a></li>';
                 } else {
                 } else {
                     if ($totalPage - $currentPage > 3) {
                     if ($totalPage - $currentPage > 3) {
-                        $html .= '<li><a href="javascript:void(0)">...</a></li>';
+                        $html .= '<li class="page-item disabled"><a class="page-link">...</a></li>';
                     } else {
                     } else {
                         $html .= $page;
                         $html .= $page;
                     }
                     }
-                    $html .= '<li><a href="' . $data->url($currentPage + 1) . '" rel="next">»</a></li>';
+                    $html .= '<li class="page-item"><a class="page-link" href="' . $data->url($currentPage + 1) . '">下一页</a></li>';
                 }
                 }
             }
             }
             if ($i > 1 && $i < $totalPage) {
             if ($i > 1 && $i < $totalPage) {