Browse Source

下单规则整合

mssql
Yen 3 years ago
parent
commit
257c861c4d
  1. 4
      src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java
  2. 9
      src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java
  3. 34
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java
  4. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java
  5. 12
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java
  6. 79
      src/main/resources/mapper/bms/BmsRuleSkuMapper.xml

4
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.time.LocalDateTime;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
@ -75,5 +76,8 @@ public class BmsRuleSku implements Serializable {
@JsonProperty @JsonProperty
private Boolean delFlag; private Boolean delFlag;
@TableField(exist = false)
List<Long> selectSkuIds;
} }

9
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.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsRuleSku; import com.qs.serve.modules.bms.entity.BmsRuleSku;
import java.util.List;
/** /**
* 规则sku Mapper * 规则sku Mapper
* @author YenHex * @author YenHex
@ -10,5 +12,12 @@ import com.qs.serve.modules.bms.entity.BmsRuleSku;
*/ */
public interface BmsRuleSkuMapper extends BaseMapper<BmsRuleSku> { public interface BmsRuleSkuMapper extends BaseMapper<BmsRuleSku> {
/**
* 关联规则查询可用的sku
* @param ruleSku
* @return
*/
List<BmsRuleSku> listEnableRule(BmsRuleSku ruleSku);
} }

34
src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java

@ -1,6 +1,10 @@
package com.qs.serve.modules.bms.service; package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 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.BmsSkuSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplier; import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.goods.entity.GoodsSku; import com.qs.serve.modules.goods.entity.GoodsSku;
@ -27,6 +31,8 @@ import java.util.stream.Collectors;
public class BmsRuleMainService { public class BmsRuleMainService {
private BmsSkuSupplierService bmsSkuSupplierService; private BmsSkuSupplierService bmsSkuSupplierService;
private BmsRuleSkuService bmsRuleSkuService;
private BmsRuleRegionService bmsRuleRegionService;
public boolean check(BmsSupplier supplier,List<GoodsSku> goodsSkus){ public boolean check(BmsSupplier supplier,List<GoodsSku> goodsSkus){
List<Long> skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList()); List<Long> skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList());
@ -49,7 +55,7 @@ public class BmsRuleMainService {
skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId)) skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId))
).collect(Collectors.toList()); ).collect(Collectors.toList());
} }
//过滤通行spu的sku //过滤通行spu的sku
final List<Long> spuIdsTemp = spuIds; final List<Long> spuIdsTemp = spuIds;
List<Long> passSkuIds = goodsSkus.stream() List<Long> passSkuIds = goodsSkus.stream()
.filter(goodsSku -> spuIdsTemp.stream().anyMatch(spuId->goodsSku.getSpuId().equals(spuId))) .filter(goodsSku -> spuIdsTemp.stream().anyMatch(spuId->goodsSku.getSpuId().equals(spuId)))
@ -58,7 +64,31 @@ public class BmsRuleMainService {
skuIds = skuIds.stream().filter(skuId-> skuIds = skuIds.stream().filter(skuId->
passSkuIds.stream().noneMatch(passSkuId-> passSkuId.equals(skuId)) passSkuIds.stream().noneMatch(passSkuId-> passSkuId.equals(skuId))
).collect(Collectors.toList()); ).collect(Collectors.toList());
//todo 检验区域拦截 0默认 1可售 2禁售 if(CollectionUtil.isEmpty(skuIds)){
List<BmsRuleSku> enableRuleSkus = bmsRuleSkuService.listEnableRuleWithSkuIds(skuIds);
List<Long> ruleIds = enableRuleSkus.stream().map(BmsRuleSku::getRuleId).distinct().collect(Collectors.toList());
if(CollectionUtil.isEmpty(ruleIds)){
List<String> 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<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsRuleRegion::getRuleId,ruleIds);
lqw.in(BmsRuleRegion::getRegionId,regionIds);
List<BmsRuleRegion> ruleRegions = bmsRuleRegionService.list(lqw);
for (BmsRuleRegion ruleRegion : ruleRegions) {
if(ruleRegion.getTypeFlag().equals(1)){
return false;
}
}
}
}
return true; return true;
} }

2
src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java

@ -14,5 +14,7 @@ public interface BmsRuleSkuService extends IService<BmsRuleSku> {
List<BmsRuleSku> listSkuIdsByRuleId(Long ruleId); List<BmsRuleSku> listSkuIdsByRuleId(Long ruleId);
List<BmsRuleSku> listEnableRuleWithSkuIds(List<Long> skuIds);
} }

