cmd.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package cmd
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/gogf/gf/v2/frame/g"
  6. "github.com/gogf/gf/v2/net/ghttp"
  7. "github.com/gogf/gf/v2/net/goai"
  8. "github.com/gogf/gf/v2/os/gcmd"
  9. "github.com/gogf/gf/v2/os/gcron"
  10. "github.com/gogf/gf/v2/os/glog"
  11. "nodeMonitor/internal/consts"
  12. "nodeMonitor/internal/router"
  13. "nodeMonitor/internal/service"
  14. "nodeMonitor/internal/task"
  15. "nodeMonitor/internal/websocket"
  16. "time"
  17. )
  18. var (
  19. Main = gcmd.Command{
  20. Name: "main",
  21. Usage: "main",
  22. Brief: "start http server",
  23. Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
  24. //启动服务
  25. websocket.StartWebSocket(ctx)
  26. s := g.Server()
  27. s.Group("/", func(group *ghttp.RouterGroup) {
  28. router.BindController(group)
  29. })
  30. // Custom enhance API document.
  31. enhanceOpenAPIDoc(s)
  32. s.Run()
  33. return nil
  34. },
  35. }
  36. )
  37. func enhanceOpenAPIDoc(s *ghttp.Server) {
  38. openapi := s.GetOpenApi()
  39. openapi.Config.CommonResponse = ghttp.DefaultHandlerResponse{}
  40. openapi.Config.CommonResponseDataField = `Data`
  41. // API description.
  42. openapi.Info = goai.Info{
  43. Title: consts.OpenAPITitle,
  44. Description: consts.OpenAPIDescription,
  45. Contact: &goai.Contact{
  46. Name: "GoFrame",
  47. URL: "https://goframe.org",
  48. },
  49. }
  50. }
  51. func startPingStatus(ctx context.Context) error {
  52. taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
  53. if err != nil {
  54. glog.Error(ctx, err.Error())
  55. return err
  56. }
  57. taskName, err := g.Cfg().Get(ctx, "node.taskName")
  58. if err != nil {
  59. glog.Error(ctx, err.Error())
  60. return err
  61. }
  62. s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
  63. t, err := task.GetCronNextTime(s, time.Now())
  64. if err != nil {
  65. glog.Error(ctx, err.Error())
  66. return err
  67. }
  68. glog.Info(ctx, "NextTime:", t, err)
  69. logMsg := "NextTime:" + t.String()
  70. service.TaskLog().Create(ctx, "gcron", logMsg)
  71. _, err = gcron.AddSingleton(ctx, s, func(ctx context.Context) {
  72. taskStatusTime, err := g.Cfg().Get(ctx, "node.taskStatusTime")
  73. if err != nil {
  74. glog.Error(ctx, err.Error())
  75. return
  76. }
  77. s := fmt.Sprintf("0 */%d * * * *", taskStatusTime.Int())
  78. t, err := task.GetCronNextTime(s, time.Now())
  79. if err != nil {
  80. glog.Error(ctx, err.Error())
  81. return
  82. }
  83. glog.Info(ctx, "NextTime:", t, err)
  84. logMsg := "PingStatus NextTime:" + t.String()
  85. service.TaskLog().Create(ctx, "gcron", logMsg)
  86. task.PingStatus(ctx, t)
  87. }, taskName.String())
  88. return nil
  89. }