liujunchi 2 年之前
父節點
當前提交
39f0a4fc4d

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/ActivityPlanRewardDao.java

@@ -43,5 +43,5 @@ public interface ActivityPlanRewardDao extends BaseMapper<ActivityPlanReward>{
 	 * @param activityId 活动id
 	 * @param rewardId   奖品id
 	 */
-	void reduceStock(@Param("activityId") Long activityId, @Param("rewardId") Long rewardId);
+	int reduceStock(@Param("activityId") Long activityId, @Param("rewardId") Long rewardId);
 }

+ 3 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/ActivityPlanRewardService.java

@@ -6,7 +6,6 @@ import com.yonge.cooleshow.biz.dal.dto.ActivityPlanRewardDto;
 import com.yonge.cooleshow.biz.dal.vo.ActivityPlanRewardVo;
 import com.yonge.cooleshow.biz.dal.dto.search.ActivityPlanRewardSearch;
 import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -42,9 +41,9 @@ public interface ActivityPlanRewardService extends IService<ActivityPlanReward>
 
 	/**
 	 * 减少库存
-	 *
-	 * @param activityId 活动id
+	 *  @param activityId 活动id
 	 * @param rewardId   奖品id
+	 * @return
 	 */
-    void reduceStock(Long activityId, Long rewardId);
+    int reduceStock(Long activityId, Long rewardId);
 }

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityPlanRewardServiceImpl.java

@@ -35,8 +35,8 @@ public class ActivityPlanRewardServiceImpl extends ServiceImpl<ActivityPlanRewar
     }
 
     @Override
-    public void reduceStock(Long activityId, Long rewardId) {
-        baseMapper.reduceStock(activityId,rewardId);
+    public int reduceStock(Long activityId, Long rewardId) {
+        return baseMapper.reduceStock(activityId,rewardId);
     }
 
 }

+ 10 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ActivityRewardServiceImpl.java

@@ -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();

+ 1 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/ActivityPlanRewardMapper.xml

@@ -61,7 +61,7 @@
 
 	<update id="reduceStock">
 
-        update activity_plan_reward set reward_num_ = reward_num_ - 1 where #{activityId} = activity_id_ and #{rewardId} = reward_id_
+        update activity_plan_reward set reward_num_ = reward_num_ - 1 where #{activityId} = activity_id_ and #{rewardId} = reward_id_ and reward_num_ > 0
 
     </update>
 </mapper>