Explorar o código

chore: prepare shop rework

Cat %!s(int64=3) %!d(string=hai) anos
pai
achega
859690cfb4

+ 2 - 6
app/routes.php

@@ -32,16 +32,14 @@ return function (SlimApp $app): void {
         $this->post('/checkin', App\Controllers\UserController::class . ':doCheckin');
 
         $this->get('/announcement', App\Controllers\UserController::class . ':announcement');
+        $this->get('/docs', App\Controllers\UserController::class . ':docs');
+
         $this->get('/media', App\Controllers\UserController::class . ':media');
 
-        $this->get('/donate', App\Controllers\UserController::class . ':donate');
         $this->get('/profile', App\Controllers\UserController::class . ':profile');
         $this->get('/invite', App\Controllers\UserController::class . ':invite');
         $this->get('/disable', App\Controllers\UserController::class . ':disable');
 
-        $this->get('/node', App\Controllers\User\NodeController::class . ':userNodePage');
-        $this->get('/node/{id}', App\Controllers\User\NodeController::class . ':userNodeInfo');
-
         $this->get('/server', App\Controllers\User\ServerController::class . ':userServerPage');
 
         $this->get('/detect', App\Controllers\User\DetectController::class . ':detectIndex');
@@ -213,8 +211,6 @@ return function (SlimApp $app): void {
         $this->get('/code', App\Controllers\Admin\CodeController::class . ':index');
         $this->get('/code/create', App\Controllers\Admin\CodeController::class . ':create');
         $this->post('/code', App\Controllers\Admin\CodeController::class . ':add');
-        $this->get('/donate/create', App\Controllers\Admin\CodeController::class . ':donateCreate');
-        $this->post('/donate', App\Controllers\Admin\CodeController::class . ':donateAdd');
         $this->post('/code/ajax', App\Controllers\Admin\CodeController::class . ':ajaxCode');
 
         // User Mange

+ 0 - 3
config/.config.example.php

@@ -202,9 +202,6 @@ $_ENV['sales_period']         = 30;             //统计指定周期内的销量
 $_ENV['enable_flag']          = true;            //启用该项之前务必先仔细阅读教程
 $_ENV['flag_regex']           = '/.*?(?=\s)/';   //从站点全名中匹配【国家/地区】的正则表达式(php版)
 
-#捐赠
-$_ENV['enable_donate']        = true;          //是否显示用户捐赠(所有收入将被公开)
-
 //节点检测-----------------------------------------------------------------------------------------------
 #GFW检测,请通过crontab进行【开启/关闭】
 $_ENV['detect_gfw_interval']             = 3600;                                                               //检测间隔,单位:秒,低于推荐值会爆炸

+ 0 - 94
resources/views/tabler/admin/code/add_donate.tpl

@@ -1,94 +0,0 @@
-{include file='admin/main.tpl'}
-
-<main class="content">
-    <div class="content-header ui-content-header">
-        <div class="container">
-            <h1 class="content-heading">添加捐赠或支出记录</h1>
-        </div>
-    </div>
-    <div class="container">
-        <div class="col-lg-12 col-md-12">
-            <section class="content-inner margin-top-no">
-                <div class="card">
-                    <div class="card-main">
-                        <div class="card-inner">
-                            <div class="form-group form-group-label">
-                                <label class="floating-label" for="number">类型</label>
-                                <select id="type" class="form-control maxwidth-edit" name="type">
-                                    <option value="-1">捐赠</option>
-                                    <option value="-2">支出</option>
-                                </select>
-                            </div>
-                            <div class="form-group form-group-label">
-                                <label class="floating-label" for="number">备注</label>
-                                <input class="form-control maxwidth-edit" id="code" type="text">
-                            </div>
-                            <div class="form-group form-group-label">
-                                <label class="floating-label" for="amount">金额</label>
-                                <input class="form-control maxwidth-edit" id="amount" type="text">
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                <div class="card">
-                    <div class="card-main">
-                        <div class="card-inner">
-                            <div class="form-group">
-                                <div class="row">
-                                    <div class="col-md-10 col-md-push-1">
-                                        <button id="submit" type="submit"
-                                                class="btn btn-block btn-brand waves-attach waves-light">添加
-                                        </button>
-                                    </div>
-                                </div>
-                            </div>
-                        </div>
-                    </div>
-                </div>
-                {include file='dialog.tpl'}
-            </section>
-        </div>
-    </div>
-</main>
-
-{include file='admin/footer.tpl'}
-
-<script>
-    window.addEventListener('load', () => {
-        let submit = () => {
-            $.ajax({
-                type: "POST",
-                url: "/admin/donate",
-                dataType: "json",
-                data: {
-                    amount: $$getValue("amount"),
-                    code: $$getValue("code"),
-                    type: $$getValue("type")
-                },
-                success: data => {
-                    if (data.ret) {
-                        $("#result").modal();
-                        $$.getElementById('msg').innerHTML = data.msg;
-                        window.setTimeout("location.href=top.document.referrer", {$config['jump_delay']});
-                    } else {
-                        $("#msg-error").hide(10);
-                        $("#msg-error").show(100);
-                        $$.getElementById('msg-error-p').innerHTML = data.msg;
-                    }
-                },
-                error: jqXHR => {
-                    $("#result").modal();
-                    $$.getElementById('msg').innerHTML = `发生错误:${
-                        jqXHR.status
-                    }`;
-                }
-            });
-        }
-        $("html").keydown(event => {
-            if (event.keyCode === 13) {
-                login();
-            }
-        });
-        $$.getElementById('submit').addEventListener('click', submit);
-    })
-</script>

+ 2 - 6
resources/views/tabler/admin/code/index.tpl

@@ -3,7 +3,7 @@
 <main class="content">
     <div class="content-header ui-content-header">
         <div class="container">
-            <h1 class="content-heading">充值码{if $config['enable_donate']===true}与捐赠{/if}管理</h1>
+            <h1 class="content-heading">充值码管理</h1>
         </div>
     </div>
     <div class="container">
@@ -42,11 +42,7 @@
                         <div class="fbtn-dropup">
                             <a class="fbtn fbtn-brand waves-attach waves-circle waves-light"
                                href="/admin/code/create"><span class="fbtn-text fbtn-text-left">充值码</span><span
-                                        class="mdi mdi-code-tags"></span></a> {if $config['enable_donate']===true}
-                                <a class="fbtn fbtn-green waves-attach waves-circle waves-light"
-                                   href="/admin/donate/create"><span class="fbtn-text fbtn-text-left">捐赠和支出</span><span
-                                            class="mdi mdi-wallet-plus"></span></a>
-                            {/if}
+                                        class="mdi mdi-code-tags"></span></a>
                         </div>
                     </div>
                 </div>

+ 1 - 1
resources/views/tabler/admin/main.tpl

@@ -103,7 +103,7 @@
                     <ul class="menu-collapse collapse in" id="ui_menu_trade">
                         <li><a href="/admin/code">
                                 <i class="mdi mdi-currency-usd icon-lg"></i>
-                                &nbsp;{if $config['enable_donate']===true}充值与捐赠记录{else}充值记录{/if}</a>
+                                &nbsp;充值记录</a>
                         </li>
                         <li><a href="/admin/shop"><i class="mdi mdi-shopping icon-lg"></i>&nbsp;商品</a></li>
                         <li><a href="/admin/coupon"><i class="mdi mdi-code-tags icon-lg"></i>&nbsp;优惠码</a></li>

+ 3 - 1
resources/views/tabler/user/announcement.tpl

@@ -1,4 +1,5 @@
 {include file='user/tabler_header.tpl'}
+
 <div class="page-wrapper">
     <div class="container-xl">
         <!-- Page title -->
@@ -25,7 +26,7 @@
                             <table class="table table-vcenter card-table">
                                 <thead>
                                     <tr>
-                                        <th>#</th>
+                                        <th>ID</th>
                                         <th>发布日期</th>
                                         <th>公告内容</th>
                                     </tr>
@@ -46,4 +47,5 @@
             </div>
         </div>
     </div>
+
 {include file='user/tabler_footer.tpl'}

+ 23 - 31
resources/views/tabler/user/docs.tpl

@@ -19,39 +19,31 @@
     </div>
     <div class="page-body">
         <div class="container-xl">
-            <div class="row gx-lg-5">
-                <div class="d-none d-lg-block col-lg-3 my-5">
-                    <ul class="nav nav-pills nav-vertical">
-                        <li class="nav-item">
-                            <a href="/user/docs/index" class="nav-link {if strtolower($client) == 'index'}active{/if}">
-                                前言
-                            </a>
-                        </li>
-                        <!--    客户端集合  客户端系统  客户端-->
-                        {foreach $groups as $key => $class}
-                            <li class="nav-item">
-                                <a href="#{$key}" class="nav-link" data-bs-toggle="collapse" aria-expanded="false">
-                                    {$key}
-                                    <span class="nav-link-toggle"></span>
-                                </a>
-                                <ul class="nav nav-pills collapse" id="{$key}">
-                                    {foreach $class as $item}
-                                        {if $item['switch'] == true}
-                                            <li class="nav-item">
-                                                {$app_name = explode('-', $client)}
-                                                <a href="{$item['url']}"
-                                                    class="nav-link {if strtolower($app_name['0']) == strtolower($item['name'])}active{/if}">
-                                                    {$item['name']}
-                                                </a>
-                                            </li>
-                                        {/if}
+            <div class="row row-deck row-cards">
+                <div class="col-12">
+                    <div class="card">
+                        <div class="table-responsive">
+                            <table class="table table-vcenter card-table">
+                                <thead>
+                                    <tr>
+                                        <th>ID</th>
+                                        <th>发布日期</th>
+                                        <th>公告内容</th>
+                                    </tr>
+                                </thead>
+                                <tbody>
+                                    {foreach $anns as $ann}
+                                        <tr>
+                                            <td>{$ann->id}</td>
+                                            <td>{$ann->date}</td>
+                                            <td>{$ann->content}</td>
+                                        </tr>
                                     {/foreach}
-                                </ul>
-                            </li>
-                        {/foreach}
-                    </ul>
+                                </tbody>
+                            </table>
+                        </div>
+                    </div>
                 </div>
-                {include file="user/docs/{$client}.tpl"}
             </div>
         </div>
     </div>

+ 0 - 5
resources/views/tabler/user/main.tpl

@@ -102,11 +102,6 @@
                         <li>
                             <a href="/user/bought"><i class="mdi mdi-list-box icon-lg"></i>&nbsp;购买记录</a>
                         </li>
-                        {if $config['enable_donate']===true}
-                            <li>
-                                <a href="/user/donate"><i class="mdi mdi-gift icon-lg"></i>&nbsp;捐赠公示</a>
-                            </li>
-                        {/if}
                     </ul>
                     {if $user->is_admin}
                         <a href="/admin"><i class="mdi mdi-account-tie icon-lg"></i>&nbsp;管理面板</a>

+ 0 - 26
resources/views/tabler/user/sys.tpl

@@ -1,26 +0,0 @@
-{include file='user/main.tpl'}
-
-<div class="content-wrapper">
-    <section class="content-header">
-        <h1>
-            统计信息
-            <small>A</small>
-        </h1>
-    </section>
-    <!-- Main content -->
-    <!-- Main content -->
-    <section class="content">
-        <div class="row">
-            <!-- left column -->
-            <div class="col-md-6">
-                <!-- general form elements -->
-                <div class="box box-primary">
-                    <div class="box-body">
-                        <p>Coming soon...</p>
-                    </div><!-- /.box -->
-                </div>
-            </div>
-        </div>
-    </section><!-- /.content -->
-</div><!-- /.content-wrapper -->
-{include file='user/footer.tpl'}

+ 0 - 33
src/Controllers/Admin/CodeController.php

@@ -89,17 +89,6 @@ final class CodeController extends BaseController
         );
     }
 
