From e4f9739d74323aacf09d139700f22a383910ee97 Mon Sep 17 00:00:00 2001
From: MrShi <1878285526@qq.com>
Date: 星期三, 04 三月 2026 10:38:32 +0800
Subject: [PATCH] 合并

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java |  128 +++++++++++++++++++-----------------------
 1 files changed, 57 insertions(+), 71 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 05486e9..f7e17dc 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
@@ -841,8 +841,9 @@
     public List<Goods> findList(Goods goods) {
         QueryWrapper<Goods> wrapper = new QueryWrapper<>(goods);
         wrapper.lambda()
-            .in(goods.getIdList() != null && goods.getIdList().size()>0, Goods::getId, goods.getIdList())
-            .eq( Goods::getIsdeleted, Constants.ZERO);
+                .in(goods.getIdList() != null && goods.getIdList().size()>0, Goods::getId, goods.getIdList())
+                .like(goods.getZhuanquId()!=null,Goods::getZhuanquIds,"["+goods.getZhuanquId()+"]")
+                .eq( Goods::getIsdeleted, Constants.ZERO);
         return goodsMapper.selectList(wrapper);
     }
 
@@ -967,45 +968,51 @@
      * @return
      */
     @Override
-    public IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
+    public IPage<Goods> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
        GoodsRequest model = pageWrap.getModel();
-       QueryWrapper<GoodsRequest> wrapper = new QueryWrapper<GoodsRequest>()
-                .eq("g.ISDELETED",Constants.ZERO)
+        MPJLambdaWrapper<Goods> wrapper = new MPJLambdaWrapper<Goods>()
+                .selectAll(Goods.class)
+                .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getMinPrice)
+                .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
+                .eq(Goods::getIsdeleted,Constants.ZERO)
                 .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
-                        "g.CATEGORY_ID", model.getCategoryId())
+                        Goods::getCategoryId, model.getCategoryId())
                //閫傜敤鍝佺墝  閫傜敤绯诲垪
                .apply(!Objects.isNull(model) && Objects.nonNull(model.getApplicableBrandId()),
-                       " find_in_set( '["+model.getApplicableBrandId()+"]' , g.BRAND_IDS )  ")
+                       " find_in_set( '["+model.getApplicableBrandId()+"]' , t.BRAND_IDS )  ")
                .apply(!Objects.isNull(model) && Objects.nonNull(model.getSeriesBrandId()),
-                       " find_in_set( '["+model.getSeriesBrandId()+"]' , g.SERIAL_IDS )  ")
-                .eq("g.STATUS", Constants.ZERO)
-                .like(StringUtils.isNotBlank(model.getGoodsName()),"g.NAME",model.getGoodsName());
+                       " find_in_set( '["+model.getSeriesBrandId()+"]' , t.SERIAL_IDS )  ")
+               .apply(!Objects.isNull(model) && Objects.nonNull(model.getQualityId()),
+                        " find_in_set( '["+model.getQualityId()+"]' , t.ZHUANQU_IDS )  ")
+                .eq(Goods::getStatus, Constants.ZERO)
+                .like(StringUtils.isNotBlank(model.getGoodsName()),Goods::getName,model.getGoodsName());
+        if(Objects.nonNull(model.getShopId())){
+            wrapper.select("  ifnull( ( select sgr.PRICE from shop_goods_relation sgr where sgr.GOODS_ID = t.ID and sgr.ISDELETED = 0 and sgr.`STATUS` = 0  and sgr.SHOP_ID = "+model.getShopId()+" ) ,0) ",Goods::getExFactoryPrice);
+            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where gd.GOODS_ID = t.`id` and  go.DISTRIBUTION_SHOP_ID = "+model.getShopId()+" ),0) ",Goods::getRealSaleNum);
 
