Browse Source

下单规则整合

mssql
Yen 3 years ago
parent
commit
4b5fee97b7
  1. 2
      src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java
  2. 1
      src/main/java/com/qs/serve/common/model/consts/GySysConst.java
  3. 28
      src/main/java/com/qs/serve/common/util/AuthContextUtils.java
  4. 30
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  5. 90
      src/main/java/com/qs/serve/modules/bms/controller/BmsRuleController.java
  6. 101
      src/main/java/com/qs/serve/modules/bms/controller/BmsSkuRegionController.java
  7. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java
  8. 2
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java
  9. 4
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierApi.java
  10. 12
      src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java
  11. 88
      src/main/java/com/qs/serve/modules/bms/entity/BmsRule.java
  12. 18
      src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.java
  13. 47
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsRuleBo.java
  14. 14
      src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleMapper.java
  15. 17
      src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java
  16. 82
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java
  17. 21
      src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.java
  18. 36
      src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java
  19. 2
      src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java
  20. 38
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleServiceImpl.java
  21. 97
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java
  22. 2
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuSupplierServiceImpl.java
  23. 10
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java
  24. 2
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpuSpec.java
  25. 4
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java
  26. 2
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java
  27. 2
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java
  28. 4
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java
  29. 28
      src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java
  30. 9
      src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java
  31. 2
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  32. 7
      src/main/resources/application-dev.yml
  33. 63
      src/main/resources/mapper/bms/BmsSkuRegionMapper.xml

2
src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java

