Browse Source

下单规则整合

mssql
Yen 3 years ago
parent
commit
1b0f5b249a
  1. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java
  2. 101
      src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java
  3. 6
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  4. 176
      src/main/java/com/qs/serve/modules/bms/controller/BmsRuleController.java
  5. 76
      src/main/java/com/qs/serve/modules/bms/entity/BmsFactory.java
  6. 3
      src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java
  7. 1
      src/main/java/com/qs/serve/modules/bms/entity/BmsRule.java
  8. 25
      src/main/java/com/qs/serve/modules/bms/entity/BmsRuleRegion.java
  9. 79
      src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java
  10. 32
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierAddress.java
  11. 23
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsRuleBo.java
  12. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsFactoryMapper.java
  13. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleRegionMapper.java
  14. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java
  15. 27
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java
  16. 14
      src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java
  17. 6
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java
  18. 21
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java
  19. 7
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.java
  20. 18
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleSkuService.java
  21. 46
      src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java
  22. 22
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java
  23. 30
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java
  24. 16
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleServiceImpl.java
  25. 32
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java
  26. 115
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java
  27. 3
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  28. 17
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java
  29. 11
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java
  30. 5
      src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java
  31. 6
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  32. 7
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java
  33. 6
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsConfirmOrderBo.java
  34. 2
      src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java
  35. 9
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  36. 2
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java
  37. 2
      src/main/resources/application-dev.yml
  38. 63
      src/main/resources/mapper/bms/BmsSkuRegionMapper.xml
  39. 121
      src/main/resources/mapper/goods/GoodsSkuMapper.xml

2
src/main/java/com/qs/serve/modules/bms/controller/BmsErpInfoController.java

