|
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
|
|
|
import com.yonge.cooleshow.auth.api.entity.SysUser;
|
|
|
import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao;
|
|
|
+import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto;
|
|
|
import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch;
|
|
|
import com.yonge.cooleshow.biz.dal.entity.ActivityPlan;
|
|
@@ -164,14 +165,15 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
- List<ActivityReward> activityRewardList = getActivityReward(activityId);
|
|
|
+ List<ActivityPlanRewardDto> activityPlanRewardDtos = activityPlanRewardService.queryActivityPlanReward(
|
|
|
+ activityId);
|
|
|
StringBuilder activityRewardName = new StringBuilder();
|
|
|
|
|
|
|
|
|
// 级联锁同时处理奖品库存
|
|
|
List<RLock> lockList = new ArrayList<>();
|
|
|
- for (ActivityReward activityReward : activityRewardList) {
|
|
|
- lockList.add(redissonClient.getLock(CacheNameEnum.LOCK_EXECUTE_ORDER.getRedisKey(activityReward.getId())));
|
|
|
+ for (ActivityPlanRewardDto activityReward : activityPlanRewardDtos) {
|
|
|
+ lockList.add(redissonClient.getLock(CacheNameEnum.LOCK_ACTIVITY_REWARD_STOCK.getRedisKey(activityReward.getId())));
|
|
|
}
|
|
|
|
|
|
RedissonMultiLock lock = new RedissonMultiLock(lockList.toArray(new RLock[lockList.size()]));
|
|
@@ -179,25 +181,26 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
List<Long> activityRewardIdList = new ArrayList<>();
|
|
|
try {
|
|
|
lock.lock();
|
|
|
- for (ActivityReward activityReward : activityRewardList) {
|
|
|
+ for (ActivityPlanRewardDto activityReward : activityPlanRewardDtos) {
|
|
|
int update = activityPlanRewardService.reduceStock(activityId, activityReward.getId());
|
|
|
if (update == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
- if (activityReward.getRewardType().equals(RewardTypeEnum.PIAMO_ROOM)) {
|
|
|
+ if (activityReward.getActivityReward().getRewardType().equals(RewardTypeEnum.PIAMO_ROOM)) {
|
|
|
PianoRoomChangeRecord pianoRoomChangeRecord = new PianoRoomChangeRecord();
|
|
|
pianoRoomChangeRecord.setUserId(userId);
|
|
|
+ pianoRoomChangeRecord.setInOrOut(InOrOutEnum.IN);
|
|
|
pianoRoomChangeRecord.setSourceType(SourceTypeEnum.ACTIVITY);
|
|
|
- pianoRoomChangeRecord.setTimes(activityReward.getNum());
|
|
|
+ pianoRoomChangeRecord.setTimes(activityReward.getActivityReward().getNum());
|
|
|
pianoRoomChangeRecord.setBizId(activityId.toString());
|
|
|
pianoRoomChangeRecord.setCreateTime(new Date());
|
|
|
pianoRoomChangeRecord.setReason(activityPlan.getActivityName());
|
|
|
pianoRoomChangeRecordService.add(pianoRoomChangeRecord);
|
|
|
- } else if (activityReward.getRewardType().equals(RewardTypeEnum.VIP)) {
|
|
|
- memberPriceSettingsService.activityReward(userId, activityPlan.getActivityClient(), activityReward, activityId);
|
|
|
+ } else if (activityReward.getActivityReward().getRewardType().equals(RewardTypeEnum.VIP)) {
|
|
|
+ memberPriceSettingsService.activityReward(userId, activityPlan.getActivityClient(), activityReward.getActivityReward(), activityId);
|
|
|
}
|
|
|
|
|
|
- activityRewardName.append(activityReward.getRewardName());
|
|
|
+ activityRewardName.append(activityReward.getActivityReward().getRewardName());
|
|
|
activityRewardIdList.add(activityReward.getId());
|
|
|
}
|
|
|
// 发送活动获奖推送
|
|
@@ -205,8 +208,7 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
sendActivityMessage(userId, activityPlan.getActivityName(), activityRewardName.toString(), activityPlan.getActivityClient());
|
|
|
}
|
|
|
} finally {
|
|
|
- if (lock.getHoldCount() > 0)
|
|
|
- lock.unlock();
|
|
|
+ lock.unlock();
|
|
|
}
|
|
|
|
|
|
return activityRewardIdList;
|
|
@@ -234,7 +236,7 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
Map<Long, String> receivers = new HashMap<>();
|
|
|
receivers.put(userId, user.getPhone());
|
|
|
|
|
|
- sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.PRACTICE_ADJUST, receivers, null,
|
|
|
+ sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.ACTIVITY_WIN, receivers, null,
|
|
|
0, null, clientType.getCode(), user.getUsername(), "陪练课", activityName, activityRewardName);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|