1、增加任务指令
This commit is contained in:
parent
a2c95fe43f
commit
58b0f2c4c6
|
@ -8,6 +8,7 @@ import (
|
||||||
"hpds-iot-web/config"
|
"hpds-iot-web/config"
|
||||||
router2 "hpds-iot-web/internal/router"
|
router2 "hpds-iot-web/internal/router"
|
||||||
"hpds-iot-web/model"
|
"hpds-iot-web/model"
|
||||||
|
"hpds-iot-web/mq"
|
||||||
discover "hpds-iot-web/pkg/discover/consul"
|
discover "hpds-iot-web/pkg/discover/consul"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
@ -27,7 +28,7 @@ var (
|
||||||
|
|
||||||
func must(err error) {
|
func must(err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprint(os.Stderr, err)
|
_, _ = fmt.Fprint(os.Stderr, err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,24 +80,28 @@ func NewStartCmd() *cobra.Command {
|
||||||
//创建注册对象
|
//创建注册对象
|
||||||
tags := make([]string, 1)
|
tags := make([]string, 1)
|
||||||
tags[0] = "web"
|
tags[0] = "web"
|
||||||
consulCfg, err := discover.NewConsulConfig(cfg.Consul.Host, cfg.Name, cfg.Name, cfg.Consul.Host, cfg.Consul.Port,
|
consulCfg, err := discover.NewConsulConfig(fmt.Sprintf("%s:%d", cfg.Consul.Host, cfg.Consul.Port), cfg.Name, cfg.Name, cfg.Consul.Host, cfg.Consul.Port,
|
||||||
tags, 300, 300, 300)
|
tags, 300, 300, 300)
|
||||||
must(err)
|
must(err)
|
||||||
|
|
||||||
//连接数据库
|
//连接数据库
|
||||||
model.New(cfg.Db.DriveName, cfg.Db.Conn)
|
model.New(cfg.Db.DriveName, cfg.Db.Conn, cfg.Mode == "dev")
|
||||||
//连接redis
|
//连接redis
|
||||||
model.NewCache(cfg.Cache)
|
model.NewCache(cfg.Cache)
|
||||||
|
|
||||||
logger := LoadLoggerConfig(cfg.Logging)
|
logger := LoadLoggerConfig(cfg.Logging)
|
||||||
|
|
||||||
|
//创建消息连接点
|
||||||
|
mq.MqList, err = mq.NewMqClient(cfg.Funcs, cfg.Node, logger)
|
||||||
|
must(err)
|
||||||
|
|
||||||
// 退出channel
|
// 退出channel
|
||||||
exitChannel := make(chan os.Signal)
|
exitChannel := make(chan os.Signal)
|
||||||
defer close(exitChannel)
|
defer close(exitChannel)
|
||||||
|
|
||||||
// 退出信号监听
|
// 退出信号监听
|
||||||
go func(c chan os.Signal) {
|
go func(c chan os.Signal) {
|
||||||
consulCfg.ServiceDeregister()
|
_ = consulCfg.ServiceDeregister()
|
||||||
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
|
||||||
}(exitChannel)
|
}(exitChannel)
|
||||||
router := router2.InitRouter(cfg, logger, model.DB)
|
router := router2.InitRouter(cfg, logger, model.DB)
|
||||||
|
@ -116,13 +121,13 @@ func NewStartCmd() *cobra.Command {
|
||||||
//zap.L().Error("发生错误", zap.Error(err))
|
//zap.L().Error("发生错误", zap.Error(err))
|
||||||
select {
|
select {
|
||||||
case <-ctx.Done():
|
case <-ctx.Done():
|
||||||
consulCfg.ServiceDeregister()
|
_ = consulCfg.ServiceDeregister()
|
||||||
logger.With(
|
logger.With(
|
||||||
zap.String("web", "exit"),
|
zap.String("web", "exit"),
|
||||||
).Error(ctx.Err().Error())
|
).Error(ctx.Err().Error())
|
||||||
return
|
return
|
||||||
case errs := <-exitChannel:
|
case errs := <-exitChannel:
|
||||||
consulCfg.ServiceDeregister()
|
_ = consulCfg.ServiceDeregister()
|
||||||
logger.With(
|
logger.With(
|
||||||
zap.String("web", "服务退出"),
|
zap.String("web", "服务退出"),
|
||||||
).Info(errs.String())
|
).Info(errs.String())
|
||||||
|
|
|
@ -26,7 +26,7 @@ consul:
|
||||||
timeout: 5
|
timeout: 5
|
||||||
deregister: 1
|
deregister: 1
|
||||||
db:
|
db:
|
||||||
conn: root:OIxv7QptYBO3@tcp(192.168.0.200:3306)/hpds_jky?charset=utf8mb4
|
conn: root:OIxv7QptYBO3@tcp(114.55.236.153:27136)/hpds_jky?charset=utf8mb4
|
||||||
drive_name: mysql
|
drive_name: mysql
|
||||||
cache:
|
cache:
|
||||||
host: 192.168.0.200
|
host: 192.168.0.200
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
name: web
|
||||||
|
host: 0.0.0.0
|
||||||
|
port: 8088
|
||||||
|
mode: dev
|
||||||
|
logging:
|
||||||
|
path: ./logs
|
||||||
|
prefix: hpds-iot-web
|
||||||
|
errorFileSuffix: error.log
|
||||||
|
warnFileSuffix: warn.log
|
||||||
|
infoFileSuffix: info.log
|
||||||
|
debugFileSuffix: debug.log
|
||||||
|
maxSize: 100
|
||||||
|
maxBackups: 3000
|
||||||
|
maxAge: 30
|
||||||
|
development: true
|
||||||
|
mineData:
|
||||||
|
accessKey: f0bda738033e47ffbfbd5d3f865c19e1
|
||||||
|
minio:
|
||||||
|
protocol: http
|
||||||
|
endpoint: 127.0.0.1:9000
|
||||||
|
accessKeyId: root
|
||||||
|
secretAccessKey: OIxv7QptYBO3
|
||||||
|
consul:
|
||||||
|
host: http://consul.hpds.cc
|
||||||
|
port: 80
|
||||||
|
interval: 300
|
||||||
|
timeout: 5
|
||||||
|
deregister: 1
|
||||||
|
db:
|
||||||
|
conn: root:OIxv7QptYBO3@tcp(114.55.236.153:23306)/diagnostic_platform?charset=utf8mb4
|
||||||
|
drive_name: mysql
|
||||||
|
cache:
|
||||||
|
host: 127.0.0.1
|
||||||
|
port: 6379
|
||||||
|
db: 0
|
||||||
|
pool_size: 10
|
||||||
|
functions:
|
||||||
|
- name: web-sf
|
|
@ -1,7 +1,6 @@
|
||||||
package config
|
package config
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/spf13/viper"
|
"github.com/spf13/viper"
|
||||||
"os"
|
"os"
|
||||||
|
@ -22,6 +21,8 @@ type WebConfig struct {
|
||||||
Logging LogOptions `yaml:"logging"`
|
Logging LogOptions `yaml:"logging"`
|
||||||
Minio MinioConfig `yaml:"minio"`
|
Minio MinioConfig `yaml:"minio"`
|
||||||
MineData MineDataConfig `yaml:"mineData"`
|
MineData MineDataConfig `yaml:"mineData"`
|
||||||
|
Node HpdsNode `yaml:"node,omitempty"`
|
||||||
|
Funcs []FuncConfig `yaml:"functions,omitempty"`
|
||||||
}
|
}
|
||||||
type ConsulConfig struct {
|
type ConsulConfig struct {
|
||||||
Host string `yaml:"host,omitempty"`
|
Host string `yaml:"host,omitempty"`
|
||||||
|
@ -69,6 +70,18 @@ type MineDataConfig struct {
|
||||||
AccessKey string `yaml:"accessKey"`
|
AccessKey string `yaml:"accessKey"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type HpdsNode struct {
|
||||||
|
Host string `yaml:"host"`
|
||||||
|
Port int `yaml:"port"`
|
||||||
|
Token string `yaml:"token,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type FuncConfig struct {
|
||||||
|
Name string `yaml:"name"`
|
||||||
|
DataTag uint8 `yaml:"dataTag"`
|
||||||
|
MqType uint `yaml:"mqType"` //消息类型, 发布,1;订阅;2
|
||||||
|
}
|
||||||
|
|
||||||
func ParseConfigByFile(path string) (cfg *WebConfig, err error) {
|
func ParseConfigByFile(path string) (cfg *WebConfig, err error) {
|
||||||
buffer, err := os.ReadFile(path)
|
buffer, err := os.ReadFile(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -81,11 +94,13 @@ func load(buf []byte) (cfg *WebConfig, err error) {
|
||||||
cViper := viper.New()
|
cViper := viper.New()
|
||||||
cViper.SetConfigType("yaml")
|
cViper.SetConfigType("yaml")
|
||||||
cfg = new(WebConfig)
|
cfg = new(WebConfig)
|
||||||
cViper.ReadConfig(bytes.NewBuffer(buf))
|
cfg.Funcs = make([]FuncConfig, 0)
|
||||||
err = cViper.Unmarshal(cfg)
|
//cViper.ReadConfig(bytes.NewBuffer(buf))
|
||||||
if err != nil {
|
err = yaml.Unmarshal(buf, cfg)
|
||||||
return nil, err
|
//err = cViper.Unmarshal(cfg)
|
||||||
}
|
//if err != nil {
|
||||||
|
// return nil, err
|
||||||
|
//}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,5 +34,11 @@ cache:
|
||||||
port: 6379
|
port: 6379
|
||||||
db: 0
|
db: 0
|
||||||
pool_size: 10
|
pool_size: 10
|
||||||
|
node:
|
||||||
|
host: 127.0.0.1
|
||||||
|
port: 27188
|
||||||
|
token: 06d36c6f5705507dae778fdce90d0767
|
||||||
functions:
|
functions:
|
||||||
- name: web-sf
|
- name: task-request
|
||||||
|
dataTag : 12
|
||||||
|
mqType: 1
|
15
go.mod
15
go.mod
|
@ -5,6 +5,7 @@ go 1.18
|
||||||
require (
|
require (
|
||||||
git.hpds.cc/Component/gin_valid v0.0.0-20230104142509-f956bce255b6
|
git.hpds.cc/Component/gin_valid v0.0.0-20230104142509-f956bce255b6
|
||||||
git.hpds.cc/Component/logging v0.0.0-20230106105738-e378e873921b
|
git.hpds.cc/Component/logging v0.0.0-20230106105738-e378e873921b
|
||||||
|
git.hpds.cc/pavement/hpds_node v0.0.0-20230307094826-753c4fe9c877
|
||||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
github.com/dgrijalva/jwt-go v3.2.0+incompatible
|
||||||
github.com/gin-contrib/zap v0.1.0
|
github.com/gin-contrib/zap v0.1.0
|
||||||
github.com/gin-gonic/gin v1.8.2
|
github.com/gin-gonic/gin v1.8.2
|
||||||
|
@ -25,6 +26,8 @@ require (
|
||||||
cloud.google.com/go/compute v1.12.1 // indirect
|
cloud.google.com/go/compute v1.12.1 // indirect
|
||||||
cloud.google.com/go/compute/metadata v0.2.1 // indirect
|
cloud.google.com/go/compute/metadata v0.2.1 // indirect
|
||||||
cloud.google.com/go/firestore v1.8.0 // indirect
|
cloud.google.com/go/firestore v1.8.0 // indirect
|
||||||
|
git.hpds.cc/Component/mq_coder v0.0.0-20221010064749-174ae7ae3340 // indirect
|
||||||
|
git.hpds.cc/Component/network v0.0.0-20221012021659-2433c68452d5 // indirect
|
||||||
github.com/armon/go-metrics v0.4.0 // indirect
|
github.com/armon/go-metrics v0.4.0 // indirect
|
||||||
github.com/coreos/go-semver v0.3.0 // indirect
|
github.com/coreos/go-semver v0.3.0 // indirect
|
||||||
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
|
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
|
||||||
|
@ -35,8 +38,10 @@ require (
|
||||||
github.com/go-playground/locales v0.14.0 // indirect
|
github.com/go-playground/locales v0.14.0 // indirect
|
||||||
github.com/go-playground/universal-translator v0.18.0 // indirect
|
github.com/go-playground/universal-translator v0.18.0 // indirect
|
||||||
github.com/go-playground/validator/v10 v10.11.1 // indirect
|
github.com/go-playground/validator/v10 v10.11.1 // indirect
|
||||||
|
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect
|
||||||
github.com/gogo/protobuf v1.3.2 // indirect
|
github.com/gogo/protobuf v1.3.2 // indirect
|
||||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||||
|
github.com/golang/mock v1.6.0 // indirect
|
||||||
github.com/golang/protobuf v1.5.2 // indirect
|
github.com/golang/protobuf v1.5.2 // indirect
|
||||||
github.com/golang/snappy v0.0.4 // indirect
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
github.com/google/go-cmp v0.5.9 // indirect
|
github.com/google/go-cmp v0.5.9 // indirect
|
||||||
|
@ -55,7 +60,11 @@ require (
|
||||||
github.com/klauspost/compress v1.15.9 // indirect
|
github.com/klauspost/compress v1.15.9 // indirect
|
||||||
github.com/klauspost/cpuid/v2 v2.1.0 // indirect
|
github.com/klauspost/cpuid/v2 v2.1.0 // indirect
|
||||||
github.com/leodido/go-urn v1.2.1 // indirect
|
github.com/leodido/go-urn v1.2.1 // indirect
|
||||||
|
github.com/lucas-clemente/quic-go v0.29.1 // indirect
|
||||||
github.com/magiconair/properties v1.8.6 // indirect
|
github.com/magiconair/properties v1.8.6 // indirect
|
||||||
|
github.com/marten-seemann/qtls-go1-18 v0.1.2 // indirect
|
||||||
|
github.com/marten-seemann/qtls-go1-19 v0.1.0 // indirect
|
||||||
|
github.com/matoous/go-nanoid/v2 v2.0.0 // indirect
|
||||||
github.com/mattn/go-colorable v0.1.12 // indirect
|
github.com/mattn/go-colorable v0.1.12 // indirect
|
||||||
github.com/mattn/go-isatty v0.0.16 // indirect
|
github.com/mattn/go-isatty v0.0.16 // indirect
|
||||||
github.com/minio/md5-simd v1.1.2 // indirect
|
github.com/minio/md5-simd v1.1.2 // indirect
|
||||||
|
@ -64,6 +73,8 @@ require (
|
||||||
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
github.com/mitchellh/mapstructure v1.5.0 // indirect
|
||||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
|
||||||
github.com/modern-go/reflect2 v1.0.2 // indirect
|
github.com/modern-go/reflect2 v1.0.2 // indirect
|
||||||
|
github.com/nxadm/tail v1.4.8 // indirect
|
||||||
|
github.com/onsi/ginkgo v1.16.4 // indirect
|
||||||
github.com/pelletier/go-toml v1.9.5 // indirect
|
github.com/pelletier/go-toml v1.9.5 // indirect
|
||||||
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
github.com/pelletier/go-toml/v2 v2.0.6 // indirect
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
@ -87,12 +98,15 @@ require (
|
||||||
go.uber.org/atomic v1.9.0 // indirect
|
go.uber.org/atomic v1.9.0 // indirect
|
||||||
go.uber.org/multierr v1.8.0 // indirect
|
go.uber.org/multierr v1.8.0 // indirect
|
||||||
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
|
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa // indirect
|
||||||
|
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect
|
||||||
golang.org/x/net v0.4.0 // indirect
|
golang.org/x/net v0.4.0 // indirect
|
||||||
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect
|
golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect
|
||||||
golang.org/x/sync v0.1.0 // indirect
|
golang.org/x/sync v0.1.0 // indirect
|
||||||
golang.org/x/sys v0.3.0 // indirect
|
golang.org/x/sys v0.3.0 // indirect
|
||||||
golang.org/x/text v0.5.0 // indirect
|
golang.org/x/text v0.5.0 // indirect
|
||||||
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
|
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
|
||||||
|
golang.org/x/tools v0.1.12 // indirect
|
||||||
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
|
||||||
google.golang.org/api v0.102.0 // indirect
|
google.golang.org/api v0.102.0 // indirect
|
||||||
google.golang.org/appengine v1.6.7 // indirect
|
google.golang.org/appengine v1.6.7 // indirect
|
||||||
|
@ -101,6 +115,7 @@ require (
|
||||||
google.golang.org/protobuf v1.28.1 // indirect
|
google.golang.org/protobuf v1.28.1 // indirect
|
||||||
gopkg.in/ini.v1 v1.67.0 // indirect
|
gopkg.in/ini.v1 v1.67.0 // indirect
|
||||||
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
|
||||||
|
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect
|
||||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||||
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect
|
xorm.io/builder v0.3.11-0.20220531020008-1bd24a7dc978 // indirect
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,6 +9,30 @@ import (
|
||||||
e "hpds-iot-web/pkg/err"
|
e "hpds-iot-web/pkg/err"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (s HandlerService) DiseaseList(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewDiseaseService(s.AppConfig, s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.DiseaseRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("DiseaseList", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
if req.Size < 1 {
|
||||||
|
req.Size = 20
|
||||||
|
}
|
||||||
|
if req.Size > 1000 {
|
||||||
|
req.Size = 1000
|
||||||
|
}
|
||||||
|
if req.Page < 1 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
data, err = repo.DiseaseList(c, req)
|
||||||
|
go s.SaveLog("获取病害库列表", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s HandlerService) DiseaseTypeList(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) DiseaseTypeList(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewDiseaseService(s.AppConfig, s.Engine, s.Logger)
|
repo := service.NewDiseaseService(s.AppConfig, s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
|
|
|
@ -10,7 +10,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s HandlerService) ModelList(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) ModelList(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewModelService(s.Engine, s.Logger)
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
userInfo := us.(*model.SystemUser)
|
userInfo := us.(*model.SystemUser)
|
||||||
var req proto.ModelRequest
|
var req proto.ModelRequest
|
||||||
|
@ -33,7 +33,7 @@ func (s HandlerService) ModelList(c *gin.Context) (data interface{}, err error)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (s HandlerService) AddModel(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) AddModel(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewModelService(s.Engine, s.Logger)
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
userInfo := us.(*model.SystemUser)
|
userInfo := us.(*model.SystemUser)
|
||||||
var req proto.ModelItemRequest
|
var req proto.ModelItemRequest
|
||||||
|
@ -47,7 +47,7 @@ func (s HandlerService) AddModel(c *gin.Context) (data interface{}, err error) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (s HandlerService) EditModel(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) EditModel(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewModelService(s.Engine, s.Logger)
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
userInfo := us.(*model.SystemUser)
|
userInfo := us.(*model.SystemUser)
|
||||||
var req proto.ModelItemRequest
|
var req proto.ModelItemRequest
|
||||||
|
@ -61,7 +61,7 @@ func (s HandlerService) EditModel(c *gin.Context) (data interface{}, err error)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (s HandlerService) DelModel(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) DelModel(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewModelService(s.Engine, s.Logger)
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
userInfo := us.(*model.SystemUser)
|
userInfo := us.(*model.SystemUser)
|
||||||
var req proto.ModelItemRequest
|
var req proto.ModelItemRequest
|
||||||
|
@ -74,3 +74,32 @@ func (s HandlerService) DelModel(c *gin.Context) (data interface{}, err error) {
|
||||||
go s.SaveLog("删除模型", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
go s.SaveLog("删除模型", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) ModelIssue(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.ModelIssueRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("ModelIssue", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.ModelIssue(c, req)
|
||||||
|
go s.SaveLog("模型下发", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
func (s HandlerService) GetModelWorkflow(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewModelService(s.AppConfig, s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.ModelItemRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("ModelIssue", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.GetModelWorkflow(c, req)
|
||||||
|
go s.SaveLog("获取模型工作流", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -92,3 +92,87 @@ func (s HandlerService) DeleteBrand(c *gin.Context) (data interface{}, err error
|
||||||
go s.SaveLog("删除品牌", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
go s.SaveLog("删除品牌", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) NodeList(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewSystemService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.NodeRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("NodeList", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
if req.Size < 1 {
|
||||||
|
req.Size = 20
|
||||||
|
}
|
||||||
|
if req.Size > 100 {
|
||||||
|
req.Size = 100
|
||||||
|
}
|
||||||
|
if req.Page < 1 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
data, err = repo.NodeList(c, req)
|
||||||
|
go s.SaveLog("获取节点列表", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) NodeInfo(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewSystemService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.NodeItemRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("NodeInfo", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.NodeInfo(c, req)
|
||||||
|
go s.SaveLog("获取节点信息", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) EditNode(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewSystemService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.NodeItemRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("EditNode", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.EditNode(c, req)
|
||||||
|
go s.SaveLog("修改节点", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) NodeState(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewSystemService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.NodeInfoRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("NodeState", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.NodeState(c, req)
|
||||||
|
go s.SaveLog("获取节点运行信息", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) NodeLastState(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewSystemService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.NodeInfoRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("NodeLastState", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.NodeLastState(c, req)
|
||||||
|
go s.SaveLog("获取节点最后运行信息", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package handler
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"hpds-iot-web/internal/proto"
|
||||||
|
"hpds-iot-web/internal/service"
|
||||||
|
"hpds-iot-web/model"
|
||||||
|
e "hpds-iot-web/pkg/err"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (s HandlerService) TaskList(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewTaskService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.TaskRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("TaskList", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.TaskList(c, req)
|
||||||
|
go s.SaveLog("任务列表", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) AddTask(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewTaskService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.TaskItemRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("AddTask", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.AddTask(c, req)
|
||||||
|
go s.SaveLog("新增任务", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
|
@ -1,6 +1,7 @@
|
||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"hpds-iot-web/internal/proto"
|
"hpds-iot-web/internal/proto"
|
||||||
"hpds-iot-web/internal/service"
|
"hpds-iot-web/internal/service"
|
||||||
|
@ -28,6 +29,21 @@ func (s HandlerService) GetUserInfo(c *gin.Context) (data interface{}, err error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s HandlerService) GetUserList(c *gin.Context) (data interface{}, err error) {
|
||||||
|
repo := service.NewUserService(s.Engine, s.Logger)
|
||||||
|
us, _ := c.Get("operatorUser")
|
||||||
|
userInfo := us.(*model.SystemUser)
|
||||||
|
var req proto.UserRequest
|
||||||
|
err = c.ShouldBindJSON(&req)
|
||||||
|
if err != nil {
|
||||||
|
go s.SaveLog("GetUserList", "Manage", "", "", req.ToString(), fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return nil, e.NewValidErr(err)
|
||||||
|
}
|
||||||
|
data, err = repo.GetUserList(c, req)
|
||||||
|
go s.SaveLog("获取用户列表", "Manage", "", "", "", fmt.Sprintf("%d", userInfo.UserId), c.Request.RemoteAddr, "")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (s HandlerService) MenuList(c *gin.Context) (data interface{}, err error) {
|
func (s HandlerService) MenuList(c *gin.Context) (data interface{}, err error) {
|
||||||
repo := service.NewUserService(s.Engine, s.Logger)
|
repo := service.NewUserService(s.Engine, s.Logger)
|
||||||
us, _ := c.Get("operatorUser")
|
us, _ := c.Get("operatorUser")
|
||||||
|
|
|
@ -23,6 +23,20 @@ func (us UserLogin) ToString() string {
|
||||||
return string(data)
|
return string(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type UserRequest struct {
|
||||||
|
RealName string `json:"realName"`
|
||||||
|
Phone string `json:"phone"`
|
||||||
|
BasePageList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (us UserRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(us)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
type OwnerRequest struct {
|
type OwnerRequest struct {
|
||||||
OwnerName string `json:"ownerName"`
|
OwnerName string `json:"ownerName"`
|
||||||
BasePageList
|
BasePageList
|
||||||
|
@ -301,7 +315,8 @@ func (p ServiceParamItem) ToString() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ModelRequest struct {
|
type ModelRequest struct {
|
||||||
ModelName string `json:"modelName"`
|
ModelName string `json:"modelName,omitempty"`
|
||||||
|
BizType int `json:"bizType,omitempty"`
|
||||||
BasePageList
|
BasePageList
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -314,13 +329,22 @@ func (p ModelRequest) ToString() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
type ModelItemRequest struct {
|
type ModelItemRequest struct {
|
||||||
ModelId int `json:"modelId"`
|
ModelId int64 `json:"modelId"`
|
||||||
|
BizType int `json:"bizType"`
|
||||||
ModelName string `json:"modelName"`
|
ModelName string `json:"modelName"`
|
||||||
ModelVersion string `json:"modelVersion"`
|
ModelVersion string `json:"modelVersion"`
|
||||||
ModelDesc string `json:"modelDesc"`
|
ModelDesc string `json:"modelDesc"`
|
||||||
ModelFiles string `json:"modelFiles"`
|
ModelFiles string `json:"modelFiles"`
|
||||||
ModelParamsFiles string `json:"modelParamsFiles"`
|
ModelParamsFiles string `json:"modelParamsFiles"`
|
||||||
ModelExecScript string `json:"modelExecScript"`
|
ModelExecScript string `json:"modelExecScript"`
|
||||||
|
DockerFile []string `json:"dockerFile"`
|
||||||
|
MappedPort int `json:"mappedPort"`
|
||||||
|
ModelCommand string `json:"modelCommand"`
|
||||||
|
InPath string `json:"inPath"`
|
||||||
|
OutPath string `json:"outPath"`
|
||||||
|
HttpUrl string `json:"httpUrl"`
|
||||||
|
IsLightWeight bool `json:"isLightWeight"`
|
||||||
|
Workflow string `json:"workflow"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p ModelItemRequest) ToString() string {
|
func (p ModelItemRequest) ToString() string {
|
||||||
|
@ -331,6 +355,19 @@ func (p ModelItemRequest) ToString() string {
|
||||||
return string(data)
|
return string(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ModelIssueRequest struct {
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
ModelId int64 `json:"modelId"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p ModelIssueRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
type DeviceRequest struct {
|
type DeviceRequest struct {
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
ProductId int64 `json:"productId"`
|
ProductId int64 `json:"productId"`
|
||||||
|
@ -404,6 +441,20 @@ func (p BrandItemRequest) ToString() string {
|
||||||
return string(data)
|
return string(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type DiseaseRequest struct {
|
||||||
|
BizType int `json:"bizType"`
|
||||||
|
Key string `json:"key"`
|
||||||
|
BasePageList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p DiseaseRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
type DiseaseTypeRequest struct {
|
type DiseaseTypeRequest struct {
|
||||||
CategoryId int `json:"categoryId"`
|
CategoryId int `json:"categoryId"`
|
||||||
Key string `json:"key"`
|
Key string `json:"key"`
|
||||||
|
@ -467,6 +518,7 @@ type ImportDatasetRequest struct {
|
||||||
DatasetName string `json:"datasetName"`
|
DatasetName string `json:"datasetName"`
|
||||||
DatasetDesc string `json:"datasetDesc"`
|
DatasetDesc string `json:"datasetDesc"`
|
||||||
ProjectId int64 `json:"projectId"`
|
ProjectId int64 `json:"projectId"`
|
||||||
|
StoreName string `json:"storeName"`
|
||||||
OwnerId int64 `json:"ownerId"`
|
OwnerId int64 `json:"ownerId"`
|
||||||
Creator int64 `json:"creator"`
|
Creator int64 `json:"creator"`
|
||||||
}
|
}
|
||||||
|
@ -478,3 +530,111 @@ func (p ImportDatasetRequest) ToString() string {
|
||||||
}
|
}
|
||||||
return string(data)
|
return string(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NodeRequest struct {
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
NodeName string `json:"nodeName"`
|
||||||
|
NodeGuid string `json:"nodeGuid"`
|
||||||
|
NodeType int `json:"nodeType"`
|
||||||
|
Platform string `json:"platform"`
|
||||||
|
PlatformVersion string `json:"platformVersion"`
|
||||||
|
CPU string `json:"cpu"`
|
||||||
|
MemTotal uint64 `json:"memTotal"`
|
||||||
|
DiskTotal uint64 `json:"diskTotal"`
|
||||||
|
SwapTotal uint64 `json:"swapTotal"`
|
||||||
|
Arch string `json:"arch"`
|
||||||
|
Virtualization string `json:"virtualization"`
|
||||||
|
BootTime uint64 `json:"bootTime"`
|
||||||
|
IP string `json:"ip"`
|
||||||
|
CountryCode string `json:"countryCode"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
CreateAt int64 `json:"createAt"`
|
||||||
|
UpdateAt int64 `json:"updateAt"`
|
||||||
|
BasePageList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p NodeRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
type NodeItemRequest struct {
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
NodeName string `json:"nodeName"`
|
||||||
|
NodeGuid string `json:"nodeGuid"`
|
||||||
|
NodeType int `json:"nodeType"`
|
||||||
|
Platform string `json:"platform"`
|
||||||
|
PlatformVersion string `json:"platformVersion"`
|
||||||
|
CPU string `json:"cpu"`
|
||||||
|
MemTotal uint64 `json:"memTotal"`
|
||||||
|
DiskTotal uint64 `json:"diskTotal"`
|
||||||
|
SwapTotal uint64 `json:"swapTotal"`
|
||||||
|
Arch string `json:"arch"`
|
||||||
|
Virtualization string `json:"virtualization"`
|
||||||
|
BootTime uint64 `json:"bootTime"`
|
||||||
|
IP string `json:"ip"`
|
||||||
|
CountryCode string `json:"countryCode"`
|
||||||
|
Version string `json:"version"`
|
||||||
|
CreateAt int64 `json:"createAt"`
|
||||||
|
UpdateAt int64 `json:"updateAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p NodeItemRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
type NodeInfoRequest struct {
|
||||||
|
NodeGuid string `json:"nodeGuid"`
|
||||||
|
Uptime int64 `json:"uptime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p NodeInfoRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
type TaskRequest struct {
|
||||||
|
BizType int `json:"bizType"`
|
||||||
|
TaskName string `json:"taskName"`
|
||||||
|
StartTime string `json:"startTime"`
|
||||||
|
FinishTime string `json:"finishTime"`
|
||||||
|
BasePageList
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p TaskRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
||||||
|
type TaskItemRequest struct {
|
||||||
|
TaskId int64 `json:"taskId"`
|
||||||
|
ModelId int64 `json:"modelId"`
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
TaskName string `json:"taskName"`
|
||||||
|
TaskDesc string `json:"taskDesc"`
|
||||||
|
DatasetArr int64 `json:"datasetArr"`
|
||||||
|
SubDataset string `json:"subDataset"`
|
||||||
|
SubDataTag int `json:"subDataTag"`
|
||||||
|
AppointmentTime string `json:"appointmentTime"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p TaskItemRequest) ToString() string {
|
||||||
|
data, err := json.Marshal(p)
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return string(data)
|
||||||
|
}
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package proto
|
package proto
|
||||||
|
|
||||||
|
import "hpds-iot-web/model"
|
||||||
|
|
||||||
// BaseResponse 基础返回结构
|
// BaseResponse 基础返回结构
|
||||||
type BaseResponse struct {
|
type BaseResponse struct {
|
||||||
Code int `json:"code"`
|
Code int `json:"code"`
|
||||||
|
@ -56,6 +58,7 @@ type DatasetItem struct {
|
||||||
DatasetId int64 `json:"datasetId"`
|
DatasetId int64 `json:"datasetId"`
|
||||||
DatasetName string `json:"datasetName"`
|
DatasetName string `json:"datasetName"`
|
||||||
DatasetDesc string `json:"datasetDesc"`
|
DatasetDesc string `json:"datasetDesc"`
|
||||||
|
StoreName string `json:"storeName"`
|
||||||
CategoryId int `json:"categoryId"`
|
CategoryId int `json:"categoryId"`
|
||||||
ProjectId int64 `json:"projectId"`
|
ProjectId int64 `json:"projectId"`
|
||||||
OwnerId int64 `json:"ownerId"`
|
OwnerId int64 `json:"ownerId"`
|
||||||
|
@ -63,3 +66,57 @@ type DatasetItem struct {
|
||||||
CreateAt int64 `json:"createAt"`
|
CreateAt int64 `json:"createAt"`
|
||||||
DatasetCount int64 `json:"datasetCount"`
|
DatasetCount int64 `json:"datasetCount"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NodeState struct {
|
||||||
|
List []model.NodeState `json:"list"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type NodeLastState struct {
|
||||||
|
List []NodeLastStateItem `json:"list"`
|
||||||
|
}
|
||||||
|
type NodeLastStateItem struct {
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
NodeGuid string `json:"nodeGuid"`
|
||||||
|
NodeName string `json:"nodeName"`
|
||||||
|
NodeType int `json:"nodeType"`
|
||||||
|
NodeStatus int `json:"nodeStatus"`
|
||||||
|
Platform string `json:"platform"`
|
||||||
|
PlatformVersion string `json:"platformVersion"`
|
||||||
|
CPU string `json:"CPU"`
|
||||||
|
MemTotal uint64 `json:"memTotal"`
|
||||||
|
DiskTotal uint64 `json:"diskTotal"`
|
||||||
|
SwapTotal uint64 `json:"swapTotal"`
|
||||||
|
CpuUsed float64 `json:"cpuUsed"`
|
||||||
|
MemUsed uint64 `json:"memUsed"`
|
||||||
|
SwapUsed uint64 `json:"swapUsed"`
|
||||||
|
DiskUsed uint64 `json:"diskUsed"`
|
||||||
|
NetInTransfer uint64 `json:"netInTransfer"`
|
||||||
|
NetOutTransfer uint64 `json:"netOutTransfer"`
|
||||||
|
NetInSpeed uint64 `json:"netInSpeed"`
|
||||||
|
NetOutSpeed uint64 `json:"netOutSpeed"`
|
||||||
|
Load1 float64 `json:"load1"`
|
||||||
|
Load5 float64 `json:"load5"`
|
||||||
|
Load15 float64 `json:"load15"`
|
||||||
|
TcpConnCount uint64 `json:"tcpConnCount"`
|
||||||
|
UdpConnCount uint64 `json:"udpConnCount"`
|
||||||
|
ProcessCount uint64 `json:"processCount"`
|
||||||
|
ExecTask string `json:"execTask"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TaskDetail struct {
|
||||||
|
TaskId int64 `json:"taskId"`
|
||||||
|
ModelId int64 `json:"modelId"`
|
||||||
|
ModelName string `json:"modelName"`
|
||||||
|
NodeId int64 `json:"nodeId"`
|
||||||
|
NodeName string `json:"nodeName"`
|
||||||
|
TaskName string `json:"taskName"`
|
||||||
|
TaskDesc string `json:"taskDesc"`
|
||||||
|
DatasetArr string `json:"datasetArr"`
|
||||||
|
ResultStorage string `json:"resultStorage"`
|
||||||
|
AppointmentTime string `json:"appointmentTime"`
|
||||||
|
StartTime int64 `json:"startTime"`
|
||||||
|
FinishTime int64 `json:"finishTime"`
|
||||||
|
Status int `json:"status"`
|
||||||
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engi
|
||||||
{
|
{
|
||||||
user.Use(middleware.JwtAuthMiddleware(logger.Logger))
|
user.Use(middleware.JwtAuthMiddleware(logger.Logger))
|
||||||
user.POST("/login", e.ErrorWrapper(hs.Login))
|
user.POST("/login", e.ErrorWrapper(hs.Login))
|
||||||
|
user.POST("/list", e.ErrorWrapper(hs.GetUserList))
|
||||||
user.GET("/getUserInfo", e.ErrorWrapper(hs.GetUserInfo))
|
user.GET("/getUserInfo", e.ErrorWrapper(hs.GetUserInfo))
|
||||||
|
|
||||||
menu := user.Group("/menu")
|
menu := user.Group("/menu")
|
||||||
|
@ -113,6 +114,10 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engi
|
||||||
device.POST("/delete", e.ErrorWrapper(hs.DeleteDevice))
|
device.POST("/delete", e.ErrorWrapper(hs.DeleteDevice))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//detection := manage.Group("/detection")
|
||||||
|
//{
|
||||||
|
//
|
||||||
|
//}
|
||||||
}
|
}
|
||||||
model := r.Group("/model")
|
model := r.Group("/model")
|
||||||
{
|
{
|
||||||
|
@ -121,6 +126,8 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engi
|
||||||
model.POST("/add", e.ErrorWrapper(hs.AddModel))
|
model.POST("/add", e.ErrorWrapper(hs.AddModel))
|
||||||
model.POST("/edit", e.ErrorWrapper(hs.EditModel))
|
model.POST("/edit", e.ErrorWrapper(hs.EditModel))
|
||||||
model.POST("/delete", e.ErrorWrapper(hs.DelModel))
|
model.POST("/delete", e.ErrorWrapper(hs.DelModel))
|
||||||
|
model.POST("/issue", e.ErrorWrapper(hs.ModelIssue))
|
||||||
|
model.POST("/workflow", e.ErrorWrapper(hs.GetModelWorkflow))
|
||||||
}
|
}
|
||||||
file := r.Group("/file")
|
file := r.Group("/file")
|
||||||
{
|
{
|
||||||
|
@ -138,10 +145,27 @@ func InitRouter(cfg *config.WebConfig, logger *logging.Logger, engine *xorm.Engi
|
||||||
brand.POST("/edit", e.ErrorWrapper(hs.EditBrand))
|
brand.POST("/edit", e.ErrorWrapper(hs.EditBrand))
|
||||||
brand.POST("/delete", e.ErrorWrapper(hs.DeleteBrand))
|
brand.POST("/delete", e.ErrorWrapper(hs.DeleteBrand))
|
||||||
}
|
}
|
||||||
|
node := system.Group("/node")
|
||||||
|
{
|
||||||
|
node.POST("/list", e.ErrorWrapper(hs.NodeList))
|
||||||
|
node.POST("/info", e.ErrorWrapper(hs.NodeInfo))
|
||||||
|
node.POST("/edit", e.ErrorWrapper(hs.EditNode))
|
||||||
|
|
||||||
|
node.POST("/state", e.ErrorWrapper(hs.NodeState))
|
||||||
|
node.POST("/last", e.ErrorWrapper(hs.NodeLastState))
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
task := r.Group("/task")
|
||||||
|
{
|
||||||
|
task.Use(middleware.JwtAuthMiddleware(logger.Logger))
|
||||||
|
task.POST("/list", e.ErrorWrapper(hs.TaskList))
|
||||||
|
task.POST("/add", e.ErrorWrapper(hs.AddTask))
|
||||||
}
|
}
|
||||||
disease := r.Group("/disease")
|
disease := r.Group("/disease")
|
||||||
{
|
{
|
||||||
disease.Use(middleware.JwtAuthMiddleware(logger.Logger))
|
disease.Use(middleware.JwtAuthMiddleware(logger.Logger))
|
||||||
|
disease.POST("/list", e.ErrorWrapper(hs.DiseaseList))
|
||||||
diseaseType := disease.Group("/type")
|
diseaseType := disease.Group("/type")
|
||||||
{
|
{
|
||||||
diseaseType.POST("/list", e.ErrorWrapper(hs.DiseaseTypeList))
|
diseaseType.POST("/list", e.ErrorWrapper(hs.DiseaseTypeList))
|
||||||
|
|
|
@ -106,6 +106,7 @@ func (rp *repo) DatasetList(ctx context.Context, req proto.DatasetRequest) (rsp
|
||||||
DatasetId: v.DatasetId,
|
DatasetId: v.DatasetId,
|
||||||
DatasetName: v.DatasetName,
|
DatasetName: v.DatasetName,
|
||||||
DatasetDesc: v.DatasetDesc,
|
DatasetDesc: v.DatasetDesc,
|
||||||
|
StoreName: v.StoreName,
|
||||||
CategoryId: v.CategoryId,
|
CategoryId: v.CategoryId,
|
||||||
ProjectId: v.ProjectId,
|
ProjectId: v.ProjectId,
|
||||||
OwnerId: v.OwnerId,
|
OwnerId: v.OwnerId,
|
||||||
|
@ -148,6 +149,7 @@ func (rp *repo) ImportDataset(ctx context.Context, req proto.ImportDatasetReques
|
||||||
CategoryId: req.CategoryId,
|
CategoryId: req.CategoryId,
|
||||||
ProjectId: req.ProjectId,
|
ProjectId: req.ProjectId,
|
||||||
OwnerId: req.OwnerId,
|
OwnerId: req.OwnerId,
|
||||||
|
StoreName: req.StoreName,
|
||||||
Creator: req.Creator,
|
Creator: req.Creator,
|
||||||
Status: 1,
|
Status: 1,
|
||||||
CreateAt: time.Now().Unix(),
|
CreateAt: time.Now().Unix(),
|
||||||
|
|
|
@ -13,6 +13,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
type DiseaseService interface {
|
type DiseaseService interface {
|
||||||
|
DiseaseList(ctx context.Context, req proto.DiseaseRequest) (rsp *proto.BaseResponse, err error)
|
||||||
DiseaseTypeList(ctx context.Context, req proto.DiseaseTypeRequest) (rsp *proto.BaseResponse, err error)
|
DiseaseTypeList(ctx context.Context, req proto.DiseaseTypeRequest) (rsp *proto.BaseResponse, err error)
|
||||||
AddDiseaseType(ctx context.Context, req proto.DiseaseTypeItemRequest) (rsp *proto.BaseResponse, err error)
|
AddDiseaseType(ctx context.Context, req proto.DiseaseTypeItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
EditDiseaseType(ctx context.Context, req proto.DiseaseTypeItemRequest) (rsp *proto.BaseResponse, err error)
|
EditDiseaseType(ctx context.Context, req proto.DiseaseTypeItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
@ -27,6 +28,42 @@ func NewDiseaseService(cfg *config.WebConfig, engine *xorm.Engine, logger *loggi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rp *repo) DiseaseList(ctx context.Context, req proto.DiseaseRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
data := make([]model.Disease, 0)
|
||||||
|
count, err := rp.engine.Where("(? = '' or disease_name like ?)", req.Key, "%"+req.Key+"%").
|
||||||
|
And("(? = 0 or category_id = ?)", req.BizType, req.BizType).
|
||||||
|
Limit(int(req.Size), int(((req.Page)-1)*req.Size)).
|
||||||
|
FindAndCount(&data)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp = FillPaging(count, req.Page, req.Size, data, rsp)
|
||||||
|
rsp.Err = err
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
func (rp *repo) DiseaseTypeList(ctx context.Context, req proto.DiseaseTypeRequest) (rsp *proto.BaseResponse, err error) {
|
func (rp *repo) DiseaseTypeList(ctx context.Context, req proto.DiseaseTypeRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
rsp = new(proto.BaseResponse)
|
rsp = new(proto.BaseResponse)
|
||||||
select {
|
select {
|
||||||
|
|
|
@ -21,13 +21,14 @@ type PagingStruct struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// FillPaging 填充分页数据
|
// FillPaging 填充分页数据
|
||||||
func FillPaging(count int64, pageNum int64, pageSize int64, list interface{}, data *proto.BaseResponse) *proto.BaseResponse {
|
func FillPaging(count, pageNum, pageSize int64, list interface{}, data *proto.BaseResponse) *proto.BaseResponse {
|
||||||
//var tp int64
|
//var tp int64
|
||||||
//if count%pageSize > 0 {
|
//if count%pageSize > 0 {
|
||||||
// tp = count/pageSize + 1
|
// tp = count/pageSize + 1
|
||||||
//} else {
|
//} else {
|
||||||
// tp = count / pageSize
|
// tp = count / pageSize
|
||||||
//}
|
//}
|
||||||
|
_ = fmt.Sprintf("%d, %d", pageNum, pageSize)
|
||||||
ps := new(PagingStruct)
|
ps := new(PagingStruct)
|
||||||
ps.List = list
|
ps.List = list
|
||||||
ps.Total = count
|
ps.Total = count
|
||||||
|
@ -50,6 +51,7 @@ type UserService interface {
|
||||||
Login(ctx context.Context, userName, pass string) (rsp *proto.BaseResponse, err error)
|
Login(ctx context.Context, userName, pass string) (rsp *proto.BaseResponse, err error)
|
||||||
GetUserInfo(ctx context.Context, userId int64) (rsp *proto.BaseResponse, err error)
|
GetUserInfo(ctx context.Context, userId int64) (rsp *proto.BaseResponse, err error)
|
||||||
MenuList(ctx context.Context, userId int64) (rsp *proto.BaseResponse, err error)
|
MenuList(ctx context.Context, userId int64) (rsp *proto.BaseResponse, err error)
|
||||||
|
GetUserList(ctx context.Context, req proto.UserRequest) (rsp *proto.BaseResponse, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewUserService(engine *xorm.Engine, logger *logging.Logger) UserService {
|
func NewUserService(engine *xorm.Engine, logger *logging.Logger) UserService {
|
||||||
|
@ -245,3 +247,39 @@ ReturnPoint:
|
||||||
}
|
}
|
||||||
return rsp, err
|
return rsp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rp *repo) GetUserList(ctx context.Context, req proto.UserRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
data := make([]model.SystemUser, 0)
|
||||||
|
count, err := rp.engine.Where("(? = '' or phone like ?)", req.Phone, "%"+req.Phone+"%").
|
||||||
|
And("(? = '' or real_name like ?)", req.RealName, req.RealName).
|
||||||
|
And("status = 1").Limit(int(req.Size), int(((req.Page)-1)*req.Size)).
|
||||||
|
FindAndCount(&data)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp = FillPaging(count, req.Page, req.Size, data, rsp)
|
||||||
|
rsp.Err = err
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
|
@ -2,11 +2,16 @@ package service
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.hpds.cc/Component/logging"
|
"git.hpds.cc/Component/logging"
|
||||||
|
"git.hpds.cc/pavement/hpds_node"
|
||||||
|
"hpds-iot-web/config"
|
||||||
"hpds-iot-web/internal/proto"
|
"hpds-iot-web/internal/proto"
|
||||||
"hpds-iot-web/model"
|
"hpds-iot-web/model"
|
||||||
|
"hpds-iot-web/mq"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
)
|
)
|
||||||
|
@ -16,10 +21,13 @@ type ModelService interface {
|
||||||
AddModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
AddModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
EditModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
EditModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
DelModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
DelModel(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
ModelIssue(ctx context.Context, req proto.ModelIssueRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
GetModelWorkflow(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewModelService(engine *xorm.Engine, logger *logging.Logger) ModelService {
|
func NewModelService(cfg *config.WebConfig, engine *xorm.Engine, logger *logging.Logger) ModelService {
|
||||||
return &repo{
|
return &repo{
|
||||||
|
AppConfig: cfg,
|
||||||
engine: engine,
|
engine: engine,
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}
|
}
|
||||||
|
@ -73,11 +81,19 @@ func (rp *repo) AddModel(ctx context.Context, req proto.ModelItemRequest) (rsp *
|
||||||
default:
|
default:
|
||||||
item := &model.Model{
|
item := &model.Model{
|
||||||
ModelName: req.ModelName,
|
ModelName: req.ModelName,
|
||||||
|
BizType: req.BizType,
|
||||||
ModelVersion: req.ModelVersion,
|
ModelVersion: req.ModelVersion,
|
||||||
ModelDesc: req.ModelDesc,
|
ModelDesc: req.ModelDesc,
|
||||||
ModelFiles: req.ModelFiles,
|
ModelFiles: req.ModelFiles,
|
||||||
ModelParamsFiles: req.ModelParamsFiles,
|
ModelParamsFiles: req.ModelParamsFiles,
|
||||||
ModelExecScript: req.ModelExecScript,
|
ModelExecScript: req.ModelExecScript,
|
||||||
|
DockerFile: strings.Join(req.DockerFile, "|"),
|
||||||
|
MappedPort: req.MappedPort,
|
||||||
|
ModelCommand: req.ModelCommand,
|
||||||
|
InPath: req.InPath,
|
||||||
|
OutPath: req.OutPath,
|
||||||
|
HttpUrl: req.HttpUrl,
|
||||||
|
IsLightWeight: req.IsLightWeight,
|
||||||
Status: 1,
|
Status: 1,
|
||||||
CreateAt: time.Now().Unix(),
|
CreateAt: time.Now().Unix(),
|
||||||
UpdateAt: time.Now().Unix(),
|
UpdateAt: time.Now().Unix(),
|
||||||
|
@ -142,6 +158,32 @@ func (rp *repo) EditModel(ctx context.Context, req proto.ModelItemRequest) (rsp
|
||||||
if len(req.ModelExecScript) > 0 {
|
if len(req.ModelExecScript) > 0 {
|
||||||
item.ModelExecScript = req.ModelExecScript
|
item.ModelExecScript = req.ModelExecScript
|
||||||
}
|
}
|
||||||
|
if req.BizType > 0 {
|
||||||
|
item.BizType = req.BizType
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(req.DockerFile) > 0 {
|
||||||
|
item.DockerFile = strings.Join(req.DockerFile, "|")
|
||||||
|
}
|
||||||
|
if req.MappedPort > 0 {
|
||||||
|
item.MappedPort = req.MappedPort
|
||||||
|
}
|
||||||
|
if len(req.ModelCommand) > 0 {
|
||||||
|
item.ModelCommand = req.ModelCommand
|
||||||
|
}
|
||||||
|
if len(req.InPath) > 0 {
|
||||||
|
item.InPath = req.InPath
|
||||||
|
}
|
||||||
|
if len(req.OutPath) > 0 {
|
||||||
|
item.OutPath = req.OutPath
|
||||||
|
}
|
||||||
|
if len(req.HttpUrl) > 0 {
|
||||||
|
item.HttpUrl = req.HttpUrl
|
||||||
|
}
|
||||||
|
if len(req.Workflow) > 0 {
|
||||||
|
item.Workflow = req.Workflow
|
||||||
|
}
|
||||||
|
item.IsLightWeight = req.IsLightWeight
|
||||||
item.UpdateAt = time.Now().Unix()
|
item.UpdateAt = time.Now().Unix()
|
||||||
_, err = rp.engine.ID(req.ModelId).AllCols().Update(item)
|
_, err = rp.engine.ID(req.ModelId).AllCols().Update(item)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -206,3 +248,123 @@ ReturnPoint:
|
||||||
}
|
}
|
||||||
return rsp, err
|
return rsp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rp *repo) ModelIssue(ctx context.Context, req proto.ModelIssueRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var h bool
|
||||||
|
m := new(model.Model)
|
||||||
|
h, err = rp.engine.ID(req.ModelId).Get(m)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的模型")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
node := new(model.Node)
|
||||||
|
h, err = rp.engine.ID(req.NodeId).Get(node)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的节点")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
item := new(model.IssueModel)
|
||||||
|
h, err = rp.engine.Where("model_id = ? and node_id= ?", req.ModelId, req.NodeId).Get(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if h {
|
||||||
|
err = fmt.Errorf("已经有该模型")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
item.ModelId = req.ModelId
|
||||||
|
item.NodeId = req.NodeId
|
||||||
|
item.CreateAt = time.Now().Unix()
|
||||||
|
item.UpdateAt = time.Now().Unix()
|
||||||
|
_, err = rp.engine.Insert(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
mqClient := mq.GetMqClient("task-request", 1)
|
||||||
|
payload := make(map[string]interface{})
|
||||||
|
payload["modelId"] = item.ModelId
|
||||||
|
payload["modelVersion"] = m.ModelVersion
|
||||||
|
payload["modelCommand"] = m.ModelCommand
|
||||||
|
payload["nodeId"] = item.NodeId
|
||||||
|
payload["dockerFile"] = m.DockerFile
|
||||||
|
payload["mappedPort"] = m.MappedPort
|
||||||
|
payload["inPath"] = m.InPath
|
||||||
|
payload["outPath"] = m.OutPath
|
||||||
|
payload["httpUrl"] = m.HttpUrl
|
||||||
|
payload["nodeGuid"] = node.NodeGuid
|
||||||
|
mqPayload := &mq.InstructionReq{
|
||||||
|
Command: mq.ModelIssue,
|
||||||
|
Payload: payload,
|
||||||
|
}
|
||||||
|
b, _ := json.Marshal(mqPayload)
|
||||||
|
err = mq.GenerateAndSendData(mqClient.EndPoint.(hpds_node.AccessPoint), b, rp.logger)
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "模型下发成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = item
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) GetModelWorkflow(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var h bool
|
||||||
|
item := new(model.Model)
|
||||||
|
h, err = rp.engine.ID(req.ModelId).Get(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的模型")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "删除模型成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = item.Workflow
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,12 @@ type SystemService interface {
|
||||||
AddBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
AddBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
EditBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
EditBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
DeleteBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
DeleteBrand(ctx context.Context, req proto.BrandItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
|
||||||
|
NodeList(ctx context.Context, req proto.NodeRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
NodeInfo(ctx context.Context, req proto.NodeItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
EditNode(ctx context.Context, req proto.NodeItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
NodeState(ctx context.Context, req proto.NodeInfoRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
NodeLastState(ctx context.Context, req proto.NodeInfoRequest) (rsp *proto.BaseResponse, err error)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSystemService(engine *xorm.Engine, logger *logging.Logger) SystemService {
|
func NewSystemService(engine *xorm.Engine, logger *logging.Logger) SystemService {
|
||||||
|
@ -231,3 +237,244 @@ ReturnPoint:
|
||||||
}
|
}
|
||||||
return rsp, err
|
return rsp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (rp *repo) NodeList(ctx context.Context, req proto.NodeRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
data := make([]model.Node, 0)
|
||||||
|
var count int64
|
||||||
|
count, err = rp.engine.Where("(? = '' or node_name like ?)", req.NodeName, "%"+req.NodeName+"%").
|
||||||
|
And("(? = '' or node_guid like ?)", req.NodeGuid, "%"+req.NodeGuid+"%").
|
||||||
|
And("(? = 0 or node_type = ?)", req.NodeType, req.NodeType).
|
||||||
|
And("node_status = 1").Limit(int(req.Size), int(((req.Page)-1)*req.Size)).
|
||||||
|
FindAndCount(&data)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp = FillPaging(count, req.Page, req.Size, data, rsp)
|
||||||
|
rsp.Err = err
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) NodeInfo(ctx context.Context, req proto.NodeItemRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var h bool
|
||||||
|
item := new(model.Node)
|
||||||
|
h, err = rp.engine.ID(req.NodeId).Get(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的节点")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "获取节点成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = item
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) EditNode(ctx context.Context, req proto.NodeItemRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var h bool
|
||||||
|
item := new(model.Node)
|
||||||
|
h, err = rp.engine.ID(req.NodeId).Get(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的节点")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if len(req.NodeName) > 0 {
|
||||||
|
item.NodeName = req.NodeName
|
||||||
|
}
|
||||||
|
if req.NodeType > 0 {
|
||||||
|
item.NodeType = req.NodeType
|
||||||
|
}
|
||||||
|
if len(req.Platform) > 0 {
|
||||||
|
item.Platform = req.Platform
|
||||||
|
}
|
||||||
|
if len(req.PlatformVersion) > 0 {
|
||||||
|
item.PlatformVersion = req.PlatformVersion
|
||||||
|
}
|
||||||
|
if len(req.CPU) > 0 {
|
||||||
|
item.CPU = req.CPU
|
||||||
|
}
|
||||||
|
if req.MemTotal > 0 {
|
||||||
|
item.MemTotal = req.MemTotal
|
||||||
|
}
|
||||||
|
if req.DiskTotal > 0 {
|
||||||
|
item.DiskTotal = req.DiskTotal
|
||||||
|
}
|
||||||
|
if req.SwapTotal > 0 {
|
||||||
|
item.SwapTotal = req.SwapTotal
|
||||||
|
}
|
||||||
|
if len(req.Arch) > 0 {
|
||||||
|
item.Arch = req.Arch
|
||||||
|
}
|
||||||
|
if len(req.Virtualization) > 0 {
|
||||||
|
item.Virtualization = req.Virtualization
|
||||||
|
}
|
||||||
|
if req.BootTime > 0 {
|
||||||
|
item.BootTime = req.BootTime
|
||||||
|
}
|
||||||
|
if len(req.IP) > 0 {
|
||||||
|
item.IP = req.IP
|
||||||
|
}
|
||||||
|
if len(req.CountryCode) > 0 {
|
||||||
|
item.CountryCode = req.CountryCode
|
||||||
|
}
|
||||||
|
if len(req.Version) > 0 {
|
||||||
|
item.Version = req.Version
|
||||||
|
}
|
||||||
|
item.UpdateAt = time.Now().Unix()
|
||||||
|
_, err = rp.engine.ID(req.NodeId).AllCols().Update(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "修改节点成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = item
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) NodeState(ctx context.Context, req proto.NodeInfoRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
list := make([]model.NodeState, 0)
|
||||||
|
err = rp.engine.Where("node_name = ?", req.NodeGuid).
|
||||||
|
And(" uptime > UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -24 HOUR))").
|
||||||
|
Find(&list)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
state := new(proto.NodeState)
|
||||||
|
state.List = list
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "获取节点状态信息成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = state
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) NodeLastState(ctx context.Context, req proto.NodeInfoRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
list := make([]proto.NodeLastStateItem, 0)
|
||||||
|
//err = rp.engine.Where("node_name = ?", req.NodeGuid).
|
||||||
|
// And("? + uptime > UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL -24 HOUR))", req.Uptime).Desc("uptime").
|
||||||
|
// Find(&list)
|
||||||
|
err = rp.engine.SQL(`select c.node_id,c.node_name,c.node_guid,c.node_type,c.node_type,c.platform,c.platform_version,c.c_p_u,c.mem_total,
|
||||||
|
c.disk_total,c.swap_total,a.c_p_u cpu_used,c.node_status, a.mem_used,a.swap_used, a.disk_used, a.net_in_transfer, a.net_in_speed,
|
||||||
|
a.net_out_speed, a.net_out_transfer, a.load1, a.load5, a.load15, a.tcp_conn_count, a.udp_conn_count, a.process_count,
|
||||||
|
d.task_name exec_task from node_state a , (select node_name, max(uptime) uptime from node_state group by node_name) b, node c
|
||||||
|
left join (select t2.node_id, t2.task_name from task t2, (select node_id, max(start_time) start from task group by node_id) t1 where t2.node_id = t1.node_id and t2.start_time = t1.start and t2.status = 1) d on c.node_id = d.node_id
|
||||||
|
where a.node_name = b.node_name and a.uptime = b.uptime and a.node_name = c.node_guid and c.node_status > 0 and (? = '' or a.node_name = ?) `, req.NodeGuid, req.NodeGuid).Find(&list)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
state := new(proto.NodeLastState)
|
||||||
|
state.List = list
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "获取节点状态信息成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = state
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
package service
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"git.hpds.cc/Component/logging"
|
||||||
|
"git.hpds.cc/pavement/hpds_node"
|
||||||
|
"hpds-iot-web/internal/proto"
|
||||||
|
"hpds-iot-web/model"
|
||||||
|
"hpds-iot-web/mq"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
"xorm.io/xorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TaskService interface {
|
||||||
|
TaskList(ctx context.Context, req proto.TaskRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
AddTask(ctx context.Context, req proto.TaskItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
//EditTask(ctx context.Context, req proto.ModelItemRequest) (rsp *proto.BaseResponse, err error)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTaskService(engine *xorm.Engine, logger *logging.Logger) TaskService {
|
||||||
|
return &repo{
|
||||||
|
engine: engine,
|
||||||
|
logger: logger,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) TaskList(ctx context.Context, req proto.TaskRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
data := make([]proto.TaskDetail, 0)
|
||||||
|
count, err := rp.engine.Table("task").Alias("t").
|
||||||
|
Join("inner", []string{"model", "m"}, "t.model_id = m.model_id").
|
||||||
|
Join("inner", []string{"node", "n"}, "t.node_id = n.node_id").
|
||||||
|
Cols("t.*", "m.model_name", "n.node_name").
|
||||||
|
Where("(? = 0 or m.biz_type = ?)", req.BizType, req.BizType).
|
||||||
|
And("(?='' or task_name like ?)", req.TaskName, "%"+req.TaskName+"%").
|
||||||
|
And("t.start_time >= unix_timestamp(?)", req.StartTime).
|
||||||
|
And("? = 0 or t.start_time <= unix_timestamp(?)", req.FinishTime, req.FinishTime).
|
||||||
|
And("t.status > 0").Limit(int(req.Size), int(((req.Page)-1)*req.Size)).
|
||||||
|
FindAndCount(&data)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "成功"
|
||||||
|
rsp = FillPaging(count, req.Page, req.Size, data, rsp)
|
||||||
|
rsp.Err = err
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (rp *repo) AddTask(ctx context.Context, req proto.TaskItemRequest) (rsp *proto.BaseResponse, err error) {
|
||||||
|
rsp = new(proto.BaseResponse)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
err = fmt.Errorf("超时/取消")
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Message = "超时/取消"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
return rsp, ctx.Err()
|
||||||
|
default:
|
||||||
|
var h bool
|
||||||
|
m := new(model.Model)
|
||||||
|
h, err = rp.engine.ID(req.ModelId).Get(m)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的模型")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
ds := new(model.Dataset)
|
||||||
|
h, err = rp.engine.ID(req.ModelId).Get(ds)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
if !h {
|
||||||
|
err = fmt.Errorf("未能找到对应的数据集")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
item := &model.Task{
|
||||||
|
ModelId: req.ModelId,
|
||||||
|
NodeId: req.NodeId,
|
||||||
|
TaskName: req.TaskName,
|
||||||
|
TaskDesc: req.TaskDesc,
|
||||||
|
DatasetArr: fmt.Sprintf("%d", req.DatasetArr),
|
||||||
|
SubDataset: req.SubDataset,
|
||||||
|
SubDataTag: req.SubDataTag,
|
||||||
|
AppointmentTime: req.AppointmentTime,
|
||||||
|
Status: 1,
|
||||||
|
CreateAt: time.Now().Unix(),
|
||||||
|
UpdateAt: time.Now().Unix(),
|
||||||
|
}
|
||||||
|
if len(req.AppointmentTime) > 0 {
|
||||||
|
var appTime time.Time
|
||||||
|
appTime, err = time.ParseInLocation("2006-01-02 15:04:05", req.AppointmentTime, time.Local)
|
||||||
|
if err != nil {
|
||||||
|
err = fmt.Errorf("时间格式不匹配")
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
item.StartTime = appTime.Unix()
|
||||||
|
} else {
|
||||||
|
item.StartTime = time.Now().Unix()
|
||||||
|
}
|
||||||
|
_, err = rp.engine.Insert(item)
|
||||||
|
if err != nil {
|
||||||
|
goto ReturnPoint
|
||||||
|
}
|
||||||
|
//reg, _ := regexp.Compile("\\[.*?\\]")
|
||||||
|
//if ok := reg.FindAll([]byte(item.ResultStorage), 2); len(ok) > 0 {
|
||||||
|
// item.ResultStorage = reg.ReplaceAllString(item.ResultStorage, fmt.Sprintf("%d_%d", item.TaskId, item.ModelId))
|
||||||
|
// _, err = rp.engine.ID(item.TaskId).Cols("result_storage").Update(item)
|
||||||
|
// if err != nil {
|
||||||
|
// goto ReturnPoint
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
payload := make(map[string]interface{})
|
||||||
|
payload["taskId"] = item.TaskId
|
||||||
|
payload["modelId"] = item.ModelId
|
||||||
|
payload["modelVersion"] = m.ModelVersion
|
||||||
|
payload["modelCommand"] = m.ModelCommand
|
||||||
|
payload["nodeId"] = item.NodeId
|
||||||
|
payload["inPath"] = m.InPath
|
||||||
|
payload["outPath"] = m.OutPath
|
||||||
|
payload["httpUrl"] = m.HttpUrl
|
||||||
|
payload["datasetArr"] = item.DatasetArr
|
||||||
|
payload["datasetPath"] = ds.StoreName
|
||||||
|
payload["datasetName"] = ds.DatasetName
|
||||||
|
payload["subDataset"] = item.SubDataset
|
||||||
|
payload["subDataTag"] = item.SubDataTag
|
||||||
|
payload["workflow"] = m.Workflow
|
||||||
|
|
||||||
|
mqClient := mq.GetMqClient("task-request", 1)
|
||||||
|
mqPayload := &mq.InstructionReq{
|
||||||
|
Command: mq.TaskAdd,
|
||||||
|
Payload: payload,
|
||||||
|
}
|
||||||
|
pData, _ := json.Marshal(mqPayload)
|
||||||
|
err = mq.GenerateAndSendData(mqClient.EndPoint.(hpds_node.AccessPoint), pData, rp.logger)
|
||||||
|
rsp.Code = http.StatusOK
|
||||||
|
rsp.Status = http.StatusText(http.StatusOK)
|
||||||
|
rsp.Message = "新增任务成功"
|
||||||
|
rsp.Err = ctx.Err()
|
||||||
|
rsp.Data = item
|
||||||
|
return rsp, err
|
||||||
|
}
|
||||||
|
ReturnPoint:
|
||||||
|
if err != nil {
|
||||||
|
rsp.Code = http.StatusInternalServerError
|
||||||
|
rsp.Status = http.StatusText(http.StatusInternalServerError)
|
||||||
|
rsp.Err = err
|
||||||
|
rsp.Message = "失败"
|
||||||
|
}
|
||||||
|
return rsp, err
|
||||||
|
}
|
|
@ -4,6 +4,7 @@ type Dataset struct {
|
||||||
DatasetId int64 `xorm:"not null pk autoincr INT(11)" json:"datasetId"`
|
DatasetId int64 `xorm:"not null pk autoincr INT(11)" json:"datasetId"`
|
||||||
DatasetName string `xorm:"varchar(200) not null" json:"datasetName"`
|
DatasetName string `xorm:"varchar(200) not null" json:"datasetName"`
|
||||||
DatasetDesc string `xorm:"varchar(200)" json:"datasetDesc"`
|
DatasetDesc string `xorm:"varchar(200)" json:"datasetDesc"`
|
||||||
|
StoreName string `xorm:"varchar(200)" json:"storeName"`
|
||||||
CategoryId int `xorm:"not null SMALLINT default 1" json:"categoryId"` //业务分类, 1:道路 2:桥梁 3:隧道 4:边坡
|
CategoryId int `xorm:"not null SMALLINT default 1" json:"categoryId"` //业务分类, 1:道路 2:桥梁 3:隧道 4:边坡
|
||||||
ProjectId int64 `xorm:"INT(11) not null default 0 index" json:"projectId"`
|
ProjectId int64 `xorm:"INT(11) not null default 0 index" json:"projectId"`
|
||||||
OwnerId int64 `xorm:"INT(11) not null default 0 index" json:"ownerId"`
|
OwnerId int64 `xorm:"INT(11) not null default 0 index" json:"ownerId"`
|
||||||
|
|
|
@ -10,6 +10,7 @@ type Disease struct {
|
||||||
DetectionMethod string `xorm:"varchar(200) not null " json:"detectionMethod"`
|
DetectionMethod string `xorm:"varchar(200) not null " json:"detectionMethod"`
|
||||||
DiseaseDesc string `xorm:"TEXT" json:"diseaseDesc"`
|
DiseaseDesc string `xorm:"TEXT" json:"diseaseDesc"`
|
||||||
Reference string `xorm:"varchar(200) not null " json:"reference"` //参照标准
|
Reference string `xorm:"varchar(200) not null " json:"reference"` //参照标准
|
||||||
|
StoreName string `xorm:"varchar(200)" json:"storeName"` //存储路径
|
||||||
CreateAt int64 `xorm:"created" json:"createAt"`
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,9 +17,9 @@ var (
|
||||||
Redis *redis.Client
|
Redis *redis.Client
|
||||||
)
|
)
|
||||||
|
|
||||||
func New(driveName, dsn string) {
|
func New(driveName, dsn string, showSql bool) {
|
||||||
DB, _ = NewDbConnection(dsn)
|
DB, _ = NewDbConnection(driveName, dsn)
|
||||||
DB.ShowSQL(true)
|
DB.ShowSQL(showSql)
|
||||||
DB.Dialect().SetQuotePolicy(dialects.QuotePolicyReserved)
|
DB.Dialect().SetQuotePolicy(dialects.QuotePolicyReserved)
|
||||||
err := DB.Sync2(
|
err := DB.Sync2(
|
||||||
&Brand{},
|
&Brand{},
|
||||||
|
@ -42,6 +42,8 @@ func New(driveName, dsn string) {
|
||||||
&Model{},
|
&Model{},
|
||||||
&ModelVersion{},
|
&ModelVersion{},
|
||||||
&Node{},
|
&Node{},
|
||||||
|
&NodeState{},
|
||||||
|
&IssueModel{},
|
||||||
&OriginalData{},
|
&OriginalData{},
|
||||||
&Owner{},
|
&Owner{},
|
||||||
&Project{},
|
&Project{},
|
||||||
|
@ -52,6 +54,8 @@ func New(driveName, dsn string) {
|
||||||
&SystemRole{},
|
&SystemRole{},
|
||||||
&SystemUser{},
|
&SystemUser{},
|
||||||
&SystemUserRole{},
|
&SystemUserRole{},
|
||||||
|
&Task{},
|
||||||
|
&TaskResult{},
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zap.L().Error("同步数据库表结构", zap.Error(err))
|
zap.L().Error("同步数据库表结构", zap.Error(err))
|
||||||
|
@ -59,8 +63,8 @@ func New(driveName, dsn string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDbConnection(dsn string) (db *xorm.Engine, err error) {
|
func NewDbConnection(driveName, dsn string) (db *xorm.Engine, err error) {
|
||||||
db, err = xorm.NewEngine("mysql", dsn)
|
db, err = xorm.NewEngine(driveName, dsn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
zap.L().Error("创建数据库连接", zap.Error(err))
|
zap.L().Error("创建数据库连接", zap.Error(err))
|
||||||
os.Exit(-1)
|
os.Exit(-1)
|
||||||
|
|
|
@ -3,11 +3,20 @@ package model
|
||||||
type Model struct {
|
type Model struct {
|
||||||
ModelId int `xorm:"not null pk autoincr INT(11)" json:"modelId"`
|
ModelId int `xorm:"not null pk autoincr INT(11)" json:"modelId"`
|
||||||
ModelName string `xorm:"varchar(200) not null" json:"modelName"`
|
ModelName string `xorm:"varchar(200) not null" json:"modelName"`
|
||||||
|
BizType int `xorm:"int not null default 1" json:"bizType"`
|
||||||
ModelVersion string `xorm:"varchar(50) not null" json:"modelVersion"`
|
ModelVersion string `xorm:"varchar(50) not null" json:"modelVersion"`
|
||||||
ModelDesc string `xorm:"varchar(200) not null" json:"modelDesc"`
|
ModelDesc string `xorm:"varchar(200) not null" json:"modelDesc"`
|
||||||
ModelFiles string `xorm:"varchar(200) not null" json:"modelFiles"`
|
ModelFiles string `xorm:"varchar(200) not null" json:"modelFiles"`
|
||||||
ModelParamsFiles string `xorm:"varchar(200)" json:"modelParamsFiles"`
|
ModelParamsFiles string `xorm:"varchar(200)" json:"modelParamsFiles"`
|
||||||
ModelExecScript string `xorm:"varchar(200)" json:"modelExecScript"`
|
ModelExecScript string `xorm:"varchar(200)" json:"modelExecScript"`
|
||||||
|
DockerFile string `xorm:"varchar(200)" json:"dockerFile"`
|
||||||
|
MappedPort int `xorm:"int" json:"mappedPort"`
|
||||||
|
ModelCommand string `xorm:"varchar(200)" json:"modelCommand"`
|
||||||
|
InPath string `xorm:"varchar(200)" json:"inPath"`
|
||||||
|
OutPath string `xorm:"varchar(200)" json:"outPath"`
|
||||||
|
HttpUrl string `xorm:"varchar(200)" json:"httpUrl"`
|
||||||
|
IsLightWeight bool `xorm:"TINYINT(1) default 0" json:"isLightWeight"`
|
||||||
|
Workflow string `xorm:"TEXT" json:"workflow"`
|
||||||
Status int `xorm:"not null SMALLINT default 0" json:"status"`
|
Status int `xorm:"not null SMALLINT default 0" json:"status"`
|
||||||
CreateAt int64 `xorm:"created" json:"createAt"`
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
type IssueModel struct {
|
||||||
|
Id int64 `xorm:"not null pk autoincr INT(11)" json:"id"`
|
||||||
|
ModelId int64 `xorm:"INT(11) index" json:"modelId"`
|
||||||
|
NodeId int64 `xorm:"INT(11) index" json:"nodeId"`
|
||||||
|
Status int `xorm:"not null SMALLINT default 0" json:"status"`
|
||||||
|
IssueResult string `xorm:"TEXT" json:"issueResult"`
|
||||||
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
|
}
|
|
@ -1,10 +1,26 @@
|
||||||
package model
|
package model
|
||||||
|
|
||||||
|
// Node 节点信息
|
||||||
type Node struct {
|
type Node struct {
|
||||||
NodeId int `xorm:"not null pk autoincr INT(11)" json:"nodeId"`
|
NodeId int64 `xorm:"not null pk autoincr INT(11)" json:"nodeId"`
|
||||||
NodeName string `xorm:"varchar(50) not null" json:"nodeName"`
|
NodeGuid string `xorm:"varchar(100) index" json:"nodeGuid"`
|
||||||
|
NodeName string `xorm:"varchar(100)" json:"nodeName"`
|
||||||
NodeType int `xorm:"not null SMALLINT default 0" json:"nodeType"`
|
NodeType int `xorm:"not null SMALLINT default 0" json:"nodeType"`
|
||||||
NodeStatus int `xorm:"not null SMALLINT default 0" json:"nodeStatus"`
|
NodeStatus int `xorm:"not null SMALLINT default 0" json:"nodeStatus"`
|
||||||
|
Platform string `xorm:"varchar(100)" json:"platform,omitempty"`
|
||||||
|
PlatformVersion string `xorm:"varchar(100)" json:"platformVersion,omitempty"`
|
||||||
|
CPU string `xorm:"varchar(1000)" json:"cpu,omitempty"`
|
||||||
|
MemTotal uint64 `xorm:"BIGINT" json:"memTotal,omitempty"`
|
||||||
|
DiskTotal uint64 `xorm:"BIGINT" json:"diskTotal,omitempty"`
|
||||||
|
SwapTotal uint64 `xorm:"BIGINT" json:"swapTotal,omitempty"`
|
||||||
|
Arch string `xorm:"varchar(1000)" json:"arch,omitempty"`
|
||||||
|
Virtualization string `xorm:"varchar(1000)" json:"virtualization,omitempty"`
|
||||||
|
BootTime uint64 `xorm:"BIGINT" json:"bootTime,omitempty"`
|
||||||
|
IP string `xorm:"varchar(100)" json:"ip"`
|
||||||
|
IsGpu bool `xorm:"TINYINT(1) default 0" json:"isGpu"`
|
||||||
|
IsTaskExecute bool `xorm:"TINYINT(1) default 0" json:"isTaskExecute"`
|
||||||
|
CountryCode string `xorm:"varchar(100)" json:"countryCode,omitempty"`
|
||||||
|
Version string `xorm:"varchar(100)" json:"version,omitempty"`
|
||||||
CreateAt int64 `xorm:"created" json:"createAt"`
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
// NodeState 节点状态信息
|
||||||
|
type NodeState struct {
|
||||||
|
Uptime uint64 `xorm:"BIGINT pk" json:"uptime,omitempty"`
|
||||||
|
NodeName string `xorm:"varchar(100) pk" json:"nodeName"`
|
||||||
|
CPU float64 `xorm:"DECIMAL(18,4)" json:"cpu,omitempty"`
|
||||||
|
MemUsed uint64 `xorm:"BIGINT" json:"memUsed,omitempty"`
|
||||||
|
SwapUsed uint64 `xorm:"BIGINT" json:"swapUsed,omitempty"`
|
||||||
|
DiskUsed uint64 `xorm:"BIGINT" json:"diskUsed,omitempty"`
|
||||||
|
NetInTransfer uint64 `xorm:"BIGINT" json:"netInTransfer,omitempty"`
|
||||||
|
NetOutTransfer uint64 `xorm:"BIGINT" json:"netOutTransfer,omitempty"`
|
||||||
|
NetInSpeed uint64 `xorm:"BIGINT" json:"netInSpeed,omitempty"`
|
||||||
|
NetOutSpeed uint64 `xorm:"BIGINT" json:"netOutSpeed,omitempty"`
|
||||||
|
Load1 float64 `xorm:"DECIMAL(18,4)" json:"load1,omitempty"`
|
||||||
|
Load5 float64 `xorm:"DECIMAL(18,4)" json:"load5,omitempty"`
|
||||||
|
Load15 float64 `xorm:"DECIMAL(18,4)" json:"load15,omitempty"`
|
||||||
|
TcpConnCount uint64 `xorm:"BIGINT" json:"tcpConnCount,omitempty"`
|
||||||
|
UdpConnCount uint64 `xorm:"BIGINT" json:"udpConnCount,omitempty"`
|
||||||
|
ProcessCount uint64 `xorm:"BIGINT" json:"processCount,omitempty"`
|
||||||
|
}
|
|
@ -14,6 +14,7 @@ type SystemUser struct {
|
||||||
Pass string `xorm:"VARCHAR(128) not null" json:"pass"` //密码
|
Pass string `xorm:"VARCHAR(128) not null" json:"pass"` //密码
|
||||||
Salt string `xorm:"VARCHAR(32) not null" json:"salt"` //盐
|
Salt string `xorm:"VARCHAR(32) not null" json:"salt"` //盐
|
||||||
RealName string `xorm:"VARCHAR(50)" json:"realName"` //真实姓名
|
RealName string `xorm:"VARCHAR(50)" json:"realName"` //真实姓名
|
||||||
|
Status int `xorm:"not null SMALLINT default 1" json:"status"` //是否禁用
|
||||||
CreateAt int64 `xorm:"created" json:"createAt"` //创建时间
|
CreateAt int64 `xorm:"created" json:"createAt"` //创建时间
|
||||||
UpdateAt int64 `xorm:"updated" json:"updateAt"` //更新时间
|
UpdateAt int64 `xorm:"updated" json:"updateAt"` //更新时间
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
type Task struct {
|
||||||
|
TaskId int64 `xorm:"not null pk autoincr INT(11)" json:"taskId"`
|
||||||
|
ModelId int64 `xorm:"INT(11) index" json:"modelId"`
|
||||||
|
NodeId int64 `xorm:"INT(11) index" json:"nodeId"`
|
||||||
|
TaskName string `xorm:"VARCHAR(200)" json:"taskName"`
|
||||||
|
TaskDesc string `xorm:"VARCHAR(500)" json:"taskDesc"`
|
||||||
|
DatasetArr string `xorm:"TEXT" json:"datasetArr"`
|
||||||
|
SubDataset string `xorm:"varchar(100)" json:"subDataset"`
|
||||||
|
SubDataTag int `xorm:"tinyint" json:"subDataTag"`
|
||||||
|
AppointmentTime string `xorm:"VARCHAR(30)" json:"appointmentTime"`
|
||||||
|
StartTime int64 `xorm:"BIGINT" json:"startTime"`
|
||||||
|
FinishTime int64 `xorm:"BIGINT" json:"finishTime"`
|
||||||
|
Status int `xorm:"not null SMALLINT default 0" json:"status"` // 1:等待执行; 2:执行中; 3:执行完成; 4:任务分配失败; 5:任务执行失败
|
||||||
|
CreateAt int64 `xorm:"created" json:"createAt"`
|
||||||
|
UpdateAt int64 `xorm:"updated" json:"updateAt"`
|
||||||
|
}
|
|
@ -0,0 +1,15 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
type TaskResult struct {
|
||||||
|
ResultId int64 `xorm:"not null pk autoincr INT(11)" json:"resultId"`
|
||||||
|
TaskId int64 `xorm:"INT(11) index" json:"taskId"`
|
||||||
|
TaskCode string `xorm:"varchar(200)" json:"taskCode"`
|
||||||
|
ModelId int64 `xorm:"INT(11)" json:"modelId"`
|
||||||
|
NodeId int64 `xorm:"INT(11)" json:"nodeId"`
|
||||||
|
StartTime int64 `xorm:"BIGINT" json:"startTime"`
|
||||||
|
FinishTime int64 `xorm:"BIGINT" json:"finishTime"`
|
||||||
|
SubDataset string `xorm:"varchar(200)" json:"subDataset"`
|
||||||
|
DatasetId int64 `xorm:"INT(11)" json:"datasetId"`
|
||||||
|
SrcPath string `xorm:"varchar(500)" json:"srcPath"`
|
||||||
|
Result string `xorm:"TEXT" json:"result"`
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package mq
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"git.hpds.cc/Component/logging"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
"hpds-iot-web/config"
|
||||||
|
"os"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.hpds.cc/pavement/hpds_node"
|
||||||
|
)
|
||||||
|
|
||||||
|
var MqList []HpdsMqNode
|
||||||
|
|
||||||
|
type HpdsMqNode struct {
|
||||||
|
MqType uint
|
||||||
|
Topic string
|
||||||
|
Node config.HpdsNode
|
||||||
|
EndPoint interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func must(logger *logging.Logger, err error) {
|
||||||
|
if err != nil {
|
||||||
|
if logger != nil {
|
||||||
|
logger.With(zap.String("web节点", "错误信息")).Error("启动错误", zap.Error(err))
|
||||||
|
} else {
|
||||||
|
_, _ = fmt.Fprint(os.Stderr, err)
|
||||||
|
}
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewMqClient(funcs []config.FuncConfig, node config.HpdsNode, logger *logging.Logger) (mqList []HpdsMqNode, err error) {
|
||||||
|
mqList = make([]HpdsMqNode, 0)
|
||||||
|
for _, v := range funcs {
|
||||||
|
switch v.MqType {
|
||||||
|
case 2:
|
||||||
|
sf := hpds_node.NewStreamFunction(
|
||||||
|
v.Name,
|
||||||
|
hpds_node.WithMqAddr(fmt.Sprintf("%s:%d", node.Host, node.Port)),
|
||||||
|
hpds_node.WithObserveDataTags(v.DataTag),
|
||||||
|
hpds_node.WithCredential(node.Token),
|
||||||
|
)
|
||||||
|
err = sf.Connect()
|
||||||
|
nodeInfo := HpdsMqNode{
|
||||||
|
MqType: 2,
|
||||||
|
Topic: v.Name,
|
||||||
|
Node: node,
|
||||||
|
EndPoint: sf,
|
||||||
|
}
|
||||||
|
must(logger, err)
|
||||||
|
mqList = append(mqList, nodeInfo)
|
||||||
|
default:
|
||||||
|
ap := hpds_node.NewAccessPoint(
|
||||||
|
v.Name,
|
||||||
|
hpds_node.WithMqAddr(fmt.Sprintf("%s:%d", node.Host, node.Port)),
|
||||||
|
hpds_node.WithCredential(node.Token),
|
||||||
|
)
|
||||||
|
err = ap.Connect()
|
||||||
|
nodeInfo := HpdsMqNode{
|
||||||
|
MqType: 1,
|
||||||
|
Topic: v.Name,
|
||||||
|
Node: node,
|
||||||
|
EndPoint: ap,
|
||||||
|
}
|
||||||
|
must(logger, err)
|
||||||
|
ap.SetDataTag(v.DataTag)
|
||||||
|
mqList = append(mqList, nodeInfo)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return mqList, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetMqClient(topic string, mqType uint) *HpdsMqNode {
|
||||||
|
for _, v := range MqList {
|
||||||
|
if v.Topic == topic && v.MqType == mqType {
|
||||||
|
return &v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GenerateAndSendData(stream hpds_node.AccessPoint, data []byte, logger *logging.Logger) error {
|
||||||
|
logger.With(zap.String("web节点", "发送消息")).Info("数据", zap.String("发送的数据", string(data)))
|
||||||
|
_, err := stream.Write(data)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
time.Sleep(1000 * time.Millisecond)
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
package mq
|
||||||
|
|
||||||
|
const (
|
||||||
|
TaskAdd = iota + 1
|
||||||
|
ModelIssue
|
||||||
|
)
|
||||||
|
|
||||||
|
type InstructionReq struct {
|
||||||
|
Command int `json:"command"`
|
||||||
|
Payload interface{} `json:"payload"`
|
||||||
|
}
|
Loading…
Reference in New Issue