Browse Source

opt: 商品分类只允许一级设置账套

checkBack
Yen 1 year ago
parent
commit
c00380c2dc
  1. 58
      src/main/java/com/qs/serve/controller/AdminPortalController.java
  2. 3
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java
  3. 53
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java
  4. 2
      src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java
  5. 5
      src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java
  6. 5
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSku.java
  7. 8
      src/main/java/com/qs/serve/modules/goods/entity/GoodsSpu.java
  8. 6
      src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java
  9. 3
      src/main/java/com/qs/serve/modules/goods/mapper/GoodsSkuMapper.java
  10. 71
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java
  11. 20
      src/main/java/com/qs/serve/modules/goods/service/impl/GoodsSkuServiceImpl.java
  12. 34
      src/main/resources/mapper/goods/GoodsSkuMapper.xml
  13. 6
      src/main/resources/mapper/goods/GoodsSpuMapper.xml

58
src/main/java/com/qs/serve/controller/AdminPortalController.java

@ -11,12 +11,23 @@ import com.qs.serve.common.model.consts.GySysConst;
import com.qs.serve.common.model.consts.RedisCacheKeys; import com.qs.serve.common.model.consts.RedisCacheKeys;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType; import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.util.IdUtil; import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.JwtUtils; import com.qs.serve.common.util.*;
import com.qs.serve.common.util.ServletUtils;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.controller.dto.SyLoginParam; import com.qs.serve.controller.dto.SyLoginParam;
import com.qs.serve.controller.util.SyKeyLoginUtil; import com.qs.serve.controller.util.SyKeyLoginUtil;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierAddressService;
import com.qs.serve.modules.goods.entity.GoodsCategory;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.service.GoodsCategoryRuleService;
import com.qs.serve.modules.goods.service.GoodsCategoryService;
import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.service.GoodsSpuService;
import com.qs.serve.modules.oms.entity.OmsOrder;
import com.qs.serve.modules.oms.entity.OmsOrderItem;
import com.qs.serve.modules.oms.service.OmsOrderItemService;
import com.qs.serve.modules.oms.service.OmsOrderService;
import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; import com.qs.serve.modules.seeyon.entity.SyAffairStateResult;
import com.qs.serve.modules.seeyon.enums.SyAffairState; import com.qs.serve.modules.seeyon.enums.SyAffairState;
import com.qs.serve.modules.seeyon.service.SeeYonRequestService; import com.qs.serve.modules.seeyon.service.SeeYonRequestService;
@ -26,6 +37,7 @@ import com.qs.serve.modules.sys.entity.dto.SysLoginByPhoneParam;
import com.qs.serve.modules.sys.entity.dto.SysLoginParam; import com.qs.serve.modules.sys.entity.dto.SysLoginParam;
import com.qs.serve.modules.sys.entity.dto.SysResetPwdByPhoneParam; import com.qs.serve.modules.sys.entity.dto.SysResetPwdByPhoneParam;
import com.qs.serve.modules.sys.mapper.SysNoticeUserMapper; import com.qs.serve.modules.sys.mapper.SysNoticeUserMapper;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysTenantService; import com.qs.serve.modules.sys.service.SysTenantService;
import com.qs.serve.modules.sys.service.SysUserLoginService; import com.qs.serve.modules.sys.service.SysUserLoginService;
import com.qs.serve.modules.sys.service.SysUserService; import com.qs.serve.modules.sys.service.SysUserService;
@ -74,6 +86,14 @@ public class AdminPortalController {
private TzcPolicyService policyService; private TzcPolicyService policyService;
private TbsActivityService activityService; private TbsActivityService activityService;
private OmsOrderService omsOrderService;
private OmsOrderItemService omsOrderItemService;
private BmsSupplierAddressService bmsSupplierAddressService;
private GoodsCategoryRuleService goodsCategoryRuleService;
private GoodsSpuService goodsSpuService;
private GoodsSkuService goodsSkuService;
private GoodsCategoryService goodsCategoryService;
/** /**
* 获取所有租户 * 获取所有租户
@ -273,5 +293,35 @@ public class AdminPortalController {
return R.ok(); return R.ok();
} }
/**
* 根据ID查询
* @param id
* @return
*/
@GetMapping("/getOrder/{id}")
public R<OmsOrder> getById(@PathVariable("id") String id,String supplierId){
OmsOrder omsOrder = omsOrderService.getById(id);
omsOrder.setBrandRuleInfo(goodsCategoryRuleService.getById(omsOrder.getBrandRuleId()));
omsOrder.setAddressInfo(bmsSupplierAddressService.getById(omsOrder.getSupplierAddrId()));
if(omsOrder.getSupplierId().toString().equals(supplierId)){
LambdaQueryWrapper<OmsOrderItem> lqw = new LambdaQueryWrapper<>();
lqw.eq(OmsOrderItem::getOrderId,id);
List<OmsOrderItem> list = omsOrderItemService.list(lqw);
for (OmsOrderItem orderItem : list) {
GoodsSpu goodsSpu = goodsSpuService.getById(orderItem.getSpuId());
GoodsCategory goodsCategory = goodsCategoryService.getById(goodsSpu.getCategoryLast());
orderItem.setCategoryInfo(goodsCategory);
orderItem.setSpuInfo(goodsSpu);
GoodsSku goodsSku = goodsSkuService.getById(orderItem.getSkuId());
if(goodsSku!=null){
orderItem.setSkuSpecialFlag(goodsSku.getSpecialFlag());
}
}
omsOrder.setOrderItems(list);
return R.ok(omsOrder);
}
return R.error();
}
} }

