Răsfoiți Sursa

研究关联查询

cauto 2 ani în urmă
părinte
comite
e93f2f0478

+ 3 - 1
api/v1/hello.go

@@ -2,11 +2,13 @@ package v1
 
 import (
 	"github.com/gogf/gf/v2/frame/g"
+	"nodeMonitor/internal/model"
 )
 
 type HelloReq struct {
 	g.Meta `path:"/hello" tags:"Hello" method:"get" summary:"You first hello api"`
 }
 type HelloRes struct {
-	g.Meta `mime:"application/json" example:"json"`
+	g.Meta   `mime:"application/json" example:"json"`
+	NodeItme []*model.NodeItme
 }

+ 1 - 1
api/v1/node.go

@@ -22,7 +22,7 @@ type NodeRes struct {
 
 type NodeDelReq struct {
 	g.Meta `path:"/del" tags:"del" method:"post" summary:"删除节点"`
-	Host   string `p:"host" v:"required#节点不能为空"`
+	Id     int `p:"id" v:"required#节点Id不能为空"`
 }
 
 type NodeDelRes struct {

+ 28 - 51
db/nodeMonitor.sql

@@ -1,53 +1,30 @@
-/*
- Navicat Premium Data Transfer
+create table node
+(
+    id         int auto_increment comment 'ID主键自动添加'
+        primary key,
+    name       varchar(128)  not null comment '服务器名称',
+    host       varchar(20)   not null comment '服务器IP',
+    port       int           not null comment '服务器端口',
+    url        text          not null comment '服务器切换地址',
+    update_at  datetime      null comment '更新时间',
+    create_at  datetime      null comment '创建时间',
+    ping_type  int default 0 not null comment '服务器延迟类型 0 icmp 1 tcp',
+    url_status int           null comment '用于表示url是否执行完成',
+    node_ms    int default 0 null comment '节点延迟'
+)
+    charset = utf8mb4;
 
- Source Server         : localhost
- Source Server Type    : MySQL
- Source Server Version : 50734
- Source Host           : localhost:3306
- Source Schema         : nodeMonitor
+create table pinglog
+(
+    id        int auto_increment
+        primary key,
+    maxdelay  varchar(64) null comment '最大延迟',
+    mindelay  varchar(64) null comment '最小延迟',
+    avgdelay  varchar(64) null comment '平均延迟',
+    losspk    varchar(64) null comment '丢包率',
+    update_at datetime    null comment '更新时间',
+    create_at datetime    null comment '创建时间',
+    serverid  int         null comment '服务器ID'
+)
+    charset = utf8mb4;
 
- Target Server Type    : MySQL
- Target Server Version : 50734
- File Encoding         : 65001
-
- Date: 03/11/2022 16:23:13
-*/
-
-SET NAMES utf8mb4;
-SET FOREIGN_KEY_CHECKS = 0;
-
--- ----------------------------
--- Table structure for node
--- ----------------------------
-DROP TABLE IF EXISTS `node`;
-CREATE TABLE `node` (
-  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID主键自动添加',
-  `name` varchar(128) NOT NULL COMMENT '服务器名称',
-  `host` varchar(20) NOT NULL COMMENT '服务器IP',
-  `port` int(11) NOT NULL COMMENT '服务器端口',
-  `url` text NOT NULL COMMENT '服务器切换地址',
-  `update_at` datetime DEFAULT NULL COMMENT '更新时间',
-  `create_at` datetime DEFAULT NULL COMMENT '创建时间',
-  `ping_type` int(11) NOT NULL DEFAULT '0' COMMENT '服务器延迟类型 0 icmp 1 tcp',
-  `url_status` int(11) DEFAULT NULL COMMENT '用于表示url是否执行完成',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
-
--- ----------------------------
--- Table structure for pinglog
--- ----------------------------
-DROP TABLE IF EXISTS `pinglog`;
-CREATE TABLE `pinglog` (
-  `id` int(11) NOT NULL AUTO_INCREMENT,
-  `maxdelay` varchar(64) DEFAULT NULL COMMENT '最大延迟',
-  `mindelay` varchar(64) DEFAULT NULL COMMENT '最小延迟',
-  `avgdelay` varchar(64) DEFAULT NULL COMMENT '平均延迟',
-  `losspk` varchar(64) DEFAULT NULL COMMENT '丢包率',
-  `update_at` datetime DEFAULT NULL COMMENT '更新时间',
-  `create_at` datetime DEFAULT NULL COMMENT '创建时间',
-  `host` varchar(128) DEFAULT NULL COMMENT '服务器IP',
-  PRIMARY KEY (`id`)
-) ENGINE=InnoDB AUTO_INCREMENT=104 DEFAULT CHARSET=utf8mb4;
-
-SET FOREIGN_KEY_CHECKS = 1;

+ 5 - 21
go.sum

@@ -1,5 +1,4 @@
 github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=
 github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
 github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
 github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
@@ -8,7 +7,6 @@ github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL
 github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
 github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/clbanning/mxj/v2 v2.5.5 h1:oT81vUeEiQQ/DcHbzSytRngP6Ky9O+L+0Bw0zSJag9E=
 github.com/clbanning/mxj/v2 v2.5.5/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
 github.com/clbanning/mxj/v2 v2.5.7 h1:7q5lvUpaPF/WOkqgIDiwjBJaznaLCCBd78pi8ZyAnE0=
 github.com/clbanning/mxj/v2 v2.5.7/go.mod h1:hNiWqW14h+kc+MdF9C6/YoRfjEJoR3ou6tn/Qo+ve2s=
@@ -22,7 +20,6 @@ github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYF
 github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
 github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
-github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI=
 github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU=
 github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
 github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
@@ -40,8 +37,6 @@ github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg78
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.2.1 h1:O3GF8PIuvECnB0BdsJnVNj+KKYfsRpDTDl07rN4uczs=
 github.com/gogf/gf/contrib/drivers/mysql/v2 v2.2.1/go.mod h1:z+/0qiOwMroAnj5ESuobTv0l5P83rf+XR3r6Fj8WJyk=
 github.com/gogf/gf/v2 v2.0.0/go.mod h1:apktt6TleWtCIwpz63vBqUnw8MX8gWKoZyxgDpXFtgM=
-github.com/gogf/gf/v2 v2.1.4 h1:zebl7kahNnU+0o7hcLx81svcTdp5fYdW9ZnZagXyLt4=
-github.com/gogf/gf/v2 v2.1.4/go.mod h1:thvkyb43RWUu/m05sRm4CbH9r7t7/FrW2M56L9Ystwk=
 github.com/gogf/gf/v2 v2.2.1 h1:SmwGoRbZEBsiRI48tOf+bH0MLidznFPKpHyynHyBW4Q=
 github.com/gogf/gf/v2 v2.2.1/go.mod h1:thvkyb43RWUu/m05sRm4CbH9r7t7/FrW2M56L9Ystwk=
 github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -59,8 +54,8 @@ github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMyw
 github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
 github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
 github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
 github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@@ -72,16 +67,13 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
 github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo=
 github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
-github.com/mattn/go-colorable v0.1.9 h1:sqDoxXbdeALODt0DAeJCVp38ps9ZogZEAXjus69YV3U=
 github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
 github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y=
 github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
 github.com/mattn/go-isatty v0.0.16 h1:bq3VjFmv/sOjHtdEhmkEV4x1AJtvUvOJ2PFAZ5+peKQ=
 github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
-github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
 github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU=
 github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
@@ -114,25 +106,22 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+
 github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
 github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY=
 github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
 github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
 github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
 go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg=
-go.opentelemetry.io/otel v1.7.0 h1:Z2lA3Tdch0iDcrhJXDIlC94XE+bxok1F9B+4Lz/lGsM=
 go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk=
 go.opentelemetry.io/otel v1.11.1 h1:4WLLAmcfkmDk2ukNXJyq3/kiz/3UzCaYq6PskJsaou4=
 go.opentelemetry.io/otel v1.11.1/go.mod h1:1nNhXBbWSD0nsL38H6btgnFN2k4i0sNLHNNMZMSbUGE=
 go.opentelemetry.io/otel/sdk v1.0.0/go.mod h1:PCrDHlSy5x1kjezSdL37PhbFUMjrsLRshJ2zCzeXwbM=
-go.opentelemetry.io/otel/sdk v1.7.0 h1:4OmStpcKVOfvDOgCt7UriAPtKolwIhxpnSNI/yK+1B0=
 go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU=
 go.opentelemetry.io/otel/sdk v1.11.1 h1:F7KmQgoHljhUuJyA+9BiU+EkJfyX5nVVF4wyzWZpKxs=
 go.opentelemetry.io/otel/sdk v1.11.1/go.mod h1:/l3FE4SupHJ12TduVjUkZtlfFqDCQJlOlithYrdktys=
 go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs=
-go.opentelemetry.io/otel/trace v1.7.0 h1:O37Iogk1lEkMRXewVtZ1BBTVn5JEp8GrJvP92bJqC6o=
 go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU=
 go.opentelemetry.io/otel/trace v1.11.1 h1:ofxdnzsNrGBYXbP7t7zpUK281+go5rF7dvdIZXF8gdQ=
 go.opentelemetry.io/otel/trace v1.11.1/go.mod h1:f/Q9G7vzk5u91PhbmKbg1Qn0rzH1LJ4vbPHFGkTPtOk=
@@ -141,8 +130,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
 golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
 golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
@@ -154,7 +143,6 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b
 golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk=
 golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2 h1:CIJ76btIcR3eFI5EgSo6k1qKw9KJexJuRLI9G7Hp5wE=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
 golang.org/x/net v0.1.0 h1:hZ/3BUoy5aId7sCpA/Tc5lt8DkFgdVS2onTpJsZ/fl0=
@@ -162,8 +150,8 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
 golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -186,7 +174,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0=
 golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -202,7 +189,6 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2 h1:GLw7MR8AfAG2GmGcmVgObFOHXYypgGjnGno25RDwn3Y=
 golang.org/x/text v0.3.8-0.20211105212822-18b340fc7af2/go.mod h1:EFNZuWvGYxIRUEX+K8UmCFwYmZjqcrnq15ZuVldZkZ0=
 golang.org/x/text v0.4.0 h1:BrVqGRd7+k1DiOgtnFvAkoQEWQvBc25ouMJM6429SFg=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
@@ -210,13 +196,12 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ=
 golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
+golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
 golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
 golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
 google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
@@ -238,7 +223,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
 gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
-gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
 gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

+ 1 - 1
hack/config.yaml

@@ -8,5 +8,5 @@ gfcli:
         # tables: "sys_user"
         # removePrefix: "gf_"
         descriptionTag: true
-        noModelComment: true
+        noModelComment: false
         # path: "./tmp"

+ 2 - 4
internal/controller/Node.go

@@ -20,9 +20,7 @@ type sNode struct {
 }
 
 func (c *sNode) Add(ctx context.Context, req *v1.NodeReq) (res *v1.NodeRes, err error) {
-	exist, err := service.Node().IsExist(ctx, model.NodeDelInput{
-		Host: req.Host,
-	})
+	exist, err := service.Node().IsExist(ctx, req.Host)
 	if err != nil {
 		return
 	}
@@ -45,7 +43,7 @@ func (c *sNode) Add(ctx context.Context, req *v1.NodeReq) (res *v1.NodeRes, err
 func (c *sNode) Del(ctx context.Context, req *v1.NodeDelReq) (res *v1.NodeDelRes, err error) {
 
 	err = service.Node().Del(ctx, model.NodeDelInput{
-		Host: req.Host,
+		Id: req.Id,
 	})
 
 	return

+ 8 - 6
internal/controller/hello.go

@@ -2,7 +2,6 @@ package controller
 
 import (
 	"context"
-	"github.com/gogf/gf/v2/frame/g"
 	"nodeMonitor/api/v1"
 	"nodeMonitor/internal/service"
 )
@@ -15,15 +14,18 @@ type cHello struct{}
 
 func (c *cHello) Hello(ctx context.Context, req *v1.HelloReq) (res *v1.HelloRes, err error) {
 
+	res = new(v1.HelloRes)
 	//t1 := time.Now()
 
+	res.NodeItme, err = service.Node().GetNodePingStatus(ctx)
+
 	//Format("2006-01-02 15:04")
 	//g.RequestFromCtx(ctx).Response.Writeln(timeStartStr.Sub(t1))
 
-	status, err := service.Ping().GetStatus(ctx, "kdvkr-04.xyz")
-	if err != nil {
-		return res, err
-	}
-	g.RequestFromCtx(ctx).Response.Writeln(status)
+	//status, err := service.Ping().GetStatus(ctx, 1)
+	//if err != nil {
+	//	return res, err
+	//}
+	//g.RequestFromCtx(ctx).Response.Writeln(status)
 	return
 }

+ 29 - 7
internal/logic/node/node.go

@@ -32,23 +32,34 @@ func (c *sNode) Create(ctx context.Context, input model.NodeCreateInput) error {
 			Port:     input.Port,
 			Url:      input.Url,
 			PingType: input.PingType,
+			NodeMs:   0,
 		}).Insert()
 		return err
 	})
 }
 
+// UpdateNodeMs 更新节点延迟1
+func (c *sNode) UpdateNodeMs(ctx context.Context, input model.NodeUpdateInput) error {
+	_, err := dao.Node.Ctx(ctx).Where(g.Map{
+		"id": input.ServerId,
+	}).Update(g.Map{
+		"node_ms": input.NodeMs,
+	})
+	return err
+}
+
 // Del 删除节点
 func (c *sNode) Del(ctx context.Context, input model.NodeDelInput) error {
 	_, err := dao.Node.Ctx(ctx).Where(g.Map{
-		"host": input.Host,
+		"id": input.Id,
 	}).Delete()
 	return err
 }
 
 // IsExist 节点是否存在
-func (c *sNode) IsExist(ctx context.Context, input model.NodeDelInput) (bool, error) {
+func (c *sNode) IsExist(ctx context.Context, host string) (bool, error) {
 	count, err := dao.Node.Ctx(ctx).Where(g.Map{
-		"host": input.Host,
+		"host": host,
 	}).Count()
 	if err != nil {
 		return false, err
@@ -57,9 +68,9 @@ func (c *sNode) IsExist(ctx context.Context, input model.NodeDelInput) (bool, er
 }
 
 // UpdateNode 更新指定节点
-func (c *sNode) UpdateNode(ctx context.Context, input model.NodeCreateInput) error {
+func (c *sNode) UpdateNode(ctx context.Context, id int, input model.NodeCreateInput) error {
 	_, err := dao.Node.Ctx(ctx).Where(g.Map{
-		"host": input.Host,
+		"id": id,
 	}).Update(g.Map{
 		"host":      input.Host,
 		"name":      input.Name,
@@ -77,10 +88,21 @@ func (c *sNode) GetNode(ctx context.Context) ([]*entity.Node, error) {
 	return nodeList, err
 }
 
+// GetNodePingStatus 获取节点监控结果
+func (c *sNode) GetNodePingStatus(ctx context.Context) ([]*model.NodeItme, error) {
+	var nodeList []*model.NodeItme
+	//g.Model("node").With()
+	err := dao.Node.Ctx(ctx).With(dao.Pinglog).Scan(&nodeList)
+	if err != nil {
+		return nil, err
+	}
+	return nodeList, nil
+}
+
 // FindNode 获取指定节点数据
-func (c *sNode) FindNode(ctx context.Context, host string) (*entity.Node, error) {
+func (c *sNode) FindNode(ctx context.Context, id int) (*entity.Node, error) {
 	var nodeList *entity.Node
-	err := dao.Node.Ctx(ctx).Where("host = ?", host).Scan(&nodeList)
+	err := dao.Node.Ctx(ctx).Where("id = ?", id).Scan(&nodeList)
 	return nodeList, err
 }
 

+ 10 - 5
internal/logic/pinglog/pinglog.go

@@ -25,22 +25,22 @@ func New() *sPing {
 }
 
 // Create 创建延迟日志
-func (c *sPing) Create(ctx context.Context, ping model.PingSt, host string) error {
+func (c *sPing) Create(ctx context.Context, ping model.PingSt, setverid int) error {
 	return dao.Pinglog.Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
 		_, err := dao.Pinglog.Ctx(ctx).Data(do.Pinglog{
 			Maxdelay: ping.MaxDelay,
 			Mindelay: ping.MinDelay,
 			Avgdelay: ping.AvgDelay,
 			Losspk:   ping.LossPk,
-			Host:     host,
+			Serverid: setverid,
 		}).Insert()
 		return err
 	})
 }
 
 // GetStatus 查询节点状态
-// SELECT *  FROM pinglog WHERE create_at >= DATE_SUB(NOW(),INTERVAL 10 MINUTE) and avgdelay = 0  and losspk >= 0 and maxdelay = 0 and `host` = 'kdvkr-04.xyz'
-func (c *sPing) GetStatus(ctx context.Context, host string) (bool, error) {
+// SELECT *  FROM pinglog WHERE create_at >= DATE_SUB(NOW(),INTERVAL 10 MINUTE) and avgdelay = 0  and losspk >= 0 and maxdelay = 0 and `serverid` = '1'
+func (c *sPing) GetStatus(ctx context.Context, serverid int) (bool, error) {
 	//查询的数据超过3次就是不ok了
 	startTime, err := g.Cfg().Get(ctx, "node.startTime")
 	if err != nil {
@@ -55,7 +55,12 @@ func (c *sPing) GetStatus(ctx context.Context, host string) (bool, error) {
 	}
 
 	timeStartStr := time.Unix(time.Now().Unix()-startTime.Int64(), 0)
-	count, err := dao.Pinglog.Ctx(ctx).Where("create_at > ?", timeStartStr).Where("avgdelay = 0").Where("losspk > ?", loos.Int()).Where("maxdelay = 0 ").Where("host = ?", host).Count()
+	count, err := dao.Pinglog.Ctx(ctx).Where("create_at > ?", timeStartStr).Where("avgdelay = 0").Where("losspk > ?", loos.Int()).Where("maxdelay = 0 ").Where("serverid = ?", serverid).Count()
 
 	return count >= 3, err
 }
+
+func (c *sPing) GetPingLog(ctx context.Context) (list []model.NodeItme, err error) {
+	//err = dao.Pinglog.Ctx(ctx).With(dao.Node{})
+	return
+}

+ 14 - 1
internal/model/node.go

@@ -1,5 +1,7 @@
 package model
 
+import "nodeMonitor/internal/model/entity"
+
 type NodeCreateInput struct {
 	Name      string
 	Host      string
@@ -10,5 +12,16 @@ type NodeCreateInput struct {
 }
 
 type NodeDelInput struct {
-	Host string
+	Id int
+}
+
+type NodeUpdateInput struct {
+	ServerId int
+	NodeMs   int
+}
+
+// UserDetail *UserDetail   `orm:"with:uid=id"`
+// //	 UserScores []*UserScores `orm:"with:uid=id"`
+type NodeItme struct {
+	PingList []*entity.Pinglog `orm:"with:serverid=id"`
 }

+ 14 - 6
internal/task/ping.go

@@ -24,14 +24,14 @@ func Ping(ctx context.Context) {
 	for _, target := range nodeList {
 		wg.Add(1)
 		//glog.Debug(ctx, target)
-		go PingTask(ctx, target.Host, &wg, target.PingType, target.Port)
+		go PingTask(ctx, target.Host, &wg, target.PingType, target.Port, target.Id)
 	}
 	wg.Wait()
 
 	go CheckNodeStatus(ctx)
 }
 
-func PingTask(ctx context.Context, t string, wg *sync.WaitGroup, pingType int, hostPort int) {
+func PingTask(ctx context.Context, t string, wg *sync.WaitGroup, pingType int, hostPort int, serverid int) {
 	//var ipSlice []string
 	//ipSlice = append(ipSlice, "kdvkr-02.xyz")
 	//ipSlice = append(ipSlice, "kdvkr-04.xyz")
@@ -95,12 +95,20 @@ func PingTask(ctx context.Context, t string, wg *sync.WaitGroup, pingType int, h
 	}
 
 	//添加到数据库
-	AddPingLog(ctx, stat, t)
+	AddPingLog(ctx, stat, t, serverid)
 	wg.Done()
 }
 
-func AddPingLog(ctx context.Context, pingres model.PingSt, addr string) {
-	err := service.Ping().Create(ctx, pingres, addr)
+func AddPingLog(ctx context.Context, pingres model.PingSt, addr string, serverid int) {
+	err := service.Ping().Create(ctx, pingres, serverid)
+	if err != nil {
+		glog.Debug(ctx, err.Error())
+		return
+	}
+	err = service.Node().UpdateNodeMs(ctx, model.NodeUpdateInput{
+		ServerId: serverid,
+		NodeMs:   pingres.AvgDelay,
+	})
 	if err != nil {
 		glog.Debug(ctx, err.Error())
 		return
@@ -118,7 +126,7 @@ func CheckNodeStatus(ctx context.Context) {
 	for _, target := range nodeList {
 		glog.Debug(ctx, "start url req .....")
 		//获取不通的IP进程url请求
-		status, err := service.Ping().GetStatus(ctx, target.Host)
+		status, err := service.Ping().GetStatus(ctx, target.Id)
 		if err != nil {
 			glog.Error(ctx, err.Error())
 			return