| 
					
				 | 
			
			
				@@ -1,7 +1,9 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 package com.yonge.cooleshow.biz.dal.service.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.core.metadata.IPage; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.baomidou.mybatisplus.core.toolkit.Wrappers; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.google.common.collect.Maps; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.auth.api.client.SysUserFeignService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.auth.api.entity.SysUser; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dao.ActivityRewardChangeStockDao; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -11,13 +13,16 @@ import com.yonge.cooleshow.biz.dal.dto.ActivityRewardDto; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardChangeStockSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.dto.search.ActivityRewardSearch; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.ActivityPlan; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.ActivityPlanReward; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.ActivityReward; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.ActivityRewardChangeStock; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.entity.CouponInfo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.entity.PianoRoomChangeRecord; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.ClientEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.enums.SourceTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.mapper.CouponInfoMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ActivityPlanRewardService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ActivityPlanService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.ActivityRewardService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -26,6 +31,7 @@ import com.yonge.cooleshow.biz.dal.service.PianoRoomChangeRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.service.SysMessageService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.ActivityRewardChangeStockVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.biz.dal.vo.ActivityRewardVo; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.yonge.cooleshow.biz.dal.wrapper.StatGroupWrapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.CacheNameEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.RewardTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.yonge.cooleshow.common.enums.UnitEnum; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -72,6 +78,8 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private PianoRoomChangeRecordService pianoRoomChangeRecordService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private CouponInfoMapper couponInfoMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ActivityPlanRewardService activityPlanRewardService; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -94,14 +102,37 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<ActivityRewardVo> rewardInfos = baseMapper.selectPage(page, query); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (CollectionUtils.isEmpty(rewardInfos)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 直接返回请求结果 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            return page.setRecords(rewardInfos); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 优惠券奖品,查询优惠券名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<Long> couponIds = rewardInfos.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .filter(x -> RewardTypeEnum.COUPON == x.getRewardType()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .filter(x -> Optional.ofNullable(x.getCouponId()).orElse(0L) > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .map(ActivityReward::getCouponId).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(ActivityReward::getCouponId) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .filter(x -> Optional.ofNullable(x).orElse(0L) > 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 优惠券名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Long, String> couponNameMap = Maps.newHashMap(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (CollectionUtils.isNotEmpty(couponIds)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            couponNameMap = couponInfoMapper.selectBatchIds(couponIds).stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .collect(Collectors.toMap(CouponInfo::getId, CouponInfo::getName, (o, n) -> n)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // 奖品关联活动统计 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<Long> rewardIds = rewardInfos.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map(ActivityReward::getId).distinct().collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Map<Long, Integer> collect = getBaseMapper().selectRewardActivityStatInfo(rewardIds).stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .collect(Collectors.toMap(StatGroupWrapper::getId, StatGroupWrapper::getTotal, (o, n) -> n)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        for (ActivityRewardVo item : rewardInfos) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            item.activityNum(collect.getOrDefault(item.getId(), 0)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .setCouponName(couponNameMap.getOrDefault(item.getCouponId(), "")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return page.setRecords(rewardInfos); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -131,6 +162,13 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             activityReward.setStock(null); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             activityReward.setUpdateBy(user.getId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 校验奖品与活动是否存在关联 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            int count = activityPlanRewardService.count(Wrappers.<ActivityPlanReward>lambdaQuery() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .eq(ActivityPlanReward::getRewardId, activityReward.getId())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (count > 0) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                throw new BizException("请先解除与活动奖品关联关系"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             baseMapper.updateById(activityReward); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return true; 
			 |