123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- package controller
- import (
- "fmt"
- "github.com/gogf/gf/v2/errors/gcode"
- "github.com/gogf/gf/v2/errors/gerror"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/os/gcron"
- "github.com/gogf/gf/v2/os/glog"
- "golang.org/x/net/context"
- v1 "nodeMonitor/api/v1"
- "nodeMonitor/internal/model"
- "nodeMonitor/internal/service"
- "nodeMonitor/internal/task"
- )
- var Node = sNode{}
- 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,
- })
- if err != nil {
- return
- }
- if !exist {
- err = gerror.NewCode(gcode.New(401, "", nil), "数据已经存在")
- return
- }
- err = service.Node().Create(ctx, model.NodeCreateInput{
- Name: req.Name,
- Host: req.Host,
- Port: req.Port,
- Url: req.Url,
- PingType: req.PingType,
- })
- return
- }
- 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,
- })
- return
- }
- func (c *sNode) All(ctx context.Context, req *v1.NodeAllReq) (res *v1.NodeALlRes, err error) {
- res = new(v1.NodeALlRes)
- res.NodeList, err = service.Node().GetNode(ctx)
- return
- }
- func (c *sNode) Start(ctx context.Context, req *v1.NodeCronStartReq) (res *v1.NodeCronStartRes, err error) {
- res = new(v1.NodeCronStartRes)
- StartTime := req.StartTime
- taskName, err := g.Cfg().Get(ctx, "node.taskName")
- if err != nil {
- glog.Debug(ctx, err.Error())
- return
- }
- search := gcron.Search(taskName.String())
- if search != nil {
- gcron.Stop(taskName.String())
- gcron.Start(taskName.String())
- res.RetEntry = gcron.Entries()
- res.RetCronCount = gcron.Size()
- res.Status = true
- glog.Debug(ctx, "task -- ", gcron.Size())
- } else {
- s := fmt.Sprintf("*/%d * * * * *", StartTime)
- _, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
- go task.Ping(ctx)
- }, taskName.String())
- res.RetEntry = gcron.Entries()
- res.RetCronCount = gcron.Size()
- res.Status = true
- }
- return
- }
- func (c *sNode) Stop(ctx context.Context, req *v1.NodeCronStopReq) (res *v1.NodeCronStopRes, err error) {
- res = new(v1.NodeCronStopRes)
- remove := req.Remove
- taskName, err := g.Cfg().Get(ctx, "node.taskName")
- if err != nil {
- glog.Debug(ctx, err.Error())
- return
- }
- gcron.Stop(taskName.String())
- if remove {
- gcron.Remove(taskName.String())
- }
- search := gcron.Search(taskName.String())
- if search == nil {
- res.Status = false
- }
- res.RetCronCount = gcron.Size()
- return
- }
- func (c *sNode) Task(ctx context.Context, req *v1.NodeCronStatusReq) (res *v1.NodeCronStatusRes, err error) {
- res = new(v1.NodeCronStatusRes)
- res.RetEntry = gcron.Entries()
- res.RetCronCount = gcron.Size()
- return
- }
|