-                if(Objects.nonNull(model.getSortInfo())){
-                    //鎺掑簭鏂瑰紡锛�0=缁煎悎鎺掑簭锛�1=閿�閲忕敱浣庡埌楂� 锛�2=浠锋牸鐢变綆鍒伴珮锛�3=閿�閲忕敱楂樺埌浣庯紱4=浠锋牸鐢遍珮鍒颁綆
-                    if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
-                        wrapper.orderByDesc("g.CREATE_DATE");
-                    }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");
-                    }
-                }
-        IPage<GoodsInfoResponse> page =
-                Objects.isNull(model.getShopId())?
-                goodsMapper.goodsPage(pageWrap.toPage(),wrapper)
-                :
-                goodsMapper.goodsPageForShop(pageWrap.toPage(),wrapper,model.getShopId()) ;
+        }else{
+            wrapper.select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd  where gd.GOODS_ID =  t.id  )) ",Goods::getRealSaleNum);
+        }
+
+        if(Objects.nonNull(model.getSortInfo())){
+            //鎺掑簭鏂瑰紡锛�0=缁煎悎鎺掑簭锛�1=閿�閲忕敱浣庡埌楂� 锛�2=浠锋牸鐢变綆鍒伴珮锛�3=閿�閲忕敱楂樺埌浣庯紱4=浠锋牸鐢遍珮鍒颁綆
+            if(Constants.equalsInteger(model.getSortInfo(),Constants.ZERO)){
+                wrapper.orderByDesc("t.CREATE_DATE");
+            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.ONE)){
+                wrapper.orderByAsc("(realSaleNum + t.SALENUM)");
+            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
+                wrapper.orderByAsc("minPrice");
+            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
+                wrapper.orderByDesc("(realSaleNum + t.SALENUM)");
+            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
+                wrapper.orderByDesc("minPrice");
+            }
+        }
+        IPage<Goods> page =
+                goodsMapper.selectJoinPage(pageWrap.toPage(), Goods.class, wrapper);
         if (!CollectionUtils.isEmpty(page.getRecords())){
             String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
-
-
-            for (GoodsInfoResponse goodsInfoResponse:page.getRecords()
-                 ) {
+            for (Goods goodsInfoResponse:page.getRecords()) {
                 goodsInfoResponse.setImgurl(StringUtils.isNotBlank(goodsInfoResponse.getImgurl())?(preFixPath+goodsInfoResponse.getImgurl()):null);
                 if(Objects.isNull(model.getShopId())){
                     //sku鍩虹淇℃伅
@@ -1044,51 +1051,18 @@
      * @param goodsResponse
      * @return
      */
-    public void getSkuInfo(GoodsInfoResponse goodsResponse) {
+    public void getSkuInfo(Goods goodsResponse) {
 
         List<GoodsSkuResponse>  goodsSkuResponseList = goodsSkuMapper.getSkuResponseList(goodsResponse.getId());
-
-//        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) {
             goodsSkuResponse.setStock(Objects.isNull(goodsSkuResponse.getStock())?Constants.ZERO:goodsSkuResponse.getStock());
-//            if(StringUtils.isBlank(goodsSkuResponse.getImgurl())){
-//                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getGoodsImgUrl());
-//            }else{
-//                goodsSkuResponse.setImgurl(fullUrl + goodsSkuResponse.getImgurl());
-//            }
-//            //澶勭悊鏁版嵁涓嬫爣
-//            String goodsSkuName = goodsSkuResponse.getName();
-//            List<String> strList = Arrays.asList(goodsSkuName.split(";"));
-//            StringBuffer indexData = new StringBuffer();
-//            for (int i = 0; i < strList.size(); i++) {
-//                //鏌ヨsku淇℃伅
-//                Sku sku =  skuMapper.selectOne(new QueryWrapper<Sku>()
-//                        .eq("GOODS_ID",goodsResponse.getId())
-//                        .eq("SORTNUM",i)
-//                        .last(" limit 1 ")
-//                );
-//                if(Objects.isNull(sku)){
-//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-//                }
-//                //鏌ヨSKU_ATTR
-//                SkuAttr skuAttr = skuAttrMapper.selectOne(new QueryWrapper<SkuAttr>()
-//                        .eq("SKU_ID",sku.getId())
-//                        .eq("NAME",strList.get(i))
-//                        .last(" limit 1 ")
-//                );
-//                if(Objects.isNull(skuAttr)){
-//                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"SKU淇℃伅寮傚父,璇峰埛鏂版煡鐪�");
-//                }
-//                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.setStock(sumStock);
+        goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock);
         goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
         //Sku鍩虹淇℃伅
         List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
@@ -1103,10 +1077,22 @@
     }
 
     @Override
-    public GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId) {
+    public Goods getGoodsInfo(Integer goodsId,Integer memberId) {
         String fullUrl = systemDictDataBiz.queryByCode(Constants.OSS,Constants.RESOURCE_PATH).getCode()+
                 systemDictDataBiz.queryByCode(Constants.OSS,Constants.GOODS_FILE).getCode();
-        GoodsInfoResponse goodsResponse = goodsMapper.getGoodsInfo(goodsId);
+//        GoodsInfoResponse goodsResponse = goodsMapper.getGoodsInfo(goodsId);
+        Goods goodsResponse = goodsMapper.selectOne(
+                 new MPJLambdaWrapper<Goods>()
+                        .selectAll(Goods.class)
+                        .select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd  where gd.GOODS_ID =  t.id  )) ",Goods::getRealSaleNum)
+                        .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getMinPrice)
+                         .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id ),0)   ",Goods::getLinePrice)
+                        .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
+//                        .eq(Goods::getIsdeleted,Constants.ZERO)
+//                        .eq(Goods::getStatus, Constants.ZERO)
+                        .eq(Goods::getId,goodsId)
+                         .last("limit 1")
+        );
         if(Objects.isNull(goodsResponse)){
             throw new BusinessException(ResponseStatus.DATA_EMPTY);
         }

--
Gitblit v1.9.3