-    /**
-     * @param array     $args
-     */
-    public function donateCreate(Request $request, Response $response, array $args)
-    {
-        return $response->write(
-            $this->view()
-                ->display('admin/code/add_donate.tpl')
-        );
-    }
-
     /**
      * @param array     $args
      */
@@ -153,26 +142,4 @@ final class CodeController extends BaseController
 
         return ResponseHelper::successfully($response, '充值码添加成功');
     }
-
-    /**
-     * @param array     $args
-     */
-    public function donateAdd(Request $request, Response $response, array $args)
-    {
-        $amount = $request->getParam('amount');
-        $type = $request->getParam('type');
-        $text = $request->getParam('code');
-
-        $code = new Code();
-        $code->code = $text;
-        $code->type = $type;
-        $code->number = $amount;
-        $code->userid = Auth::getUser()->id;
-        $code->isused = 1;
-        $code->usedatetime = date('Y:m:d H:i:s');
-
-        $code->save();
-
-        return ResponseHelper::successfully($response, '添加成功');
-    }
 }

+ 0 - 191
src/Controllers/User/NodeController.php

@@ -1,191 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-namespace App\Controllers\User;
-
-use App\Controllers\BaseController;
-use App\Models\Node;
-use App\Models\User;
-use App\Utils\Tools;
-use App\Utils\URL;
-use Psr\Http\Message\ResponseInterface;
-use Slim\Http\Request;
-use Slim\Http\Response;
-
-/**
- *  User NodeController
- */
-final class NodeController extends BaseController
-{
-    /**
-     * @param array     $args
-     */
-    public function userNodePage(Request $request, Response $response, array $args): ResponseInterface
-    {
-        $user = $this->user;
-        $query = Node::query();
-        $query->where('type', 1)->whereNotIn('sort', [9]);
-        if (! $user->is_admin) {
-            $group = ($user->node_group !== 0 ? [0, $user->node_group] : [0]);
-            $query->whereIn('node_group', $group);
-        }
-        $nodes = $query->orderBy('node_class')->orderBy('name')->get();
-        $all_node = [];
-        foreach ($nodes as $node) {
-            /** @var Node $node */
-
-            $array_node = [];
-            $array_node['id'] = $node->id;
-            $array_node['name'] = $node->name;
-            $array_node['class'] = $node->node_class;
-            $array_node['sort'] = $node->sort;
-            $array_node['info'] = $node->info;
-            $array_node['flag'] = $node->getNodeFlag();
-            $array_node['online_user'] = $node->getNodeOnlineUserCount();
-            $array_node['online'] = $node->getNodeOnlineStatus();
-            $array_node['load'] = $node->getNodeLoad();
-            $array_node['uptime'] = $node->getNodeUptime();
-            $array_node['traffic_rate'] = $node->traffic_rate;
-            $array_node['status'] = $node->status;
-            $array_node['traffic_used'] = (int) Tools::flowToGB($node->node_bandwidth);
-            $array_node['traffic_limit'] = (int) Tools::flowToGB($node->node_bandwidth_limit);
-            $array_node['bandwidth'] = $node->getNodeSpeedlimit();
-
-            $all_connect = [];
-            if (\in_array($node->sort, [0])) {
-                if ($node->mu_only !== 1) {
-                    $all_connect[] = 0;
-                }
-                if ($node->mu_only !== -1) {
-                    $mu_node_query = Node::query();
-                    $mu_node_query->where('sort', 9)->where('type', '1');
-                    if (! $user->is_admin) {
-                        $mu_node_query->where('node_class', '<=', $user->class)->whereIn('node_group', $group);
-                    }
-                    $mu_nodes = $mu_node_query->get();
-                    foreach ($mu_nodes as $mu_node) {
-                        if (User::where('port', $mu_node->server)->where('is_multi_user', '<>', 0)->first() !== null) {
-                            $all_connect[] = $node->getOffsetPort($mu_node->server);
-                        }
-                    }
-                }
-            } else {
-                $all_connect[] = 0;
-            }
-            $array_node['connect'] = $all_connect;
-
-            $all_node[$node->node_class + 1000][] = $array_node;
-        }
-
-        return $response->write(
-            $this->view()
-                ->assign('nodes', $all_node)
-                ->display('user/node/index.tpl')
-        );
-    }
-
-    /**
-     * @param array     $args
-     */
-    public function userNodeInfo(Request $request, Response $response, array $args): ResponseInterface
-    {
-        $user = $this->user;
-        $node = Node::find($args['id']);
-        if ($node === null) {
-            return $response->write('非法访问');
-        }
-        if (! $user->is_admin) {
-            if ($user->node_group !== $node->node_group && $node->node_group !== 0) {
-                return $response->write('无权查看该分组的节点');
-            }
-            if ($user->class < $node->node_class) {
-                return $response->write('无权查看该等级的节点');
-            }
-        }
-        switch ($node->sort) {
-            case 0:
-                return $response->write(
-                    $this->view()
-                        ->assign('node', $node)
-                        ->assign('mu', $request->getQueryParams()['ismu'])
-                        ->registerClass('URL', URL::class)
-                        ->display('user/node/node_ss_ssr.tpl')
-                );
-            case 11:
-                $server = $node->getV2RayItem($user);
-                $nodes = [
-                    'url' => URL::getV2Url($user, $node),
-                    'info' => [
-                        '连接地址:' => $server['add'],
-                        '连接端口:' => $server['port'],
-                        'UUID:' => $user->uuid,
-                        'AlterID:' => $server['aid'],
-                        '传输协议:' => $server['net'],
-                    ],
-                ];
-                if ($server['net'] === 'ws') {
-                    $nodes['info']['PATH:'] = $server['path'];
-                    $nodes['info']['HOST:'] = $server['host'];
-                }
-                if ($server['net'] === 'kcp') {
-                    $nodes['info']['伪装类型:'] = $server['type'];
-                }
-                if ($server['tls'] === 'tls') {
-                    $nodes['info']['TLS:'] = 'TLS';
-                }
-                return $response->write(
-                    $this->view()
-                        ->assign('node', $nodes)
-                        ->display('user/node/node_v2ray.tpl')
-                );
-            case 13:
-                $server = $node->getV2RayPluginItem($user);
-                if ($server !== null) {
-                    $nodes = [
-                        'url' => URL::getItemUrl($server, 1),
-                        'info' => [
-                            '连接地址:' => $server['address'],
-                            '连接端口:' => $server['port'],
-                            '加密方式:' => $server['method'],
-                            '连接密码:' => $server['passwd'],
-                            '混淆方式:' => $server['obfs'],
-                            '混淆参数:' => $server['obfs_param'],
-                        ],
-                    ];
-                } else {
-                    $nodes = [
-                        'url' => '',
-                        'info' => [
-                            '您的加密方式非 AEAD 系列' => '无法使用此节点.',
-                        ],
-                    ];
-                }
-                return $response->write(
-                    $this->view()
-                        ->assign('node', $nodes)
-                        ->display('user/node/node_ss_v2ray_plugin.tpl')
-                );
-            case 14:
-                $server = $node->getTrojanItem($user);
-                $nodes = [
-                    'url' => URL::getTrojanUrl($user, $node),
-                    'info' => [
-                        '连接地址:' => $server['address'],
-                        '连接端口:' => $server['port'],
-                        '连接密码:' => $server['passwd'],
-                    ],
-                ];
-                if ($server['host'] !== $server['address']) {
-                    $nodes['info']['HOST&PEER:'] = $server['host'];
-                }
-                return $response->write(
-                    $this->view()
-                        ->assign('node', $nodes)
-                        ->display('user/node/node_trojan.tpl')
-                );
-            default:
-                return $response->write(404);
-        }
-    }
-}

