From ccc09fee69e34936fd9012064d8519b1892e76ea Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Wed, 2 Dec 2020 17:59:08 +0800 Subject: [PATCH] 1 --- server/mailman/game2005.go | 163 ++++++++++++++++++++++--------------- 1 file changed, 96 insertions(+), 67 deletions(-) diff --git a/server/mailman/game2005.go b/server/mailman/game2005.go index 20e8ec7..608a16b 100644 --- a/server/mailman/game2005.go +++ b/server/mailman/game2005.go @@ -96,73 +96,9 @@ func (this *Game2005) DailyMailGo() { err) return } - var lastIdx int64 - for true { - rows, err := conn.Query("SELECT idx, accountid, vip_lv, privi_lv, createtime, modifytime, " + - " privi_daily_mail_lasttime, vip_weekly_mail_lasttime " + - "FROM `vip_user` " + - "WHERE idx > ? LIMIT 0, 1000;", - lastIdx) - if err != nil { - f5.SysLog().Warning( - "DailyMailGo queryError %s error:%s", - conn, - err) - return - } - defer rows.Close() - hasData := false - for rows.Next() { - var idx int64 - var accountId string - var vipLv int32 - var priviLv int32 - var createTime int32 - var modifyTime int32 - var priviDailyMailLastTime int64 - var vipWeeklyMailLastTime int64 - nowTime := f5.App.NowUnix() - rows.Scan(&idx, - &accountId, - &vipLv, - &priviLv, - &createTime, - &modifyTime, - &priviDailyMailLastTime, - &vipWeeklyMailLastTime) - if priviDailyMailLastTime <= 0 || - q5.GetDaySeconds(nowTime) > q5.GetDaySeconds(nowTime) { - if priviLv > 0 { - this.SendPriviDailyMail(accountId, priviLv) - if _, err :=conn.Exec("UPDATE `vip_user` SET privi_daily_mail_lasttime = ? WHERE idx = ?;", - nowTime, - idx); err != nil { - return - - } - - } - - } - if vipWeeklyMailLastTime <= 0 || - q5.GetDaySeconds(nowTime) > q5.GetDaySeconds(nowTime) { - if vipLv > 0 { - this.SendVipWeeklyMail(accountId, vipLv) - if _, err :=conn.Exec("UPDATE `vip_user` SET vip_weekly_mail_lasttime = ? WHERE idx = ?;", - nowTime, - idx); err != nil { - return - - } - } - } - if idx > lastIdx { - lastIdx = idx - } - } - if !hasData { - break - } + if !this.DailyMailOneDB(conf, conn) { + f5.SysLog().Warning("DailyMailOneDB error") + return } } } @@ -256,3 +192,96 @@ func (this *Game2005) FetchEventOneDB(conf *MtwGame2005MysqlConf, conn *q5.Mysql this.SetDBIdx(conf.GetInstanceId(), lastIdx) return true } + +func (this *Game2005) DailyMailOneDB(conf *MtwGame2005MysqlConf, conn *q5.Mysql) bool { + procPriviDailyMail := func(accountId string, + priviLv int32, + nowTime int64, + priviDailyMailLastTime int64, + idx int64) bool { + if priviDailyMailLastTime <= 0 || + q5.GetDaySeconds(nowTime) > q5.GetDaySeconds(nowTime) { + if priviLv > 0 { + this.SendPriviDailyMail(accountId, priviLv) + if _, err := conn.Exec("UPDATE `vip_user` SET privi_daily_mail_lasttime = ? WHERE idx = ?;", + nowTime, + idx); err != nil { + return false + + } + + } + + } + return true + } + procVipWeeklyMail := func(accountId string, + vipLv int32, + nowTime int64, + vipWeeklyMailLastTime int64, + idx int64) bool { + if vipWeeklyMailLastTime <= 0 || + q5.GetDaySeconds(nowTime) > q5.GetDaySeconds(nowTime) { + if vipLv > 0 { + this.SendVipWeeklyMail(accountId, vipLv) + if _, err := conn.Exec("UPDATE `vip_user` SET vip_weekly_mail_lasttime = ? WHERE idx = ?;", + nowTime, + idx); err != nil { + return false + + } + } + } + return true + } + + var lastIdx int64 + for true { + rows, err := conn.Query("SELECT idx, accountid, vip_lv, privi_lv, createtime, modifytime, " + + " privi_daily_mail_lasttime, vip_weekly_mail_lasttime " + + "FROM `vip_user` " + + "WHERE idx > ? LIMIT 0, 1000;", + lastIdx) + if err != nil { + f5.SysLog().Warning( + "DailyMailOneDB queryError %s error:%s", + conn, + err) + return false + } + defer rows.Close() + hasData := false + for rows.Next() { + var idx int64 + var accountId string + var vipLv int32 + var priviLv int32 + var createTime int32 + var modifyTime int32 + var priviDailyMailLastTime int64 + var vipWeeklyMailLastTime int64 + nowTime := f5.App.NowUnix() + rows.Scan(&idx, + &accountId, + &vipLv, + &priviLv, + &createTime, + &modifyTime, + &priviDailyMailLastTime, + &vipWeeklyMailLastTime) + if !procPriviDailyMail(accountId, priviLv, nowTime, priviDailyMailLastTime, idx) { + return false + } + if !procVipWeeklyMail(accountId, vipLv, nowTime, vipWeeklyMailLastTime, idx) { + return false + } + if idx > lastIdx { + lastIdx = idx + } + } + if !hasData { + break + } + } + return true +}