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.
138 lines
3.9 KiB
138 lines
3.9 KiB
|
1 year ago
|
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()
|
||
|
|
})
|
||
|
|
}
|