Browse Source

feat: 添加下单商品规则

feat:添加成本中心是否销售费用标识
checkBack
Yen 1 year ago
parent
commit
d63347284f
  1. 3
      src/main/java/com/qs/serve/modules/bms/entity/BmsCostCenter.java
  2. 2
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsCostCenterBo.java
  3. 3
      src/main/java/com/qs/serve/modules/bms/entity/vo/BmsCostCenterTreeVo.java
  4. 64
      src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java
  5. 52
      src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java
  6. 96
      src/main/java/com/qs/serve/modules/goods/entity/GoodsAccredit.java
  7. 95
      src/main/java/com/qs/serve/modules/goods/entity/GoodsAccreditItem.java
  8. 12
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  9. 49
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java
  10. 42
      src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java
  11. 14
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditItemMapper.java
  12. 14
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java
  13. 14
      src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditItemService.java
  14. 20
      src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java
  15. 9
      src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java
  16. 22
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditItemServiceImpl.java
  17. 264
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java
  18. 130
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java
  19. 7
      src/main/java/com/qs/serve/modules/oms/service/impl/OmsOrderServiceImpl.java
  20. 1
      src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java
  21. 11
      src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

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

@ -49,6 +49,9 @@ public class BmsCostCenter implements Serializable {
/** 是否所有人可见 */ /** 是否所有人可见 */
private Integer visibleFlag; private Integer visibleFlag;
/** 是否销售费用 */
private Integer saleCostFlag;
/** 父级节点 */ /** 父级节点 */
@NotNull(message = "父级节点不能为空") @NotNull(message = "父级节点不能为空")
private Long pid; private Long pid;

2
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsCostCenterBo.java

@ -45,6 +45,8 @@ public class BmsCostCenterBo {
/** 是否所有人可见 */ /** 是否所有人可见 */
private Integer visibleFlag; private Integer visibleFlag;
/** 是否销售费用 */
private Integer saleCostFlag;
/** 销售区域id */ /** 销售区域id */
private List<String> saleRegionId; private List<String> saleRegionId;

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

@ -30,6 +30,9 @@ public class BmsCostCenterTreeVo extends TreeNode {
@NotNull(message = "父级id不能为空") @NotNull(message = "父级id不能为空")
private Long pid; private Long pid;
/** 是否销售费用 */
private Integer saleCostFlag;
/** 备注 */ /** 备注 */
@Length(max = 255,message = "备注长度不能超过255字") @Length(max = 255,message = "备注长度不能超过255字")
private String remark; private String remark;

64
src/main/java/com/qs/serve/modules/goods/controller/GoodsAccreditController.java

@ -0,0 +1,64 @@
package com.qs.serve.modules.goods.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.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.modules.goods.entity.bo.GoodsAccreditBo;
import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo;
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.goods.entity.GoodsAccredit;
import com.qs.serve.modules.goods.service.GoodsAccreditService;
import javax.validation.Valid;
import java.util.List;
/**
* 商品 授权规则
* @author YenHex
* @since 2024-04-01
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("goods/accredit")
public class GoodsAccreditController {
private GoodsAccreditService goodsAccreditService;
/**
* ID查询
* @param cateId
* @param spuId
* @param skuId
* @return
*/
@GetMapping("/getById")
public R<GoodsAccreditVo> getById(String cateId,String spuId,String skuId){
GoodsAccreditVo goodsAccredit = goodsAccreditService.getById(cateId,spuId,skuId);
return R.ok(goodsAccredit);
}
/**
* 更新
* @param param
* @return
*/
@PostMapping("/updateById")
@SysLog(module = SystemModule.GOODS, title = "规则", biz = BizType.UPDATE)
public R<?> updateById(@RequestBody @Valid GoodsAccreditBo param){
goodsAccreditService.modify(param);
return R.ok();
}
}

52
src/main/java/com/qs/serve/modules/goods/controller/GoodsSpuController.java

@ -139,43 +139,77 @@ public class GoodsSpuController {
GoodsRuleItemDTO ruleItemDTO = goodsRuleService.buildGoodsRuleItemDTO(ruleItems); GoodsRuleItemDTO ruleItemDTO = goodsRuleService.buildGoodsRuleItemDTO(ruleItems);
if(ruleItemDTO!=null){ if(ruleItemDTO!=null){
if(ruleItemDTO.getNotInCategoryIds()!=null){
if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){ if(CollUtil.isEmpty(param.getSelectNotIntCateIds())){
param.setSelectNotIntCateIds(ruleItemDTO.getNotInCategoryIds()); param.setSelectNotIntCateIds(ruleItemDTO.getNotInCategoryIds());
}else if (ruleItemDTO.getNotInCategoryIds()!=null){ }else{
param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds()); param.getSelectNotIntCateIds().addAll(ruleItemDTO.getNotInCategoryIds());
} }
}
if(CollUtil.isNotEmpty(ruleItemDTO.getOnlyCategoryIds())){
if (CollUtil.isEmpty(param.getSelectCateIds())){ if (CollUtil.isEmpty(param.getSelectCateIds())){
param.setSelectCateIds(ruleItemDTO.getOnlyCategoryIds()); param.setSelectCateIds(ruleItemDTO.getOnlyCategoryIds());
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlyCategoryIds())){ }else{
List<String> onlyIds = ruleItemDTO.getOnlyCategoryIds();
List<GoodsCategory> onlyCategoryList = goodsCategoryService.listByIds(onlyIds);
for (GoodsCategory category : onlyCategoryList) {
List<GoodsCategory> childList = goodsCategoryService.list(new LambdaQueryWrapper<GoodsCategory>()
.likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_"));
if(CollUtil.isNotEmpty(childList)){
List<String> childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
onlyIds.addAll(childIds);
}
}
List<String> selectCateIds = param.getSelectCateIds();
List<GoodsCategory> goodsCategoryList = goodsCategoryService.listByIds(selectCateIds);
for (GoodsCategory category : goodsCategoryList) {
List<GoodsCategory> childList = goodsCategoryService.list(new LambdaQueryWrapper<GoodsCategory>()
.likeRight(GoodsCategory::getLevelPath,category.getLevelPath()+"_"));
if(CollUtil.isNotEmpty(childList)){
List<String> childIds = childList.stream().map(a->a.getId().toString()).collect(Collectors.toList());
selectCateIds.addAll(childIds);
}
}
//交集 //交集
Collection<String> ids = cn.hutool.core.collection.CollectionUtil Collection<String> ids = cn.hutool.core.collection.CollectionUtil
.intersection(ruleItemDTO.getOnlyCategoryIds(), param.getSelectCateIds()); .intersection(onlyIds, selectCateIds);
List<String> idsList = new ArrayList<>(); List<String> idsList = new ArrayList<>();
idsList.addAll(ids); idsList.addAll(ids);
idsList.add("#");
param.setSelectCateIds(idsList); param.setSelectCateIds(idsList);
} }
}
if(CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){
if (CollUtil.isEmpty(param.getSelectIds())){ if (CollUtil.isEmpty(param.getSelectIds())){
List<Long> ids = ruleItemDTO.getOnlySpuIds().stream().map(Long::parseLong).collect(Collectors.toList()); List<Long> ids = ruleItemDTO.getOnlySpuIds().stream()
.filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList());
param.setSelectIds(ids); param.setSelectIds(ids);
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){ }else{
List<Long> ids = ruleItemDTO.getOnlySpuIds().stream().map(Long::parseLong).collect(Collectors.toList()); List<Long> ids = ruleItemDTO.getOnlySpuIds().stream()
.filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList());
//交集 //交集
Collection<Long> id2s = cn.hutool.core.collection.CollectionUtil Collection<Long> id2s = cn.hutool.core.collection.CollectionUtil
.intersection(ids, param.getSelectIds()); .intersection(ids, param.getSelectIds());
List<Long> idsList = new ArrayList<>(); List<Long> idsList = new ArrayList<>();
idsList.addAll(id2s); idsList.addAll(id2s);
idsList.add(-1L);
param.setSelectIds(idsList); param.setSelectIds(idsList);
} }
}
if(CollUtil.isNotEmpty(ruleItemDTO.getNotInSpuIds())){
if (CollUtil.isEmpty(param.getSelectNotInIds())){ if (CollUtil.isEmpty(param.getSelectNotInIds())){
List<Long> ids = ruleItemDTO.getNotInSpuIds().stream().map(Long::parseLong).collect(Collectors.toList()); List<Long> ids = ruleItemDTO.getNotInSpuIds().stream()
.filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList());
param.setSelectNotInIds(ids); param.setSelectNotInIds(ids);
}else if (CollUtil.isNotEmpty(ruleItemDTO.getOnlySpuIds())){ }else{
List<Long> ids = ruleItemDTO.getNotInSpuIds().stream().map(Long::parseLong).collect(Collectors.toList()); List<Long> ids = ruleItemDTO.getNotInSpuIds().stream()
.filter(Objects::nonNull).map(Long::parseLong).collect(Collectors.toList());
param.getSelectNotInIds().addAll(ids); param.getSelectNotInIds().addAll(ids);
} }
}
} }

