cron.go 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. package cmd
  2. import (
  3. "gadmin/internal/cron"
  4. "gadmin/internal/cron/jobs"
  5. "time"
  6. "github.com/jinzhu/now"
  7. "github.com/sirupsen/logrus"
  8. "github.com/spf13/cast"
  9. "github.com/spf13/cobra"
  10. )
  11. var stop = make(chan struct{})
  12. type cmdFunc func()
  13. var cronCmd = &cobra.Command{
  14. Use: "cron",
  15. Short: "定时任务",
  16. Long: `定时任务
  17. exec:
  18. 1. 直接执行(./console cron ,不加参数,执行cron任务
  19. 2. 加参数执行
  20. go run cmd.go last // 执行上次的定时任务
  21. go run cmd.go cron redis // 执行redis历史key删除,并记录数据日志
  22. go run cmd.go cron downloadBackup // 执行下载备份数据到obs
  23. go run cmd.go cron order // 同步订单列表
  24. go run cmd.go cron rolesCount // 统计各个角色等级
  25. go run cmd.go cron haveRoles // 统计拥有角色数据
  26. go run cmd.go cron chapter // 同步章节进度
  27. go run cmd.go cron email // 备份email.db
  28. go run cmd.go cron notice // 备份notices.json
  29. go run cmd.go cron changed // 统计玩家消费
  30. go run cmd.go cron still // 返还所有玩家装备材料
  31. go run cmd.go cron roleStill // 转换角色结构体
  32. go run cmd.go cron channel // 同步渠道玩家
  33. go run cmd.go cron oldGuide // 更新老玩家新手引导屏蔽
  34. go run cmd.go cron filterInitDps // 过滤战斗数据中的初始dps值
  35. go run cmd.go cron joinChannel // 导入渠道ID
  36. go run cmd.go cron exchangePray // 新年礼包祈福道具返还金币
  37. go run cmd.go cron logins // 过滤最近连续登录的玩家
  38. go run cmd.go cron convPvpKey // 转换pvp玩家key hash -> string.
  39. go run cmd.go cron repay38 // 38活动补偿
  40. go run cmd.go cron maxTalents // 最大天赋统计
  41. go run cmd.go cron levelOutput // 同步等级产出
  42. go run cmd.go cron gameAlarm // 游戏进程监控报警
  43. go run cmd.go cron suppleOrderAt // 追加安卓订单创建时间
  44. go run cmd.go cron migrateZoneBonus // 迁移地下城活动难度加成
  45. go run cmd.go cron chatLog //同步客服聊天记录
  46. go run cmd.go cron chatLogDiscover //处理异常聊天记录
  47. go run cmd.go cron downloadJson v1.0.0 //下载shop.json数据
  48. > 迁移玩家ID数据
  49. go run cmd.go cron migrate changed_logs // 消费记录
  50. go run cmd.go cron migrate changed_player // 玩家消费统计
  51. go run cmd.go cron migrate changed_statistics // 玩家消费统计
  52. go run cmd.go cron migrate chapter_logs_user_details // 玩家战斗数据
  53. go run cmd.go cron migrate gem_player // 玩家宝石统计
  54. go run cmd.go cron migrate orders // 玩家订单
  55. go run cmd.go cron migrate player_channel // 玩家渠道
  56. go run cmd.go cron migrate redeem_received // 兑换码领取记录
  57. go run cmd.go cron migrate chapter // 玩家章节通关统计
  58. go run cmd.go cron migrate chapter_logs // 玩家章节日志
  59. go run cmd.go cron migrate disconnect_logs // 断线重连
  60. cd /opt/gadmin/ && ./console cron migrate changed_logs // 消费记录
  61. cd /opt/gadmin/ && ./console cron migrate changed_player // 玩家消费统计
  62. cd /opt/gadmin/ && ./console cron migrate changed_statistics // 消费类型统计
  63. cd /opt/gadmin/ && ./console cron migrate chapter_logs_user_details // 玩家战斗数据
  64. cd /opt/gadmin/ && ./console cron migrate gem_player // 玩家宝石统计
  65. cd /opt/gadmin/ && ./console cron migrate orders // 玩家订单
  66. cd /opt/gadmin/ && ./console cron migrate player_channel // 玩家渠道
  67. cd /opt/gadmin/ && ./console cron migrate redeem_received // 兑换码领取记录
  68. cd /opt/gadmin/ && ./console cron migrate login_logs // 登录记录
  69. cd /opt/gadmin/ && ./console cron migrate chapter // 玩家章节通关统计
  70. cd /opt/gadmin/ && ./console cron migrate chapter_logs // 玩家章节日志
  71. cd /opt/gadmin/ && ./console cron migrate advertisement_logs // 玩家章节日志
  72. cd /opt/gadmin/ && ./console cron migrate disconnect_logs // 断线重连
  73. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_1 // 更新章节渠道数据
  74. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_2 // 更新章节渠道数据
  75. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_3 // 更新章节渠道数据 ok
  76. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_4 // 更新章节渠道数据 ok
  77. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_5 // 更新章节渠道数据 ok
  78. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_6 // 更新章节渠道数据 ok
  79. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_7 // 更新章节渠道数据 ok
  80. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_8 // 更新章节渠道数据 ok
  81. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_9 // 更新章节渠道数据 ok
  82. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_10 // 更新章节渠道数据 ok
  83. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_11 // 更新章节渠道数据 ok
  84. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_12 // 更新章节渠道数据 ok
  85. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_13 // 更新章节渠道数据 ok
  86. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_100 // 更新章节渠道数据
  87. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_101 // 更新章节渠道数据
  88. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_102 // 更新章节渠道数据
  89. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_103 // 更新章节渠道数据
  90. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_104 // 更新章节渠道数据
  91. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_105 // 更新章节渠道数据
  92. cd /opt/gadmin/ && ./console cron joinChannel chapter_logs_106 // 更新章节渠道数据
  93. cd /opt/gadmin/ && ./console cron downloadJson v1.0.0 // 更新shop.json数据
  94. cd /opt/gadmin/ && ./console cron haveRoles 7 // 统计拥有角色数据 7天
  95. `,
  96. Run: func(cmd *cobra.Command, args []string) {
  97. logrus.Info("cron called")
  98. if len(args) == 0 {
  99. cron.Run()
  100. <-stop
  101. }
  102. if len(args) == 1 && args[0] != "gadminDevConsole" {
  103. logrus.Info("args:", args[0])
  104. argMapping := map[string]cmdFunc{
  105. "redis": cron.BackupRedisJob,
  106. "downloadBackup": cron.DownloadBackupJob,
  107. "rolesCount": cron.RolesCount,
  108. "haveRoles": cron.HaveRoles,
  109. "order": cron.SyncOrders,
  110. "chapter": cron.SyncChapter,
  111. "email": cron.BackupEmail,
  112. "notice": cron.BackupNotice,
  113. "changed": cron.ChangedStatistics,
  114. "dps": cron.StatisticsDPS,
  115. //"still": cron.EquipmentStill,
  116. "roleStill": cron.RoleStill,
  117. "channel": cron.SyncChannel,
  118. "oldGuide": cron.OldGuide,
  119. "filterInitDps": cron.FilterInitDps,
  120. "joinChannel": cron.JoinChannel,
  121. "exchangePray": cron.ExchangePray,
  122. "logins": cron.Logins,
  123. "convPvpKey": cron.ConvPvpKey,
  124. "repay38": cron.Repay38,
  125. "maxTalents": cron.MaxTalents,
  126. "levelOutput": cron.LevelOutput,
  127. // "gameAlarm": cron.GameAlarm,
  128. "suppleOrderAt": cron.SuppleOrderAt,
  129. "migrateZoneBonus": cron.MigrateZoneBonus,
  130. "chatLog": cron.SyncChatLog,
  131. "chatLogDiscover": cron.SyncChatLogDiscover,
  132. }
  133. if f, ok := argMapping[args[0]]; ok {
  134. f()
  135. return
  136. }
  137. logrus.Info("cron RunLast...")
  138. cron.RunLast()
  139. } else if len(args) >= 2 { // 如果有参数,那么单独执行
  140. switch args[0] {
  141. case "migrate":
  142. cron.Migrate(args[1])
  143. return
  144. case "joinChannel":
  145. cron.JoinChannelByTable(args[1])
  146. return
  147. case "haveRoles":
  148. yesterday := time.Now()
  149. for i := 0; i < cast.ToInt(args[1]); i++ {
  150. jobs.HaveRoles.RunWithDate(now.With(yesterday.AddDate(0, 0, -1-i)))
  151. time.Sleep(3 * time.Second)
  152. }
  153. return
  154. case "downloadJson":
  155. if args[1] == "" {
  156. logrus.Warn("请输入json版本号")
  157. return
  158. }
  159. cron.DownloadJson(args[1])
  160. return
  161. default:
  162. return
  163. }
  164. }
  165. },
  166. }
  167. func init() {
  168. rootCmd.AddCommand(cronCmd)
  169. }