@ -94,7 +94,7 @@ public class BmsErpInfoController {
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "ERP信息", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:erpInfo:delete')")
public R<?> deleteById(@PathVariable("id") String id){
public R<?> deleteById(@PathVariable("id") Long id){
boolean result = bmsErpInfoService.removeById(id);
return R.isTrue(result);
}

101
src/main/java/com/qs/serve/modules/bms/controller/BmsFactoryController.java

@ -0,0 +1,101 @@
package com.qs.serve.modules.bms.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsFactory;
import com.qs.serve.modules.bms.service.BmsFactoryService;
import javax.validation.Valid;
import java.util.List;
/**
* 基础档案 工厂产地
* @author YenHex
* @since 2022-10-20
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/factory")
public class BmsFactoryController {
private BmsFactoryService bmsFactoryService;
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:factory:query')")
public R<PageVo<BmsFactory>> getPage(BmsFactory param){
PageUtil.startPage();
LambdaQueryWrapper<BmsFactory> factoryWrapper = new LambdaQueryWrapper<>(param);
List<BmsFactory> list = bmsFactoryService.list(factoryWrapper);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:factory:query')")
public R<BmsFactory> getById(@PathVariable("id") String id){
BmsFactory bmsFactory = bmsFactoryService.getById(id);
return R.ok(bmsFactory);
}
/**
* 更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:factory:update')")
public R<?> updateById(@RequestBody @Valid BmsFactory param){
boolean result = bmsFactoryService.updateById(param);
return R.isTrue(result);
}
/**
* 新增
* @param param
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:factory:insert')")
public R<?> save(@RequestBody @Valid BmsFactory param){
boolean result = bmsFactoryService.save(param);
return R.isTrue(result);
}
/**
* 删除
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "工厂产地", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:factory:delete')")
public R<?> deleteById(@PathVariable("id") Long id){
boolean result = bmsFactoryService.removeById(id);
return R.isTrue(result);
}
}

6
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -9,7 +9,7 @@ import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.bo.BmsRegionBatchBo;
import com.qs.serve.modules.bms.entity.vo.BmsRegionTreeVo;
import com.qs.serve.modules.bms.service.BmsSkuRegionService;
import com.qs.serve.modules.bms.service.BmsRuleRegionService;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -35,7 +35,7 @@ public class BmsRegionController {
private BmsRegionService bmsRegionService;
private BmsSupplierService bmsSupplierService;
private BmsSkuRegionService bmsSkuRegionService;
private BmsRuleRegionService bmsRuleRegionService;
/**
* 翻页查询
@ -152,7 +152,7 @@ public class BmsRegionController {
return R.error("地区含有供应商无法删除");
}
//删除商品限制
bmsSkuRegionService.removeByRegionId(Long.parseLong(id));
bmsRuleRegionService.removeByRegionId(Long.parseLong(id));
boolean result = bmsRegionService.removeById(id);
return R.isTrue(result);
}

176
src/main/java/com/qs/serve/modules/bms/controller/BmsRuleController.java

@ -6,19 +6,28 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRuleRegion;
import com.qs.serve.modules.bms.entity.BmsRuleSku;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
import com.qs.serve.modules.bms.service.BmsSkuRegionService;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.bms.entity.BmsRule;
import com.qs.serve.modules.bms.service.BmsRuleService;
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 基础档案 规则
@ -32,6 +41,10 @@ import java.util.List;
public class BmsRuleController {
private BmsRuleService bmsRuleService;
private BmsRuleRegionService bmsRuleRegionService;
private BmsRuleSkuService bmsRuleSkuService;
private BmsRegionService bmsRegionService;
private GoodsSkuService goodsSkuService;
/**
* 翻页
@ -61,20 +74,167 @@ public class BmsRuleController {
}
/**
* 编辑
* @param skuRegionBo
* 规则商品列表
* @param id
* @return
*/
@GetMapping("/listRuleProducts/{id}")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:rule:query')")
public R<PageVo<GoodSkuVo>> listRuleProducts(@PathVariable("id") String id){
PageUtil.startPage();
List<BmsRuleSku> ruleSkus = bmsRuleSkuService.listSkuIdsByRuleId(Long.parseLong(id));
if(CollectionUtil.isNotEmpty(ruleSkus)){
GoodsSku param = new GoodsSku();
List<Long> skuIds = ruleSkus.stream().map(BmsRuleSku::getSkuId).collect(Collectors.toList());
param.setSelectSkuIds(skuIds);
List<GoodSkuVo> skuVos = goodsSkuService.selectSkuVo(param);
R.byPageHelperList(ruleSkus,skuVos);
}
return R.byEmptyList();
}
/**
* 规则地区列表
* @param ruleId
* @param type 0只售 1禁售
* @return
*/
@GetMapping("/listRuleRegion")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:rule:query')")
public R<PageVo<BmsRegion>> listRuleProducts(@NotNull Long ruleId,
@NotNull Integer type){
PageUtil.startPage();
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRuleId,ruleId);
lqw.eq(BmsRuleRegion::getTypeFlag,type);
List<BmsRuleRegion> ruleRegions = bmsRuleRegionService.list(lqw);
if(CollectionUtil.isNotEmpty(ruleRegions)){
List<Long> regionIds = ruleRegions.stream().map(BmsRuleRegion::getRegionId).collect(Collectors.toList());
List<BmsRegion> regionList = bmsRegionService.listByIds(regionIds);
return R.byPageHelperList(regionIds,regionList);
}
return R.byEmptyList();
}
/**
* 编辑规则
* @param bmsRule
* @return
*/
@PostMapping("/saveOrUpdate")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:rule:update')")
public R<?> save(@RequestBody @Valid BmsRule bmsRule){
bmsRuleService.saveOrUpdate(bmsRule);
return R.ok();
}
/**
* 规则 添加项
* @param bmsRule
* @return
*/
@PostMapping("/addItem")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:rule:update')")
public R<?> addItem(@RequestBody @Valid BmsRuleBo bmsRule){
Long ruleId = bmsRule.getId();
List<Long> skuIds = bmsRule.getSkuIds();
List<Long> banSaleRegionIds = bmsRule.getBanSaleRegionIds();
List<Long> onlySaleRegionIds = bmsRule.getOnlySaleRegionIds();
if(CollectionUtil.isNotEmpty(bmsRule.getSkuIds())){
List<BmsRuleSku> ruleSkuList = new ArrayList<>();
LambdaQueryWrapper<BmsRuleSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleSku::getRuleId,ruleId);
lqw.in(BmsRuleSku::getSkuId,skuIds);
bmsRuleSkuService.remove(lqw);
GoodsSku param = new GoodsSku();
param.setSelectSkuIds(skuIds);
List<GoodSkuVo> goodSkuVos = goodsSkuService.selectSkuVo(param);
for (GoodSkuVo goodSkuVo : goodSkuVos) {
BmsRuleSku ruleSku = new BmsRuleSku();
ruleSku.setRuleId(ruleId);
ruleSku.setSpuId(goodSkuVo.getSpuId());
ruleSku.setSkuId(goodSkuVo.getId());
ruleSkuList.add(ruleSku);
}
bmsRuleSkuService.saveBatch(ruleSkuList);
}
//去重
if(CollectionUtil.isNotEmpty(banSaleRegionIds)&&CollectionUtil.isNotEmpty(onlySaleRegionIds)){
onlySaleRegionIds = onlySaleRegionIds.stream().filter(onlySaleRegionId->
banSaleRegionIds.stream().noneMatch(banId->banId.equals(onlySaleRegionId))
).collect(Collectors.toList());
}
if(CollectionUtil.isNotEmpty(banSaleRegionIds)){
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRuleId,ruleId);
lqw.in(BmsRuleRegion::getRegionId,banSaleRegionIds);
bmsRuleRegionService.remove(lqw);
List<BmsRuleRegion> ruleRegions = banSaleRegionIds.stream().map(regionId->{
BmsRuleRegion ruleRegion = new BmsRuleRegion();
ruleRegion.setRegionId(regionId);
ruleRegion.setRuleId(ruleId);
ruleRegion.setTypeFlag(1);
return ruleRegion;
}).collect(Collectors.toList());
bmsRuleRegionService.saveBatch(ruleRegions);
}
if(CollectionUtil.isNotEmpty(onlySaleRegionIds)){
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRuleId,ruleId);
lqw.in(BmsRuleRegion::getRegionId,onlySaleRegionIds);
bmsRuleRegionService.remove(lqw);
List<BmsRuleRegion> ruleRegions = onlySaleRegionIds.stream().map(regionId->{
BmsRuleRegion ruleRegion = new BmsRuleRegion();
ruleRegion.setRegionId(regionId);
ruleRegion.setRuleId(ruleId);
ruleRegion.setTypeFlag(0);
return ruleRegion;
}).collect(Collectors.toList());
bmsRuleRegionService.saveBatch(ruleRegions);
}
return R.ok();
}
/**
* 规则 移除项
* @param bmsRule
* @return
*/
@PostMapping("/edit")
@PostMapping("/removeItem")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:rule:update')")
public R<?> updateById(@RequestBody @Valid BmsRuleBo skuRegionBo){
bmsRuleService.edit(skuRegionBo);
public R<?> removeItem(@RequestBody @Valid BmsRuleBo bmsRule){
Long ruleId = bmsRule.getId();
List<Long> skuIds = bmsRule.getSkuIds();
List<Long> banSaleRegionIds = bmsRule.getBanSaleRegionIds();
List<Long> onlySaleRegionIds = bmsRule.getOnlySaleRegionIds();
if(CollectionUtil.isNotEmpty(bmsRule.getSkuIds())){
LambdaQueryWrapper<BmsRuleSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleSku::getRuleId,ruleId);
lqw.in(BmsRuleSku::getSkuId,skuIds);
bmsRuleSkuService.remove(lqw);
}
if(CollectionUtil.isNotEmpty(banSaleRegionIds)){
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRuleId,ruleId);
lqw.in(BmsRuleRegion::getRegionId,banSaleRegionIds);
bmsRuleRegionService.remove(lqw);
}
if(CollectionUtil.isNotEmpty(onlySaleRegionIds)){
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRuleId,ruleId);
lqw.in(BmsRuleRegion::getRegionId,onlySaleRegionIds);
bmsRuleRegionService.remove(lqw);
}
return R.ok();
}
/**
* 删除
* 删除规则
* @param id
* @return
*/