+ 22 - 35
src/Controllers/UserController.php

@@ -8,6 +8,7 @@ use App\Models\Ann;
 use App\Models\BlockIp;
 use App\Models\Bought;
 use App\Models\Code;
+use App\Models\Docs;
 use App\Models\EmailVerify;
 use App\Models\InviteCode;
 use App\Models\Ip;
@@ -118,33 +119,6 @@ final class UserController extends BaseController
         );
     }
 
-    /**
-     * @param array     $args
-     */
-    public function donate(Request $request, Response $response, array $args)
-    {
-        if ($_ENV['enable_donate'] !== true) {
-            exit(0);
-        }
-
-        $pageNum = $request->getQueryParams()['page'] ?? 1;
-        $codes = Code::where(
-            static function ($query): void {
-                $query->where('type', '=', -1)
-                    ->orWhere('type', '=', -2);
-            }
-        )->where('isused', 1)->orderBy('id', 'desc')->paginate(15, ['*'], 'page', $pageNum);
-        $render = Tools::paginateRender($codes);
-        return $response->write(
-            $this->view()
-                ->assign('codes', $codes)
-                ->assign('total_in', Code::where('isused', 1)->where('type', -1)->sum('number'))
-                ->assign('total_out', Code::where('isused', 1)->where('type', -2)->sum('number'))
-                ->assign('render', $render)
-                ->display('user/donate.tpl')
-        );
-    }
-
     /**
      * @param array     $args
      */