96
src/main/java/com/qs/serve/modules/goods/entity/GoodsAccredit.java

@ -0,0 +1,96 @@
package com.qs.serve.modules.goods.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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 2024-04-01
*/
@Data
@TableName("goods_accredit")
public class GoodsAccredit implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 客户id */
private Long spuId;
/** 销售区域id */
@Length(max = 32,message = "销售区域id长度不能超过32字")
private String categoryId;
/** 空标识 */
private Integer emptyFlag;
/** 备注 */
@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;
/** 最后更新时间 */
@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;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
public static GoodsAccredit toNewObject(GoodsAccredit source){
GoodsAccredit accredit = new GoodsAccredit();
accredit.setId(source.getId());
accredit.setSpuId(source.getSpuId());
accredit.setCategoryId(source.getCategoryId());
accredit.setEmptyFlag(source.getEmptyFlag());
accredit.setRemark(source.getRemark());
accredit.setCreateTime(source.getCreateTime());
accredit.setUpdateTime(source.getUpdateTime());
accredit.setTenantId(source.getTenantId());
accredit.setDelFlag(source.getDelFlag());
accredit.setCreateBy(source.getCreateBy());
accredit.setUpdateBy(source.getUpdateBy());
return accredit;
}
}

95
src/main/java/com/qs/serve/modules/goods/entity/GoodsAccreditItem.java

