From 9ceb30d0d73bf9eab0ec271665a093c60d1eb905 Mon Sep 17 00:00:00 2001 From: chendian <-> Date: Thu, 30 May 2024 20:13:18 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=9E=E8=83=9C=E7=BA=AA=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/main/redis/redis.go | 16 ++++++++++++---- service/main/redis/redis_keys.go | 4 ++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/service/main/redis/redis.go b/service/main/redis/redis.go index 3088bc2..a266371 100644 --- a/service/main/redis/redis.go +++ b/service/main/redis/redis.go @@ -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 diff --git a/service/main/redis/redis_keys.go b/service/main/redis/redis_keys.go index 8017b68..31cc440 100644 --- a/service/main/redis/redis_keys.go +++ b/service/main/redis/redis_keys.go @@ -13,6 +13,10 @@ func UserDataKey(appId string, openId string) string { return fmt.Sprintf("UserData_%s_%s", appId, openId) } +func WinningStreakKey(appId string) string { + return fmt.Sprintf("WinningStreak_%s", appId) +} + func ThisWeekScoreKey(appId string) string { weekStart := getWeekStart(time.Now()) return fmt.Sprintf("Score_%s_%d", appId, weekStart)