76
src/main/java/com/qs/serve/modules/bms/entity/BmsFactory.java

@ -0,0 +1,76 @@
package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 工厂产地 实体类
* @author YenHex
* @since 2022-10-20
*/
@Data
@TableName("bms_factory")
public class BmsFactory implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
private String id;
/** 名称 */
@NotBlank(message = "名称不能为空")
@Length(max = 20,message = "名称长度不能超过20字")
private String name;
/** 编码 */
@NotBlank(message = "编码不能为空")
@Length(max = 20,message = "编码长度不能超过20字")
private String code;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

3
src/main/java/com/qs/serve/modules/bms/entity/BmsRegion.java

@ -44,6 +44,9 @@ public class BmsRegion implements Serializable {
/** 层级 */
private Integer level;
/** 工厂产地ID */
private Long factoryId;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

1
src/main/java/com/qs/serve/modules/bms/entity/BmsRule.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;

25
src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.java → src/main/java/com/qs/serve/modules/bms/entity/BmsRuleRegion.java

@ -2,7 +2,6 @@ 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;
@ -16,13 +15,13 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 禁销区域 实体类
* 规则区域 实体类
* @author YenHex
* @since 2022-10-19
* @since 2022-10-21
*/
@Data
@TableName("bms_sku_region")
public class BmsSkuRegion implements Serializable {
@TableName("bms_rule_region")
public class BmsRuleRegion implements Serializable {
private static final long serialVersionUID = 1L;
@ -30,21 +29,14 @@ public class BmsSkuRegion implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/** 商品id */
@NotNull(message = "商品id不能为空")
private Long spuId;
/** skuId */
@NotNull(message = "skuId不能为空")
private Long skuId;
/** 规则ID */
@NotNull(message = "规则ID不能为空")
private Long ruleId;
/** 区域ID */
@NotNull(message = "区域ID不能为空")
private Long regionId;
/** 规则ID */
private Long ruleId;
/** 类型:0->只售;1->禁售 */
@NotNull(message = "类型:0->只售;1->禁售不能为空")
private Integer typeFlag;
@ -79,8 +71,5 @@ public class BmsSkuRegion implements Serializable {
@JsonProperty
private Boolean delFlag;
@TableField(exist = false)
private List<Long> skuIds;
}

79
src/main/java/com/qs/serve/modules/bms/entity/BmsRuleSku.java

@ -0,0 +1,79 @@
package com.qs.serve.modules.bms.entity;
import java.time.LocalDateTime;
import java.io.Serializable;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 规则sku 实体类
* @author YenHex
* @since 2022-10-21
*/
@Data
@TableName("bms_rule_sku")
public class BmsRuleSku implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 规则id */
@NotNull(message = "规则id不能为空")
private Long ruleId;
/** skuId */
@NotNull(message = "skuId不能为空")
private Long skuId;
/** spuId */
@NotNull(message = "spuId不能为空")
private Long spuId;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
/** 租户id */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 删除标识 */
@JsonIgnore
@JsonProperty
private Boolean delFlag;
}

32
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierAddress.java

@ -17,7 +17,7 @@ import javax.validation.constraints.NotBlank;
/**
* 供应商地址 实体类
* @author YenHex
* @since 2022-10-12
* @since 2022-10-21
*/
@Data
@TableName("bms_supplier_address")
@ -37,16 +37,28 @@ public class BmsSupplierAddress implements Serializable {
@NotNull(message = "是否默认不能为空")
private Integer defaultFlag;
/** 省编码 */
@Length(max = 20,message = "省编码长度不能超过20字")
private String provinceCode;
/** 省 */
@NotBlank(message = "省不能为空")
@Length(max = 12,message = "省长度不能超过12字")
private String province;
/** 市编码 */
@Length(max = 20,message = "市编码长度不能超过20字")
private String cityCode;
/** 市 */
@NotBlank(message = "市不能为空")
@Length(max = 20,message = "市长度不能超过20字")
private String city;
/** 区编码 */
@Length(max = 20,message = "区编码长度不能超过20字")
private String areaCode;
/** 区 */
@NotBlank(message = "区不能为空")
@Length(max = 20,message = "区长度不能超过20字")
@ -57,18 +69,20 @@ public class BmsSupplierAddress implements Serializable {
@Length(max = 255,message = "详细地址长度不能超过255字")
private String detail;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 收货联系方式 */
@NotBlank(message = "收货联系方式不能为空")
/** 手机号 */
@NotBlank(message = "手机号不能为空")
@Length(max = 30,message = "手机号长度不能超过30字")
private String phone;
/** 收货人 */
@NotBlank(message = "收货人不能为空")
/** 收件人 */
@NotBlank(message = "收件人不能为空")
@Length(max = 30,message = "收件人长度不能超过30字")
private String receiver;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")

23
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsRuleBo.java

@ -2,11 +2,9 @@ package com.qs.serve.modules.bms.entity.bo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;
@ -17,15 +15,12 @@ import java.util.List;
@Data
public class BmsRuleBo {
private Long id;
/**
* 规则id
*/
@NotNull
private String title;
private String remark;
private Long id;
/** skuId */
@NotNull
private List<Long> skuIds;
/** 只售区域id */
@ -34,14 +29,4 @@ public class BmsRuleBo {
/** 禁售区域id */
private List<Long> banSaleRegionIds;
/** 开始时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime startTime;
/** 结束时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime endTime;
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsFactoryMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsFactory;
/**
* 工厂产地 Mapper
* @author YenHex
* @date 2022-10-20
*/
public interface BmsFactoryMapper extends BaseMapper<BmsFactory> {
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleRegionMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsRuleRegion;
/**
* 规则区域 Mapper
* @author YenHex
* @date 2022-10-21
*/
public interface BmsRuleRegionMapper extends BaseMapper<BmsRuleRegion> {
}

14
src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleSkuMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.bms.entity.BmsRuleSku;
/**
* 规则sku Mapper
* @author YenHex
* @date 2022-10-21
*/
public interface BmsRuleSkuMapper extends BaseMapper<BmsRuleSku> {
}

27
src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java

@ -1,27 +0,0 @@
package com.qs.serve.modules.bms.mapper;
import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qs.serve.modules.bms.entity.BmsSkuRegion;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 禁销区域 Mapper
* @author YenHex
* @date 2022-10-18
*/
public interface BmsSkuRegionMapper extends BaseMapper<BmsSkuRegion> {
/**
* 查询
* @param skuRegion
* @return
*/
@InterceptorIgnore(tenantLine = "1")
List<BmsSkuRegion> listSkuRegions(@Param("query") BmsSkuRegion skuRegion);
}

14
src/main/java/com/qs/serve/modules/bms/service/BmsFactoryService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsFactory;
/**
* 工厂产地 服务接口
* @author YenHex
* @date 2022-10-20
*/
public interface BmsFactoryService extends IService<BmsFactory> {
}

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

@ -27,7 +27,6 @@ import java.util.stream.Collectors;
public class BmsRuleMainService {
private BmsSkuSupplierService bmsSkuSupplierService;
private BmsSkuRegionService bmsSkuRegionService;
public boolean check(BmsSupplier supplier,List<GoodsSku> goodsSkus){
List<Long> skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList());
@ -59,9 +58,8 @@ public class BmsRuleMainService {
skuIds = skuIds.stream().filter(skuId->
passSkuIds.stream().noneMatch(passSkuId-> passSkuId.equals(skuId))
).collect(Collectors.toList());
//检验区域拦截 0默认 1可售 2禁售
int rs3 = bmsSkuRegionService.checkSkuRule(skuIds,supplier);
return rs3 < 2;
//todo 检验区域拦截 0默认 1可售 2禁售
return true;
}
public List<BmsSkuSupplier> getSkuSupplierRules(String supplierId, List<Long> skuIds) {

21
src/main/java/com/qs/serve/modules/bms/service/BmsRuleRegionService.java

@ -0,0 +1,21 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsRuleRegion;
/**
* 规则区域 服务接口
* @author YenHex
* @date 2022-10-21
*/
public interface BmsRuleRegionService extends IService<BmsRuleRegion> {
/**
* 通过区域id删除
* @param regionId
* @return
*/
boolean removeByRegionId(Long regionId);
}

7
src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.java

@ -2,7 +2,6 @@ package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsRule;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
/**
* 规则 服务接口
@ -11,11 +10,5 @@ import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
*/
public interface BmsRuleService extends IService<BmsRule> {
/**
* 编辑
* @param skuRegionBo
*/
void edit(BmsRuleBo skuRegionBo);
}

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

@ -0,0 +1,18 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsRuleSku;
import java.util.List;
/**
* 规则sku 服务接口
* @author YenHex
* @date 2022-10-21
*/
public interface BmsRuleSkuService extends IService<BmsRuleSku> {
List<BmsRuleSku> listSkuIdsByRuleId(Long ruleId);
}

46
src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java

@ -1,46 +0,0 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.bms.entity.BmsSkuRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 禁销区域 服务接口
* @author YenHex
* @date 2022-10-18
*/
public interface BmsSkuRegionService extends IService<BmsSkuRegion> {
/**
* 编辑
* @param ruleId
* @param skuRegionBo
*/
void edit(Long ruleId,BmsRuleBo skuRegionBo);
/**
* 查询
* @param skuRegion
* @return
*/
List<BmsSkuRegion> listSkuRegions(BmsSkuRegion skuRegion);
/**
* 检查规则
* @param skuIds
* @param supplier
* @return
*/
int checkSkuRule(List<Long> skuIds, BmsSupplier supplier);
boolean removeByRegionId(Long regionId);
}

22
src/main/java/com/qs/serve/modules/bms/service/impl/BmsFactoryServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.entity.BmsFactory;
import com.qs.serve.modules.bms.service.BmsFactoryService;
import com.qs.serve.modules.bms.mapper.BmsFactoryMapper;
/**
* 工厂产地 服务实现类
* @author YenHex
* @since 2022-10-20
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsFactoryServiceImpl extends ServiceImpl<BmsFactoryMapper,BmsFactory> implements BmsFactoryService {
}

30
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleRegionServiceImpl.java

@ -0,0 +1,30 @@
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 lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.entity.BmsRuleRegion;
import com.qs.serve.modules.bms.service.BmsRuleRegionService;
import com.qs.serve.modules.bms.mapper.BmsRuleRegionMapper;
/**
* 规则区域 服务实现类
* @author YenHex
* @since 2022-10-21
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsRuleRegionServiceImpl extends ServiceImpl<BmsRuleRegionMapper,BmsRuleRegion> implements BmsRuleRegionService {
@Override
public boolean removeByRegionId(Long regionId) {
LambdaQueryWrapper<BmsRuleRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleRegion::getRegionId,regionId);
return this.remove(lqw);
}
}

16
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleServiceImpl.java

@ -1,8 +1,6 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
import com.qs.serve.modules.bms.service.BmsSkuRegionService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -20,19 +18,5 @@ import com.qs.serve.modules.bms.mapper.BmsRuleMapper;
@AllArgsConstructor
public class BmsRuleServiceImpl extends ServiceImpl<BmsRuleMapper,BmsRule> implements BmsRuleService {
private BmsSkuRegionService skuRegionService;
@Override
public void edit(BmsRuleBo skuRegionBo) {
BmsRule bmsRule = new BmsRule();
bmsRule.setId(skuRegionBo.getId());
bmsRule.setName(skuRegionBo.getTitle());
bmsRule.setRemark(skuRegionBo.getRemark());
bmsRule.setStartTime(skuRegionBo.getStartTime());
bmsRule.setEndTime(skuRegionBo.getEndTime());
this.saveOrUpdate(bmsRule);
skuRegionService.edit(bmsRule.getId(),skuRegionBo);
}
}

32
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleSkuServiceImpl.java

@ -0,0 +1,32 @@
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 lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
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.List;
/**
* 规则sku 服务实现类
* @author YenHex
* @since 2022-10-21
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsRuleSkuServiceImpl extends ServiceImpl<BmsRuleSkuMapper,BmsRuleSku> implements BmsRuleSkuService {
@Override
public List<BmsRuleSku> listSkuIdsByRuleId(Long ruleId) {
LambdaQueryWrapper<BmsRuleSku> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsRuleSku::getRuleId,ruleId);
return this.list(lqw);
}
}

115
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java

@ -1,115 +0,0 @@
package com.qs.serve.modules.bms.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.entity.BmsSkuRegion;
import com.qs.serve.modules.bms.service.BmsSkuRegionService;
import com.qs.serve.modules.bms.mapper.BmsSkuRegionMapper;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* 禁销区域 服务实现类
* @author YenHex
* @since 2022-10-18
*/
@Slf4j
@Service
@AllArgsConstructor
public class BmsSkuRegionServiceImpl extends ServiceImpl<BmsSkuRegionMapper,BmsSkuRegion> implements BmsSkuRegionService {
private GoodsSkuService goodsSkuService;
@Override
public void edit(Long ruleId,BmsRuleBo skuRegionBo) {
List<Long> banSaleRegionIds = skuRegionBo.getBanSaleRegionIds();
List<Long> onlySaleRegionIds = skuRegionBo.getOnlySaleRegionIds();
if (CollectionUtil.isEmpty(skuRegionBo.getSkuIds())){
Assert.throwEx("请选择商品");
}
List<GoodsSku> skuList = goodsSkuService.listByIds(skuRegionBo.getSkuIds());
//移除旧数据
this.deleteByRuleId(ruleId);
//去重
if(CollectionUtil.isNotEmpty(banSaleRegionIds)&&CollectionUtil.isNotEmpty(onlySaleRegionIds)){
onlySaleRegionIds = onlySaleRegionIds.stream().filter(id->!banSaleRegionIds.contains(id)).collect(Collectors.toList());
}
List<BmsSkuRegion> skuRegionsList = new ArrayList<>();
for (GoodsSku goodsSku : skuList) {
for (Long saleRegionId : banSaleRegionIds) {
BmsSkuRegion skuRegion = new BmsSkuRegion();
skuRegion.setSpuId(goodsSku.getSpuId());
skuRegion.setSkuId(goodsSku.getId());
skuRegion.setRegionId(saleRegionId);
skuRegion.setRuleId(ruleId);
skuRegion.setTypeFlag(1);
skuRegionsList.add(skuRegion);
}
for (Long saleRegionId : onlySaleRegionIds) {
BmsSkuRegion skuRegion = new BmsSkuRegion();
skuRegion.setSpuId(goodsSku.getSpuId());
skuRegion.setSkuId(goodsSku.getId());
skuRegion.setRegionId(saleRegionId);
skuRegion.setRuleId(ruleId);
skuRegion.setTypeFlag(0);
skuRegionsList.add(skuRegion);
}
}
if(CollectionUtil.isNotEmpty(skuRegionsList)){
this.saveBatch(skuRegionsList);
}
}
@Override
public List<BmsSkuRegion> listSkuRegions(BmsSkuRegion skuRegion) {
return baseMapper.listSkuRegions(skuRegion);
}
@Override
public int checkSkuRule(List<Long> skuIds, BmsSupplier supplier) {
int result = 0;
BmsSkuRegion param = new BmsSkuRegion();
List<BmsSkuRegion> skuRegionList = this.listSkuRegions(param);
for (BmsSkuRegion skuRegion : skuRegionList) {
String regionId = skuRegion.getRegionId()+"";
boolean isFirst = supplier.getRegionFirst().equals(regionId);
boolean isSecond = supplier.getRegionSecond()!=null && supplier.getRegionSecond().equals(regionId);
boolean isThird = supplier.getRegionThird()!=null && supplier.getRegionThird().equals(regionId);
if(isFirst||isSecond||isThird){
result = skuRegion.getTypeFlag().equals(0)?1:2;
break;
}
}
return result;
}
@Override
public boolean removeByRegionId(Long regionId) {
LambdaQueryWrapper<BmsSkuRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSkuRegion::getRegionId,regionId);
return this.remove(lqw);
}
private void deleteByRuleId(Long ruleId){
LambdaQueryWrapper<BmsSkuRegion> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSkuRegion::getRuleId,ruleId);
this.remove(lqw);
}
}

3
src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java

@ -3,6 +3,7 @@ package com.qs.serve.modules.goods.entity;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.List;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
@ -112,5 +113,7 @@ public class GoodsSku implements Serializable {
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
@TableField(exist = false)
private List<Long> selectSkuIds;
}

17
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodSkuVo.java

@ -0,0 +1,17 @@
package com.qs.serve.modules.goods.entity.vo;
import com.qs.serve.modules.goods.entity.GoodsSku;
import lombok.Data;
/**
* @author YenHex
* @since 2022/10/20
*/
@Data
public class GoodSkuVo extends GoodsSku {
private String name;
private Long spuId;
}

11
src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java

@ -2,6 +2,10 @@ package com.qs.serve.modules.goods.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* sku Mapper
@ -10,5 +14,12 @@ import com.qs.serve.modules.goods.entity.GoodsSku;
*/
public interface GoodsSkuMapper extends BaseMapper<GoodsSku> {
/**
* 查询vo
* @param goodsSku
* @return
*/
List<GoodSkuVo> selectSkuVo(@Param("query") GoodsSku goodsSku);
}

5
src/main/java/com/qs/serve/modules/goods/service/GoodsSkuService.java

@ -2,6 +2,9 @@ package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
@ -15,5 +18,7 @@ public interface GoodsSkuService extends IService<GoodsSku> {
List<GoodsSku> getBySpuId(Long spuId);
List<GoodSkuVo> selectSkuVo(GoodsSku goodsSku);
}

6
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.goods.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@ -34,5 +35,10 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
lqw.eq(GoodsSku::getSpuId,spuId);
return list(lqw);
}
@Override
public List<GoodSkuVo> selectSkuVo(GoodsSku goodsSku) {
return baseMapper.selectSkuVo(goodsSku);
}
}

7
src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java

@ -1,19 +1,14 @@
package com.qs.serve.modules.oms.controller.api;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.modules.bms.entity.BmsSkuRegion;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.*;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.service.GoodsSkuService;
@ -27,11 +22,9 @@ import com.qs.serve.modules.wx.entity.WxUser;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

6
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsConfirmOrderBo.java

@ -11,12 +11,6 @@ import java.util.List;
@Data
public class OmsConfirmOrderBo {
/**
* 供应商id
*/
@NotNull
private Long supplierId;
/**
* 订单类型0->普通订单
*/

2
src/main/java/com/qs/serve/modules/oms/service/OmsShoppingCartService.java

@ -12,7 +12,7 @@ import java.util.List;
*/
public interface OmsShoppingCartService extends IService<OmsShoppingCart> {
List<OmsShoppingCart> listByIds(List<Long> ids,Long supplierId);
List<OmsShoppingCart> listByIds(List<Long> ids,String supplierId);
}

9
src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java

@ -1,6 +1,9 @@
package com.qs.serve.modules.oms.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.oms.entity.OmsShoppingCart;
import com.qs.serve.modules.oms.entity.bo.OmsConfirmOrderBo;
import com.qs.serve.modules.oms.entity.vo.OmsConfirmOrderVo;
@ -26,10 +29,12 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private OmsShoppingCartService omsShoppingCartService;
@Override
public OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder) {
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),confirmOrder.getSupplierId());
//检验规则
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),supplier.getId());
//todo 检验规则
//检验库存
//计算供应商折扣
//计算是否有活动优惠

2
src/main/java/com/qs/serve/modules/oms/service/impl/OmsShoppingCartServiceImpl.java

@ -22,7 +22,7 @@ import java.util.List;
public class OmsShoppingCartServiceImpl extends ServiceImpl<OmsShoppingCartMapper,OmsShoppingCart> implements OmsShoppingCartService {
@Override
public List<OmsShoppingCart> listByIds(List<Long> ids, Long supplierId) {
public List<OmsShoppingCart> listByIds(List<Long> ids, String supplierId) {
LambdaQueryWrapper<OmsShoppingCart> lqw = new LambdaQueryWrapper<>();
lqw.in(OmsShoppingCart::getId,ids);
lqw.eq(OmsShoppingCart::getSupplierId,supplierId);

2
src/main/resources/application-dev.yml

@ -16,7 +16,7 @@ tencent:
#服务配置
server:
port: 7403
port: 7400
servlet:
context-path: /
#SpringBoot相关

63
src/main/resources/mapper/bms/BmsSkuRegionMapper.xml

@ -1,63 +0,0 @@
<?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.BmsSkuRegionMapper">
<resultMap id="bmsSkuRegionMap" type="com.qs.serve.modules.bms.entity.BmsSkuRegion" >
<result property="id" column="id"/>
<result property="spuId" column="spu_id"/>
<result property="skuId" column="sku_id"/>
<result property="regionId" column="region_id"/>
<result property="ruleId" column="rule_id"/>
<result property="typeFlag" column="type_flag"/>
<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="bmsSkuRegionSql">
bms_sku_region.`id`,
bms_sku_region.`spu_id`,
bms_sku_region.`sku_id`,
bms_sku_region.`region_id`,
bms_sku_region.`rule_id`,
bms_sku_region.`type_flag`,
bms_sku_region.`create_time`,
bms_sku_region.`create_by`,
bms_sku_region.`update_time`,
bms_sku_region.`update_by`,
bms_sku_region.`tenant_id`,
bms_sku_region.`del_flag` </sql>
<select id="listSkuRegions" parameterType="com.qs.serve.modules.bms.entity.BmsSkuRegion" resultMap="bmsSkuRegionMap">
SELECT <include refid="bmsSkuRegionSql"/> FROM `bms_sku_region` `bms_sku_region`
LEFT JOIN bms_rule ON bms_sku_region.rule_id = bms_rule.id
<where>
<if test="query.id != null"> and `bms_sku_region`.`id` = #{query.id}</if>
<if test="query.spuId != null"> and `bms_sku_region`.`spu_id` = #{query.spuId}</if>
<if test="query.skuId != null"> and `bms_sku_region`.`sku_id` = #{query.skuId}</if>
<if test="query.regionId != null"> and `bms_sku_region`.`region_id` = #{query.regionId}</if>
<if test="query.ruleId != null"> and `bms_sku_region`.`rule_id` = #{query.ruleId}</if>
<if test="query.typeFlag != null"> and `bms_sku_region`.`type_flag` = #{query.typeFlag}</if>
<if test="query.createTime != null"> and `bms_sku_region`.`create_time` = #{query.createTime}</if>
<if test="query.createBy != null and query.createBy != ''"> and `bms_sku_region`.`create_by` = #{query.createBy}</if>
<if test="query.updateTime != null"> and `bms_sku_region`.`update_time` = #{query.updateTime}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `bms_sku_region`.`update_by` = #{query.updateBy}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `bms_sku_region`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null"> and `bms_sku_region`.`del_flag` = #{query.delFlag}</if>
<if test="query.skuIds!=null and query.skuIds.size > 0">
and `bms_sku_region`.`sku_id` in
<foreach collection="query.skuIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
AND bms_rule.start_time &gt;= now()
AND bms_rule.end_time &lt;= now()
</where>
</select>
</mapper>

121
src/main/resources/mapper/goods/GoodsSkuMapper.xml

@ -0,0 +1,121 @@
<?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.goods.mapper.GoodsSkuMapper">
<resultMap id="goodsSkuMap" type="com.qs.serve.modules.goods.entity.GoodsSku" >
<result property="id" column="id"/>
<result property="skuCode" column="sku_code"/>
<result property="spuId" column="spu_id"/>
<result property="picUrl" column="pic_url"/>
<result property="salesPrice" column="sales_price"/>
<result property="marketPrice" column="market_price"/>
<result property="costPrice" column="cost_price"/>
<result property="specInfos" column="spec_infos"/>
<result property="stock" column="stock"/>
<result property="unitId" column="unit_id"/>
<result property="unitName" column="unit_name"/>
<result property="weight" column="weight"/>
<result property="volume" column="volume"/>
<result property="enable" column="enable"/>
<result property="version" column="version"/>
<result property="remark" column="remark"/>
<result property="updateTime" column="update_time"/>
<result property="createTime" column="create_time"/>
<result property="tenantId" column="tenant_id"/>
<result property="delFlag" column="del_flag"/>
<result property="createBy" column="create_by"/>
<result property="updateBy" column="update_by"/>
</resultMap>
<sql id="goodsSkuSql">
goods_sku.`id`,
goods_sku.`sku_code`,
goods_sku.`spu_id`,
goods_sku.`pic_url`,
goods_sku.`sales_price`,
goods_sku.`market_price`,
goods_sku.`cost_price`,
goods_sku.`spec_infos`,
goods_sku.`stock`,
goods_sku.`unit_id`,
goods_sku.`unit_name`,
goods_sku.`weight`,
goods_sku.`volume`,
goods_sku.`enable`,
goods_sku.`version`,
goods_sku.`remark`,
goods_sku.`update_time`,
goods_sku.`create_time`,
goods_sku.`tenant_id`,
goods_sku.`del_flag`,
goods_sku.`create_by`,
goods_sku.`update_by` </sql>
<select id="selectGoodsSkuList" parameterType="com.qs.serve.modules.goods.entity.GoodsSku" resultMap="goodsSkuMap">
SELECT <include refid="goodsSkuSql"/> FROM `goods_sku` `goods_sku`
<where>
<if test="query.id != null"> and `goods_sku`.`id` = #{query.id}</if>
<if test="query.skuCode != null and query.skuCode != ''"> and `goods_sku`.`sku_code` = #{query.skuCode}</if>
<if test="query.spuId != null"> and `goods_sku`.`spu_id` = #{query.spuId}</if>
<if test="query.salesPrice != null"> and `goods_sku`.`sales_price` = #{query.salesPrice}</if>
<if test="query.marketPrice != null"> and `goods_sku`.`market_price` = #{query.marketPrice}</if>
<if test="query.costPrice != null"> and `goods_sku`.`cost_price` = #{query.costPrice}</if>
<if test="query.specInfos != null and query.specInfos != ''"> and `goods_sku`.`spec_infos` = #{query.specInfos}</if>
<if test="query.stock != null"> and `goods_sku`.`stock` = #{query.stock}</if>
<if test="query.unitId != null"> and `goods_sku`.`unit_id` = #{query.unitId}</if>
<if test="query.unitName != null and query.unitName != ''"> and `goods_sku`.`unit_name` = #{query.unitName}</if>
<if test="query.weight != null"> and `goods_sku`.`weight` = #{query.weight}</if>
<if test="query.volume != null"> and `goods_sku`.`volume` = #{query.volume}</if>
<if test="query.enable != null and query.enable != ''"> and `goods_sku`.`enable` = #{query.enable}</if>
<if test="query.version != null"> and `goods_sku`.`version` = #{query.version}</if>
<if test="query.remark != null and query.remark != ''"> and `goods_sku`.`remark` = #{query.remark}</if>
<if test="query.updateTime != null"> and `goods_sku`.`update_time` = #{query.updateTime}</if>
<if test="query.createTime != null"> and `goods_sku`.`create_time` = #{query.createTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `goods_sku`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `goods_sku`.`del_flag` = #{query.delFlag}</if>
<if test="query.createBy != null and query.createBy != ''"> and `goods_sku`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `goods_sku`.`update_by` = #{query.updateBy}</if>
</where>
</select>
<select id="selectSkuVo" parameterType="com.qs.serve.modules.goods.entity.GoodsSku" resultMap="goodsSkuMap">
SELECT
`goods_spu`.`spuId`,
`goods_spu`.`name`,
<include refid="goodsSkuSql"/>
FROM `goods_sku` `goods_sku`
LEFT JOIN `goods_spu` ON `goods_sku`.`spu_id` = `goods_spu`.id
<where>
<if test="query.id != null"> and `goods_sku`.`id` = #{query.id}</if>
<if test="query.skuCode != null and query.skuCode != ''"> and `goods_sku`.`sku_code` = #{query.skuCode}</if>
<if test="query.spuId != null"> and `goods_sku`.`spu_id` = #{query.spuId}</if>
<if test="query.salesPrice != null"> and `goods_sku`.`sales_price` = #{query.salesPrice}</if>
<if test="query.marketPrice != null"> and `goods_sku`.`market_price` = #{query.marketPrice}</if>
<if test="query.costPrice != null"> and `goods_sku`.`cost_price` = #{query.costPrice}</if>
<if test="query.specInfos != null and query.specInfos != ''"> and `goods_sku`.`spec_infos` = #{query.specInfos}</if>
<if test="query.stock != null"> and `goods_sku`.`stock` = #{query.stock}</if>
<if test="query.unitId != null"> and `goods_sku`.`unit_id` = #{query.unitId}</if>
<if test="query.unitName != null and query.unitName != ''"> and `goods_sku`.`unit_name` = #{query.unitName}</if>
<if test="query.weight != null"> and `goods_sku`.`weight` = #{query.weight}</if>
<if test="query.volume != null"> and `goods_sku`.`volume` = #{query.volume}</if>
<if test="query.enable != null and query.enable != ''"> and `goods_sku`.`enable` = #{query.enable}</if>
<if test="query.version != null"> and `goods_sku`.`version` = #{query.version}</if>
<if test="query.remark != null and query.remark != ''"> and `goods_sku`.`remark` = #{query.remark}</if>
<if test="query.updateTime != null"> and `goods_sku`.`update_time` = #{query.updateTime}</if>
<if test="query.createTime != null"> and `goods_sku`.`create_time` = #{query.createTime}</if>
<if test="query.tenantId != null and query.tenantId != ''"> and `goods_sku`.`tenant_id` = #{query.tenantId}</if>
<if test="query.delFlag != null and query.delFlag != ''"> and `goods_sku`.`del_flag` = #{query.delFlag}</if>
<if test="query.createBy != null and query.createBy != ''"> and `goods_sku`.`create_by` = #{query.createBy}</if>
<if test="query.updateBy != null and query.updateBy != ''"> and `goods_sku`.`update_by` = #{query.updateBy}</if>
<if test="query.selectSkuIds!=null and query.selectSkuIds.size > 0">
and `goods_sku`.`id` in
<foreach collection="query.selectSkuIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
</if>
</where>
</select>
</mapper>
Loading…
Cancel
Save