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 {
List<String> paramSkuIdList = paramList.stream().map(CouponSku::getSkuId).collect(Collectors.toList());
QueryWrapper<Sku> skuQueryWrapper = new QueryWrapper<>();
skuQueryWrapper.in("goods_id", goodsIdList);
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)) {
......
......@@ -4,7 +4,11 @@ import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
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.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.marketing.service.IPromotionCategoryService;
import com.fzm.mall.server.admin.marketing.service.IPromotionRuleService;
......@@ -114,35 +118,54 @@ public class Promotion implements Serializable {
* 保存商品促销规则
*
* @param promotionRuleService
* @param promotion
*/
public void savePromotionRule(IPromotionRuleService promotionRuleService, Promotion promotion) {
PromotionRule promotionRule = promotion.getPromotionRule();
promotionRule.setPromotionRuleId(UUIDUtil.getUUID());
promotionRule.setPromotionId(promotion.getPromotionId());
promotionRule.setStatus(PromotionRule.PROMOTION_RULE_STATUS_EFFECTIVE);
promotionRule.setMerchantId(promotion.getMerchantId());
public void savePromotionRule(IPromotionRuleService promotionRuleService) {
this.promotionRule.setPromotionRuleId(UUIDUtil.getUUID());
this.promotionRule.setPromotionId(this.promotionId);
this.promotionRule.setStatus(PromotionRule.PROMOTION_RULE_STATUS_EFFECTIVE);
this.promotionRule.setMerchantId(this.merchantId);
promotionRuleService.save(promotionRule);
}
/**
* 保存促销的商品规格
*
* @param promotionSkuService
* @param promotion
*/
public void savePromotionSku(IPromotionSkuService promotionSkuService, Promotion promotion) {
String pId = promotion.getPromotionId();
String mId = promotion.getMerchantId();
List<PromotionSku> promotionSkuList = promotion.getPromotionSkuList();
promotionSkuList.forEach(promotionSku -> {
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;
}
/**
* 如果商品销售类型为盲盒,默认勾选盲盒的所有规格(即使前台勾选不完全)
*/
List<String> goodsIdList = paramList.stream().map(PromotionSku::getGoodsId).collect(Collectors.toList());
QueryWrapper<Spu> queryWrapper = new QueryWrapper<>();
queryWrapper.in("goods_id", goodsIdList);
List<Spu> spuList = spuMapper.selectList(queryWrapper);
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.setPromotionId(pId);
promotionSku.setPromotionId(this.promotionId);
promotionSku.setStatus(PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
promotionSku.setMerchantId(mId);
promotionSku.setMerchantId(this.merchantId);
});
promotionSkuService.saveBatch(promotionSkuList);
promotionSkuService.saveBatch(paramList);
}
/**
......@@ -205,21 +228,20 @@ public class Promotion implements Serializable {
setPromotionSkuList(promotionSkuList);
}
public void updatePromotionRule(IPromotionRuleService promotionRuleService, Promotion promotion) {
PromotionRule promotionRule = promotion.getPromotionRule();
public void updatePromotionRule(IPromotionRuleService promotionRuleService) {
UpdateWrapper<PromotionRule> wrapper = new UpdateWrapper<>();
wrapper.eq("promotion_rule_id", promotionRule.getPromotionRuleId())
.eq("promotion_id", promotion.getPromotionId())
.eq("merchant_id", promotion.getMerchantId())
.eq("update_time", promotionRule.getUpdateTime());
wrapper.eq("promotion_rule_id", this.promotionRule.getPromotionRuleId())
.eq("promotion_id", this.promotionId)
.eq("merchant_id", this.merchantId)
.eq("update_time", this.promotionRule.getUpdateTime());
promotionRuleService.update(promotionRule, wrapper);
}
public void updatePromotionSku(IPromotionSkuService promotionSkuService, Promotion promotion) {
String pId = promotion.getPromotionId();
String mId = promotion.getMerchantId();
public void updatePromotionSku(IPromotionSkuService promotionSkuService, SpuMapper spuMapper, SkuMapper skuMapper) {
String pId = this.promotionId;
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());
QueryWrapper<PromotionSku> queryWrapper = new QueryWrapper<>();
......@@ -228,13 +250,7 @@ public class Promotion implements Serializable {
.eq("status", PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
List<PromotionSku> dataList = promotionSkuService.list(queryWrapper);
toAddList.forEach(item -> {
item.setPromotionSkuId(UUIDUtil.getUUID());
item.setPromotionId(pId);
item.setMerchantId(mId);
item.setStatus(PromotionSku.PROMOTION_SKU_STATUS_EFFECTIVE);
});
promotionSkuService.saveBatch(toAddList);
batchSaveCouponSku(toAddList, promotionSkuService, spuMapper, skuMapper);
List<PromotionSku> reaminList = paramList;
reaminList.removeAll(toAddList);
......
......@@ -8,6 +8,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.fzm.mall.server.admin.constant.MallResponseError;
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.marketing.entity.dto.PromotionDTO;
import com.fzm.mall.server.admin.marketing.entity.dto.PromotionSaveDTO;
......@@ -40,14 +42,28 @@ import java.util.stream.Collectors;
*/
@Service
@Transactional
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion> implements IPromotionService {
private final PromotionMapper promotionMapper;
private final IPromotionRuleService promotionRuleService;
private final IPromotionSkuService promotionSkuService;
private final IPromotionCategoryService promotionCategoryService;
private final ICategoryService categoryService;
@Autowired
private PromotionMapper promotionMapper;
@Autowired
private IPromotionRuleService promotionRuleService;
@Autowired
private IPromotionSkuService promotionSkuService;
@Autowired
private IPromotionCategoryService promotionCategoryService;
@Autowired
private ICategoryService categoryService;
@Autowired
private SpuMapper spuMapper;
@Autowired
private SkuMapper skuMapper;
@Override
public void save(PromotionSaveDTO promotionSaveDTO) {
......@@ -58,9 +74,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
promotionMapper.insert(promotion);
promotion.savePromotionRule(promotionRuleService, promotion);
promotion.savePromotionRule(promotionRuleService);
promotion.savePromotionSku(promotionSkuService, promotion);
promotion.savePromotionSku(promotionSkuService, spuMapper, skuMapper);
promotion.saveCategory(promotionCategoryService);
}
......@@ -80,9 +96,9 @@ public class PromotionServiceImpl extends ServiceImpl<PromotionMapper, Promotion
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);
}
......
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