@ -0,0 +1,95 @@
package com.qs.serve.modules.goods.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 商品sku规则 实体类
* @author YenHex
* @since 2024-04-01
*/
@Data
@TableName("goods_accredit_item")
public class GoodsAccreditItem implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 规则id */
@NotNull(message = "规则id不能为空")
private Long accId;
/** 0:in,1:not-in */
private Integer accType;
/** 维度类型:supplier-客户;bizRegion-行政区域;saleRegion-销售区域 */
@NotNull(message = "维度类型:0-客户;1-行政区域;2-销售区域不能为空")
private String targetType;
/** 维度编码 */
@NotBlank(message = "维度编码不能为空")
@Length(max = 255,message = "维度编码长度不能超过255字")
private String targetCode;
/** 维度名称 */
@Length(max = 255,message = "维度名称长度不能超过255字")
private String targetName;
/** 维度id */
@NotBlank(message = "维度id不能为空")
@Length(max = 30,message = "维度id长度不能超过30字")
private String targetId;
/** 备注 */
@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;
/** 最后更新时间 */
@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;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
}

12
src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java

@ -16,7 +16,11 @@ import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* spu 实体类 * spu 实体类
* @author YenHex * @author YenHex
@ -218,6 +222,14 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String searchCateRuleId; private String searchCateRuleId;
public List<String> listCategoryIds(){
List<String> list = new ArrayList<>();
list.add(this.getCategoryFirst());
list.add(this.getCategorySecond());
list.add(this.getCategoryThird());
return list.stream().filter(Objects::nonNull).collect(Collectors.toList());
}
public void toSetSkuInfo(GoodsSku goodsSku){ public void toSetSkuInfo(GoodsSku goodsSku){
this.setSkuId(goodsSku.getId()); this.setSkuId(goodsSku.getId());
this.setSkuName(goodsSku.getSkuName()); this.setSkuName(goodsSku.getSkuName());

49
src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsAccreditBo.java

@ -0,0 +1,49 @@
package com.qs.serve.modules.goods.entity.bo;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @author YenHex
* @since 2024/4/1
*/
@Data
@NoArgsConstructor
public class GoodsAccreditBo {
/** 授权ID(更新必传) */
private Long accId;
private String spuId;
private String skuId;
private String categoryId;
/** 只能选的销售区域 */
private List<String> onlySaleRegionIds;
/** 不能选的销售区域 */
private List<String> notInSaleRegionIds;
/** 只能选的行政区域 */
private List<String> onlyBizRegionIds;
/** 不能选的行政区域 */
private List<String> notInBizRegionIds;
/** 只能选的客户 */
private List<String> onlySupplierIds;
/** 不能选的客户 */
private List<String> notInSupplierIds;
public GoodsAccreditBo(String categoryId,String spuId,String skuId){
this.categoryId = categoryId;
this.spuId = spuId;
this.skuId = skuId;
}
}

42
src/main/java/com/qs/serve/modules/goods/entity/vo/GoodsAccreditVo.java

@ -0,0 +1,42 @@
package com.qs.serve.modules.goods.entity.vo;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import lombok.Data;
import java.util.List;
/**
* @author YenHex
* @since 2024/4/1
*/
@Data
public class GoodsAccreditVo {
/** 规则ID(更新必传) */
private Long accreditId;
/** 备注 */
private String remark;
/** 可下单 销售区域 */
private List<BmsRegion> onlySaleRegionList;
/** 不可下单 销售区域 */
private List<BmsRegion> notInSaleRegionList;
/** 可下单 行政区域 */
private List<BmsRegion2> onlyBizRegionList;
/** 不可下单 行政区域 */
private List<BmsRegion2> notInBizRegionList;
/** 可下单 客户 */
private List<BmsSupplier> onlySupplierList;
/** 不可下单 客户 */
private List<BmsSupplier> notInSupplierList;
}

14
src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditItemMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.goods.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.goods.entity.GoodsAccreditItem;
/**
* 商品sku规则 Mapper
* @author YenHex
* @date 2024-04-01
*/
public interface GoodsAccreditItemMapper extends BaseMapper<GoodsAccreditItem> {
}

14
src/main/java/com/qs/serve/modules/goods/mapper/GoodsAccreditMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.goods.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.goods.entity.GoodsAccredit;
/**
* 规则 Mapper
* @author YenHex
* @date 2024-04-01
*/
public interface GoodsAccreditMapper extends BaseMapper<GoodsAccredit> {
}

14
src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditItemService.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.goods.entity.GoodsAccreditItem;
/**
* 商品sku规则 服务接口
* @author YenHex
* @date 2024-04-01
*/
public interface GoodsAccreditItemService extends IService<GoodsAccreditItem> {
}

20
src/main/java/com/qs/serve/modules/goods/service/GoodsAccreditService.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.goods.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.goods.entity.GoodsAccredit;
import com.qs.serve.modules.goods.entity.bo.GoodsAccreditBo;
import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo;
/**
* 规则 服务接口
* @author YenHex
* @date 2024-04-01
*/
public interface GoodsAccreditService extends IService<GoodsAccredit> {
void modify(GoodsAccreditBo param);
GoodsAccreditVo getById(String cateId, String spuId, String skuId);
}

9
src/main/java/com/qs/serve/modules/goods/service/GoodsRuleService.java

@ -27,5 +27,14 @@ public interface GoodsRuleService extends IService<GoodsRule> {
GoodsRuleItemDTO buildGoodsRuleItemDTO(List<GoodsRuleItem> ruleItems); GoodsRuleItemDTO buildGoodsRuleItemDTO(List<GoodsRuleItem> ruleItems);
/**
* 检测sku是否符合规则
* @param skuCodes
* @param ruleItems
* @param throwEx 不判断数量拦截只条件拦截
* @return
*/
boolean checkSkuCode(List<String> skuCodes,List<GoodsRuleItem> ruleItems,boolean throwEx);
} }

22
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditItemServiceImpl.java

@ -0,0 +1,22 @@
package com.qs.serve.modules.goods.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.goods.entity.GoodsAccreditItem;
import com.qs.serve.modules.goods.service.GoodsAccreditItemService;
import com.qs.serve.modules.goods.mapper.GoodsAccreditItemMapper;
/**
* 商品sku规则 服务实现类
* @author YenHex
* @since 2024-04-01
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsAccreditItemServiceImpl extends ServiceImpl<GoodsAccreditItemMapper,GoodsAccreditItem> implements GoodsAccreditItemService {
}

264
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsAccreditServiceImpl.java

@ -0,0 +1,264 @@
package com.qs.serve.modules.goods.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert;
import com.qs.serve.modules.bms.entity.BmsRegion;
import com.qs.serve.modules.bms.entity.BmsRegion2;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.bo.GoodsAccreditBo;
import com.qs.serve.modules.goods.entity.vo.GoodsAccreditVo;
import com.qs.serve.modules.goods.mapper.GoodsAccreditItemMapper;
import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import com.qs.serve.modules.goods.service.GoodsAccreditItemService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.goods.service.GoodsAccreditService;
import com.qs.serve.modules.goods.mapper.GoodsAccreditMapper;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 规则 服务实现类
* @author YenHex
* @since 2024-04-01
*/
@Slf4j
@Service
@AllArgsConstructor
public class GoodsAccreditServiceImpl extends ServiceImpl<GoodsAccreditMapper,GoodsAccredit> implements GoodsAccreditService {
private final GoodsCategoryMapper categoryMapper;
private final GoodsSpuMapper goodsSpuMapper;
private final BmsRegionMapper regionMapper;
private final BmsRegion2Mapper region2Mapper;
private final BmsSupplierMapper supplierMapper;
private final GoodsAccreditItemService goodsAccreditItemService;
@Override
public void modify(GoodsAccreditBo param) {
GoodsAccredit goodsAccredit = null;
if(param.getAccId()==null){
goodsAccredit = this.getGoodsAccredit(param);
}else {
goodsAccredit = this.getById(param.getAccId());
}
if(goodsAccredit==null){
Assert.throwEx("参数异常 500B2 ");
}
boolean b1 = CollUtil.isNotEmpty(param.getNotInSaleRegionIds());
boolean b2 = CollUtil.isNotEmpty(param.getOnlySaleRegionIds());
boolean b3 = CollUtil.isNotEmpty(param.getNotInBizRegionIds());
boolean b4 = CollUtil.isNotEmpty(param.getNotInBizRegionIds());
boolean b5 = CollUtil.isNotEmpty(param.getOnlySupplierIds());
boolean b6 = CollUtil.isNotEmpty(param.getNotInSupplierIds());
//清空历史
goodsAccreditItemService.remove(new LambdaQueryWrapper<GoodsAccreditItem>()
.eq(GoodsAccreditItem::getAccId,goodsAccredit.getId()));
if(!b1 && !b2 && !b3 && !b4 && !b5 && !b6){
if(goodsAccredit.getId()!=null){
goodsAccredit.setEmptyFlag(1);
this.updateById(goodsAccredit);
}
}else {
if(goodsAccredit.getId()!=null){
goodsAccredit.setEmptyFlag(0);
this.updateById(goodsAccredit);
}else {
this.save(goodsAccredit);
param.setAccId(goodsAccredit.getId());
}
}
Long accId = goodsAccredit.getId();
if(b1){
List<BmsRegion> saleRegionList = regionMapper.selectBatchIds(param.getOnlySaleRegionIds());
List<GoodsAccreditItem> list = saleRegionList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(0);
item.setTargetType("saleRegion");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
if(b2){
List<BmsRegion> saleRegionList = regionMapper.selectBatchIds(param.getNotInSaleRegionIds());
List<GoodsAccreditItem> list = saleRegionList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(1);
item.setTargetType("saleRegion");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
if(b3){
List<BmsRegion2> regionList = region2Mapper.selectBatchIds(param.getOnlyBizRegionIds());
List<GoodsAccreditItem> list = regionList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(0);
item.setTargetType("bizRegion");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
if(b4){
List<BmsRegion2> regionList = region2Mapper.selectBatchIds(param.getNotInBizRegionIds());
List<GoodsAccreditItem> list = regionList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(1);
item.setTargetType("bizRegion");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
if(b5){
List<BmsSupplier> supplierList = supplierMapper.selectBatchIds(param.getOnlySupplierIds());
List<GoodsAccreditItem> list = supplierList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(0);
item.setTargetType("supplier");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
if(b6){
List<BmsSupplier> supplierList = supplierMapper.selectBatchIds(param.getNotInSupplierIds());
List<GoodsAccreditItem> list = supplierList.stream().map(a->{
GoodsAccreditItem item = new GoodsAccreditItem();
item.setAccId(accId);
item.setAccType(1);
item.setTargetType("supplier");
item.setTargetCode(a.getCode());
item.setTargetName(a.getName());
item.setTargetId(a.getId());
return item;
}).collect(Collectors.toList());
goodsAccreditItemService.saveBatch(list);
}
}
@Override
public GoodsAccreditVo getById(String cateId, String spuId, String skuId) {
GoodsAccredit accredit = this.getGoodsAccredit(new GoodsAccreditBo(cateId,spuId,skuId));
GoodsAccreditVo accreditVo = new GoodsAccreditVo();
if(accredit!=null){
List<GoodsAccreditItem> accreditItemList = goodsAccreditItemService
.list(new LambdaQueryWrapper<GoodsAccreditItem>().eq(GoodsAccreditItem::getAccId,accredit.getId()));
Map<String,List<GoodsAccreditItem>> accMap = accreditItemList.stream()
.collect(Collectors.groupingBy(GoodsAccreditItem::getTargetType));
List<GoodsAccreditItem> list1 = accMap.get("supplier");
List<GoodsAccreditItem> list2 = accMap.get("bizRegion");
List<GoodsAccreditItem> list3 = accMap.get("caleRegion");
if(CollUtil.isNotEmpty(list1)){
Map<Integer,List<GoodsAccreditItem>> listMap = list1.stream()
.collect(Collectors.groupingBy(GoodsAccreditItem::getAccType));
List<GoodsAccreditItem> onlyList = listMap.get(0);
List<GoodsAccreditItem> notInList = listMap.get(1);
if(CollUtil.isNotEmpty(onlyList)){
List<String> ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setOnlySupplierList(supplierMapper.selectBatchIds(ids));
}
if(CollUtil.isNotEmpty(notInList)){
List<String> ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setNotInSupplierList(supplierMapper.selectBatchIds(ids));
}
}
if(CollUtil.isNotEmpty(list2)){
Map<Integer,List<GoodsAccreditItem>> listMap = list2.stream()
.collect(Collectors.groupingBy(GoodsAccreditItem::getAccType));
List<GoodsAccreditItem> onlyList = listMap.get(0);
List<GoodsAccreditItem> notInList = listMap.get(1);
if(CollUtil.isNotEmpty(onlyList)){
List<String> ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setOnlyBizRegionList(region2Mapper.selectBatchIds(ids));
}
if(CollUtil.isNotEmpty(notInList)){
List<String> ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setNotInBizRegionList(region2Mapper.selectBatchIds(ids));
}
}
if(CollUtil.isNotEmpty(list3)){
Map<Integer,List<GoodsAccreditItem>> listMap = list3.stream()
.collect(Collectors.groupingBy(GoodsAccreditItem::getAccType));
List<GoodsAccreditItem> onlyList = listMap.get(0);
List<GoodsAccreditItem> notInList = listMap.get(1);
if(CollUtil.isNotEmpty(onlyList)){
List<String> ids = onlyList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setOnlySaleRegionList(regionMapper.selectBatchIds(ids));
}
if(CollUtil.isNotEmpty(notInList)){
List<String> ids = notInList.stream().map(GoodsAccreditItem::getTargetId).collect(Collectors.toList());
accreditVo.setNotInSaleRegionList(regionMapper.selectBatchIds(ids));
}
}
return accreditVo;
}
return null;
}
private GoodsAccredit getGoodsAccredit(GoodsAccreditBo param){
GoodsAccredit accredit = null;
if(param.getCategoryId()!=null){
GoodsCategory category = categoryMapper.selectById(param.getCategoryId());
if(category!=null){
accredit = new GoodsAccredit();
accredit.setCategoryId(category.getId().toString());
}
}else if (param.getSpuId()!=null){
GoodsSpu spu = goodsSpuMapper.selectById(param.getSpuId());
if(spu!=null){
accredit = new GoodsAccredit();
accredit.setSpuId(spu.getId());
}
}
return accredit;
}
}

130
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsRuleServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.goods.service.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.StringUtils; import com.qs.serve.common.util.StringUtils;
@ -11,21 +12,19 @@ import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper; import com.qs.serve.modules.bms.mapper.BmsRegion2Mapper;
import com.qs.serve.modules.bms.mapper.BmsRegionMapper; import com.qs.serve.modules.bms.mapper.BmsRegionMapper;
import com.qs.serve.modules.bms.mapper.BmsSupplierMapper; import com.qs.serve.modules.bms.mapper.BmsSupplierMapper;
import com.qs.serve.modules.goods.entity.GoodsCategory; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.GoodsRuleItem;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo; import com.qs.serve.modules.goods.entity.bo.GoodsRuleBo;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleBaseDTO;
import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO; import com.qs.serve.modules.goods.entity.dto.GoodsRuleItemDTO;
import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo; import com.qs.serve.modules.goods.entity.vo.GoodsRuleVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import com.qs.serve.modules.goods.service.GoodsRuleItemService; import com.qs.serve.modules.goods.service.GoodsRuleItemService;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.goods.entity.GoodsRule;
import com.qs.serve.modules.goods.service.GoodsRuleService; import com.qs.serve.modules.goods.service.GoodsRuleService;
import com.qs.serve.modules.goods.mapper.GoodsRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsRuleMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -51,6 +50,8 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
private GoodsRuleItemService goodsRuleItemService; private GoodsRuleItemService goodsRuleItemService;
private GoodsCategoryMapper categoryMapper; private GoodsCategoryMapper categoryMapper;
private GoodsSpuMapper spuMapper; private GoodsSpuMapper spuMapper;
private GoodsSkuMapper skuMapper;
private GoodsCategoryMapper goodsCategoryMapper;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -151,6 +152,8 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
@Override @Override
public GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO) { public GoodsRuleVo getVoById(GoodsRuleBaseDTO baseDTO) {
GoodsRule goodsRule = this.getGoodsRule(baseDTO); GoodsRule goodsRule = this.getGoodsRule(baseDTO);
List<GoodsCategory> categoryList = categoryMapper.selectList(new QueryWrapper<>());
Map<Long,List<GoodsCategory>> cateListMap = categoryList.stream().collect(Collectors.groupingBy(GoodsCategory::getId));
if(goodsRule.getId()!=null){ if(goodsRule.getId()!=null){
LambdaQueryWrapper<GoodsRuleItem> listByRuleLqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GoodsRuleItem> listByRuleLqw = new LambdaQueryWrapper<>();
listByRuleLqw.eq(GoodsRuleItem::getRuleId,goodsRule.getId()); listByRuleLqw.eq(GoodsRuleItem::getRuleId,goodsRule.getId());
@ -174,17 +177,38 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
} }
if(CollUtil.isNotEmpty(list3)){ if(CollUtil.isNotEmpty(list3)){
List<String> ids = list3.stream().map(GoodsRuleItem::getTargetId).collect(Collectors.toList()); List<String> ids = list3.stream().map(GoodsRuleItem::getTargetId).collect(Collectors.toList());
ruleVo.setOnlySpuList(spuMapper.selectBatchIds(ids)); List<GoodsSpu> spuList = spuMapper.selectBatchIds(ids);
for (GoodsSpu spu : spuList) {
spu.setCateFirstLabel(this.getCateName(cateListMap,spu.getCategoryFirst()));
spu.setCateSecondLabel(this.getCateName(cateListMap,spu.getCategorySecond()));
spu.setCateThirdLabel(this.getCateName(cateListMap,spu.getCategoryThird()));
}
ruleVo.setOnlySpuList(spuList);
} }
if(CollUtil.isNotEmpty(list4)){ if(CollUtil.isNotEmpty(list4)){
List<String> ids = list4.stream().map(GoodsRuleItem::getTargetId).collect(Collectors.toList()); List<String> ids = list4.stream().map(GoodsRuleItem::getTargetId).collect(Collectors.toList());
ruleVo.setOnlySpuList(spuMapper.selectBatchIds(ids)); List<GoodsSpu> spuList = spuMapper.selectBatchIds(ids);
for (GoodsSpu spu : spuList) {
spu.setCateFirstLabel(this.getCateName(cateListMap,spu.getCategoryFirst()));
spu.setCateSecondLabel(this.getCateName(cateListMap,spu.getCategorySecond()));
spu.setCateThirdLabel(this.getCateName(cateListMap,spu.getCategoryThird()));
}
ruleVo.setNotInSpuList(spuList);
} }
return ruleVo; return ruleVo;
} }
return null; return null;
} }
private String getCateName(Map<Long, List<GoodsCategory>> cateListMap, String id) {
Long cateId = Long.parseLong(id);
List<GoodsCategory> items = cateListMap.get(cateId);
if(items!=null&&items.size()>0){
return items.get(0).getName();
}
return null;
}
@Override @Override
public List<GoodsRuleItem> listBySupplierId(String supplierId) { public List<GoodsRuleItem> listBySupplierId(String supplierId) {
BmsSupplier supplier = supplierMapper.selectById(supplierId); BmsSupplier supplier = supplierMapper.selectById(supplierId);
@ -197,21 +221,20 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
List<String> saleRegionIds = supplier.listSaleRegionIds(); List<String> saleRegionIds = supplier.listSaleRegionIds();
saleRegionIds.add("#"); saleRegionIds.add("#");
List<GoodsRule> bySaleRegion = this.list(new LambdaQueryWrapper<GoodsRule>() List<GoodsRule> bySaleRegion = this.list(new LambdaQueryWrapper<GoodsRule>()
.eq(GoodsRule::getSaleRegionId,saleRegionIds) .in(GoodsRule::getSaleRegionId,saleRegionIds)
); );
goodsRules.addAll(bySaleRegion); goodsRules.addAll(bySaleRegion);
List<GoodsRule> byBizRegion = this.list(new LambdaQueryWrapper<GoodsRule>() List<GoodsRule> byBizRegion = this.list(new LambdaQueryWrapper<GoodsRule>()
.eq(GoodsRule::getBizRegionId,bizRegionIds) .in(GoodsRule::getBizRegionId,bizRegionIds)
); );
goodsRules.addAll(byBizRegion); goodsRules.addAll(byBizRegion);
List<Long> ruleIds = goodsRules.stream().map(GoodsRule::getId).collect(Collectors.toList()); List<Long> ruleIds = goodsRules.stream().map(GoodsRule::getId).collect(Collectors.toList());
if(CollUtil.isNotEmpty(ruleIds)){ if(CollUtil.isNotEmpty(ruleIds)){
List<GoodsRuleItem> ruleItems = goodsRuleItemService.list(new LambdaQueryWrapper<GoodsRuleItem>() return goodsRuleItemService.list(new LambdaQueryWrapper<GoodsRuleItem>()
.eq(GoodsRuleItem::getRuleId,ruleIds) .in(GoodsRuleItem::getRuleId,ruleIds)
); );
return ruleItems;
} }
return null; return null;
} }
@ -232,11 +255,94 @@ public class GoodsRuleServiceImpl extends ServiceImpl<GoodsRuleMapper,GoodsRule>
} }
@Override
public boolean checkSkuCode(List<String> skuCodes, List<GoodsRuleItem> ruleItems, boolean throwEx) {
if(CollUtil.isEmpty(skuCodes)){
return false;
}
GoodsRuleItemDTO itemDTO = this.buildGoodsRuleItemDTO(ruleItems);
if(itemDTO==null){
return true;
}
List<GoodsSku> goodsSkuList = skuMapper.selectList(new LambdaQueryWrapper<GoodsSku>().in(GoodsSku::getSkuCode,skuCodes));
for (GoodsSku sku : goodsSkuList) {
boolean notExistInOnly = false;
if(itemDTO.getOnlySpuIds()!=null){
for (String onlySpuId : itemDTO.getOnlySpuIds()) {
if(sku.getSpuId().toString().equals(onlySpuId)){
notExistInOnly = true;
break;
}
}
}
if(!notExistInOnly && throwEx){
Assert.throwEx("单品["+sku.getSkuCode()+"]不符合SKU规则");
}
if(itemDTO.getNotInSpuIds()!=null){
for (String notInSpuId : itemDTO.getNotInSpuIds()) {
if(sku.getSpuId().toString().equals(notInSpuId)){
if(throwEx){
GoodsSpu goodsSpu = spuMapper.selectById(notInSpuId);
Assert.throwEx("SKU["+goodsSpu.getSpuCode()+"/"+goodsSpu.getName()+"]不可选,单品["+sku.getSkuCode()+"]");
}else {
return false;
}
}
}
}
if(itemDTO.getOnlyCategoryIds()==null&&itemDTO.getNotInCategoryIds()==null){
continue;
}
GoodsSpu spu = spuMapper.selectById(sku.getSpuId());
if(itemDTO.getOnlyCategoryIds()!=null){
boolean anyMatch = false;
for (String categoryId : spu.listCategoryIds()) {
for (String onlyCategoryId : itemDTO.getOnlyCategoryIds()) {
boolean itemAnyMatch = onlyCategoryId.equals(categoryId);
if(itemAnyMatch){
anyMatch = true;
break;
}
}
}
if (!anyMatch){
if(throwEx){
Assert.throwEx("SKU["+spu.getSpuCode()+"],类目不符合分类规则");
}else {
return false;
}
}
}
if(itemDTO.getNotInCategoryIds()!=null){
for (String notInCateId : itemDTO.getNotInCategoryIds()) {
boolean b1 = notInCateId.equals(spu.getCategoryFirst());
boolean b2 = notInCateId.equals(spu.getCategorySecond());
boolean b3 = notInCateId.equals(spu.getCategoryThird());
boolean anyMatch = b1||b2||b3;
if (anyMatch){
if(throwEx){
GoodsCategory goodsCategory = goodsCategoryMapper.selectById(notInCateId);
Assert.throwEx("类目["+goodsCategory.getCode()+"/"+goodsCategory.getName()+"]不可选,SKU["+spu.getSkuCode()+"]");
}else {
return false;
}
}
}
}
}
return false;
}
private List<String> getRuleStrings(List<GoodsRuleItem> list) { private List<String> getRuleStrings(List<GoodsRuleItem> list) {
if(CollUtil.isEmpty(list)){ if(CollUtil.isEmpty(list)){
return null; return null;
} }
return list.stream().map(a->a.getId()+"").collect(Collectors.toList()); return list.stream().map(a->a.getTargetId()+"").collect(Collectors.toList());
} }

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

@ -19,6 +19,7 @@ import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice;
import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery; import com.qs.serve.modules.goods.entity.so.InventoryCusPriceQuery;
import com.qs.serve.modules.goods.entity.vo.GoodSkuVo; import com.qs.serve.modules.goods.entity.vo.GoodSkuVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryRuleMapper;
import com.qs.serve.modules.goods.service.GoodsRuleService;
import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService; import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.*; import com.qs.serve.modules.oms.entity.*;
@ -79,6 +80,7 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
private OmsOrderItemService omsOrderItemService; private OmsOrderItemService omsOrderItemService;
private OmsShoppingCartService omsShoppingCartService; private OmsShoppingCartService omsShoppingCartService;
private SeeYonRequestBaseService seeYonRequestBaseService; private SeeYonRequestBaseService seeYonRequestBaseService;
private GoodsRuleService goodsRuleService;
@Override @Override
@ -321,6 +323,11 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper,OmsOrder> im
newOrderItemList.add(orderItem); newOrderItemList.add(orderItem);
} }
List<String> skuCodes = newOrderItemList.stream().map(OmsOrderItem::getSkuCode).collect(Collectors.toList());
//拦截下单规则
goodsRuleService.checkSkuCode(skuCodes,goodsRuleService.listBySupplierId(order.getSupplierId().toString()),true);
this.handleCategoryRule(categoryRule,newOrderItemList); this.handleCategoryRule(categoryRule,newOrderItemList);
this.updateById(order); this.updateById(order);

