智盟项目
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

95 Zeilen
2.4 KiB

  1. package task
  2. import (
  3. "applet/app/db"
  4. taskMd "applet/app/task/md"
  5. "applet/app/utils/logx"
  6. "github.com/robfig/cron/v3"
  7. "time"
  8. )
  9. var (
  10. timer *cron.Cron
  11. jobs = map[string]func(){}
  12. baseEntryId cron.EntryID
  13. entryIds []cron.EntryID
  14. ch = make(chan int, 30)
  15. workerNum = 15 // 智盟跟单并发数量
  16. )
  17. func Init() {
  18. // 初始化任务列表
  19. initTasks()
  20. var err error
  21. timer = cron.New()
  22. // reload为初始化数据库方法
  23. if baseEntryId, err = timer.AddFunc("@every 15m", reload); err != nil {
  24. _ = logx.Fatal(err)
  25. }
  26. }
  27. func Run() {
  28. reload()
  29. timer.Start()
  30. _ = logx.Info("auto tasks running...")
  31. }
  32. func reload() {
  33. // 重新初始化数据库
  34. sysCfgDb := db.SysCfgDb{}
  35. sysCfgDb.Set()
  36. cronList, _ := sysCfgDb.SysCfgGetCron()
  37. if cronList != nil {
  38. // 删除原有所有任务
  39. if len(entryIds) > 0 {
  40. for _, v := range entryIds {
  41. if v != baseEntryId {
  42. timer.Remove(v)
  43. }
  44. }
  45. entryIds = nil
  46. }
  47. var (
  48. entryId cron.EntryID
  49. err error
  50. )
  51. for _, vv := range *cronList {
  52. if _, ok := jobs[vv.K]; ok && vv.V != "" {
  53. // fmt.Println(vv.Val)
  54. if entryId, err = timer.AddFunc(vv.V, doTask(vv.K)); err == nil {
  55. entryIds = append(entryIds, entryId)
  56. }
  57. }
  58. }
  59. }
  60. }
  61. func doTask(fnName string) func() {
  62. return func() {
  63. begin := time.Now().Local()
  64. jobs[fnName]()
  65. end := time.Now().Local()
  66. logx.Infof(
  67. " AutoTask <%s> started at <%s>, ended at <%s> duration <%s>",
  68. fnName,
  69. begin.Format("2006-01-02 15:04:05.000"),
  70. end.Format("2006-01-02 15:04:05.000"),
  71. time.Duration(end.UnixNano()-begin.UnixNano()).String(),
  72. )
  73. }
  74. }
  75. // 增加自动任务队列
  76. func initTasks() {
  77. jobs[taskMd.ZhimengCronPlayletVideoOrder] = taskPlayletVideoOrder //
  78. jobs[taskMd.ZhimengCronPlayletVideoOrderYesterDay] = taskPlayletVideoOrderYesterday //
  79. jobs[taskMd.ZhimengCronPlayletVideoOrderMonth] = taskPlayletVideoOrderMonth //
  80. jobs[taskMd.ZhimengCronPlayletAdvOrderMonth] = taskPlayletAdvOrderMonth //
  81. jobs[taskMd.ZhimengCronPlayletAdvOrder] = taskPlayletAdvOrder //
  82. jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDay] = taskPlayletAdvOrderYesterday //
  83. jobs[taskMd.ZhimengCronPlayletAdvOrderYesterDayToMoney] = taskPlayletAdvOrderYesterdayToMoney //
  84. jobs[taskMd.ZhimengCronPlayletGoods] = taskPlayletGoods //
  85. }