|
|
|
|
@ -19,12 +19,20 @@ func init() {
|
|
|
|
|
client = redis.NewClient(opts)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func UpdateReport(appId string, scoreMap map[string]int32) error {
|
|
|
|
|
func UpdateReport(appId string, report *pb.Report) error {
|
|
|
|
|
ctx := context.Background()
|
|
|
|
|
pip := client.Pipeline()
|
|
|
|
|
for openId, score := range scoreMap {
|
|
|
|
|
key := ThisWeekScoreKey(appId)
|
|
|
|
|
pip.ZIncrBy(ctx, key, float64(score), openId)
|
|
|
|
|
keyScore := ThisWeekScoreKey(appId)
|
|
|
|
|
WinningStreak := WinningStreakKey(appId)
|
|
|
|
|
for _, report := range report.Info {
|
|
|
|
|
if report.Score > 0 {
|
|
|
|
|
pip.ZIncrBy(ctx, keyScore, float64(report.Score), report.OpenId)
|
|
|
|
|
}
|
|
|
|
|
if report.IsWin {
|
|
|
|
|
pip.ZIncrBy(ctx, WinningStreak, 1, report.OpenId)
|
|
|
|
|
} else {
|
|
|
|
|
pip.ZRem(ctx, WinningStreak, report.OpenId)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
_, err := pip.Exec(ctx)
|
|
|
|
|
return err
|
|
|
|
|
|