From ca495858d62df2394e321f57701717237ae09b34 Mon Sep 17 00:00:00 2001 From: chenyifan01 Date: Mon, 11 Jul 2022 10:06:56 +0800 Subject: [PATCH] #2225 update --- modules/redis/redis_key/account_redis_key.go | 4 ++-- services/reward/point/point_operate.go | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/modules/redis/redis_key/account_redis_key.go b/modules/redis/redis_key/account_redis_key.go index 896ea4ff4..8d18ab366 100644 --- a/modules/redis/redis_key/account_redis_key.go +++ b/modules/redis/redis_key/account_redis_key.go @@ -4,8 +4,8 @@ import "fmt" const ACCOUNT_REDIS_PREFIX = "account" -func PointAccountOperateLock(accountCode string) string { - return KeyJoin(ACCOUNT_REDIS_PREFIX, accountCode, "operate", "lock") +func PointAccountOperateLock(userId int64) string { + return KeyJoin(ACCOUNT_REDIS_PREFIX, fmt.Sprint(userId), "point", "operate", "lock") } func PointAccountInfo(userId int64) string { diff --git a/services/reward/point/point_operate.go b/services/reward/point/point_operate.go index ccdf1f423..79d2b5e7c 100644 --- a/services/reward/point/point_operate.go +++ b/services/reward/point/point_operate.go @@ -29,13 +29,7 @@ func (operator *PointOperator) IsLimited(ctx *models.RewardOperateContext) error } func (operator *PointOperator) Operate(ctx *models.RewardOperateContext) error { - a, err := account.GetAccount(ctx.TargetUserId) - if err != nil || a == nil { - log.Error("operator get account error error,err=%v", err) - return errors.New("get account error") - } - - lock := redis_lock.NewDistributeLock(redis_key.PointAccountOperateLock(a.AccountCode)) + lock := redis_lock.NewDistributeLock(redis_key.PointAccountOperateLock(ctx.TargetUserId)) isOk, err := lock.LockWithWait(3*time.Second, 3*time.Second) if err != nil { log.Error("Get PointAccountOperateLock error,err=%v", err) @@ -43,7 +37,11 @@ func (operator *PointOperator) Operate(ctx *models.RewardOperateContext) error { } if isOk { defer lock.UnLock() - na, _ := account.GetAccount(ctx.TargetUserId) + na, err := account.GetAccount(ctx.TargetUserId) + if err != nil || na == nil { + log.Error("operator get account error error,err=%v", err) + return errors.New("get account error") + } if ctx.OperateType == models.OperateTypeIncrease { err = na.Increase(ctx.Reward.Amount, ctx.SourceId) } else if ctx.OperateType == models.OperateTypeDecrease {