1
src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java

@ -341,6 +341,7 @@ public class SysUserController {
//检查手机号是否已用 //检查手机号是否已用
LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SysUser> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(SysUser::getMobile,param.getMobile()); wrapper.eq(SysUser::getMobile,param.getMobile());
wrapper.ne(SysUser::getServingState,0);
Long count = sysUserService.count(wrapper); Long count = sysUserService.count(wrapper);
if(count>0L){ if(count>0L){
return R.error("手机号已被注册"); return R.error("手机号已被注册");

11
src/main/java/com/qs/serve/modules/third/service/PortalOfCostApplication.java

@ -691,12 +691,6 @@ public class PortalOfCostApplication {
Assert.throwEx("统计金额不能为0"); Assert.throwEx("统计金额不能为0");
} }
String activityCode = costCode;
if(StringUtils.hasText(activityCode)){
activityCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.Activity);
}
String activityTitle = createBo.getActivityTitle(); String activityTitle = createBo.getActivityTitle();
if(!StringUtils.hasText(activityTitle)){ if(!StringUtils.hasText(activityTitle)){
activityTitle = "由核销API生成的活动"; activityTitle = "由核销API生成的活动";
@ -722,7 +716,7 @@ public class PortalOfCostApplication {
costApply.setRemark(createBo.getRemark()); costApply.setRemark(createBo.getRemark());
//构建活动 //构建活动
TbsActivity activity = new TbsActivity(); TbsActivity activity = new TbsActivity();
activity.setActivityCode(activityCode); activity.setActivityCode(costCode);
activity.setActivityState(TbsActivityState.STATE_1_Finished); activity.setActivityState(TbsActivityState.STATE_1_Finished);
activity.setCostPassFlag(1); activity.setCostPassFlag(1);
activity.setCostPassTime(nowTime); activity.setCostPassTime(nowTime);
@ -772,7 +766,7 @@ public class PortalOfCostApplication {
activityGoods.setTargetType(GOODS_TYPE); activityGoods.setTargetType(GOODS_TYPE);
activityGoods.setTargetId(sku.getId()); activityGoods.setTargetId(sku.getId());
activityGoods.setTargetCode(sku.getSkuCode()); activityGoods.setTargetCode(sku.getSkuCode());
activityGoods.setTargetName(sku.getSpecInfos()); activityGoods.setTargetName(sku.getSkuName());
activityGoods.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId()); activityGoods.setTargetLevelPathIds(category1.getId()+"_"+category2.getId()+"_"+category3.getId()+"_"+goodsSpu.getId()+"_"+sku.getId());
activityGoods.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos()); activityGoods.setTargetLevelPathNames(category1.getName()+"_"+category2.getName()+"_"+category3.getName()+"_"+goodsSpu.getName()+"_"+sku.getSpecInfos());
activityGoodsList.add(activityGoods); activityGoodsList.add(activityGoods);
@ -990,6 +984,7 @@ public class PortalOfCostApplication {
} }
verificationService.removeById(verification.getId()); verificationService.removeById(verification.getId());
verificationSubjectService.removeById(verificationSubject.getId()); verificationSubjectService.removeById(verificationSubject.getId());
Assert.throwEx("请求支付失败");
} }
log.info("COST_TO_PAY_API 支付单信息:{},结果:{}", verification.getVerificationCode(), rs); log.info("COST_TO_PAY_API 支付单信息:{},结果:{}", verification.getVerificationCode(), rs);
} }

Loading…
Cancel
Save