123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- 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)
- }
- }
|