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