|
@@ -156,16 +156,12 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
}
|
|
|
|
|
|
List<ActivityReward> activityRewardList = getActivityReward(activityId);
|
|
|
- String activityRewardName = activityRewardList.stream()
|
|
|
- .map(ActivityReward::getRewardName)
|
|
|
- .collect(Collectors.joining(","));
|
|
|
- // 发送活动获奖推送
|
|
|
- sendActivityMessage(userId,activityPlan.getActivityName(),activityRewardName,activityPlan.getActivityClient());
|
|
|
+ StringBuilder activityRewardName = new StringBuilder();
|
|
|
+
|
|
|
|
|
|
// 级联锁同时处理奖品库存
|
|
|
List<RLock> lockList = new ArrayList<>();
|
|
|
for (ActivityReward activityReward : activityRewardList) {
|
|
|
-
|
|
|
lockList.add(redissonClient.getLock(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(activityReward.getId())));
|
|
|
}
|
|
|
|
|
@@ -174,6 +170,10 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
try {
|
|
|
lock.lock();
|
|
|
for (ActivityReward activityReward : activityRewardList) {
|
|
|
+ int update = activityPlanRewardService.reduceStock(activityId, activityReward.getId());
|
|
|
+ if (update == 0) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
if (activityReward.getRewardType().equals(RewardTypeEnum.PIAMO_ROOM)) {
|
|
|
PianoRoomChangeRecord pianoRoomChangeRecord = new PianoRoomChangeRecord();
|
|
|
pianoRoomChangeRecord.setUserId(userId);
|
|
@@ -186,8 +186,11 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
} else if (activityReward.getRewardType().equals(RewardTypeEnum.VIP)) {
|
|
|
memberPriceSettingsService.activityReward(userId,activityPlan.getActivityClient(),activityReward,activityId);
|
|
|
}
|
|
|
- activityPlanRewardService.reduceStock(activityId,activityReward.getId());
|
|
|
+
|
|
|
+ activityRewardName.append(activityReward.getRewardName());
|
|
|
}
|
|
|
+ // 发送活动获奖推送
|
|
|
+ sendActivityMessage(userId, activityPlan.getActivityName(), activityRewardName.toString(), activityPlan.getActivityClient());
|
|
|
} finally {
|
|
|
if (lock.getHoldCount() >0)
|
|
|
lock.unlock();
|