diff --git a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java b/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java index 201c0144..8a6ab807 100644 --- a/src/main/java/com/qs/serve/common/framework/security/filter/SecurityRequestFilter.java +++ b/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("/")){ diff --git a/src/main/java/com/qs/serve/common/model/consts/GySysConst.java b/src/main/java/com/qs/serve/common/model/consts/GySysConst.java index 34598ff4..23f36f36 100644 --- a/src/main/java/com/qs/serve/common/model/consts/GySysConst.java +++ b/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"; diff --git a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java b/src/main/java/com/qs/serve/common/util/AuthContextUtils.java index 738326d6..e5c50b7d 100644 --- a/src/main/java/com/qs/serve/common/util/AuthContextUtils.java +++ b/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 THREAD_TENANT = new ThreadLocal<>(); + private final static ThreadLocal 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){ diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java index 12cf595f..531b29fc 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java +++ b/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); } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsRuleController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsRuleController.java new file mode 100644 index 00000000..9570383a --- /dev/null +++ b/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> getPage(BmsRule param){ + PageUtil.startPage(); + LambdaQueryWrapper ruleWrapper = new LambdaQueryWrapper<>(param); + List 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 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); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuRegionController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuRegionController.java deleted file mode 100644 index 94a3487e..00000000 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSkuRegionController.java +++ /dev/null @@ -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> getPage(BmsSkuRegion param){ - PageUtil.startPage(); - LambdaQueryWrapper skuRegionWrapper = new LambdaQueryWrapper<>(param); - List 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 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); - } - -} - diff --git a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java index cdf2de62..d440480d 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java +++ b/src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierController.java @@ -145,5 +145,7 @@ public class BmsSupplierController { return R.ok(); } + //todo 迁移 + } diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java index 9fbd94a0..e769c383 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierAddressApi.java +++ b/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("未授权"); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierApi.java index eefd1df8..3ad00bf1 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierApi.java +++ b/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> 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> 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 getById(@PathVariable("id") String id){ BmsSupplier bmsSupplier = bmsSupplierService.getById(id); return R.ok(bmsSupplier); diff --git a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java b/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java index ed56e8ff..1c6f15f7 100644 --- a/src/main/java/com/qs/serve/modules/bms/controller/api/BmsSupplierBandApi.java +++ b/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> 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> 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 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("未授权"); diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsRule.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsRule.java new file mode 100644 index 00000000..c067787d --- /dev/null +++ b/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; + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.java b/src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.java index 44609ea3..22d65e19 100644 --- a/src/main/java/com/qs/serve/modules/bms/entity/BmsSkuRegion.java +++ b/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 skuIds; + } diff --git a/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsRuleBo.java b/src/main/java/com/qs/serve/modules/bms/entity/bo/BmsRuleBo.java new file mode 100644 index 00000000..ab6ce0dd --- /dev/null +++ b/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 skuIds; + + /** 只售区域id */ + private List onlySaleRegionIds; + + /** 禁售区域id */ + private List 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; + +} diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsRuleMapper.java new file mode 100644 index 00000000..42290b52 --- /dev/null +++ b/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 { + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java b/src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java index a3dc46d0..95e138f6 100644 --- a/src/main/java/com/qs/serve/modules/bms/mapper/BmsSkuRegionMapper.java +++ b/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 { + /** + * 查询 + * @param skuRegion + * @return + */ + @InterceptorIgnore(tenantLine = "1") + List listSkuRegions(@Param("query") BmsSkuRegion skuRegion); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleMainService.java new file mode 100644 index 00000000..caf12ad6 --- /dev/null +++ b/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 goodsSkus){ + List skuIds = goodsSkus.stream().map(GoodsSku::getId).collect(Collectors.toList()); + List spuIds = goodsSkus.stream().map(GoodsSku::getSpuId).collect(Collectors.toList()); + List 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 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 spuIdsTemp = spuIds; + List 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 getSkuSupplierRules(String supplierId, List skuIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSkuSupplier::getSkuId,skuIds); + lqw.eq(BmsSkuSupplier::getSupplierId,supplierId); + return bmsSkuSupplierService.list(lqw); + } + + public List getSpuSupplierRules(String supplierId, List spuIds) { + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.in(BmsSkuSupplier::getSpuId,spuIds); + lqw.eq(BmsSkuSupplier::getSkuId,0); + lqw.eq(BmsSkuSupplier::getSupplierId,supplierId); + return bmsSkuSupplierService.list(lqw); + } + +} diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsRuleService.java new file mode 100644 index 00000000..1c0afa4b --- /dev/null +++ b/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 { + + /** + * 编辑 + * @param skuRegionBo + */ + void edit(BmsRuleBo skuRegionBo); + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java index 4efcc325..20f687a6 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSkuRegionService.java +++ b/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 { + /** + * 编辑 + * @param ruleId + * @param skuRegionBo + */ + void edit(Long ruleId,BmsRuleBo skuRegionBo); + + + /** + * 查询 + * @param skuRegion + * @return + */ + List listSkuRegions(BmsSkuRegion skuRegion); + + /** + * 检查规则 + * @param skuIds + * @param supplier + * @return + */ + int checkSkuRule(List skuIds, BmsSupplier supplier); + + boolean removeByRegionId(Long regionId); + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java index b25a4097..6b917815 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java +++ b/src/main/java/com/qs/serve/modules/bms/service/BmsSupplierService.java @@ -22,6 +22,8 @@ public interface BmsSupplierService extends IService { List listChild(String pid); + List listByRegionId(String regionId); + void editBatch(BmsSupplierBatchBo param); void flashParentId(); diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsRuleServiceImpl.java new file mode 100644 index 00000000..d9ae34aa --- /dev/null +++ b/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 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); + } + +} + diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java index 08bb9d99..6e7422b3 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuRegionServiceImpl.java +++ b/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 implements BmsSkuRegionService { + private GoodsSkuService goodsSkuService; + + @Override + public void edit(Long ruleId,BmsRuleBo skuRegionBo) { + List banSaleRegionIds = skuRegionBo.getBanSaleRegionIds(); + List onlySaleRegionIds = skuRegionBo.getOnlySaleRegionIds(); + if (CollectionUtil.isEmpty(skuRegionBo.getSkuIds())){ + Assert.throwEx("请选择商品"); + } + List 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 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 listSkuRegions(BmsSkuRegion skuRegion) { + return baseMapper.listSkuRegions(skuRegion); + } + + @Override + public int checkSkuRule(List skuIds, BmsSupplier supplier) { + int result = 0; + BmsSkuRegion param = new BmsSkuRegion(); + List 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 lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSkuRegion::getRegionId,regionId); + return this.remove(lqw); + } + + private void deleteByRuleId(Long ruleId){ + LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); + lqw.eq(BmsSkuRegion::getRuleId,ruleId); + this.remove(lqw); + } + + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuSupplierServiceImpl.java index 68039c7d..a212c3f1 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSkuSupplierServiceImpl.java +++ b/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 selectList(BmsSkuSupplier skuSupplier) { return baseMapper.selectList2(skuSupplier); } + } diff --git a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java index ca7ad416..af9244ed 100644 --- a/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/bms/service/impl/BmsSupplierServiceImpl.java @@ -67,6 +67,16 @@ public class BmsSupplierServiceImpl extends ServiceImpl listByRegionId(String regionId) { + LambdaQueryWrapper 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()) { diff --git a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpuSpec.java b/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpuSpec.java index 49f1cdb8..55f764a3 100644 --- a/src/main/java/com/qs/serve/modules/goods/entity/GoodsSpuSpec.java +++ b/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 */ diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java index dd67565a..73832071 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuSpecValueMapper.java @@ -25,7 +25,7 @@ public interface GoodsSkuSpecValueMapper extends BaseMapper { @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 { @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`" + diff --git a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java index ef090a57..0cdace43 100644 --- a/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java +++ b/src/main/java/com/qs/serve/modules/goods/mapper/GoodsSpuSpecMapper.java @@ -21,7 +21,7 @@ public interface GoodsSpuSpecMapper extends BaseMapper { * @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") diff --git a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java index bd5d7b18..8e3a1a95 100644 --- a/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSpecValueServiceImpl.java @@ -32,7 +32,7 @@ public class GoodsSpecValueServiceImpl extends ServiceImpl 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()); diff --git a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java b/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java index 6605caa6..fc01bc1a 100644 --- a/src/main/java/com/qs/serve/modules/oms/controller/api/OmsShoppingCartApi.java +++ b/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 skuSpecValues = goodsSkuSpecValueService.listSpecValueBySkuId(goodsSku.getId()); String specInfo = skuSpecValues.stream().map(GoodsSkuSpecValueVo::getSpecValue).collect(Collectors.joining(";")); shoppingCart.setSpecInfo(specInfo); diff --git a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java b/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java index 3cb13526..8f446981 100644 --- a/src/main/java/com/qs/serve/modules/oms/entity/bo/OmsShoppingCartSaveBo.java +++ b/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字") diff --git a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java index 0724eabd..4da0bb02 100644 --- a/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java @@ -29,7 +29,7 @@ public class OmsOrderServiceImpl extends ServiceImpl im @Override public OmsConfirmOrderVo generateConfirmOrder(OmsConfirmOrderBo confirmOrder) { List shoppingCarts = omsShoppingCartService.listByIds(confirmOrder.getShoppingCartIds(),confirmOrder.getSupplierId()); - + //检验规则 //检验库存 //计算供应商折扣 //计算是否有活动优惠 diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 850ccb5a..203bdec3 100644 --- a/src/main/resources/application-dev.yml +++ b/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 diff --git a/src/main/resources/mapper/bms/BmsSkuRegionMapper.xml b/src/main/resources/mapper/bms/BmsSkuRegionMapper.xml new file mode 100644 index 00000000..da610d44 --- /dev/null +++ b/src/main/resources/mapper/bms/BmsSkuRegionMapper.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + + + + + 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` + + + +