浏览代码

new server list page

iamsaltedfish 3 年之前
父节点
当前提交
3c2d513afa

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

@@ -137,6 +137,7 @@ $_ENV['delete_admin_message_time'] = 86400; // 0为关闭; 其他数值为在此
 $_ENV['enable_delete_user_cmd'] = false; // 删除用户触发的 bot 回复功能开关
 $_ENV['help_any_command'] = false; // 其他未知命令触发 /help 回复
 $_ENV['enable_user_email_group_show'] = false; // false时隐藏用户完整邮箱
+$_ENV['enable_detect_offline'] = false; // 节点掉线检测
 
 /*
     订阅设置

+ 113 - 0
resources/views/material/user/node/servers.tpl

@@ -0,0 +1,113 @@
+{include file='user/tabler_header.tpl'}
+<div class="page-wrapper">
+    <div class="container-xl">
+        <div class="page-header d-print-none text-white">
+            <div class="row align-items-center">
+                <div class="col">
+                    <h2 class="page-title">
+                        <span class="home-title">节点列表</span>
+                    </h2>
+                    <div class="page-pretitle">
+                        <span class="home-subtitle">查看节点在线情况</span>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+    <div class="page-body">
+        <div class="container-xl">
+            <div class="row row-cards">
+                <div class="col-12">
+                    <div class="card">
+                        <div class="card-body">
+                            <div class="m-0 my-2">
+                                描述中分别表述为:该节点的在线人数,该节点的流量倍率,该节点当月可用流量 / 该节点当月已用流量
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="col-12">
+                    <div class="card">
+                        <ul class="nav nav-tabs nav-fill" data-bs-toggle="tabs">
+                            {foreach $class as $grade}
+                                <li class="nav-item">
+                                    <a href="#class-{$grade['node_class']}"
+                                        class="nav-link {if $grade['node_class'] == '0'}active{/if}" data-bs-toggle="tab">
+                                        <i class="ti ti-box-multiple-{$grade['node_class']}"></i>&nbsp;
+                                        等级 {$grade['node_class']}
+                                    </a>
+                                </li>
+                            {/foreach}
+                        </ul>
+                        <div class="card-body">
+                            <div class="tab-content">
+                                {foreach $class as $grade}
+                                    <div class="tab-pane {if $grade['node_class'] == '0'}active show{/if}"
+                                        id="class-{$grade['node_class']}">
+                                        <div class="row row-cards">
+                                            {foreach $servers as $server}
+                                                {if $server->node_class == $grade['node_class']}
+                                                    <div class="col-md-3 col-sm-12">
+                                                        <div class="card">
+                                                            <div class="card-body">
+                                                                <div class="row g-3 align-items-center">
+                                                                    <div class="col-auto">
+                                                                        <span
+                                                                            class="status-indicator status-{if ($server->get_node_online_status() == '1')}green{else}red{/if} status-indicator-animated">
+                                                                            <span class="status-indicator-circle"></span>
+                                                                            <span class="status-indicator-circle"></span>
+                                                                            <span class="status-indicator-circle"></span>
+                                                                        </span>
+                                                                    </div>
+                                                                    <div class="col">
+                                                                        <h2 class="page-title" style="font-size: 16px;">
+                                                                            {$server->name}&nbsp;
+                                                                            <span class="card-subtitle my-2"
+                                                                                style="font-size: 10px;">
+                                                                                {if $server->node_bandwidth_limit == '0'}
+                                                                                    不限流量
+                                                                                {else}
+                                                                                    {round($server->node_bandwidth / 1073741824)}
+                                                                                    GB /
+                                                                                    {round($server->node_bandwidth_limit / 1073741824)}
+                                                                                    GB
+                                                                                {/if}
+                                                                            </span>
+                                                                        </h2>
+                                                                        <div class="text-muted">
+                                                                            <ul class="list-inline list-inline-dots mb-0">
+                                                                                {if ($server->get_node_online_status() == '1')}
+                                                                                    <li class="list-inline-item"><span
+                                                                                            class="text-green">Up</span></li>
+                                                                                {else}
+                                                                                    <li class="list-inline-item"><span
+                                                                                            class="text-red">Down</span></li>
+                                                                                {/if}
+                                                                                <li class="list-inline-item">
+                                                                                    <i class="ti ti-users"></i>&nbsp;
+                                                                                    {$server->get_node_online_user_count()}
+                                                                                </li>
+                                                                                <li class="list-inline-item">
+                                                                                    <i class="ti ti-rocket"></i>&nbsp;
+                                                                                    {$server->traffic_rate}x
+                                                                                </li>
+                                                                            </ul>
+                                                                        </div>
+                                                                    </div>
+                                                                </div>
+                                                            </div>
+                                                        </div>
+                                                    </div>
+                                                {/if}
+                                            {/foreach}
+                                        </div>
+                                    </div>
+                                {/foreach}
+                            </div>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+{include file='user/tabler_footer.tpl'}

+ 5 - 1
resources/views/material/user/tabler_header.tpl

@@ -157,9 +157,13 @@
                                             使用文档
                                         </a>
                                     {/if}
+                                    <a class="dropdown-item" href="/user/server">
+                                        <i class="ti ti-server"></i>&nbsp;
+                                        节点列表
+                                    </a>
                                     <a class="dropdown-item" href="/user/node">
                                         <i class="ti ti-server-2"></i>&nbsp;
-                                        节点列表
+                                        节点列表(旧)
                                     </a>
                                     <a class="dropdown-item" href="/user/media">
                                         <i class="ti ti-key"></i>&nbsp;

+ 2 - 21
src/Command/SendDiaryMail.php

@@ -1,13 +1,12 @@
 <?php
-
 namespace App\Command;
 
-use App\Models\User;
 use App\Models\Ann;
+use App\Models\User;
+use App\Services\Analytics;
 use App\Services\Config;
 use App\Utils\Telegram;
 use App\Utils\Tools;
-use App\Services\Analytics;
 
 class SendDiaryMail extends Command
 {
@@ -31,23 +30,5 @@ class SendDiaryMail extends Command
             $lastday_total += (($user->u + $user->d) - $user->last_day_t);
             $user->sendDailyNotification($text1);
         }
-
-        $sts = new Analytics();
-
-        if (Config::getconfig('Telegram.bool.Diary')) {
-            Telegram::Send(
-                str_replace(
-                    array(
-                        '%getTodayCheckinUser%',
-                        '%lastday_total%'
-                    ),
-                    array(
-                        $sts->getTodayCheckinUser(),
-                        Tools::flowAutoShow($lastday_total)
-                    ),
-                    Config::getconfig('Telegram.string.Diary')
-                )
-            );
-        }
     }
 }

+ 28 - 17
src/Controllers/User/NodeController.php

@@ -1,27 +1,38 @@
 <?php
-
 namespace App\Controllers\User;
 
-use App\Controllers\UserController;
-use App\Models\{
-    Node,
-    User
-};
-use App\Utils\{
-    URL,
-    Tools
-};
-use Slim\Http\{
-    Request,
-    Response
-};
+use App\Models\Node;
+use App\Models\User;
+use App\Utils\Tools;
+use App\Utils\URL;
+use Slim\Http\Request;
+use Slim\Http\Response;
 use Psr\Http\Message\ResponseInterface;
+use App\Controllers\UserController;
 
-/**
- *  User NodeController
- */
 class NodeController extends UserController
 {
+    public function serverList($request, $response, $args)
+    {
+        $user = $this->user;
+        $user_group = ($user->node_group != 0 ? [0, $user->node_group] : [0]);
+        $servers = Node::where('type' ,1)
+        ->where('sort', '!=', '9') // 我也不懂为什么
+        ->whereIn('node_group', $user_group) // 筛选用户所在分组的服务器
+        ->get();
+
+        $class = Node::select('node_class')
+        ->distinct()
+        ->get();
+
+        return $response->write(
+            $this->view()
+                ->assign('class', $class)
+                ->assign('servers', $servers)
+                ->display('user/node/servers.tpl')
+        );
+    }
+
     /**
      * @param Request   $request
      * @param Response  $response