3
src/main/java/com/qs/serve/modules/bms/service/impl/BmsAccountUserServiceImpl.java

@ -34,9 +34,6 @@ public class BmsAccountUserServiceImpl extends ServiceImpl<BmsAccountUserMapper,
@Override @Override
public void modify(BmsAccountUserBo param) { public void modify(BmsAccountUserBo param) {
BmsAccount account = bmsAccountMapper.selectById(param.getBookId()); BmsAccount account = bmsAccountMapper.selectById(param.getBookId());
if(account.getStopFlag().equals(1)){
Assert.throwEx("账套已停用");
}
List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>() List<SysUser> userList = sysUserMapper.selectList(new LambdaQueryWrapper<SysUser>()
.select(SysUser::getId,SysUser::getName,SysUser::getCode) .select(SysUser::getId,SysUser::getName,SysUser::getCode)
.in(SysUser::getId,param.getUserIds()) .in(SysUser::getId,param.getUserIds())

53
src/main/java/com/qs/serve/modules/bms/service/impl/BmsRegion2ServiceImpl.java

@ -69,7 +69,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
} }
} }
} }
@Transactional(rollbackFor = Exception.class)
@Override @Override
public boolean updateBizRegionById(BmsRegion2 newRegion) { public boolean updateBizRegionById(BmsRegion2 newRegion) {
String regionId = newRegion.getId(); String regionId = newRegion.getId();
@ -99,7 +99,7 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
BmsRegion2 p1 = this.getById(newRegion.getPid()); BmsRegion2 p1 = this.getById(newRegion.getPid());
sortList.add(p1.getId()); sortList.add(p1.getId());
if(!p1.getPid().equals("0")){ if(!p1.getPid().equals("0")){
BmsRegion2 p2 = this.getById(newRegion.getPid()); BmsRegion2 p2 = this.getById(p1.getPid());
sortList.add(p2.getId()); sortList.add(p2.getId());
} }
} }
@ -110,45 +110,60 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
//3级 //3级
supplier.setRegion2First(sortList.get(2)); supplier.setRegion2First(sortList.get(2));
supplier.setRegion2Second(sortList.get(1)); supplier.setRegion2Second(sortList.get(1));
supplier.setRegionThird(sortList.get(0)); supplier.setRegion2Third(sortList.get(0));
supplier.setRegionLast(sortList.get(0)); supplier.setRegion2Last(sortList.get(0));
log.debug("3级变动");
}else if (size==2){ }else if (size==2){
//二级 //二级
supplier.setRegionFirst(sortList.get(1)); supplier.setRegion2First(sortList.get(1));
////supplier.setRegion2Last(sortList.get(0));
//supplier.setRegion2Second(sortList.get(0)); //supplier.setRegion2Second(sortList.get(0));
if (orgRegion.getLevel() > (newRegion.getLevel())){ if (orgRegion.getLevel() > (newRegion.getLevel())){
supplier.setRegion2Second(sortList.get(0)); supplier.setRegion2Second(sortList.get(0));
//层级变小,由三级变二级 log.debug("层级变小,由三级变二级");
supplier.setRegionThird("0"); supplier.setRegion2Third("0");
}if (orgRegion.getLevel() < (newRegion.getLevel())){ }if (orgRegion.getLevel() < (newRegion.getLevel())){
//层级变小,由一级变二级 log.debug("层级变大,由一级变二级");
supplier.setRegionThird(supplier.getRegion2Second()); supplier.setRegion2Third(supplier.getRegion2Second());
supplier.setRegion2Second(sortList.get(0)); supplier.setRegion2Second(sortList.get(0));
}else {
log.debug("二级,平级更新");
supplier.setRegion2Second(sortList.get(0));
if(!StringUtils.hasText(supplier.getRegion2Third())){
supplier.setRegion2Last(supplier.getRegion2Second());
}
} }
}else { }else {
//一级 //一级
supplier.setRegionFirst(sortList.get(0)); log.debug("更换变一级");
//平级更换 supplier.setRegion2First(sortList.get(0));
supplier.setRegion2Last(sortList.get(0));
if (orgRegion.getLevel() > (newRegion.getLevel())){ if (orgRegion.getLevel() > (newRegion.getLevel())){
//层级变小,由二级变一级 log.debug("层级变小,由二级变一级");
supplier.setRegionSecond(supplier.getRegionThird()); Assert.throwEx("二级变一级不支持");
supplier.setRegionThird("0"); supplier.setRegion2Second(supplier.getRegion2Third());
supplier.setRegion2Third("0");
}else {
supplier.setRegion2Second("0");
supplier.setRegion2Third("0");
} }
} }
bmsSupplierMapper.updateById(supplier); bmsSupplierMapper.updateById(supplier);
} }
} }
this.updateById(newRegion);
//this.flushAllLevel(true);
return true; return true;
} }
@Override @Override
public List<BmsRegion2> listTreeChildByDeep(String pid,Integer parentLevel){ public List<BmsRegion2> listTreeChildByDeep(String pid,Integer parentLevel){
List<BmsRegion2> list = this.listChild(pid); List<BmsRegion2> list = this.listChild(pid);
for (BmsRegion2 region2 : list) { if(parentLevel > 2 && CollectionUtil.isNotEmpty(list)){
List<BmsRegion2> childList = listTreeChildByDeep(region2.getId(),parentLevel++);
if(parentLevel > 3 && CollectionUtil.isNotEmpty(childList)){
Assert.throwEx("最高只能设置3层级"); Assert.throwEx("最高只能设置3层级");
} }
for (BmsRegion2 region2 : list) {
List<BmsRegion2> childList = listTreeChildByDeep(region2.getId(),parentLevel++);
region2.setChildNodes(childList); region2.setChildNodes(childList);
} }
return list; return list;
@ -302,8 +317,8 @@ public class BmsRegion2ServiceImpl extends ServiceImpl<BmsRegion2Mapper,BmsRegio
if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){ if(StringUtils.hasText(param.getPid()) && !param.getPid().equals("0")){
BmsRegion2 parent = this.getById(param.getPid()); BmsRegion2 parent = this.getById(param.getPid());
if(parent!=null){ if(parent!=null){
if(parent.getLevel()>3){ if(parent.getLevel()>2){
Assert.throwEx("最高支持4层级"); Assert.throwEx("最高支持3层级");
} }
param.setLevel(parent.getLevel()+1); param.setLevel(parent.getLevel()+1);
param.setPathIds(parent.getPathIds()+"_"+param.getId()); param.setPathIds(parent.getPathIds()+"_"+param.getId());

2
src/main/java/com/qs/serve/modules/goods/controller/GoodsCategoryController.java

@ -158,6 +158,8 @@ public class GoodsCategoryController {
spuNode.setCode(goodsSpu.getSpuCode()); spuNode.setCode(goodsSpu.getSpuCode());
spuNode.setName(goodsSpu.getName()); spuNode.setName(goodsSpu.getName());
spuNode.setCostFlag(goodsSpu.getCostFlag()); spuNode.setCostFlag(goodsSpu.getCostFlag());
spuNode.setBookBelong(goodsSpu.getBookBelong());
spuNode.setBookName(goodsSpu.getBookName());
treeNode.addChildren(spuNode); treeNode.addChildren(spuNode);
} }
} }

5
src/main/java/com/qs/serve/modules/goods/entity/GoodsCategory.java

@ -59,9 +59,12 @@ public class GoodsCategory implements Serializable {
@Length(max = 255,message = "图片长度不能超过255字") @Length(max = 255,message = "图片长度不能超过255字")
private String picUrl; private String picUrl;
/** 账套 */ /** 账套编码 */
private String bookBelong; private String bookBelong;
/** 账套名称 */
private String bookName;
/** 排序 */ /** 排序 */
private Integer sort; private Integer sort;

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

@ -105,9 +105,12 @@ public class GoodsSku implements Serializable {
/** 备注 */ /** 备注 */
private String remark; private String remark;
/** 账套 */ /** 账套编码 */
private String bookBelong; private String bookBelong;
/** 账套名称 */
private String bookName;
/** 产地 */ /** 产地 */
@NotNull(message = "产地不能为空") @NotNull(message = "产地不能为空")
private String belong; private String belong;

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

@ -114,9 +114,12 @@ public class GoodsSpu implements Serializable {
/** 可投放费用标识 */ /** 可投放费用标识 */
private Integer costFlag; private Integer costFlag;
/** 账套 */ /** 账套编码 */
private String bookBelong; private String bookBelong;
/** 账套名称 */
private String bookName;
/** 在线下单 */ /** 在线下单 */
private Integer orderOnlineFlag; private Integer orderOnlineFlag;
@ -198,6 +201,9 @@ public class GoodsSpu implements Serializable {
@TableField(exist = false) @TableField(exist = false)
private String skuName; private String skuName;
@TableField(exist = false)
private String belong;
/** 重量(kg) */ /** 重量(kg) */
@TableField(exist = false) @TableField(exist = false)
@NotNull(message = "重量(kg)不能为空") @NotNull(message = "重量(kg)不能为空")

6
src/main/java/com/qs/serve/modules/goods/entity/bo/GoodsCategoryTreeVo.java

@ -41,6 +41,12 @@ public class GoodsCategoryTreeVo extends TreeNode {
@Length(max = 16,message = "名称长度不能超过16字") @Length(max = 16,message = "名称长度不能超过16字")
private String name; private String name;
/** 账套编码 */
private String bookBelong;
/** 账套名称 */
private String bookName;
/** 描述 */ /** 描述 */
@Length(max = 255,message = "描述长度不能超过255字") @Length(max = 255,message = "描述长度不能超过255字")
private String description; private String description;

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

@ -36,6 +36,9 @@ public interface GoodsSkuMapper extends BaseMapper<GoodsSku> {
List<GoodSkuVo> selectSkuVo(@Param("query") GoodsSku goodsSku); List<GoodSkuVo> selectSkuVo(@Param("query") GoodsSku goodsSku);
@InterceptorIgnore(tenantLine = "1")
int updateBookInfo(@Param("categoryIds")List<Long> categoryIds,@Param("bookCode") String bookCode,@Param("bookName") String bookName);
@InterceptorIgnore(tenantLine = "1") @InterceptorIgnore(tenantLine = "1")
List<GoodsSku> selectByCategoryIds(@Param("categoryIds")List<Long> categoryIds,@Param("tenantId")String tenantId); List<GoodsSku> selectByCategoryIds(@Param("categoryIds")List<Long> categoryIds,@Param("tenantId")String tenantId);

71
src/main/java/com/qs/serve/modules/goods/service/impl/GoodsCategoryServiceImpl.java

@ -6,9 +6,13 @@ import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.CollectionUtil; import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil; import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.IdUtil; import com.qs.serve.common.util.IdUtil;
import com.qs.serve.modules.bms.entity.BmsAccount;
import com.qs.serve.modules.bms.mapper.BmsAccountMapper;
import com.qs.serve.modules.goods.common.GoodsConst; import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.GoodsSpu; import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo; import com.qs.serve.modules.goods.entity.bo.GoodsCategoryLevelBo;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -17,6 +21,7 @@ import com.qs.serve.modules.goods.service.GoodsCategoryService;
import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper; import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -30,6 +35,10 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,GoodsCategory> implements GoodsCategoryService { public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,GoodsCategory> implements GoodsCategoryService {
private final GoodsSkuMapper goodsSkuMapper;
private final GoodsSpuMapper goodsSpuMapper;
private final BmsAccountMapper accountMapper;
@Override @Override
public GoodsCategory getByCode(String code) { public GoodsCategory getByCode(String code) {
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>();
@ -47,7 +56,21 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,Go
@Override @Override
public void modify(GoodsCategory category) { public void modify(GoodsCategory category) {
GoodsCategory dbData = this.getById(category.getId()); BmsAccount bookAcc = accountMapper.selectOne(new LambdaQueryWrapper<BmsAccount>()
.eq(BmsAccount::getBookCode,category.getBookBelong()));
GoodsCategory dbData = null;
if(category.getId()!=null){
dbData = this.getById(category.getId());
if(dbData==null){
Assert.throwEx("类目不存在");
}
}else {
if(bookAcc==null){
Assert.throwEx("账套不存在");
}
}
GoodsCategory parent = null; GoodsCategory parent = null;
if( category.getParentId()!=null&&!category.getParentId().equals(0L)){ if( category.getParentId()!=null&&!category.getParentId().equals(0L)){
parent = this.getById(category.getParentId()); parent = this.getById(category.getParentId());
@ -59,15 +82,22 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,Go
if(category.getId()==null){ if(category.getId()==null){
this.save(category); this.save(category);
} }
if(parent==null){ if(parent==null){
category.setParentId(0L); category.setParentId(0L);
category.setLevel(1); category.setLevel(1);
category.setLevelPath(category.getId().toString()); category.setLevelPath(category.getId().toString());
category.setLevelPathNames(category.getName()); category.setLevelPathNames(category.getName());
category.setBookBelong(bookAcc.getBookCode());
category.setBookName(bookAcc.getBookName());
}else { }else {
category.setLevel(parent.getLevel()+1); category.setLevel(parent.getLevel()+1);
category.setLevelPathNames(parent.getLevelPathNames()+"_"+category.getName()); category.setLevelPathNames(parent.getLevelPathNames()+"_"+category.getName());
category.setLevelPath(parent.getLevelPath()+"_"+category.getId()); category.setLevelPath(parent.getLevelPath()+"_"+category.getId());
category.setBookBelong(parent.getBookBelong());
category.setBookName(parent.getBookName());
} }
if(dbData==null){ if(dbData==null){
this.saveOrUpdate(category); this.saveOrUpdate(category);
@ -75,13 +105,11 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,Go
//code不给修改 //code不给修改
category.setCode(null); category.setCode(null);
this.updateById(category); this.updateById(category);
boolean changePid = !dbData.getParentId().equals(category.getParentId()); GoodsCategory finalDbData = dbData;
boolean changeName = !dbData.getName().equals(category.getName());
if(changePid||changeName){
LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GoodsCategory> lqw = new LambdaQueryWrapper<>();
lqw.and(v1->{ lqw.and(v1->{
v1.eq(GoodsCategory::getLevelPath,dbData.getLevelPath()) v1.eq(GoodsCategory::getLevelPath, finalDbData.getLevelPath())
.or().likeRight(GoodsCategory::getLevelPath,dbData.getLevelPath()+"_"); .or().likeRight(GoodsCategory::getLevelPath, finalDbData.getLevelPath()+"_");
}); });
List<GoodsCategory> childList = this.list(lqw); List<GoodsCategory> childList = this.list(lqw);
int diffLevel = dbData.getLevel()-category.getLevel(); int diffLevel = dbData.getLevel()-category.getLevel();
@ -89,22 +117,29 @@ public class GoodsCategoryServiceImpl extends ServiceImpl<GoodsCategoryMapper,Go
GoodsCategory par = new GoodsCategory(); GoodsCategory par = new GoodsCategory();
par.setId(obj.getId()); par.setId(obj.getId());
par.setLevel(obj.getLevel()+diffLevel); par.setLevel(obj.getLevel()+diffLevel);
par.setLevelPathNames(obj.getLevelPathNames().replace(dbData.getLevelPathNames(),category.getLevelPathNames())); par.setLevelPathNames(obj.getLevelPathNames().replace(finalDbData.getLevelPathNames(),category.getLevelPathNames()));
par.setLevelPath(obj.getLevelPath().replace(dbData.getLevelPath(),category.getLevelPath())); par.setLevelPath(obj.getLevelPath().replace(finalDbData.getLevelPath(),category.getLevelPath()));
par.setBookBelong(category.getBookBelong());
par.setBookName(category.getBookName());
return par; return par;
}).collect(Collectors.toList()); }).collect(Collectors.toList());
this.updateBatchById(categoryList); this.updateBatchById(categoryList);
}else {
//不进行更新
category.setParentId(null);
category.setLevel(null);
category.setLevelPathNames(null);
category.setLevelPath(null);
} }
this.updateById(category); //更新SKU
List<Long> cateIds = Arrays.asList(category.getId());
} goodsSkuMapper.updateBookInfo(cateIds,bookAcc.getBookCode(),bookAcc.getBookName());
//更新SPU
GoodsSpu spuParam = new GoodsSpu();
spuParam.setBookBelong(bookAcc.getBookCode());
spuParam.setBookName(bookAcc.getBookName());
goodsSpuMapper.update(spuParam,new LambdaQueryWrapper<GoodsSpu>()
.in(GoodsSpu::getCategoryFirst,cateIds)
.or()
.in(GoodsSpu::getCategorySecond,cateIds)
.or()
.in(GoodsSpu::getCategoryThird,cateIds)
);
} }
@Override @Override

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

@ -5,14 +5,13 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.R; import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*; import com.qs.serve.common.util.*;
import com.qs.serve.modules.goods.common.GoodsConst; import com.qs.serve.modules.goods.common.GoodsConst;
import com.qs.serve.modules.goods.entity.GoodsSkuSpecValue; import com.qs.serve.modules.goods.entity.*;
import com.qs.serve.modules.goods.entity.GoodsSpecValue;
import com.qs.serve.modules.goods.entity.GoodsSpu;
import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo; import com.qs.serve.modules.goods.entity.bo.GoodsSkuBo;
import com.qs.serve.modules.goods.entity.dto.InventoryCusPrice; 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.entity.vo.GoodsSkuSpecValueVo; import com.qs.serve.modules.goods.entity.vo.GoodsSkuSpecValueVo;
import com.qs.serve.modules.goods.mapper.GoodsCategoryMapper;
import com.qs.serve.modules.goods.mapper.GoodsSpuMapper; import com.qs.serve.modules.goods.mapper.GoodsSpuMapper;
import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService; import com.qs.serve.modules.goods.service.GoodsSkuSpecValueService;
import com.qs.serve.modules.goods.service.GoodsSpecValueService; import com.qs.serve.modules.goods.service.GoodsSpecValueService;
@ -21,7 +20,6 @@ import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.qs.serve.modules.goods.entity.GoodsSku;
import com.qs.serve.modules.goods.service.GoodsSkuService; import com.qs.serve.modules.goods.service.GoodsSkuService;
import com.qs.serve.modules.goods.mapper.GoodsSkuMapper; import com.qs.serve.modules.goods.mapper.GoodsSkuMapper;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -42,6 +40,8 @@ import java.util.stream.Collectors;
@AllArgsConstructor @AllArgsConstructor
public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> implements GoodsSkuService { public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> implements GoodsSkuService {
private GoodsCategoryMapper goodsCategoryMapper;
private GoodsSpuMapper goodsSpuMapper;
private GoodsSkuSpecValueService goodsSkuSpecValueService; private GoodsSkuSpecValueService goodsSkuSpecValueService;
private GoodsSpecValueService goodsSpecValueService; private GoodsSpecValueService goodsSpecValueService;
private SeeYonRequestBaseService seeYonRequestBaseService; private SeeYonRequestBaseService seeYonRequestBaseService;
@ -262,6 +262,18 @@ public class GoodsSkuServiceImpl extends ServiceImpl<GoodsSkuMapper,GoodsSku> im
goodsSku.setId(dbGoodSku.getId()); goodsSku.setId(dbGoodSku.getId());
} }
//拓展spu
GoodsSpu goodsSpu = goodsSpuMapper.selectById(goodsSku.getId());
if(goodsSpu==null){
Assert.throwEx("商品SKU不存在");
}
GoodsCategory goodsCategory = goodsCategoryMapper.selectById(goodsSpu.getCategoryFirst());
if(goodsCategory==null){
Assert.throwEx("商品SKU ‘"+goodsSpu.getSpuCode()+"’ 关联的分类不存在");
}
goodsSku.setBookBelong(goodsCategory.getBookBelong());
goodsSku.setBookName(goodsCategory.getBookName());
//校验规格值 //校验规格值
String specInfos = goodsSku.getBelong().trim()+";"+goodsSku.getTasteVal().trim()+";"+goodsSku.getWrapVal().trim(); String specInfos = goodsSku.getBelong().trim()+";"+goodsSku.getTasteVal().trim()+";"+goodsSku.getWrapVal().trim();
LambdaQueryWrapper<GoodsSku> checkSkuSpec = new LambdaQueryWrapper<>(); LambdaQueryWrapper<GoodsSku> checkSkuSpec = new LambdaQueryWrapper<>();

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

@ -72,6 +72,34 @@
goods_sku.`belong` goods_sku.`belong`
</sql> </sql>
<update id="updateBookInfo">
update `goods_sku`
LEFT JOIN `goods_spu`
ON goods_sku.spu_id = goods_spu.id
set goods_sku.book_belong = #{bookCode},goods_sku.book_name = #{bookName}
WHERE
1=1
and goods_sku.del_flag = 0
and goods_sku.enable = 1
and goods_spu.shelf = 1
and (
goods_spu.category_third in
<foreach collection="categoryIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
or
goods_spu.category_second in
<foreach collection="categoryIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
or
goods_spu.category_first in
<foreach collection="categoryIds" item="selectId" index="i" open="(" close=")" separator=",">
#{selectId}
</foreach>
)
</update>
<select id="selectGoodsSkuList" parameterType="com.qs.serve.modules.goods.entity.GoodsSku" resultMap="goodsSkuMap"> <select id="selectGoodsSkuList" parameterType="com.qs.serve.modules.goods.entity.GoodsSku" resultMap="goodsSkuMap">
SELECT <include refid="goodsSkuSql"/> FROM `goods_sku` `goods_sku` SELECT <include refid="goodsSkuSql"/> FROM `goods_sku` `goods_sku`
<where> <where>
@ -138,6 +166,7 @@
<if test="query.spuId != null"> and `goods_sku`.`spu_id` = #{query.spuId}</if> <if test="query.spuId != null"> and `goods_sku`.`spu_id` = #{query.spuId}</if>
<if test="query.salesPrice != null"> and `goods_sku`.`sales_price` = #{query.salesPrice}</if> <if test="query.salesPrice != null"> and `goods_sku`.`sales_price` = #{query.salesPrice}</if>
<if test="query.marketPrice != null"> and `goods_sku`.`market_price` = #{query.marketPrice}</if> <if test="query.marketPrice != null"> and `goods_sku`.`market_price` = #{query.marketPrice}</if>
<if test="query.bookBelong != null"> and `goods_sku`.`book_belong` = #{query.bookBelong}</if>
<if test="query.orderOnlineFlag != null"> and `goods_sku`.`order_online_flag` = #{query.orderOnlineFlag}</if> <if test="query.orderOnlineFlag != null"> and `goods_sku`.`order_online_flag` = #{query.orderOnlineFlag}</if>
<if test="query.orderOfflineFlag != null"> and `goods_sku`.`order_offline_flag` = #{query.orderOfflineFlag}</if> <if test="query.orderOfflineFlag != null"> and `goods_sku`.`order_offline_flag` = #{query.orderOfflineFlag}</if>
<if test="query.costPrice != null"> and `goods_sku`.`cost_price` = #{query.costPrice}</if> <if test="query.costPrice != null"> and `goods_sku`.`cost_price` = #{query.costPrice}</if>
@ -177,6 +206,8 @@
ORDER BY `goods_sku`.`create_time` DESC ORDER BY `goods_sku`.`create_time` DESC
</select> </select>
<select id="selectByCategoryIds" resultType="com.qs.serve.modules.goods.entity.GoodsSku"> <select id="selectByCategoryIds" resultType="com.qs.serve.modules.goods.entity.GoodsSku">
SELECT goods_sku.* FROM `goods_sku` SELECT goods_sku.* FROM `goods_sku`
LEFT JOIN `goods_spu` LEFT JOIN `goods_spu`
@ -186,7 +217,7 @@
and goods_sku.del_flag = 0 and goods_sku.del_flag = 0
and goods_sku.enable = 1 and goods_sku.enable = 1
and goods_spu.shelf = 1 and goods_spu.shelf = 1
and goods_spu.category_third in and ( goods_spu.category_third in
<foreach collection="categoryIds" item ="selectId" index="i" open="(" close=")" separator=","> <foreach collection="categoryIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId} #{selectId}
</foreach> </foreach>
@ -200,6 +231,7 @@
<foreach collection="categoryIds" item ="selectId" index="i" open="(" close=")" separator=","> <foreach collection="categoryIds" item ="selectId" index="i" open="(" close=")" separator=",">
#{selectId} #{selectId}
</foreach> </foreach>
)
</select> </select>
<select id="getBelongStringList" resultType="java.lang.String"> <select id="getBelongStringList" resultType="java.lang.String">

6
src/main/resources/mapper/goods/GoodsSpuMapper.xml

@ -27,7 +27,6 @@
<result property="cateFirstLabel" column="cate_first_label"/> <result property="cateFirstLabel" column="cate_first_label"/>
<result property="cateSecondLabel" column="cate_second_label"/> <result property="cateSecondLabel" column="cate_second_label"/>
<result property="cateThirdLabel" column="cate_third_label"/> <result property="cateThirdLabel" column="cate_third_label"/>
<result property="belong" column="belong"/>
</resultMap> </resultMap>
<sql id="goodsSkuSql"> <sql id="goodsSkuSql">
@ -62,10 +61,10 @@
goods_spu.`tenant_id`, goods_spu.`tenant_id`,
goods_spu.`cost_flag`, goods_spu.`cost_flag`,
goods_spu.`order_flag`, goods_spu.`order_flag`,
goods_spu.`book_belong`,
goods_spu.`del_flag`, goods_spu.`del_flag`,
goods_spu.`special_sku_id`, goods_spu.`special_sku_id`,
goods_spu.`sku_num_val`, goods_spu.`sku_num_val`
goods_spu.`belong`
</sql> </sql>
<sql id="skuWherePart"> <sql id="skuWherePart">
@ -172,6 +171,7 @@
<if test="query.spuCunhuoFlag != null"> and `goods_spu`.`spu_cunhuo_flag` = #{query.spuCunhuoFlag}</if> <if test="query.spuCunhuoFlag != null"> and `goods_spu`.`spu_cunhuo_flag` = #{query.spuCunhuoFlag}</if>
<if test="query.orderFlag != null"> and `goods_spu`.`order_flag` = #{query.orderFlag}</if> <if test="query.orderFlag != null"> and `goods_spu`.`order_flag` = #{query.orderFlag}</if>
<if test="query.sort != null"> and `goods_spu`.`sort` = #{query.sort}</if> <if test="query.sort != null"> and `goods_spu`.`sort` = #{query.sort}</if>
<if test="query.bookBelong != null"> and `goods_spu`.`book_belong` = #{query.bookBelong}</if>
<if test="query.saleNum != null"> and `goods_spu`.`sale_num` = #{query.saleNum}</if> <if test="query.saleNum != null"> and `goods_spu`.`sale_num` = #{query.saleNum}</if>
<if test="query.tasteValue != null and query.tasteValue != ''"> and `goods_spu`.`taste_value` like concat('%',#{query.tasteValue},'%') </if> <if test="query.tasteValue != null and query.tasteValue != ''"> and `goods_spu`.`taste_value` like concat('%',#{query.tasteValue},'%') </if>
<if test="query.createTime != null"> and `goods_spu`.`create_time` = #{query.createTime}</if> <if test="query.createTime != null"> and `goods_spu`.`create_time` = #{query.createTime}</if>

Loading…
Cancel
Save