@ -52,6 +52,8 @@ public class SecurityRequestFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException {
String supplierId = request.getHeader(GySysConst.SUPPLIER_PROP);
AuthContextUtils.setSupplierId(supplierId);
//移除前缀
String url = request.getRequestURI();
if(!StringUtils.isEmpty(contextPath)&&!contextPath.equals("/")){

1
src/main/java/com/qs/serve/common/model/consts/GySysConst.java

@ -17,6 +17,7 @@ public class GySysConst {
public static final String USER_AGENT_PROP = "User-Agent";
public static final String TENANT_PROP = "tenant-id";
public static final String SUPPLIER_PROP = "supplierId";
/** 系统租户数据库列 */
public static final String TENANT_COLUMN = "tenant_id";

28
src/main/java/com/qs/serve/common/util/AuthContextUtils.java

@ -3,7 +3,12 @@ package com.qs.serve.common.util;
import com.qs.serve.common.framework.security.model.LoginUser;
import com.qs.serve.common.framework.security.model.LoginUserType;
import com.qs.serve.common.model.consts.GySysConst;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.HttpCode;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplierUser;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.bms.service.BmsSupplierUserService;
import lombok.experimental.UtilityClass;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContext;
@ -21,6 +26,7 @@ import java.util.Objects;
public class AuthContextUtils {
private final static ThreadLocal<String> THREAD_TENANT = new ThreadLocal<>();
private final static ThreadLocal<Long> THREAD_SUPPLIER = new ThreadLocal<>();
public static String getAppId(){
return getAppId(true);
@ -80,6 +86,28 @@ public class AuthContextUtils {
public static String getTenant(){return THREAD_TENANT.get();}
public static void setSupplierId(String value){
if(value!=null){
try {
THREAD_SUPPLIER.set(Long.parseLong(value));
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
public static BmsSupplier getCurrentSupplier(){
Long supplierId = AuthContextUtils.getSupplierId();
BmsSupplierUserService supplierUserService = SpringUtils.getBean(BmsSupplierUserService.class);
BmsSupplierService supplierService = SpringUtils.getBean(BmsSupplierService.class);
if(supplierUserService.checkWxUserSupplier(supplierId)){
Assert.throwEx("供应商无效或未授权");
}
return supplierService.getById(supplierId);
}
public static Long getSupplierId(){return THREAD_SUPPLIER.get();}
public static void removeTenant(){THREAD_TENANT.remove();}
public static LoginUser getLoginUser(boolean throwEx){

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

@ -9,6 +9,8 @@ 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.BmsSupplierService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -32,6 +34,8 @@ import java.util.List;
public class BmsRegionController {
private BmsRegionService bmsRegionService;
private BmsSupplierService bmsSupplierService;
private BmsSkuRegionService bmsSkuRegionService;
/**
* 翻页查询
@ -72,7 +76,7 @@ public class BmsRegionController {
}
/**
* 根据ID更新
* 更新(只允许改名称)
* @param regionBo
* @return
*/
@ -80,8 +84,9 @@ public class BmsRegionController {
@SysLog(module = SystemModule.BASE, title = "区域档案", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:region:update')")
public R<?> updateById(@RequestBody @Valid BmsRegionBatchBo.BmsRegionBo regionBo){
BmsRegion param = CopierUtil.copy(regionBo,new BmsRegion());
bmsRegionService.flushLevel(param);
BmsRegion param = new BmsRegion();
param.setId(regionBo.getId());
param.setName(regionBo.getName());
boolean result = bmsRegionService.updateById(param);
return R.isTrue(result);
}
@ -105,7 +110,7 @@ public class BmsRegionController {
}
/**
* (批量)编辑
* (批量)编辑(更新只允许改名称)
* @param regionBo
* @return
*/
@ -115,12 +120,15 @@ public class BmsRegionController {
public R<?> editBatch(@RequestBody @Valid BmsRegionBatchBo regionBo){
ValidateTools.valid(regionBo.getRegionList());
for (BmsRegionBatchBo.BmsRegionBo bmsRegionBo : regionBo.getRegionList()) {
BmsRegion region = CopierUtil.copy(bmsRegionBo,new BmsRegion());
BmsRegion dbRegion = bmsRegionService.getByCode(region.getCode());
BmsRegion dbRegion = bmsRegionService.getByCode(bmsRegionBo.getCode());
if(dbRegion==null){
BmsRegion region = CopierUtil.copy(bmsRegionBo,new BmsRegion());
bmsRegionService.save(region);
}else {
bmsRegionService.updateById(region);
BmsRegion param = new BmsRegion();
param.setId(bmsRegionBo.getId());
param.setName(bmsRegionBo.getName());
bmsRegionService.updateById(param);
}
}
bmsRegionService.flushAllLevel();
@ -137,8 +145,14 @@ public class BmsRegionController {
@PreAuthorize("hasRole('bms:region:delete')")
public R<?> deleteById(@PathVariable("id") String id){
if(bmsRegionService.listChild(id).size()>0){
return R.error("含有子节点无法删除");
return R.error("含有子区域无法删除");
}
//如果有供应商则不允许删除
if(bmsSupplierService.listByRegionId(id).size()>0){
return R.error("地区含有供应商无法删除");
}
//删除商品限制
bmsSkuRegionService.removeByRegionId(Long.parseLong(id));
boolean result = bmsRegionService.removeById(id);
return R.isTrue(result);
}

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

@ -0,0 +1,90 @@
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 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.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 java.util.List;
/**
* 基础档案 规则
* @author YenHex
* @since 2022-10-19
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/rule")
public class BmsRuleController {
private BmsRuleService bmsRuleService;
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:rule:query')")
public R<PageVo<BmsRule>> getPage(BmsRule param){
PageUtil.startPage();
LambdaQueryWrapper<BmsRule> ruleWrapper = new LambdaQueryWrapper<>(param);
List<BmsRule> list = bmsRuleService.list(ruleWrapper);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:rule:query')")
public R<BmsRule> getById(@PathVariable("id") String id){
BmsRule bmsRule = bmsRuleService.getById(id);
return R.ok(bmsRule);
}
/**
* 编辑
* @param skuRegionBo
* @return
*/
@PostMapping("/edit")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:rule:update')")
public R<?> updateById(@RequestBody @Valid BmsRuleBo skuRegionBo){
bmsRuleService.edit(skuRegionBo);
return R.ok();
}
/**
* 删除
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "规则", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:rule:delete')")
public R<?> deleteById(@PathVariable("id") Long id){
boolean result = bmsRuleService.removeById(id);
return R.isTrue(result);
}
}

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

@ -1,101 +0,0 @@
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.BmsSkuRegion;
import com.qs.serve.modules.bms.service.BmsSkuRegionService;
import javax.validation.Valid;
import java.util.List;
/**
* 基础档案 sku销售区域
* @author YenHex
* @since 2022-10-17
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("bms/skuRegion")
public class BmsSkuRegionController {
private BmsSkuRegionService bmsSkuRegionService;
/**
* 翻页查询
* @param param
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:skuRegion:query')")
public R<PageVo<BmsSkuRegion>> getPage(BmsSkuRegion param){
PageUtil.startPage();
LambdaQueryWrapper<BmsSkuRegion> skuRegionWrapper = new LambdaQueryWrapper<>(param);
List<BmsSkuRegion> list = bmsSkuRegionService.list(skuRegionWrapper);
return R.byPageHelperList(list);
}
/**
* 根据ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "sku销售区域", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:skuRegion:query')")
public R<BmsSkuRegion> getById(@PathVariable("id") String id){
BmsSkuRegion bmsSkuRegion = bmsSkuRegionService.getById(id);
return R.ok(bmsSkuRegion);
}
/**
* 根据ID更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "sku销售区域", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:skuRegion:update')")
public R<?> updateById(@RequestBody @Valid BmsSkuRegion param){
boolean result = bmsSkuRegionService.updateById(param);
return R.isTrue(result);
}
/**
* 新增sku销售区域
* @param param
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "sku销售区域", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:skuRegion:insert')")
public R<?> save(@RequestBody @Valid BmsSkuRegion param){
boolean result = bmsSkuRegionService.save(param);
return R.isTrue(result);
}
/**
* 删除sku销售区域
* @param id
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "sku销售区域", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:skuRegion:delete')")
public R<?> deleteById(@PathVariable("id") String id){
boolean result = bmsSkuRegionService.removeById(id);
return R.isTrue(result);
}
}

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

@ -145,5 +145,7 @@ public class BmsSupplierController {
return R.ok();
}
//todo 迁移
}

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

@ -119,7 +119,7 @@ public class BmsSupplierAddressApi {
*/
@PostMapping("/setDefault")
@Transactional(rollbackFor = Exception.class)
public R<?> setDefault(@RequestBody @Valid Long id){
public R<?> setDefault(@Valid Long id){
BmsSupplierAddress supplierAddress = bmsSupplierAddressService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(supplierAddress.getSupplierId())){
return R.error("未授权");

4
src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierApi.java

@ -42,7 +42,6 @@ public class BmsSupplierApi {
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:supplier:query')")
public R<PageVo<BmsSupplier>> getPage(BmsSupplier param){
WxUser wxUser = wxUserService.getCurrentWxUser();
if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){
@ -60,7 +59,6 @@ public class BmsSupplierApi {
* @return
*/
@GetMapping("/tree")
@PreAuthorize("hasRole('bms:supplier:query')")
public R<List<BmsSupplierTreeVo>> getTree(BmsSupplier param){
WxUser wxUser = wxUserService.getCurrentWxUser();
if(wxUser.getSysUserId()==null||wxUser.getSysUserId().equals("0")){
@ -85,8 +83,6 @@ public class BmsSupplierApi {
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "供应商", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:supplier:query')")
public R<BmsSupplier> getById(@PathVariable("id") String id){
BmsSupplier bmsSupplier = bmsSupplierService.getById(id);
return R.ok(bmsSupplier);

12
src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java

@ -38,7 +38,6 @@ public class BmsSupplierBandApi {
* @return
*/
@GetMapping("/page")
@PreAuthorize("hasRole('bms:supplierBand:query')")
public R<PageVo<BmsSupplierBand>> getPage(BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
@ -55,7 +54,6 @@ public class BmsSupplierBandApi {
* @return
*/
@GetMapping("/list")
@PreAuthorize("hasRole('bms:supplierBand:query')")
public R<List<BmsSupplierBand>> getList(BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
@ -71,8 +69,6 @@ public class BmsSupplierBandApi {
* @return
*/
@GetMapping("/getById/{id}")
@SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.QUERY)
@PreAuthorize("hasRole('bms:supplierBand:query')")
public R<BmsSupplierBand> getById(@PathVariable("id") String id){
BmsSupplierBand bmsSupplierBand = bmsSupplierBandService.getById(id);
return R.ok(bmsSupplierBand);
@ -86,8 +82,6 @@ public class BmsSupplierBandApi {
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:supplierBand:update')")
public R<?> updateById(@RequestBody @Valid BmsSupplierBand param){
BmsSupplierBand bmsSupplierBand = bmsSupplierBandService.getById(param.getId());
if(bmsSupplierUserService.checkWxUserSupplier(bmsSupplierBand.getSupplierId())){
@ -103,8 +97,6 @@ public class BmsSupplierBandApi {
* @return
*/
@PostMapping("/save")
@SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:supplierBand:insert')")
public R<?> save(@RequestBody @Valid BmsSupplierBand param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
@ -119,9 +111,7 @@ public class BmsSupplierBandApi {
* @return
*/
@DeleteMapping("/deleteById/{id}")
@SysLog(module = SystemModule.BASE, title = "供应商地址", biz = BizType.DELETE)
@PreAuthorize("hasRole('bms:supplierBand:delete')")
public R<?> deleteById(@PathVariable("id") String id){
public R<?> deleteById(@PathVariable("id") Long id){
BmsSupplierBand bmsSupplierBand = bmsSupplierBandService.getById(id);
if(bmsSupplierUserService.checkWxUserSupplier(bmsSupplierBand.getSupplierId())){
return R.error("未授权");

88
src/main/java/com/qs/serve/modules/bms/entity/BmsRule.java

@ -0,0 +1,88 @@
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-19
*/
@Data
@TableName("bms_rule")
public class BmsRule implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 规则名称 */
@NotBlank(message = "规则名称不能为空")
@Length(max = 255,message = "规则名称长度不能超过255字")
private String name;
/** 状态:0->关闭;1->启用; */
@NotNull(message = "状态:0->关闭;1->启用;不能为空")
private Integer status;
/** 开始时间 */
@Length(max = 0,message = "开始时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime startTime;
/** 结束时间 */
@Length(max = 0,message = "结束时间长度不能超过0字")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime endTime;
/** 备注 */
@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;
}

18
src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.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;
@ -15,9 +16,9 @@ import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* sku销售区域 实体类
* 禁销区域 实体类
* @author YenHex
* @since 2022-10-17
* @since 2022-10-19
*/
@Data
@TableName("bms_sku_region")
@ -29,8 +30,8 @@ public class BmsSkuRegion implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
/** 商品Id */
@NotNull(message = "商品Id不能为空")
/** 商品id */
@NotNull(message = "商品id不能为空")
private Long spuId;
/** skuId */
@ -41,7 +42,11 @@ public class BmsSkuRegion implements Serializable {
@NotNull(message = "区域ID不能为空")
private Long regionId;
/** 类型:0->正常;1->禁售 */
/** 规则ID */
private Long ruleId;
/** 类型:0->只售;1->禁售 */
@NotNull(message = "类型:0->只售;1->禁售不能为空")
private Integer typeFlag;
/** 创建时间 */
@ -74,5 +79,8 @@ public class BmsSkuRegion implements Serializable {
@JsonProperty
private Boolean delFlag;
@TableField(exist = false)
private List<Long> skuIds;
}

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

@ -0,0 +1,47 @@
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;
/**
* @author YenHex
* @since 2022/10/17
*/
@Data
public class BmsRuleBo {
private Long id;
@NotNull
private String title;
private String remark;
/** skuId */
@NotNull
private List<Long> skuIds;
/** 只售区域id */
private List<Long> onlySaleRegionIds;
/** 禁售区域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/BmsRuleMapper.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.BmsRule;
/**
* 规则 Mapper
* @author YenHex
* @date 2022-10-19
*/
public interface BmsRuleMapper extends BaseMapper<BmsRule> {
}

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

@ -1,14 +1,27 @@
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;
/**
* sku销售区域 Mapper
* 禁销区域 Mapper
* @author YenHex
* @date 2022-10-17
* @date 2022-10-18
*/
public interface BmsSkuRegionMapper extends BaseMapper<BmsSkuRegion> {
/**
* 查询
* @param skuRegion
* @return
*/
@InterceptorIgnore(tenantLine = "1")
List<BmsSkuRegion> listSkuRegions(@Param("query") BmsSkuRegion skuRegion);
}

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

@ -0,0 +1,82 @@
package com.qs.serve.modules.bms.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.modules.bms.entity.BmsSkuSupplier;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.service.OmsShoppingCartService;
import com.qs.serve.modules.wx.service.WxUserService;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.*;
import java.util.stream.Collectors;
/**
* @author YenHex
* @since 2022/10/20
*/
@Slf4j
@Service
@AllArgsConstructor
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());
List<Long> spuIds = goodsSkus.stream().map(GoodsSku::getSpuId).collect(Collectors.toList());
List<BmsSkuSupplier> skuSupplierRules = this.getSkuSupplierRules(supplier.getId(),skuIds);
if(skuSupplierRules.size()>0){
boolean isBaned = skuSupplierRules.stream().anyMatch(skuSupplier -> skuSupplier.getBanStatus().equals(1));
if(isBaned){return false;}
//过来设置允许的sku
skuIds = skuIds.stream().filter(skuId->
skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId))
).collect(Collectors.toList());
}
List<BmsSkuSupplier> spuSupplierRules = this.getSpuSupplierRules(supplier.getId(),spuIds);
if(spuSupplierRules.size()>0){
boolean isBaned = spuSupplierRules.stream().anyMatch(spuSupplier -> spuSupplier.getBanStatus().equals(1));
if(isBaned){return false;}
//过来设置允许的sku
spuIds = skuIds.stream().filter(skuId->
skuSupplierRules.stream().noneMatch(rule-> rule.getSkuId().equals(skuId))
).collect(Collectors.toList());
}
//过滤通行spu的sku
final List<Long> spuIdsTemp = spuIds;
List<Long> passSkuIds = goodsSkus.stream()
.filter(goodsSku -> spuIdsTemp.stream().anyMatch(spuId->goodsSku.getSpuId().equals(spuId)))
.map(GoodsSku::getId)
.collect(Collectors.toList());
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;
}
public List<BmsSkuSupplier> getSkuSupplierRules(String supplierId, List<Long> skuIds) {
LambdaQueryWrapper<BmsSkuSupplier> lqw = new LambdaQueryWrapper<>();
lqw.eq(BmsSkuSupplier::getSkuId,skuIds);
lqw.eq(BmsSkuSupplier::getSupplierId,supplierId);
return bmsSkuSupplierService.list(lqw);
}
public List<BmsSkuSupplier> getSpuSupplierRules(String supplierId, List<Long> spuIds) {
LambdaQueryWrapper<BmsSkuSupplier> lqw = new LambdaQueryWrapper<>();
lqw.in(BmsSkuSupplier::getSpuId,spuIds);
lqw.eq(BmsSkuSupplier::getSkuId,0);
lqw.eq(BmsSkuSupplier::getSupplierId,supplierId);
return bmsSkuSupplierService.list(lqw);
}
}

21
src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.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.BmsRule;
import com.qs.serve.modules.bms.entity.bo.BmsRuleBo;
/**
* 规则 服务接口
* @author YenHex
* @date 2022-10-19
*/
public interface BmsRuleService extends IService<BmsRule> {
/**
* 编辑
* @param skuRegionBo
*/
void edit(BmsRuleBo skuRegionBo);
}

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

@ -1,14 +1,46 @@
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;
/**
* sku销售区域 服务接口
* 禁销区域 服务接口
* @author YenHex
* @date 2022-10-17
* @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);
}

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

@ -22,6 +22,8 @@ public interface BmsSupplierService extends IService<BmsSupplier> {
List<BmsSupplier> listChild(String pid);
List<BmsSupplier> listByRegionId(String regionId);
void editBatch(BmsSupplierBatchBo param);
void flashParentId();

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

@ -0,0 +1,38 @@
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;
import com.qs.serve.modules.bms.entity.BmsRule;
import com.qs.serve.modules.bms.service.BmsRuleService;
import com.qs.serve.modules.bms.mapper.BmsRuleMapper;
/**
* 规则 服务实现类
* @author YenHex
* @since 2022-10-19
*/
@Slf4j
@Service
@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);
}
}

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

@ -1,6 +1,15 @@
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;
@ -8,15 +17,99 @@ 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;
/**
* sku销售区域 服务实现类
* 禁销区域 服务实现类
* @author YenHex
* @since 2022-10-17
* @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);
}
}

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

@ -1,5 +1,6 @@
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.modules.bms.entity.vo.BmsSkuSupplierVo;
import lombok.AllArgsConstructor;
@ -25,5 +26,6 @@ public class BmsSkuSupplierServiceImpl extends ServiceImpl<BmsSkuSupplierMapper,
public List<BmsSkuSupplierVo> selectList(BmsSkuSupplier skuSupplier) {
return baseMapper.selectList2(skuSupplier);
}
}

10
src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java

@ -67,6 +67,16 @@ public class BmsSupplierServiceImpl extends ServiceImpl<BmsSupplierMapper,BmsSup
return this.list(lqw);
}
@Override
public List<BmsSupplier> listByRegionId(String regionId) {
LambdaQueryWrapper<BmsSupplier> lqw = new LambdaQueryWrapper<>();
lqw.and(w->
w.eq(BmsSupplier::getRegionFirst,regionId)
.or().eq(BmsSupplier::getRegionSecond,regionId)
.or().eq(BmsSupplier::getRegionThird,regionId));
return this.list(lqw);
}
@Override
public void editBatch(BmsSupplierBatchBo batchBo) {
for (BmsSupplierBatchBo.BmsSupplierDto param : batchBo.getSupplierList()) {

2
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpuSpec.java

@ -26,7 +26,7 @@ public class GoodsSpuSpec implements Serializable {
private static final long serialVersionUID = 1L;
/** PK */
@TableId(type = IdType.ASSIGN_UUID)
@TableId(type = IdType.AUTO)
private String id;
/** spu_id */

4
src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java

@ -25,7 +25,7 @@ public interface GoodsSkuSpecValueMapper extends BaseMapper<GoodsSkuSpecValue> {
@Select("SELECT " +
" `goods_sku_spec_value`.`sku_id` as `skuId`," +
" `goods_spec_value`.`spec_id` as `specId`," +
" `goods_spec`.`name` as `spec_name` as `specName`," +
" `goods_spec`.`name` as `specName`," +
" `goods_sku_spec_value`.`spec_value_id` as `specValueId`," +
" `goods_spec_value`.`name` as `specValue`," +
" `goods_sku_spec_value`.`sort` as `specValueSort`" +
@ -47,7 +47,7 @@ public interface GoodsSkuSpecValueMapper extends BaseMapper<GoodsSkuSpecValue> {
@Select("SELECT " +
" `goods_sku_spec_value`.`sku_id` as `skuId`," +
" `goods_spec_value`.`spec_id` as `specId`," +
" `goods_spec`.`name` as `spec_name` as `specName`," +
" `goods_spec`.`name` as `specName`," +
" `goods_sku_spec_value`.`spec_value_id` as `specValueId`," +
" `goods_spec_value`.`name` as `specValue`," +
" `goods_sku_spec_value`.`sort` as `specValueSort`" +

2
src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java

@ -21,7 +21,7 @@ public interface GoodsSpuSpecMapper extends BaseMapper<GoodsSpuSpec> {
* @return
*/
@InterceptorIgnore(tenantLine = "1")
@Select("select goods_spec.id,goods_spec.`name`,goods_spu_spec.sort from goods_spu_spec " +
@Select("select goods_spec.id specId,goods_spec.`name`,goods_spu_spec.sort from goods_spu_spec " +
" LEFT JOIN goods_spec" +
" ON goods_spu_spec.spec_id = goods_spec.id" +
" WHERE spu_id = #{spuId} ORDER BY goods_spu_spec.sort DESC")

2
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java

@ -32,7 +32,7 @@ public class GoodsSpecValueServiceImpl extends ServiceImpl<GoodsSpecValueMapper,
GoodsSpecValue tasteValue = this.getBySpec(specId,value);
if(tasteValue==null){
tasteValue = new GoodsSpecValue();
tasteValue.setSpecId(1L);
tasteValue.setSpecId(specId);
tasteValue.setName(value);
this.save(tasteValue);
}

4
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpuServiceImpl.java

@ -151,6 +151,10 @@ public class GoodsSpuServiceImpl extends ServiceImpl<GoodsSpuMapper,GoodsSpu> im
if(goodsSku==null){
goodsSku = CopierUtil.copy(tasteProduct,new GoodsSku());
}
if(!goodsSku.getSpuId().equals(spu.getId())){
log.error("新增sku失败:sku编码'{}'已保存'{}'到商品编码",goodsSku.getSkuCode(),spu.getSpuCode());
return;
}
goodsSku.setSkuCode(tasteProduct.getInvCode());
goodsSku.setSpuId(spu.getId());
goodsSku.setPicUrl(tasteProduct.getInvPicUrl());

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

@ -6,9 +6,12 @@ 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.service.BmsSupplierUserService;
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;
@ -28,6 +31,8 @@ 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;
@ -44,7 +49,9 @@ public class OmsShoppingCartApi {
private OmsShoppingCartService omsShoppingCartService;
private GoodsSkuSpecValueService goodsSkuSpecValueService;
private BmsRuleMainService bmsRuleMainService;
private BmsSupplierUserService bmsSupplierUserService;
private BmsSupplierService bmsSupplierService;
private GoodsSpuService goodsSpuService;
private GoodsSkuService goodsSkuService;
private WxUserService wxUserService;
@ -78,11 +85,10 @@ public class OmsShoppingCartApi {
*/
@PostMapping("/updateById")
public R<?> updateById(@RequestBody @Valid OmsShoppingCartUpdateBo param){
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
OmsShoppingCart shoppingCart = omsShoppingCartService.getById(param.getCartId());
if(bmsSupplierUserService.checkWxUserSupplier(shoppingCart.getSupplierId(),shoppingCart.getUserId())){
return R.error("未授权");
}
shoppingCart.setQuantity(param.getQuantity());
shoppingCart.setSupplierId(Long.parseLong(supplier.getId()));
omsShoppingCartService.updateById(shoppingCart);
return R.ok();
}
@ -94,16 +100,20 @@ public class OmsShoppingCartApi {
*/
@PostMapping("/save")
public R<?> save(@RequestBody @Valid OmsShoppingCartSaveBo param){
if(bmsSupplierUserService.checkWxUserSupplier(param.getSupplierId())){
return R.error("未授权");
}
BmsSupplier supplier = AuthContextUtils.getCurrentSupplier();
OmsShoppingCart shoppingCart = CopierUtil.copy(param,new OmsShoppingCart());
WxUser wxUser = wxUserService.getCurrentWxUser(true);
shoppingCart.setUserId(wxUser.getSysUserId());
GoodsSpu goodsSpu = goodsSpuService.getById(shoppingCart.getSpuId());
shoppingCart.setSpuName(goodsSpu.getName());
GoodsSku goodsSku = goodsSkuService.getById(shoppingCart.getSkuId());
shoppingCart.setPicUrl(goodsSku.getPicUrl());
shoppingCart.setSpuId(goodsSku.getSpuId());
GoodsSpu goodsSpu = goodsSpuService.getById(shoppingCart.getSpuId());
shoppingCart.setSpuName(goodsSpu.getName());
//检验拦截
boolean ruleResult = bmsRuleMainService.check(supplier,Arrays.asList(goodsSku));
if(!ruleResult){
return R.error("部分产品未授权");
}
List<GoodsSkuSpecValueVo> skuSpecValues = goodsSkuSpecValueService.listSpecValueBySkuId(goodsSku.getId());
String specInfo = skuSpecValues.stream().map(GoodsSkuSpecValueVo::getSpecValue).collect(Collectors.joining(";"));
shoppingCart.setSpecInfo(specInfo);

9
src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java

@ -14,15 +14,6 @@ import java.math.BigDecimal;
@Data
public class OmsShoppingCartSaveBo {
/** 供应商ID */
@NotNull(message = "供应商不能为空")
private Long supplierId;
/** 商品SPU */
@NotBlank(message = "商品SPU不能为空")
@Length(max = 32,message = "商品SPU长度不能超过32字")
private Long spuId;
/** 商品SKU */
@NotBlank(message = "商品SKU不能为空")
@Length(max = 32,message = "商品SKU长度不能超过32字")

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

@ -29,7 +29,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
@Override
public OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder) {
List<OmsShoppingCart> shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),confirmOrder.getSupplierId());
//检验规则
//检验库存
//计算供应商折扣
//计算是否有活动优惠

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

@ -16,7 +16,7 @@ tencent:
#服务配置
server:
port: 7400
port: 7403
servlet:
context-path: /
#SpringBoot相关
@ -27,8 +27,9 @@ spring:
#username: sa
#password: 123456Aa
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.0.9:3336/qs-base-questionnaire?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
url: jdbc:mysql://192.168.0.9:3306/jsl_mall_qs_dev?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: kpjsl
#username: mpw:MN24AzePZ6U0rE61PbfX1A==
password: 123456
redis:
database: 4

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

@ -0,0 +1,63 @@
<?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>
Loading…
Cancel
Save