印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

137 lines
3.9 KiB

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