package cron import ( "gadmin/config" "gadmin/internal/antiCheating" "gadmin/internal/cron/jobs" "os" "time" "github.com/go-redis/redis" "github.com/jinzhu/now" "github.com/robfig/cron/v3" "github.com/sirupsen/logrus" ) var cronTab *cron.Cron func init() { cronTab = cron.New() } func RegisterJob() { cronTab.AddFunc("@every 30s", SyncOrders) // 每30秒同步一次支付订单 // cronTab.AddFunc("@every 70s", GameAlarm) // 每70秒监测一次服务进程 cronTab.AddFunc("@every 300s", SyncChannel) // 每300秒同步一次渠道用户 cronTab.AddFunc("@every 600s", SyncChapter) // 每10分钟同步一次章节进度 cronTab.AddFunc("@every 600s", BackupEmail) // 每10分钟备份一次邮件 //cronTab.AddFunc("@every 600s", BackupNotice) // 每10分钟备份一次广播 cronTab.AddFunc("@every 600s", LevelOutput) // 每10分钟同步一次等级产出 cronTab.AddFunc("5 6 * * *", RolesCount) // 6点 5分 统计角色等级 cronTab.AddFunc("15 6 * * *", HaveRoles) // 6点 15分 统计拥有角色数据 cronTab.AddFunc("25 6 * * *", ChangedStatistics) // 6点 25分 统计玩家消费,至少预留20分钟 //cronTab.AddFunc("5 1 * * *", BackupRedisJob) // 1点 5分 备份redis历史key (正式服运行) //cronTab.AddFunc("* 4 * * *", DownloadBackupJob) // 4点 下载备份数据 (测试服运行) cronTab.AddFunc("@every 2h", SyncChatLog) //同步客服聊天记录 cronTab.AddFunc("@every 1h", AntiCheating) // test // SyncChapter() // SyncChannel() } //////////////////////// 次日任务 func BackupRedisJob() { jobs.BackupRedis.Run() } func DownloadBackupJob() { jobs.DownloadBackup.Run() } func RolesCount() { jobs.RolesCount.Run() } func HaveRoles() { jobs.HaveRoles.Run() } ///////////////////// 周期任务 func SyncOrders() { jobs.SyncOrders.Run() } func SyncChatLog() { jobs.SyncCustomerServiceChatLog.Run() } func SyncChatLogDiscover() { jobs.SyncChatLogDiscover.Run() } func SyncChapter() { jobs.SyncChapter.Run() } func BackupEmail() { jobs.BackupEmail.Run() } func BackupNotice() { jobs.BackupNotice.Run() } func ChangedStatistics() { jobs.Changed.Run() } func StatisticsDPS() { //jobs.StatisticsDPS.Run() } //func EquipmentStill() { // jobs.EquipmentStill.Run() //} func RoleStill() { jobs.RoleStill.Run() } func SyncChannel() { jobs.SyncChannel.Run() } func OldGuide() { jobs.OldGuide.Run() } func FilterInitDps() { jobs.FilterInitDps.Run() } func JoinChannel() { jobs.JoinChannel.Run() } func JoinChannelByTable(table string) { jobs.JoinChannel.SetTable(table) } func ExchangePray() { jobs.ExchangePray.Run() } func Logins() { jobs.Logins.Run() } func ConvPvpKey() { jobs.ConvPvpKey.Run() } func Repay38() { //jobs.Repay38.Run() } func MaxTalents() { jobs.MaxTalents.Run() } func LevelOutput() { jobs.LevelOutput.Run() } // func GameAlarm() { // jobs.GameAlarm.Run() // } func Migrate(table string) { jobs.Migrate.Run(table) } func SuppleOrderAt() { jobs.SuppleOrderAt.Run() } func MigrateZoneBonus() { jobs.MigrateZoneBonus.Run() } func DownloadJson(jsonVersion string) { //jobs.NewSyncGoodsJson().Run(jsonVersion) } func AntiCheating() { yearMonth := time.Now().Format("200601") combat := antiCheating.NewCombat(antiCheating.WithYearMonth(yearMonth)) combat.Run() } func SubMessage() { // 非正式环境运行 if os.Getenv("GIN_MODE") != "release" && os.Getenv("ADMIN_IS_LOCAL") != "1" { return } config.SubMessage("queue.advOrigin", func(msg *redis.Message) { jobs.SyncChannel.Trigger() }) } func Run() { go SubMessage() RegisterJob() cronTab.Start() } func RunLast() { BackupRedisJob() DownloadBackupJob() RolesCount() HaveRoles() } func RunSingle(typ string, days int) { logrus.Warn("RunSingle, typ:", typ, " , days:", days) yesterday := time.Now() for i := 0; i < days; i++ { logrus.Infoln(typ, i) switch typ { case "haveRoles": jobs.HaveRoles.RunWithDate(now.With(yesterday.AddDate(0, 0, -1-i))) default: panic("不被支持的参数") } time.Sleep(3 * time.Second) } }