@@ -195,14 +169,6 @@ final class UserController extends BaseController
                 Payback::rebate($user->id, $codeq->number);
             }
 
-            if ($_ENV['enable_donate']) {
-                if ($this->user->is_hide === 1) {
-                    Telegram::send('姐姐姐姐,一位不愿透露姓名的大老爷给我们捐了 ' . $codeq->number . ' 元呢~');
-                } else {
-                    Telegram::send('姐姐姐姐,' . $this->user->user_name . ' 大老爷给我们捐了 ' . $codeq->number . ' 元呢~');
-                }
-            }
-
             return $response->withJson([
                 'ret' => 1,
                 'msg' => '兑换成功,金额为 ' . $codeq->number . ' 元',
@@ -396,6 +362,27 @@ final class UserController extends BaseController
         );
     }
 
+    /**
+     * @param array     $args
+     */
+    public function docs(Request $request, Response $response, array $args)
+    {
+        $docs = Docs::orderBy('id', 'desc')->get();
+
+        if ($request->getParam('json') === 1) {
+            return $response->withJson([
+                'docs' => $docs,
+                'ret' => 1,
+            ]);
+        }
+
+        return $response->write(
+            $this->view()
+                ->assign('docs', $docs)
+                ->display('user/docs.tpl')
+        );
+    }
+
     /**
      * @param array     $args
      */

