root 5 years ago
parent
commit
a3f59aac0a

+ 49 - 24
app/Http/Controllers/Admin/ServerController.php

@@ -21,39 +21,63 @@ class ServerController extends Controller
                 $server[$i]['tags'] = json_decode($server[$i]['tags']);
             }
             $server[$i]['group_id'] = json_decode($server[$i]['group_id']);
-            $server[$i]['last_check_at'] = Redis::get('server_last_check_at_' . $server[$i]['id']);
+            if ($server[$i]['parent_id']) {
+                Redis::get('server_last_check_at_' . $server[$i]['parent_id']);
+            } else {
+                $server[$i]['last_check_at'] = Redis::get('server_last_check_at_' . $server[$i]['id']);
+            }
         }
         return response([
             'data' => $server
         ]);
     }
-    
+
     public function save (ServerSave $request) {
-        if ($request->input('id')) {
-            $server = Server::find($request->input('id'));
-            if (!$server) {
-                abort(500, '服务器不存在');
-            }
-        } else {
-            $server = new Server();
+        $params = $request->only([
+            'show',
+            'group_id',
+            'parent_id',
+            'name',
+            'host',
+            'port',
+            'server_port',
+            'tls',
+            'tags',
+            'rate',
+            'network',
+            'settings'
+        ]);
+        $params['group_id'] = json_encode($params['group_id']);
+        if (isset($params['tags'])) {
+            $params['tags'] = json_encode($params['tags']);
         }
-        $server->group_id = json_encode($request->input('group_id'));
-        $server->name = $request->input('name');
-        $server->host = $request->input('host');
-        $server->port = $request->input('port');
-        $server->server_port = $request->input('server_port');
-        $server->tls = $request->input('tls');
-        $server->tags = $request->input('tags') ? json_encode($request->input('tags')) : NULL;
-        $server->rate = $request->input('rate');
-        $server->network = $request->input('network');
-        if ($request->input('settings')) {
-            if (!is_object(json_decode($request->input('settings')))) {
+
+        if (isset($params['settings'])) {
+            if (!is_object(json_decode($params['settings']))) {
                 abort(500, '传输协议配置格式不正确');
             }
-            $server->settings = $request->input('settings');
+            $server->settings = $params['settings'];
+        }
+        
+		if ($request->input('id')) {
+			$server = Server::find($request->input('id'));
+			if (!$server) {
+				abort(500, '服务器不存在');
+			}
+			if (!$server->update($params)) {
+				abort(500, '保存失败');
+			}
+			return response([
+				'data' => true
+			]);
+		}
+		
+        if (!Server::create($params)) {
+            abort(500, '创建失败');
         }
+
         return response([
-            'data' => $server->save()
+            'data' => true
         ]);
     }
     
@@ -125,15 +149,16 @@ class ServerController extends Controller
     }
 
     public function update (ServerUpdate $request) {
-        $updateData = $request->only([
+        $params = $request->only([
             'show',
         ]);
         
         $server = Server::find($request->input('id'));
+
         if (!$server) {
             abort(500, '该服务器不存在');
         }
-        if (!$server->update($updateData)) {
+        if (!$server->update($params)) {
             abort(500, '保存失败');
         }
 

+ 5 - 1
app/Http/Controllers/ServerController.php

@@ -28,7 +28,11 @@ class ServerController extends Controller {
         }
         for ($i = 0; $i < count($server); $i++) {
             $server[$i]['link'] = Helper::buildVmessLink($server[$i], $user);
-            $server[$i]['last_check_at'] = Redis::get('server_last_check_at_' . $server[$i]['id']);
+            if ($server[$i]['parent_id']) {
+                Redis::get('server_last_check_at_' . $server[$i]['parent_id']);
+            } else {
+                $server[$i]['last_check_at'] = Redis::get('server_last_check_at_' . $server[$i]['id']);
+            }
         }
         return response([
             'data' => $server

+ 2 - 0
app/Http/Requests/Admin/ServerSave.php

@@ -16,6 +16,7 @@ class ServerSave extends FormRequest
         return [
             'name' => 'required',
             'group_id' => 'required|array',
+            'parent_id' => 'integer',
             'host' => 'required',
             'port' => 'required',
             'server_port' => 'required',
@@ -32,6 +33,7 @@ class ServerSave extends FormRequest
             'name.required' => '节点名称不能为空',
             'group_id.required'  => '权限组不能为空',
             'group_id.array' => '权限组格式不正确',
+            'parent_id.integer' => '父ID格式不正确',
             'host.required' => '节点地址不能为空',
             'port.required' => '连接端口不能为空',
             'server_port.required' => '后端服务端口不能为空',

+ 6 - 5
install.sql

@@ -58,10 +58,10 @@ CREATE TABLE `v2_plan` (
   `show` tinyint(1) NOT NULL DEFAULT '0',
   `renew` tinyint(1) NOT NULL DEFAULT '1',
   `content` text,
-  `month_price` int(11) NOT NULL DEFAULT '0',
-  `quarter_price` int(11) NOT NULL DEFAULT '0',
-  `half_year_price` int(11) NOT NULL DEFAULT '0',
-  `year_price` int(11) NOT NULL DEFAULT '0',
+  `month_price` int(11) DEFAULT '0',
+  `quarter_price` int(11) DEFAULT '0',
+  `half_year_price` int(11) DEFAULT '0',
+  `year_price` int(11) DEFAULT '0',
   `created_at` int(11) NOT NULL,
   `updated_at` int(11) NOT NULL,
   PRIMARY KEY (`id`)
@@ -74,6 +74,7 @@ DROP TABLE IF EXISTS `v2_server`;
 CREATE TABLE `v2_server` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
   `group_id` varchar(255) NOT NULL,
+  `parent_id` int(11) DEFAULT NULL,
   `name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
   `host` varchar(255) NOT NULL,
   `port` int(11) NOT NULL,
@@ -172,4 +173,4 @@ CREATE TABLE `v2_user` (
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
 
--- 2019-12-27 07:14:40
+-- 2019-12-29 04:58:01

File diff suppressed because it is too large
+ 0 - 0
public/p__admin__server.async.js


+ 4 - 1
update.sql

@@ -76,4 +76,7 @@ ALTER TABLE `v2_plan`
 CHANGE `month_price` `month_price` int(11) NULL DEFAULT '0' AFTER `content`,
 CHANGE `quarter_price` `quarter_price` int(11) NULL DEFAULT '0' AFTER `month_price`,
 CHANGE `half_year_price` `half_year_price` int(11) NULL DEFAULT '0' AFTER `quarter_price`,
-CHANGE `year_price` `year_price` int(11) NULL DEFAULT '0' AFTER `half_year_price`;
+CHANGE `year_price` `year_price` int(11) NULL DEFAULT '0' AFTER `half_year_price`;
+
+ALTER TABLE `v2_server`
+ADD `parent_id` int(11) NULL AFTER `group_id`;

Some files were not shown because too many files changed in this diff