12
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.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.CollectionUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; 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.service.BmsRuleSkuService;
import com.qs.serve.modules.bms.mapper.BmsRuleSkuMapper; import com.qs.serve.modules.bms.mapper.BmsRuleSkuMapper;
import java.util.ArrayList;
import java.util.List; import java.util.List;
/** /**
@ -28,5 +30,15 @@ public class BmsRuleSkuServiceImpl extends ServiceImpl<BmsRuleSkuMapper,BmsRuleS
return this.list(lqw); return this.list(lqw);
} }
@Override
public List<BmsRuleSku> listEnableRuleWithSkuIds(List<Long> skuIds) {
if(CollectionUtil.isEmpty(skuIds)){
return new ArrayList<>();
}
BmsRuleSku ruleSku = new BmsRuleSku();
ruleSku.setSelectSkuIds(skuIds);
return baseMapper.listEnableRule(ruleSku);
}
} }

79
src/main/resources/mapper/bms/BmsRuleSkuMapper.xml

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qs.serve.modules.bms.mapper.BmsRuleSkuMapper">
<resultMap id="bmsRuleSkuMap" type="com.qs.serve.modules.bms.entity.BmsRuleSku" >
<result property="id" column="id"/>
<result property="ruleId" column="rule_id"/>
<result property="skuId" column="sku_id"/>
<result property="spuId" column="spu_id"/>
<result property="remark" column="remark"/>
<result property="createTime" column="create_time"/>
<result property="createBy" column="create_by"/>
<result property="updateTime" column="update_time"/>
<result property="updateBy" column="update_by"/>
<result property="tenantId" column="tenant_id"/>
<result property="delFlag" column="del_flag"/>
</resultMap>
<sql id="bmsRuleSkuSql">
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` </sql>
<select id="selectBmsRuleSkuList" parameterType="com.qs.serve.modules.bms.entity.BmsRuleSku" resultMap="bmsRuleSkuMap">
SELECT <include refid="bmsRuleSkuSql"/> FROM `bms_rule_sku` `bms_rule_sku`
<where>
<if test="query.id != null"> and `bms_rule_sku`.`id` = #{query.id}</if>
<if test="query.ruleId != null"> and `bms_rule_sku`.`rule_id` = #{query.ruleId}</if>
<if test="query.skuId != null"> and `bms_rule_sku`.`sku_id` = #{query.skuId}</if>
<if test="query.spuId != null"> and `bms_rule_sku`.`spu_id` = #{query.spuId}</if>
<if test="query.remark != null and query.remark != ''"> and `bms_rule_sku`.`remark` = #{query.remark}</if>
<if test="query.createTime != null"> and `bms_rule_sku`.`create_time` = #{query.createTime}</if>
<if test="query.createBy != null and query.createBy != ''"> and `bms_rule_sku`.`create_by` = #{query.createBy}</if>
<if test="query.updateTime != null"> and `bms_rule_sku`.`update_time` = #{query.updateTime}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `bms_rule_sku`.`update_by` = #{query.updateBy}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `bms_rule_sku`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null"> and `bms_rule_sku`.`del_flag` = #{query.delFlag}</if>
</where>
</select>
<select id="listEnableRule" resultType="com.qs.serve.modules.bms.entity.BmsRuleSku">
SELECT <include refid="bmsRuleSkuSql"/>
FROM `bms_rule_sku` `bms_rule_sku`
LEFT JOIN `bms_rule` ON `bms_rule`.id = `bms_rule_sku`.rule_id
<where>
AND `bms_rule`.`status` = '1'
AND `bms_rule`.start_time &lt;= now()
AND `bms_rule`.end_time &gt;= now()
<if test="query.selectSkuIds != null and query.selectSkuIds.size > 0">
and `bms_rule_sku`.`sku_id` in
<foreach collection="query.selectSkuIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
<if test="query.id != null"> and `bms_rule_sku`.`id` = #{query.id}</if>
<if test="query.ruleId != null"> and `bms_rule_sku`.`rule_id` = #{query.ruleId}</if>
<if test="query.skuId != null"> and `bms_rule_sku`.`sku_id` = #{query.skuId}</if>
<if test="query.spuId != null"> and `bms_rule_sku`.`spu_id` = #{query.spuId}</if>
<if test="query.remark != null and query.remark != ''"> and `bms_rule_sku`.`remark` = #{query.remark}</if>
<if test="query.createTime != null"> and `bms_rule_sku`.`create_time` = #{query.createTime}</if>
<if test="query.createBy != null and query.createBy != ''"> and `bms_rule_sku`.`create_by` = #{query.createBy}</if>
<if test="query.updateTime != null"> and `bms_rule_sku`.`update_time` = #{query.updateTime}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `bms_rule_sku`.`update_by` = #{query.updateBy}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `bms_rule_sku`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null"> and `bms_rule_sku`.`del_flag` = #{query.delFlag}</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save