|
@@ -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;
|
|
@@ -12,16 +14,26 @@ import com.yonge.cooleshow.biz.dal.dto.UserParam;
|
|
|
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.service.*;
|
|
|
+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;
|
|
|
+import com.yonge.cooleshow.biz.dal.service.MemberPriceSettingsService;
|
|
|
+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;
|
|
@@ -69,6 +81,8 @@ public class ActivityRewardServiceImpl extends ServiceImpl<ActivityRewardDao, Ac
|
|
|
@Autowired
|
|
|
private PianoRoomChangeRecordService pianoRoomChangeRecordService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private CouponInfoMapper couponInfoMapper;
|
|
|
|
|
|
@Autowired
|
|
|
private ActivityPlanRewardService activityPlanRewardService;
|
|
@@ -97,14 +111,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);
|
|
@@ -134,6 +171,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;
|