Commit 258cbdab authored by wulixian's avatar wulixian

Merge branch 'dev' into 'test'

修正促销活动和优惠券兼容盲盒 See merge request !56
parents 8f52ffe7 d3870aa0
...@@ -164,7 +164,7 @@ public class Coupon implements Serializable { ...@@ -164,7 +164,7 @@ public class Coupon implements Serializable {
List<String> paramSkuIdList = paramList.stream().map(CouponSku::getSkuId).collect(Collectors.toList()); List<String> paramSkuIdList = paramList.stream().map(CouponSku::getSkuId).collect(Collectors.toList());
QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>(); QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>();
skuQueryWrapper.in("goods_id", goodsIdList); skuQueryWrapper.in("goods_id", blindBoxSpuIdList);
List<Sku> dataSkuList = skuMapper.selectList(skuQueryWrapper); List<Sku> dataSkuList = skuMapper.selectList(skuQueryWrapper);
List<Sku> skuToAddList = dataSkuList.stream().filter(sku -> !paramSkuIdList.contains(sku.getSkuId())).collect(Collectors.toList()); List<Sku> skuToAddList = dataSkuList.stream().filter(sku -> !paramSkuIdList.contains(sku.getSkuId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(skuToAddList)) { if (CollectionUtils.isNotEmpty(skuToAddList)) {
......
...@@ -4,7 +4,11 @@ import com.baomidou.mybatisplus.annotation.*; ...@@ -4,7 +4,11 @@ import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.SystemClock; import com.baomidou.mybatisplus.core.toolkit.SystemClock;
import com.fzm.mall.server.admin.goods_center.mapper.SkuMapper;
import com.fzm.mall.server.admin.goods_center.mapper.SpuMapper;
import com.fzm.mall.server.admin.goods_center.model.Category; import com.fzm.mall.server.admin.goods_center.model.Category;
import com.fzm.mall.server.admin.goods_center.model.Sku;
import com.fzm.mall.server.admin.goods_center.model.Spu;
import com.fzm.mall.server.admin.goods_center.service.ICategoryService; import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
import com.fzm.mall.server.admin.marketing.service.IPromotionCategoryService; import com.fzm.mall.server.admin.marketing.service.IPromotionCategoryService;
import com.fzm.mall.server.admin.marketing.service.IPromotionRuleService; import com.fzm.mall.server.admin.marketing.service.IPromotionRuleService;
...@@ -114,35 +118,54 @@ public class Promotion implements Serializable { ...@@ -114,35 +118,54 @@ public class Promotion implements Serializable {
* 保存商品促销规则 * 保存商品促销规则
* *
* @param promotionRuleService * @param promotionRuleService
* @param promotion
*/ */
public void savePromotionRule(IPromotionRuleService promotionRuleService, Promotion promotion) { public void savePromotionRule(IPromotionRuleService promotionRuleService) {
PromotionRule promotionRule = promotion.getPromotionRule(); this.promotionRule.setPromotionRuleId(UUIDUtil.getUUID());
promotionRule.setPromotionRuleId(UUIDUtil.getUUID()); this.promotionRule.setPromotionId(this.promotionId);
promotionRule.setPromotionId(promotion.getPromotionId()); this.promotionRule.setStatus(PromotionRule.PROMOTION_RULE_STATUS_EFFECTIVE);
promotionRule.setStatus(PromotionRule.PROMOTION_RULE_STATUS_EFFECTIVE); this.promotionRule.setMerchantId(this.merchantId);
promotionRule.setMerchantId(promotion.getMerchantId());
promotionRuleService.save(promotionRule); promotionRuleService.save(promotionRule);
} }
public void savePromotionSku(IPromotionSkuService promotionSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
batchSaveCouponSku(this.promotionSkuList, promotionSkuService, spuMapper, skuMapper);
}
private void batchSaveCouponSku(List<PromotionSku> paramList, IPromotionSkuService promotionSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
if (CollectionUtils.isEmpty(paramList)) {
return;
}
/** /**
* 保存促销的商品规格 * 如果商品销售类型为盲盒,默认勾选盲盒的所有规格(即使前台勾选不完全)
*
* @param promotionSkuService
* @param promotion
*/ */
public void savePromotionSku(IPromotionSkuService promotionSkuService, Promotion promotion) { List<String> goodsIdList = paramList.stream().map(PromotionSku::getGoodsId).collect(Collectors.toList());
String pId = promotion.getPromotionId(); QueryWrapper<Spu> queryWrapper = new QueryWrapper<>();
String mId = promotion.getMerchantId(); queryWrapper.in("goods_id", goodsIdList);
List<PromotionSku> promotionSkuList = promotion.getPromotionSkuList(); List<Spu> spuList = spuMapper.selectList(queryWrapper);
promotionSkuList.forEach(promotionSku -> { List<String> blindBoxSpuIdList = spuList.stream().filter(spu -> spu.getSalesType().equals(Spu.BLIND_BOX_SALES)).map(Spu::getGoodsId).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(blindBoxSpuIdList)) {
List<String> paramSkuIdList = paramList.stream().map(PromotionSku::getSkuId).collect(Collectors.toList());
QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>();
skuQueryWrapper.in("goods_id", blindBoxSpuIdList);
List<Sku> dataSkuList = skuMapper.selectList(skuQueryWrapper);
List<Sku> skuToAddList = dataSkuList.stream().filter(sku -> !paramSkuIdList.contains(sku.getSkuId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(skuToAddList)) {
skuToAddList.forEach(sku -> {
PromotionSku promotionSku = new PromotionSku();
promotionSku.setSkuId(sku.getSkuId());
promotionSku.setGoodsId(sku.getGoodsId());
paramList.add(promotionSku);
});
}
}
paramList.forEach(promotionSku -> {
promotionSku.setPromotionSkuId(UUIDUtil.getUUID()); promotionSku.setPromotionSkuId(UUIDUtil.getUUID());
promotionSku.setPromotionId(pId); promotionSku.setPromotionId(this.promotionId);
promotionSku.setStatus(PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE); promotionSku.setStatus(PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
promotionSku.setMerchantId(mId); promotionSku.setMerchantId(this.merchantId);
}); });
promotionSkuService.saveBatch(paramList);
promotionSkuService.saveBatch(promotionSkuList);
} }
/** /**
...@@ -205,21 +228,20 @@ public class Promotion implements Serializable { ...@@ -205,21 +228,20 @@ public class Promotion implements Serializable {
setPromotionSkuList(promotionSkuList); setPromotionSkuList(promotionSkuList);
} }
public void updatePromotionRule(IPromotionRuleService promotionRuleService, Promotion promotion) { public void updatePromotionRule(IPromotionRuleService promotionRuleService) {
PromotionRule promotionRule = promotion.getPromotionRule();
UpdateWrapper<PromotionRule> wrapper = new UpdateWrapper<>(); UpdateWrapper<PromotionRule> wrapper = new UpdateWrapper<>();
wrapper.eq("promotion_rule_id", promotionRule.getPromotionRuleId()) wrapper.eq("promotion_rule_id", this.promotionRule.getPromotionRuleId())
.eq("promotion_id", promotion.getPromotionId()) .eq("promotion_id", this.promotionId)
.eq("merchant_id", promotion.getMerchantId()) .eq("merchant_id", this.merchantId)
.eq("update_time", promotionRule.getUpdateTime()); .eq("update_time", this.promotionRule.getUpdateTime());
promotionRuleService.update(promotionRule, wrapper); promotionRuleService.update(promotionRule, wrapper);
} }
public void updatePromotionSku(IPromotionSkuService promotionSkuService, Promotion promotion) { public void updatePromotionSku(IPromotionSkuService promotionSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
String pId = promotion.getPromotionId(); String pId = this.promotionId;
String mId = promotion.getMerchantId(); String mId = this.merchantId;
List<PromotionSku> paramList = promotion.getPromotionSkuList(); List<PromotionSku> paramList = this.promotionSkuList;
List<PromotionSku> toAddList = paramList.stream().filter(item -> StringUtils.isBlank(item.getPromotionSkuId())).collect(Collectors.toList()); List<PromotionSku> toAddList = paramList.stream().filter(item -> StringUtils.isBlank(item.getPromotionSkuId())).collect(Collectors.toList());
QueryWrapper<PromotionSku> queryWrapper = new QueryWrapper<>(); QueryWrapper<PromotionSku> queryWrapper = new QueryWrapper<>();
...@@ -228,13 +250,7 @@ public class Promotion implements Serializable { ...@@ -228,13 +250,7 @@ public class Promotion implements Serializable {
.eq("status", PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE); .eq("status", PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
List<PromotionSku> dataList = promotionSkuService.list(queryWrapper); List<PromotionSku> dataList = promotionSkuService.list(queryWrapper);
toAddList.forEach(item -> { batchSaveCouponSku(toAddList, promotionSkuService, spuMapper, skuMapper);
item.setPromotionSkuId(UUIDUtil.getUUID());
item.setPromotionId(pId);
item.setMerchantId(mId);
item.setStatus(PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
});
promotionSkuService.saveBatch(toAddList);
List<PromotionSku> reaminList = paramList; List<PromotionSku> reaminList = paramList;
reaminList.removeAll(toAddList); reaminList.removeAll(toAddList);
......
...@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; ...@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.mall.server.admin.constant.MallResponseError; import com.fzm.mall.server.admin.constant.MallResponseError;
import com.fzm.mall.server.admin.exception.MyException; import com.fzm.mall.server.admin.exception.MyException;
import com.fzm.mall.server.admin.goods_center.mapper.SkuMapper;
import com.fzm.mall.server.admin.goods_center.mapper.SpuMapper;
import com.fzm.mall.server.admin.goods_center.service.ICategoryService; import com.fzm.mall.server.admin.goods_center.service.ICategoryService;
import com.fzm.mall.server.admin.marketing.entity.dto.PromotionDTO; import com.fzm.mall.server.admin.marketing.entity.dto.PromotionDTO;
import com.fzm.mall.server.admin.marketing.entity.dto.PromotionSaveDTO; import com.fzm.mall.server.admin.marketing.entity.dto.PromotionSaveDTO;
...@@ -40,14 +42,28 @@ import java.util.stream.Collectors; ...@@ -40,14 +42,28 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@Transactional @Transactional
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion> implements IPromotionService { public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion> implements IPromotionService {
private final PromotionMapper promotionMapper; @Autowired
private final IPromotionRuleService promotionRuleService; private PromotionMapper promotionMapper;
private final IPromotionSkuService promotionSkuService;
private final IPromotionCategoryService promotionCategoryService; @Autowired
private final ICategoryService categoryService; private IPromotionRuleService promotionRuleService;
@Autowired
private IPromotionSkuService promotionSkuService;
@Autowired
private IPromotionCategoryService promotionCategoryService;
@Autowired
private ICategoryService categoryService;
@Autowired
private SpuMapper spuMapper;
@Autowired
private SkuMapper skuMapper;
@Override @Override
public void save(PromotionSaveDTO promotionSaveDTO) { public void save(PromotionSaveDTO promotionSaveDTO) {
...@@ -58,9 +74,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion ...@@ -58,9 +74,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
promotionMapper.insert(promotion); promotionMapper.insert(promotion);
promotion.savePromotionRule(promotionRuleService, promotion); promotion.savePromotionRule(promotionRuleService);
promotion.savePromotionSku(promotionSkuService, promotion); promotion.savePromotionSku(promotionSkuService, spuMapper, skuMapper);
promotion.saveCategory(promotionCategoryService); promotion.saveCategory(promotionCategoryService);
} }
...@@ -80,9 +96,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion ...@@ -80,9 +96,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
throw new MyException(MallResponseError.UPDATE_FAIL); throw new MyException(MallResponseError.UPDATE_FAIL);
} }
promotion.updatePromotionRule(promotionRuleService, promotion); promotion.updatePromotionRule(promotionRuleService);
promotion.updatePromotionSku(promotionSkuService, promotion); promotion.updatePromotionSku(promotionSkuService, spuMapper, skuMapper);
promotion.updateCatrgory(promotionCategoryService); promotion.updateCatrgory(promotionCategoryService);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment