From f4e09a3f13bbf63b166c3a149497a93a9fd43bc5 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 13 一月 2026 18:25:41 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java |  116 ++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 76 insertions(+), 40 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 3559a14..d558a10 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
@@ -156,7 +156,7 @@
         goodsSku.setGoodsId(goods.getId());
         goodsSku.setName(goods.getName());
         goodsSku.setPrice(goods.getSkuPrice());
-        goodsSku.setShowPrice(goods.getPrice());
+        goodsSku.setShowPrice(goods.getShowPrice());
         goodsSku.setStock(goods.getStockNum());
         goodsSku.setIntegralRate(goods.getDeductRata());
         goodsSku.setUnitName(goods.getUnitName());
@@ -211,6 +211,7 @@
                     || goods.getBrandList() == null
                     || goods.getBrandList().size() == 0
                     || goods.getWeight() == null
+                    || goods.getDeductRata() == null
                     || goods.getPrice() == null
                     || goods.getSkuPrice() == null
                     || StringUtils.isBlank(goods.getImgurl())
@@ -218,6 +219,10 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), ResponseStatus.BAD_REQUEST.getMessage());
             }
 
+            if(goods.getDeductRata().compareTo(new BigDecimal(0.1)) <Constants.ZERO ||
+                    goods.getDeductRata().compareTo(new BigDecimal(100)) >Constants.ZERO){
+                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绉垎鍙姷鎵i噾棰濇瘮渚嬭璁剧疆[0.1,100]涔嬮棿~");
+            }
             //鏌ヨ鍒嗙被
             Labels cate = labelsMapper.selectById(goods.getCategoryId());
             if(cate == null || Constants.equalsInteger(cate.getIsdeleted(),Constants.ONE)
@@ -225,7 +230,7 @@
                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍒嗙被淇℃伅涓嶅瓨鍦�");
             }
             if(goods.getBrandId()!=null){
-                Labels brand = labelsMapper.selectById(goods.getCategoryId());
+                Labels brand = labelsMapper.selectById(goods.getBrandId());
                 if(brand == null || Constants.equalsInteger(brand.getIsdeleted(),Constants.ONE)
                         ||! Constants.equalsInteger(brand.getType(),Constants.LabelsType.GOODSBRAND.getKey())){
                     throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍝佺墝淇℃伅涓嶅瓨鍦�");
@@ -234,7 +239,7 @@
             List<Integer> bIds = new ArrayList<>();
             for(Labels b : goods.getBrandList()){
                 bIds.add(b.getId());
-                if(b.getChildIdList() == null || b.getChildIdList().size() ==0){
+                if(b.getChildIdList() != null && b.getChildIdList().size() >=0){
                     bIds.addAll(b.getChildIdList());
                 }
             }
@@ -251,9 +256,9 @@
                      throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝璇烽�夋嫨姝g‘鐨勯�傜敤鍝佺墝");
                  }
                  idsBrand.add("["+b.getId()+"]");
-                if(b.getChildIdList() == null || b.getChildIdList().size() ==0){
+                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());
+                       Labels cb = findLabelFromListByid(allBrands,c,Constants.LabelsType.SERIES_BRAND.getKey(),b.getId());
                        if(cb == null){
                            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝鍝佺墝銆�"+tb.getName() +"銆戜笅鎵�灞炵郴鍒椾笉姝g‘");
                        }
@@ -265,7 +270,6 @@
             if(idsSerial.size()>0){
                 goods.setSerialIds(String.join(",",idsSerial));
             }
-
     }
 
     private Labels findLabelFromListByid(List<Labels> allBrands, Integer id, int type,Integer parentId) {
@@ -274,13 +278,13 @@
         }
         for(Labels labels:allBrands){
             if(!Constants.equalsInteger(id,labels.getId())){
-                return null;
+               continue;
             }
             if(!Constants.equalsInteger(type,labels.getType())){
-                return null;
+              continue;
             }
             if(parentId !=null && !Constants.equalsInteger(parentId,labels.getParentId())){
-                return null;
+               continue;
             }
             return labels;
         }
@@ -364,11 +368,11 @@
         skuMapper.update(null,new UpdateWrapper<Sku>().lambda()
                 .set(Sku::getIsdeleted,Constants.ONE)
                 .eq(Sku::getIsdeleted,Constants.ZERO)
-                .eq(Sku::getGoodsId,goods.getSkuId()));
+                .eq(Sku::getGoodsId,goods.getId()));
         goodsSkuMapper.update(null,new UpdateWrapper<GoodsSku>().lambda()
                 .set(GoodsSku::getIsdeleted,Constants.ONE)
                 .eq(GoodsSku::getIsdeleted,Constants.ZERO)
-                .eq(GoodsSku::getGoodsId,goods.getSkuId()));
+                .eq(GoodsSku::getGoodsId,goods.getId()));
         dealDefaultGoodsSku(goods);//鏂板缓sku淇℃伅
         dealBatchMultiFiles(goods, goods.getFileList(), user,true);
     }
@@ -526,7 +530,8 @@
     @Override
     public Goods findById(Integer id) {
         MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
-        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.ACTIVITY_FILE).getCode();
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
 
         queryWrapper.eq(Goods::getId,id);
         queryWrapper.selectAll(Goods.class);
@@ -554,6 +559,7 @@
             //榛樿sku淇℃伅
             GoodsSku goodsSku = goodsSkuList.get(0);
             goods.setSkuPrice(goodsSku.getPrice());
+            goods.setShowPrice(goodsSku.getShowPrice());
             goods.setWeight(goodsSku.getWeight());
             goods.setStockNum(goodsSku.getStock());
             goods.setUnitName(goodsSku.getUnitName());
@@ -592,6 +598,7 @@
                     }
                 }
             }
+            goods.setBrandList(brandList);
         }
     }
 
@@ -721,7 +728,7 @@
         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 ");
+        queryWrapper.select("(select sum(STOCK) from goods_sku where ISDELETED=0 and GOODS_ID=t.id) as stockNum ");
         //瀹為檯閿�閲�
         queryWrapper.select("(select sum(gd.GOODS_NUM) from  goodsorder_detail gd" +
                 "        inner join  goods_sku gs on gs.id=gd.GOODS_SKU_ID" +
@@ -773,7 +780,8 @@
         if (list == null || list.size() == 0) {
             return;
         }
-        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
+        String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
+                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
         for (Goods goods : list) {
             goods.setResourcePath(path);
             //鏌ヨsku
@@ -788,9 +796,11 @@
                 //榛樿sku淇℃伅
                 goods.setSkuPrice(goodsSku.getPrice());
                 goods.setWeight(goodsSku.getWeight());
+                goods.setShowPrice(goodsSku.getShowPrice());
                 goods.setStockNum(goodsSku.getStock());
                 goods.setUnitName(goodsSku.getUnitName());
             }
+//            initGoodsApplyBrandAndSerial(goods);
         }
     }
 
@@ -811,45 +821,66 @@
      */
     @Override
     public IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
+       GoodsRequest model = pageWrap.getModel();
 
        QueryWrapper<GoodsRequest> wrapper = new QueryWrapper<GoodsRequest>()
                 .eq("g.ISDELETED",Constants.ZERO)
-                .eq("g.PARENT_CATEGORY_ID",pageWrap.getModel().getParentCategoryId())
-                .eq(!Objects.isNull(pageWrap.getModel()) && Objects.nonNull(pageWrap.getModel().getCategoryId()),
-                        "g.CATEGORY_ID", pageWrap.getModel().getCategoryId())
+                .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
+                        "g.CATEGORY_ID", model.getCategoryId())
+
+               //TODO 閫傜敤鍝佺墝  閫傜敤绯诲垪
+//               .eq(!Objects.isNull(model) && Objects.nonNull(model.getApplicableBrandId()),
+//                       "","")
+//               .eq(!Objects.isNull(model) && Objects.nonNull(model.getSeriesBrandId()),
+//                       "","")
+
                 .eq("g.STATUS", Constants.ZERO)
-                .like(StringUtils.isNotBlank(pageWrap.getModel().getGoodsName()),"g.NAME",pageWrap.getModel().getGoodsName());
-//                .eq(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getType()), "g.TYPE", pageWrap.getModel().getType());
+                .like(StringUtils.isNotBlank(model.getGoodsName()),"g.NAME",model.getGoodsName());
 
-                for(PageWrap.SortData sortData:pageWrap.getSorts1()){
-                    if ("CREATE_DATE".equalsIgnoreCase(sortData.getProperty())){
-                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
-                            wrapper.orderByAsc("g.CREATE_DATE");
-                        }
+                if(Objects.nonNull(model.getSortInfo())){
+                    //鎺掑簭鏂瑰紡锛�0=缁煎悎鎺掑簭锛�1=閿�閲忕敱浣庡埌楂� 锛�2=浠锋牸鐢变綆鍒伴珮锛�3=閿�閲忕敱楂樺埌浣庯紱4=浠锋牸鐢遍珮鍒颁綆
+                    if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
                         wrapper.orderByDesc("g.CREATE_DATE");
-
-                    }
-                    if ("realSaleNum".equalsIgnoreCase(sortData.getProperty())){
-
-                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
-                            wrapper.orderByAsc("realSaleNum");
-                        }
+                    }else if(Constants.equalsInteger(model.getSortInfo(),Constants.ONE)){
+                        wrapper.orderByAsc("realSaleNum");
+                    }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
+                        wrapper.orderByAsc("g.price");
+                    }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
                         wrapper.orderByDesc("realSaleNum");
+                    }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
+                        wrapper.orderByDesc("g.price");
                     }
-                    if ("PRICE".equalsIgnoreCase(sortData.getProperty())){
-                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
-                            wrapper.orderByAsc("g.PRICE");
-                        }
-                        wrapper.orderByDesc("g.PRICE");
-                    }
-
                 }
 
+//                for(PageWrap.SortData sortData:pageWrap.getSorts1()){
+//                    if ("CREATE_DATE".equalsIgnoreCase(sortData.getProperty())){
+//                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
+//                            wrapper.orderByAsc("g.CREATE_DATE");
+//                        }
+//                        wrapper.orderByDesc("g.CREATE_DATE");
+//
+//                    }
+//                    if ("realSaleNum".equalsIgnoreCase(sortData.getProperty())){
+//
+//                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
+//                            wrapper.orderByAsc("realSaleNum");
+//                        }
+//                        wrapper.orderByDesc("realSaleNum");
+//                    }
+//                    if ("PRICE".equalsIgnoreCase(sortData.getProperty())){
+//                        if (PageWrap.ASC.equalsIgnoreCase(sortData.getDirection())){
+//                            wrapper.orderByAsc("g.PRICE");
+//                        }
+//                        wrapper.orderByDesc("g.PRICE");
+//                    }
+//
+//                }
 
         IPage<GoodsInfoResponse> page = goodsMapper.goodsPage(pageWrap.toPage(),wrapper);
         if (!CollectionUtils.isEmpty(page.getRecords())){
             String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
             page.getRecords().forEach(s->s.setImgurl(preFixPath+s.getImgurl()));
+
         }
 
 
@@ -888,6 +919,7 @@
 
         String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
+        Integer sumStock = Constants.ZERO;
         for (GoodsSkuResponse goodsSkuResponse:goodsSkuResponseList) {
             if(StringUtils.isBlank(goodsSkuResponse.getImgurl())){
                 goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getGoodsImgUrl());
@@ -920,8 +952,11 @@
                 indexData.append("," + ( skuAttr.getSortnum()-1));
             }
             goodsSkuResponse.setIndexData(indexData.toString().substring(1));
+            sumStock = sumStock + goodsSkuResponse.getStock();
         }
-
+        //鐪熷疄閿�閲� = realSaleNum  - saleNum;
+        //鐪熷疄搴撳瓨= sumStock - (realSaleNum  - saleNum)
+        goodsResponse.setStock(sumStock - goodsResponse.getRealSaleNum() + goodsResponse.getSaleNum());
         goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
         //Sku鍩虹淇℃伅
         List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
@@ -943,7 +978,7 @@
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
         GoodsInfoResponse goodsResponse = goodsMapper.getGoodsInfo(goodsId);
         if(Objects.isNull(goodsResponse)){
-            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"褰撳墠涓撳尯鍏宠仈鍟嗗搧宸插垹闄�");
+            throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }
         goodsResponse.setImgurl(fullUrl + goodsResponse.getImgurl());
         //鏌ヨ鍟嗗搧鐨勫垎绫�
@@ -960,6 +995,7 @@
                                                                                             Constants.GOODS_FILE);
         List<MultiFileDTO> multiFileDTOS = objAllFileUrl.get(Constants.MultiFile.PLATFORM_GOOD_ROTATION.getKey());
         goodsResponse.setGoodBannerMultiFiles(multiFileDTOS);
+
         return goodsResponse;
     }
 

--
Gitblit v1.9.3