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