+ 0 - 1
src/Services/Config.php

@@ -97,7 +97,6 @@ final class Config
             'port_price_specify' => $_ENV['port_price_specify'],
             'jump_delay' => $_ENV['jump_delay'],
             'enable_analytics_code' => $_ENV['enable_analytics_code'],
-            'enable_donate' => $_ENV['enable_donate'],
             'enable_ticket' => $_ENV['enable_ticket'],
 
             'enable_flag' => $_ENV['enable_flag'],

+ 0 - 7
src/Services/Gateway/AbstractPayment.php

@@ -100,13 +100,6 @@ abstract class AbstractPayment
             Payback::rebate($user->id, $p->total);
         }
 
-        if ($_ENV['enable_donate'] === true) {
-            if ($user->is_hide === 1) {
-                Telegram::send('一位不愿透露姓名的大老爷给我们捐了 ' . $codeq->number . ' 元!');
-            } else {
-                Telegram::send($user->user_name . ' 大老爷给我们捐了 ' . $codeq->number . ' 元!');
-            }
-        }
         return 0;
     }
 

+ 0 - 7
src/Services/Gateway/PaymentWall.php

@@ -79,13 +79,6 @@ final class PaymentWall extends AbstractPayment
                 if ($user->ref_by > 0 && Setting::obtain('invitation_mode') === 'after_recharge') {
                     Payback::rebate($user->id, $virtualCurrency);
                 }
-                if ($_ENV['enable_donate'] === true) {
-                    if ($user->is_hide === 1) {
-                        Telegram::send('姐姐姐姐,一位不愿透露姓名的大老爷给我们捐了 ' . $codeq->number . ' 元呢~');
-                    } else {
-                        Telegram::send('姐姐姐姐,' . $user->user_name . ' 大老爷给我们捐了 ' . $codeq->number . ' 元呢~');
-                    }
-                }
 
                 return $response->write('OK');
             }