抽奖荣誉id唯一处理
This commit is contained in:
parent
a8092e339a
commit
8bb6f3941e
@ -288,7 +288,7 @@ public class LotteryDrawExe {
|
||||
List<LotteryPrize> prizes = getPrizesByPool(activityId, stage);
|
||||
|
||||
// 3. 过滤用户已中过的BADGE类型奖品
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, progress.getUserId());
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, progress.getUserId(), activityId);
|
||||
|
||||
// 4. 过滤美元奖励(充值金额为0的用户不能抽到)
|
||||
prizes = filterMoneyPrizes(prizes, userRechargeAmount);
|
||||
@ -308,9 +308,9 @@ public class LotteryDrawExe {
|
||||
|
||||
// 8. 如果抽中了BADGE类型奖品,记录到Redis
|
||||
if (selectedPrize != null && "BADGE".equals(selectedPrize.getPrizeType())) {
|
||||
markBadgePrizeAsWon(progress.getUserId(), selectedPrize.getId());
|
||||
markBadgePrizeAsWon(progress.getUserId(), activityId);
|
||||
}
|
||||
|
||||
|
||||
return selectedPrize;
|
||||
}
|
||||
|
||||
@ -329,7 +329,7 @@ public class LotteryDrawExe {
|
||||
}
|
||||
|
||||
// 过滤用户已中过的BADGE类型奖品
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, userId);
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, userId, activityId);
|
||||
|
||||
// 过滤美元奖励(充值金额为0的用户不能抽到)
|
||||
prizes = filterMoneyPrizes(prizes, userRechargeAmount);
|
||||
@ -342,7 +342,7 @@ public class LotteryDrawExe {
|
||||
|
||||
// 如果抽中了BADGE类型奖品,记录到Redis
|
||||
if (selectedPrize != null && "BADGE".equals(selectedPrize.getPrizeType())) {
|
||||
markBadgePrizeAsWon(userId, selectedPrize.getId());
|
||||
markBadgePrizeAsWon(userId, activityId);
|
||||
}
|
||||
|
||||
return selectedPrize;
|
||||
@ -663,7 +663,7 @@ public class LotteryDrawExe {
|
||||
* @param userId 用户ID
|
||||
* @return 过滤后的奖品列表
|
||||
*/
|
||||
private List<LotteryPrize> filterAlreadyWonBadgePrizes(List<LotteryPrize> prizes, Long userId) {
|
||||
private List<LotteryPrize> filterAlreadyWonBadgePrizes(List<LotteryPrize> prizes, Long userId, Long activityId) {
|
||||
if (prizes == null || prizes.isEmpty()) {
|
||||
return prizes;
|
||||
}
|
||||
@ -676,7 +676,7 @@ public class LotteryDrawExe {
|
||||
}
|
||||
|
||||
// 检查用户是否已经中过这个BADGE
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + prize.getId();
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + activityId;
|
||||
String won = redisService.getString(redisKey);
|
||||
|
||||
if (won != null) {
|
||||
@ -731,11 +731,10 @@ public class LotteryDrawExe {
|
||||
* @param userId 用户ID
|
||||
* @param prizeId 奖品ID
|
||||
*/
|
||||
private void markBadgePrizeAsWon(Long userId, Long prizeId) {
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + prizeId;
|
||||
private void markBadgePrizeAsWon(Long userId, Long activityId) {
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + activityId;
|
||||
// 永久存储,表示该用户已经中过这个BADGE
|
||||
redisService.setString(redisKey, "1");
|
||||
log.info("Mark BADGE prize as won. userId: {}, prizeId: {}", userId, prizeId);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -302,7 +302,7 @@ public class LotteryMultiDrawExe {
|
||||
List<LotteryPrize> prizes = getPrizesByPool(activityId, stage);
|
||||
|
||||
// 过滤用户已中过的BADGE类型奖品
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, progress.getUserId());
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, progress.getUserId(), activityId);
|
||||
|
||||
// 过滤美元奖励(充值金额为0的用户不能抽到)
|
||||
prizes = filterMoneyPrizes(prizes, userRechargeAmount);
|
||||
@ -321,7 +321,7 @@ public class LotteryMultiDrawExe {
|
||||
|
||||
// 如果抽中了BADGE类型奖品,记录到Redis
|
||||
if (selectedPrize != null && "BADGE".equals(selectedPrize.getPrizeType())) {
|
||||
markBadgePrizeAsWon(progress.getUserId(), selectedPrize.getId());
|
||||
markBadgePrizeAsWon(progress.getUserId(), activityId);
|
||||
}
|
||||
|
||||
return selectedPrize;
|
||||
@ -419,7 +419,7 @@ public class LotteryMultiDrawExe {
|
||||
}
|
||||
|
||||
// 过滤用户已中过的BADGE类型奖品
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, userId);
|
||||
prizes = filterAlreadyWonBadgePrizes(prizes, userId, activityId);
|
||||
|
||||
// 过滤美元奖励(充值金额为0的用户不能抽到)
|
||||
prizes = filterMoneyPrizes(prizes, userRechargeAmount);
|
||||
@ -439,7 +439,7 @@ public class LotteryMultiDrawExe {
|
||||
if (randomValue <= cumulative) {
|
||||
// 如果抽中了BADGE类型奖品,记录到Redis
|
||||
if ("BADGE".equals(prize.getPrizeType())) {
|
||||
markBadgePrizeAsWon(userId, prize.getId());
|
||||
markBadgePrizeAsWon(userId, activityId);
|
||||
}
|
||||
return prize;
|
||||
}
|
||||
@ -448,7 +448,7 @@ public class LotteryMultiDrawExe {
|
||||
LotteryPrize lastPrize = prizes.get(prizes.size() - 1);
|
||||
// 如果抽中了BADGE类型奖品,记录到Redis
|
||||
if (lastPrize != null && "BADGE".equals(lastPrize.getPrizeType())) {
|
||||
markBadgePrizeAsWon(userId, lastPrize.getId());
|
||||
markBadgePrizeAsWon(userId, activityId);
|
||||
}
|
||||
return lastPrize;
|
||||
}
|
||||
@ -650,7 +650,7 @@ public class LotteryMultiDrawExe {
|
||||
* @param userId 用户ID
|
||||
* @return 过滤后的奖品列表
|
||||
*/
|
||||
private List<LotteryPrize> filterAlreadyWonBadgePrizes(List<LotteryPrize> prizes, Long userId) {
|
||||
private List<LotteryPrize> filterAlreadyWonBadgePrizes(List<LotteryPrize> prizes, Long userId, Long activityId) {
|
||||
if (prizes == null || prizes.isEmpty()) {
|
||||
return prizes;
|
||||
}
|
||||
@ -663,7 +663,7 @@ public class LotteryMultiDrawExe {
|
||||
}
|
||||
|
||||
// 检查用户是否已经中过这个BADGE
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + prize.getId();
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + activityId;
|
||||
String won = redisService.getString(redisKey);
|
||||
|
||||
if (won != null) {
|
||||
@ -714,11 +714,10 @@ public class LotteryMultiDrawExe {
|
||||
* @param userId 用户ID
|
||||
* @param prizeId 奖品ID
|
||||
*/
|
||||
private void markBadgePrizeAsWon(Long userId, Long prizeId) {
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + prizeId;
|
||||
private void markBadgePrizeAsWon(Long userId, Long activityId) {
|
||||
String redisKey = "lottery:badge:won:" + userId + ":" + activityId;
|
||||
// 永久存储,表示该用户已经中过这个BADGE
|
||||
redisService.setString(redisKey, "1");
|
||||
log.info("Mark BADGE prize as won in multi-draw. userId: {}, prizeId: {}", userId, prizeId);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user