123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- package cmd
- import (
- "context"
- "fmt"
- "github.com/gogf/gf/v2/frame/g"
- "github.com/gogf/gf/v2/net/ghttp"
- "github.com/gogf/gf/v2/net/goai"
- "github.com/gogf/gf/v2/os/gcmd"
- "github.com/gogf/gf/v2/os/gcron"
- "github.com/gogf/gf/v2/os/glog"
- "nodeMonitor/internal/consts"
- "nodeMonitor/internal/router"
- "nodeMonitor/internal/service"
- "nodeMonitor/internal/task"
- "nodeMonitor/internal/websocket"
- "time"
- )
- var (
- Main = gcmd.Command{
- Name: "main",
- Usage: "main",
- Brief: "start http server",
- Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
-
- websocket.StartWebSocket(ctx)
- s := g.Server()
- s.Group("/", func(group *ghttp.RouterGroup) {
- router.BindController(group)
- })
-
- enhanceOpenAPIDoc(s)
- s.Run()
- return nil
- },
- }
- )
- func enhanceOpenAPIDoc(s *ghttp.Server) {
- openapi := s.GetOpenApi()
- openapi.Config.CommonResponse = ghttp.DefaultHandlerResponse{}
- openapi.Config.CommonResponseDataField = `Data`
-
- openapi.Info = goai.Info{
- Title: consts.OpenAPITitle,
- Description: consts.OpenAPIDescription,
- Contact: &goai.Contact{
- Name: "GoFrame",
- URL: "https://goframe.org",
- },
- }
- }
- func startPingStatus(ctx context.Context) error {
- taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
- if err != nil {
- glog.Error(ctx, err.Error())
- return err
- }
- taskName, err := g.Cfg().Get(ctx, "node.taskName")
- if err != nil {
- glog.Error(ctx, err.Error())
- return err
- }
- s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
- t, err := task.GetCronNextTime(s, time.Now())
- if err != nil {
- glog.Error(ctx, err.Error())
- return err
- }
- glog.Info(ctx, "NextTime:", t, err)
- logMsg := "NextTime:" + t.String()
- service.TaskLog().Create(ctx, "gcron", logMsg)
- _, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
- taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
- if err != nil {
- glog.Error(ctx, err.Error())
- return
- }
- s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
- t, err := task.GetCronNextTime(s, time.Now())
- if err != nil {
- glog.Error(ctx, err.Error())
- return
- }
- glog.Info(ctx, "NextTime:", t, err)
- logMsg := "PingStatus NextTime:" + t.String()
- service.TaskLog().Create(ctx, "gcron", logMsg)
- task.PingStatus(ctx, t)
- }, taskName.String())
- return nil
- }
|