From dce1e83ec27a066ebc6c17a4ac6d03c9ad6ff703 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期五, 12 十二月 2025 14:21:39 +0800
Subject: [PATCH] 经销商管理
---
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java | 318 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 256 insertions(+), 62 deletions(-)
diff --git a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
index e3eee49..3559a14 100644
--- a/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
+++ b/server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -101,61 +101,191 @@
private UploadFileService uploadFileService;
@Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public Integer create(Goods goods) {
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
isCreateParamValid(goods, user);
-
+ Date date =new Date();
goods.setIsdeleted(Constants.ZERO);
- goods.setCreateDate(new Date());
+ goods.setCreateDate(date);
goods.setCreator(user.getId());
+ goods.setEditDate(date);
+ goods.setEditor(user.getId());
goods.setStatus(Constants.ONE);
goods.setIsrec(Constants.ZERO);
if(StringUtils.isNotBlank(goods.getLabels())){
goods.setLabels( StringUtils.removeEnd( goods.getLabels().replace("锛�",","),","));
}
goodsMapper.insert(goods);
- dealBatchMultiFiles(goods, goods.getFileList(), user);
+ dealDefaultGoodsSku(goods);
+ dealBatchMultiFiles(goods, goods.getFileList(), user,false);
return goods.getId();
}
+ private void dealDefaultGoodsSku(Goods goods) {
+ Date date = goods.getEditDate();
+ Integer userId = goods.getEditor();
+ Sku sku = new Sku();
+ sku.setIsdeleted(Constants.ZERO);
+ sku.setCreateDate(date);
+ sku.setCreator(userId);
+ sku.setEditDate(date);
+ sku.setEditor(userId);
+ sku.setGoodsId(goods.getId());
+ sku.setName("榛樿");
+ sku.setSortnum(0);
+ skuMapper.insert(sku);
- public void dealBatchMultiFiles(Goods goods, List<Multifile> fileList, LoginUserInfo user) {
+ SkuAttr skuAttr = new SkuAttr();
+ skuAttr.setIsdeleted(Constants.ZERO);
+ skuAttr.setCreateDate(date);
+ skuAttr.setCreator(userId);
+ skuAttr.setEditDate(date);
+ skuAttr.setEditor(userId);
+ skuAttr.setSkuId(sku.getId());
+ skuAttr.setName("榛樿");
+ skuAttr.setSortnum(0);
+ skuAttrMapper.insert(skuAttr);
+
+ GoodsSku goodsSku = new GoodsSku();
+ goodsSku.setIsdeleted(Constants.ZERO);
+ goodsSku.setCreateDate(date);
+ goodsSku.setCreator(userId);
+ goodsSku.setEditDate(date);
+ goodsSku.setEditor(userId);
+ goodsSku.setSkuId(sku.getId());
+ goodsSku.setGoodsId(goods.getId());
+ goodsSku.setName(goods.getName());
+ goodsSku.setPrice(goods.getSkuPrice());
+ goodsSku.setShowPrice(goods.getPrice());
+ goodsSku.setStock(goods.getStockNum());
+ goodsSku.setIntegralRate(goods.getDeductRata());
+ goodsSku.setUnitName(goods.getUnitName());
+ goodsSku.setWeight(goods.getWeight());
+ goodsSku.setImgurl(goods.getImgurl());
+ goodsSku.setStatus(goods.getStatus());
+ goodsSkuMapper.insert(goodsSku);
+
+ GoodsSkuAttr goodsSkuAttr = new GoodsSkuAttr();
+ goodsSkuAttr.setIsdeleted(Constants.ZERO);
+ goodsSkuAttr.setCreateDate(date);
+ goodsSkuAttr.setCreator(userId);
+ goodsSkuAttr.setEditDate(date);
+ goodsSkuAttr.setEditor(userId);
+ goodsSkuAttr.setSkuId(sku.getId());
+ goodsSkuAttr.setGoodsSkuId(goodsSku.getId());
+ goodsSkuAttr.setSkuAttrId(skuAttr.getId());
+ goodsSkuAttrMapper.insert(goodsSkuAttr);
+ }
+
+ public void dealBatchMultiFiles(Goods goods, List<Multifile> fileList, LoginUserInfo user,boolean update) {
Date today = new Date();
- Multifile del = new Multifile();
- del.setObjId(goods.getId());
- multifileMapper.delete(new QueryWrapper<>(del));
- fileList.stream().forEach(s -> {
- s.setIsdeleted(Constants.ZERO);
- s.setCreator(user.getId());
- s.setCreateDate(today);
- s.setObjId(goods.getId());
- s.setType(Constants.ZERO);
- s.setObjType(Constants.MultiFile.PLATFORM_GOOD_ROTATION.getKey());
- multifileMapper.insert(s);
- /* if(Constants.equalsInteger(goods.getType(),Constants.ZERO)){
- //骞冲彴鍟嗗煄
+ //娓呯┖鍘熸湁鐨�
+ if(update){
+ multifileMapper.delete(new UpdateWrapper<Multifile>().lambda()
+ .eq(Multifile::getIsdeleted,Constants.ZERO)
+ .eq(Multifile::getObjId,goods.getId()));
+ }
+ if(fileList!=null && fileList.size()>0){
+ List<Multifile> multifileList = new ArrayList<>();
+ fileList.stream().forEach(s -> {
+ if(StringUtils.isNotBlank(s.getFileurl())){
+ s.setIsdeleted(Constants.ZERO);
+ s.setCreator(user.getId());
+ s.setCreateDate(today);
+ s.setObjId(goods.getId());
+ s.setType(Constants.ZERO);
+ s.setObjType(Constants.MultiFile.PLATFORM_GOOD_ROTATION.getKey());
+ multifileList.add(s);
+ }
+ });
+ if(multifileList.size()>0){
+ multifileMapper.insert(multifileList);
}
- if(Constants.equalsInteger(goods.getType(),Constants.ONE)){
- //鍜栬眴鍟嗗煄
- }
-
- if(Constants.equalsInteger(goods.getType(),Constants.TWO)){
- //鍜栧暋璁″垝鍟嗗搧
- }*/
- });
-
+ }
}
public void isCreateParamValid(Goods goods, LoginUserInfo user) {
//骞冲彴鍟嗗煄
if (StringUtils.isBlank(goods.getName())
|| goods.getCategoryId() == null
+ || goods.getBrandList() == null
+ || goods.getBrandList().size() == 0
+ || goods.getWeight() == null
+ || goods.getPrice() == null
+ || goods.getSkuPrice() == null
|| StringUtils.isBlank(goods.getImgurl())
- || org.apache.commons.collections.CollectionUtils.isEmpty(goods.getFileList())
- ) {
+ || org.apache.commons.collections.CollectionUtils.isEmpty(goods.getFileList())) {
throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
}
+ //鏌ヨ鍒嗙被
+ Labels cate = labelsMapper.selectById(goods.getCategoryId());
+ if(cate == null || Constants.equalsInteger(cate.getIsdeleted(),Constants.ONE)
+ ||! Constants.equalsInteger(cate.getType(),Constants.LabelsType.GOODSTYPE.getKey())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍒嗙被淇℃伅涓嶅瓨鍦�");
+ }
+ if(goods.getBrandId()!=null){
+ Labels brand = labelsMapper.selectById(goods.getCategoryId());
+ if(brand == null || Constants.equalsInteger(brand.getIsdeleted(),Constants.ONE)
+ ||! Constants.equalsInteger(brand.getType(),Constants.LabelsType.GOODSBRAND.getKey())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍝佺墝淇℃伅涓嶅瓨鍦�");
+ }
+ }
+ List<Integer> bIds = new ArrayList<>();
+ for(Labels b : goods.getBrandList()){
+ bIds.add(b.getId());
+ if(b.getChildIdList() == null || b.getChildIdList().size() ==0){
+ bIds.addAll(b.getChildIdList());
+ }
+ }
+ List<String> idsBrand = new ArrayList<>();
+ List<String> idsSerial = new ArrayList<>();
+ //鏌ヨ鍏ㄩ儴閫傜敤鍝佺墝鍜岀郴鍒楁暟鎹�
+ List<Labels> allBrands = labelsMapper.selectList(new QueryWrapper<Labels>().lambda()
+ .in(Labels::getId,bIds)
+ .eq(Labels::getIsdeleted,Constants.ZERO)
+ );
+ for(Labels b : goods.getBrandList()){
+ Labels tb = findLabelFromListByid(allBrands,b.getId(),Constants.LabelsType.APPLICABLE_BRAND.getKey(),null);
+ if(tb == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勯�傜敤鍝佺墝");
+ }
+ idsBrand.add("["+b.getId()+"]");
+ if(b.getChildIdList() == null || b.getChildIdList().size() ==0){
+ for(Integer c :b.getChildIdList()){
+ Labels cb = findLabelFromListByid(allBrands,b.getId(),Constants.LabelsType.SERIES_BRAND.getKey(),b.getId());
+ if(cb == null){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍝佺墝銆�"+tb.getName() +"銆戜笅鎵�灞炵郴鍒椾笉姝g‘");
+ }
+ idsSerial.add("["+c+"]");
+ }
+ }
+ }
+ goods.setBrandIds(String.join(",",idsBrand));
+ if(idsSerial.size()>0){
+ goods.setSerialIds(String.join(",",idsSerial));
+ }
+ }
+
+ private Labels findLabelFromListByid(List<Labels> allBrands, Integer id, int type,Integer parentId) {
+ if(allBrands == null || allBrands.size() ==0){
+ return null;
+ }
+ for(Labels labels:allBrands){
+ if(!Constants.equalsInteger(id,labels.getId())){
+ return null;
+ }
+ if(!Constants.equalsInteger(type,labels.getType())){
+ return null;
+ }
+ if(parentId !=null && !Constants.equalsInteger(parentId,labels.getParentId())){
+ return null;
+ }
+ return labels;
+ }
+
+ return null;
}
@Override
@@ -216,6 +346,7 @@
@Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
public void updateById(Goods goods) {
LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
Goods query=goodsMapper.selectById(goods.getId());
@@ -229,7 +360,17 @@
goods.setLabels( StringUtils.removeEnd( goods.getLabels().replace("锛�",","),","));
}
goodsMapper.updateById(goods);
- dealBatchMultiFiles(goods, goods.getFileList(), user);
+ //娓呯┖鍘熸湁鐨剆ku鏁版嵁
+ skuMapper.update(null,new UpdateWrapper<Sku>().lambda()
+ .set(Sku::getIsdeleted,Constants.ONE)
+ .eq(Sku::getIsdeleted,Constants.ZERO)
+ .eq(Sku::getGoodsId,goods.getSkuId()));
+ goodsSkuMapper.update(null,new UpdateWrapper<GoodsSku>().lambda()
+ .set(GoodsSku::getIsdeleted,Constants.ONE)
+ .eq(GoodsSku::getIsdeleted,Constants.ZERO)
+ .eq(GoodsSku::getGoodsId,goods.getSkuId()));
+ dealDefaultGoodsSku(goods);//鏂板缓sku淇℃伅
+ dealBatchMultiFiles(goods, goods.getFileList(), user,true);
}
@@ -389,11 +530,14 @@
queryWrapper.eq(Goods::getId,id);
queryWrapper.selectAll(Goods.class);
- queryWrapper.select("(select name from labels where id=t1.parent_id) as categoryName");
- queryWrapper.selectAs(Labels::getName ,Goods::getBrandName);
+ queryWrapper.select("t1.name",Goods::getCategoryName);
+ queryWrapper.select("t2.name" ,Goods::getBrandName);
queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getCategoryId);
+ queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getBrandId);
Goods goods=goodsAdminJoinMapper.selectJoinOne(Goods.class,queryWrapper);
-
+ if(goods == null){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
Multifile find = new Multifile();
find.setObjId(id);
find.setIsdeleted(Constants.ZERO);
@@ -406,7 +550,64 @@
queryGoodsSku.setIsdeleted(Constants.ZERO);
List<GoodsSku> goodsSkuList=goodsSkuMapper.selectList(new QueryWrapper<>(queryGoodsSku));
goods.setGoodsSkuList(goodsSkuList);
+ if(goodsSkuList.size()>0){
+ //榛樿sku淇℃伅
+ GoodsSku goodsSku = goodsSkuList.get(0);
+ goods.setSkuPrice(goodsSku.getPrice());
+ goods.setWeight(goodsSku.getWeight());
+ goods.setStockNum(goodsSku.getStock());
+ goods.setUnitName(goodsSku.getUnitName());
+ }
+
+ initGoodsApplyBrandAndSerial(goods);
return goods;
+ }
+
+ private void initGoodsApplyBrandAndSerial(Goods goods) {
+ List<Integer> idbrandList = getNumIdByIdsString(goods.getBrandIds());
+ List<Integer> idSerailList = getNumIdByIdsString(goods.getSerialIds());
+ if(idbrandList.size()>0){
+ List<Labels> brandList = new ArrayList<>();
+ List<Integer> allIds = new ArrayList<>();
+ allIds.addAll(idbrandList);
+ if(idSerailList.size()>0){
+ allIds.addAll(idSerailList);
+ }
+ List<Labels> allBrands = labelsMapper.selectList(new QueryWrapper<Labels>().lambda()
+ .in(Labels::getId,allIds)
+ .eq(Labels::getIsdeleted,Constants.ZERO)
+ );
+ for(Integer b : idbrandList){
+ Labels tb = findLabelFromListByid(allBrands,b,Constants.LabelsType.APPLICABLE_BRAND.getKey(),null);
+ if(tb != null){
+ brandList.add(tb);
+ tb.setChildIdList(new ArrayList<>());
+ tb.setChildList(new ArrayList<>());
+ for(Integer c : idSerailList) {
+ Labels cb = findLabelFromListByid(allBrands, c, Constants.LabelsType.SERIES_BRAND.getKey(), b);
+ if (cb != null) {
+ tb.getChildIdList().add(c);
+ tb.getChildList().add(cb);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ private List<Integer> getNumIdByIdsString(String brandIds) {
+ List<Integer> idbrandList = new ArrayList<>();
+ if(StringUtils.isNotBlank(brandIds)){
+ String[] idsBrand = brandIds.replace("[","").replace("]", "").split(",");
+ try {
+ for(String s :idsBrand){
+ idbrandList.add(Integer.parseInt(s));
+ }
+ }catch (Exception e){
+
+ }
+ }
+ return idbrandList;
}
@@ -512,8 +713,13 @@
Utils.MP.blankToNull(pageWrap.getModel());
queryWrapper.selectAll(Goods.class);
- queryWrapper.selectAs(Labels::getName, Goods::getCategoryName);
- queryWrapper.select("ls.name as parentName ");
+
+ queryWrapper.select("t1.name",Goods::getCategoryName);
+ queryWrapper.select("t2.name" ,Goods::getBrandName);
+ queryWrapper.select("t3.name" ,Goods::getParentName);
+ queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getCategoryId);
+ queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getBrandId);
+ queryWrapper.leftJoin(Labels.class,Labels::getId,Goods::getParentCategoryId);
//搴撳瓨閲�
queryWrapper.select("(select sum(STOCK) from goods_sku where ISDELETED=0 and GOODS_ID=t.id) as stockNum ");
//瀹為檯閿�閲�
@@ -522,16 +728,12 @@
" INNER JOIN goodsorder go on go.id=gd.ORDER_ID and go.ISDELETED=0 and go.PAY_STATUS=1 " +
" where gs.GOODS_ID=t.id) as salesVolume ");
- queryWrapper.leftJoin(Labels.class, Labels::getId, Goods::getCategoryId);
- queryWrapper.leftJoin("labels ls on ls.id=t.PARENT_CATEGORY_ID");
-
if (Constants.equalsInteger(pageWrap.getModel().getTabStatus(), Constants.TWO)) {
//宸插敭缃�
queryWrapper.exists("select gs.STOCK from goods_sku gs " +
" INNER JOIN goods g on g.id=gs.GOODS_ID " +
" where gs.STOCK<=0 and gs.ISDELETED=0 and g.id=t.id ");
}
-
queryWrapper.eq(!Constants.equalsInteger(pageWrap.getModel().getTabStatus(), 3), Goods::getIsdeleted, Constants.ZERO);
queryWrapper.eq(Constants.equalsInteger(pageWrap.getModel().getTabStatus(), 3), Goods::getIsdeleted, Constants.ONE);
@@ -571,32 +773,24 @@
if (list == null || list.size() == 0) {
return;
}
- Multifile multifile=new Multifile();
-
String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
- for (Goods model : list) {
- multifile.setIsdeleted(Constants.ZERO);
- multifile.setObjId(model.getId());
- List<Multifile> fileList=multifileMapper.selectList(new QueryWrapper<>(multifile));
- for(Multifile file:fileList){
- if(StringUtils.isNotBlank(file.getFileurl())){
- file.setFileFullUrl(path+file.getFileurl());
- }
- }
- model.setFileList(fileList);
- model.setResourcePath(path);
-
+ for (Goods goods : list) {
+ goods.setResourcePath(path);
//鏌ヨsku
- MPJLambdaWrapper<GoodsSku> queryWrapper = new MPJLambdaWrapper<>();
- queryWrapper.eq(GoodsSku::getIsdeleted,Constants.ZERO);
- queryWrapper.eq(GoodsSku::getGoodsId,model.getId());
- List<GoodsSku> gsList=goodsSkuMapper.selectList(queryWrapper);
- for(GoodsSku sd:gsList){
- if(StringUtils.isNotBlank(sd.getImgurl())){
- sd.setImgurl(path+sd.getImgurl());
- }
- }
- model.setGoodsSkuList(gsList);
+ MPJLambdaWrapper<GoodsSku> queryWrapper = new MPJLambdaWrapper<GoodsSku>()
+ .eq(GoodsSku::getIsdeleted,Constants.ZERO)
+ .last("limit 1")
+ .eq(GoodsSku::getGoodsId,goods.getId());
+ GoodsSku goodsSku = goodsSkuMapper.selectOne(queryWrapper);
+ goods.setGoodsSkuList(new ArrayList<>());
+ if(goodsSku !=null){
+ goods.getGoodsSkuList().add(goodsSku);
+ //榛樿sku淇℃伅
+ goods.setSkuPrice(goodsSku.getPrice());
+ goods.setWeight(goodsSku.getWeight());
+ goods.setStockNum(goodsSku.getStock());
+ goods.setUnitName(goodsSku.getUnitName());
+ }
}
}
--
Gitblit v1.9.3