From 257c861c4d1ea551ad0d25c32feb5949358fb715 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 21 Oct 2022 16:02:41 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E8=A7=84=E5=88=99=E6=95=B4?= =?UTF-8?q?=E5=90=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serve/modules/bms/entity/BmsRuleSku.java | 4 + .../modules/bms/mapper/BmsRuleSkuMapper.java | 9 +++ .../bms/service/BmsRuleMainService.java | 34 +++++++- .../bms/service/BmsRuleSkuService.java | 2 + .../service/impl/BmsRuleSkuServiceImpl.java | 12 +++ .../resources/mapper/bms/BmsRuleSkuMapper.xml | 79 +++++++++++++++++++ 6 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/mapper/bms/BmsRuleSkuMapper.xml diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java index e0a9d647..af1db902 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java +++ b/src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.entity; import java.time.LocalDateTime; import java.io.Serializable; +import java.util.List; import com.baomidou.mybatisplus.annotation.*; import com.fasterxml.jackson.annotation.JsonFormat; @@ -75,5 +76,8 @@ public class BmsRuleSku implements Serializable { @JsonProperty private Boolean delFlag; + @TableField(exist = false) + List selectSkuIds; + } diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java index e7217731..f186f112 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java +++ b/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java @@ -3,6 +3,8 @@ package com.qs.serve.modules.bms.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.qs.serve.modules.bms.entity.BmsRuleSku; +import java.util.List; + /** * 规则sku Mapper * @author YenHex @@ -10,5 +12,12 @@ import com.qs.serve.modules.bms.entity.BmsRuleSku; */ public interface BmsRuleSkuMapper extends BaseMapper { + /** + * 关联规则查询可用的sku + * @param ruleSku + * @return + */ + List listEnableRule(BmsRuleSku ruleSku); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java index 9cb4142d..d4d96f91 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java @@ -1,6 +1,10 @@ package com.qs.serve.modules.bms.service; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qs.serve.common.util.CollectionUtil; +import com.qs.serve.common.util.StringUtils; +import com.qs.serve.modules.bms.entity.BmsRuleRegion; +import com.qs.serve.modules.bms.entity.BmsRuleSku; import com.qs.serve.modules.bms.entity.BmsSkuSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.goods.entity.GoodsSku; @@ -27,6 +31,8 @@ import java.util.stream.Collectors; public class BmsRuleMainService { private BmsSkuSupplierService bmsSkuSupplierService; + private BmsRuleSkuService bmsRuleSkuService; + private BmsRuleRegionService bmsRuleRegionService; public boolean check(BmsSupplier supplier,List goodsSkus){ List skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList()); @@ -49,7 +55,7 @@ public class BmsRuleMainService { skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId)) ).collect(Collectors.toList()); } - //过滤通行spu的sku + //过滤已通行spu的sku final List spuIdsTemp = spuIds; List passSkuIds = goodsSkus.stream() .filter(goodsSku -> spuIdsTemp.stream().anyMatch(spuId->goodsSku.getSpuId().equals(spuId))) @@ -58,7 +64,31 @@ public class BmsRuleMainService { skuIds = skuIds.stream().filter(skuId-> passSkuIds.stream().noneMatch(passSkuId-> passSkuId.equals(skuId)) ).collect(Collectors.toList()); - //todo 检验区域拦截 0默认 1可售 2禁售 + if(CollectionUtil.isEmpty(skuIds)){ + List enableRuleSkus = bmsRuleSkuService.listEnableRuleWithSkuIds(skuIds); + List ruleIds = enableRuleSkus.stream().map(BmsRuleSku::getRuleId).distinct().collect(Collectors.toList()); + if(CollectionUtil.isEmpty(ruleIds)){ + List regionIds = new ArrayList<>(); + if(StringUtils.hasText(supplier.getRegionFirst())){ + regionIds.add(supplier.getRegionFirst()); + } + if(StringUtils.hasText(supplier.getRegionSecond())){ + regionIds.add(supplier.getRegionSecond()); + } + if(StringUtils.hasText(supplier.getRegionThird())){ + regionIds.add(supplier.getRegionThird()); + } + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsRuleRegion::getRuleId,ruleIds); + lqw.in(BmsRuleRegion::getRegionId,regionIds); + List ruleRegions = bmsRuleRegionService.list(lqw); + for (BmsRuleRegion ruleRegion : ruleRegions) { + if(ruleRegion.getTypeFlag().equals(1)){ + return false; + } + } + } + } return true; } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java index 2db2f355..d6b79334 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java @@ -14,5 +14,7 @@ public interface BmsRuleSkuService extends IService { List listSkuIdsByRuleId(Long ruleId); + List listEnableRuleWithSkuIds(List skuIds); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java index 3291f23e..ec3959ea 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java @@ -2,6 +2,7 @@ package com.qs.serve.modules.bms.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.qs.serve.common.util.CollectionUtil; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -9,6 +10,7 @@ import com.qs.serve.modules.bms.entity.BmsRuleSku; import com.qs.serve.modules.bms.service.BmsRuleSkuService; import com.qs.serve.modules.bms.mapper.BmsRuleSkuMapper; +import java.util.ArrayList; import java.util.List; /** @@ -28,5 +30,15 @@ public class BmsRuleSkuServiceImpl extends ServiceImpl listEnableRuleWithSkuIds(List skuIds) { + if(CollectionUtil.isEmpty(skuIds)){ + return new ArrayList<>(); + } + BmsRuleSku ruleSku = new BmsRuleSku(); + ruleSku.setSelectSkuIds(skuIds); + return baseMapper.listEnableRule(ruleSku); + } + } diff --git a/src/main/resources/mapper/bms/BmsRuleSkuMapper.xml b/src/main/resources/mapper/bms/BmsRuleSkuMapper.xml new file mode 100644 index 00000000..5a28e79e --- /dev/null +++ b/src/main/resources/mapper/bms/BmsRuleSkuMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + + bms_rule_sku.`id`, + bms_rule_sku.`rule_id`, + bms_rule_sku.`sku_id`, + bms_rule_sku.`spu_id`, + bms_rule_sku.`remark`, + bms_rule_sku.`create_time`, + bms_rule_sku.`create_by`, + bms_rule_sku.`update_time`, + bms_rule_sku.`update_by`, + bms_rule_sku.`tenant_id`, + bms_rule_sku.`del_flag` + + + + + +