package backend import ( "server/call" "server/common" "server/db" "server/modules/backend/handler/statistics" "server/modules/backend/values" "server/natsClient" "server/pb" "server/util" "time" "github.com/liangdas/mqant/log" ) func StartTimer() { ReviewTimer() // RechargeFrequencyTimer() // KeepRechargeTimer() CurrencyRefreshTimer() CleanTimer() } // ReviewTimer 定时查询数据概要 func ReviewTimer() { time.AfterFunc(2*time.Minute, func() { begin := time.Now() log.Debug("start ReviewTimer......") ret := []*values.ReviewData{} su := util.GetZeroTime(time.Now()).Unix() eu := util.GetZeroTime(time.Now().AddDate(0, 0, 1)).Unix() channels := call.GetChannelList() for _, v := range channels { if v.Show != 2 { continue } ret = append(ret, statistics.GetReviewPlatformData(su, eu, &v.ChannelID)) } ret = append(ret, statistics.GetReviewPlatformData(su, eu)) values.AppReviewData = ret // values.CompaireData = statistics.GetCompaireData() log.Debug("finish ReviewTimer since:%v", time.Since(begin)) ReviewTimer() }) } // RechargeFrequencyTimer 定时查询数据概要,缓存今天的数据 func RechargeFrequencyTimer() { time.AfterFunc(2*time.Minute, func() { begin := time.Now() log.Debug("start RechargeFrequencyTimer......") ret := []*values.RechargeFrequency{} su := util.GetZeroTime(time.Now()).Unix() // channels := call.GetChannelList() // for _, v := range channels { // if v.Show != 2 { // continue // } // ret = append(ret, statistics.GetRechargeFrequency(su, &v.ChannelID)) // } ret = append(ret, statistics.GetRechargeFrequency(su, nil)) values.RechargeFrequencyData = ret log.Debug("finish RechargeFrequencyTimer since:%v", time.Since(begin)) RechargeFrequencyTimer() }) } // KeepRechargeTimer 定时查询新增付费留存数据,缓存7天的数据 func KeepRechargeTimer() { time.AfterFunc(2*time.Minute, func() { begin := time.Now() log.Debug("start KeepRechargeTimer......") su := util.GetZeroTime(begin).Unix() var oneDay int64 = 24 * 60 * 60 ret := statistics.GetKeepData(su-7*oneDay, su+oneDay, 4, nil) values.KeepRechargeData = ret log.Debug("finish KeepRechargeTimer since:%v", time.Since(begin)) KeepRechargeTimer() }) } // CleanTimer 定期清理数据库日志数据 func CleanTimer() { now := time.Now() next := util.GetZeroTime(now.AddDate(0, 0, 1).Add(5 * time.Second)).Sub(now) log.Debug("next clean %v", next) time.AfterFunc(next, func() { // 牌局操作日志保留七天 // now := time.Now() // zero := util.GetZeroTime(now).Unix() // t := zero - 7*24*60*60 // q := elastic.NewBoolQuery() // q.Filter(elastic.NewRangeQuery("Time").Lt(t)) // db.ES().DeleteByQuery(common.ESIndexTPActionLog, q) // db.ES().DeleteByQuery(common.ESIndexRummyActionLog, q) // db.ES().DeleteByQuery(common.ESIndexBackEventTrackData, q) CleanTimer() }) } // CurrencyRefreshTimer 每天刷新一次汇率 func CurrencyRefreshTimer() { now := time.Now() next := util.GetZeroTime(now.AddDate(0, 0, 1).Add(10 * time.Second)).Sub(now) log.Debug("next CurrencyRefresh %v", next) update := false for i := common.CurrencyTypeZero + 1; i < common.CurrencyAll; i++ { if i == common.CurrencyUSDT { continue } currency := &common.ConfigCurrencyRateUSD{CurrencyType: i} db.Mysql().Get(currency) if util.IsSameDayTimeStamp(now.Unix(), currency.RefreshTime) { continue } rate := call.GetRateFromAPI(i) if currency.ID > 0 { db.Mysql().Update(&common.ConfigCurrencyRateUSD{CurrencyType: i}, map[string]interface{}{"rate": rate, "refresh_time": now.Unix()}) } else { currency.Rate = rate currency.RefreshTime = now.Unix() db.Mysql().Create(currency) } update = true } if update { call.Publish(natsClient.TopicReloadConfig, &pb.ReloadGameConfig{Type: int32(common.ReloadConfigCurrencyRateUSD)}) } time.AfterFunc(next, func() { CurrencyRefreshTimer() }) }