From 437d7c45481176d4766152cae26cf841a8bd458f Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期三, 21 一月 2026 14:57:56 +0800
Subject: [PATCH] 经销商管理

---
 server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java |  135 +++++++++++++++++++++++++++++++++++----------
 1 files changed, 105 insertions(+), 30 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 34a05c7..43968bc 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
@@ -29,6 +29,7 @@
 import io.swagger.models.auth.In;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
+import org.bouncycastle.jcajce.provider.asymmetric.GOST;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -56,6 +57,8 @@
 
     @Autowired
     private GoodsMapper goodsMapper;
+    @Autowired
+    private ShopGoodsRelationMapper shopGoodsRelationMapper;
 
 
 
@@ -82,6 +85,9 @@
 
     @Autowired
     private MultifileService multifileService;
+
+    @Autowired
+    private CollectMapper collectMapper;
 
 
     @Autowired
@@ -308,6 +314,8 @@
         goods.setEditor(user.getId());
         goods.setId(id);
         goodsMapper.updateById(goods);
+        //鍒犻櫎渚涜揣浠�
+        shopGoodsRelationMapper.delete(new UpdateWrapper<ShopGoodsRelation>().lambda().eq(ShopGoodsRelation::getGoodsId,id));
     }
 
     @Override
@@ -326,29 +334,79 @@
 
     @Override
     public void updateStatusById(List<Goods> list) {
-        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
-
-
-
-        for(Goods model:list){
-            if(Constants.equalsInteger(model.getStatus(),Constants.ZERO)){
-                MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
-                queryWrapper.selectAll(Goods.class);
-                queryWrapper.innerJoin(GoodsSku.class,GoodsSku::getGoodsId,Goods::getId);
-                queryWrapper.eq(GoodsSku::getIsdeleted,Constants.ZERO);
-                queryWrapper.eq(Goods::getId,model.getId());
-                List<Goods> query= goodsAdminJoinMapper.selectJoinList(Goods.class,queryWrapper);
-                if(query==null||query.size()<=0){
-                    throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), model.getName()+":鍟嗗搧鏈厤缃甋KU锛屾棤娉曚笂鏋�");
-                }
-            }
-            Goods update=new Goods();
-            update.setEditor(user.getId());
-            update.setEditDate(new Date());
-            update.setStatus(model.getStatus());
-            update.setId(model.getId());
-            goodsMapper.updateById(model);
+        if(list == null || list.size()==0){
+            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+        List<Integer> idList = new ArrayList<>();
+        for(Goods model:list){
+            idList.add(model.getId() );
+        }
+        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal();
+        if(Constants.formatIntegerNum(list.get(0).getStatus()) == Constants.ONE){
+            //濡傛灉鏄壒閲忎笅鏋�
+            goodsMapper.update(null,new UpdateWrapper<Goods>().lambda()
+                    .set(Goods::getEditDate,new Date() )
+                    .set(Goods::getEditor,user.getId())
+                    .set(Goods::getStatus,Constants.ONE )
+                    .in(Goods::getId,idList));
+            return;
+        }
+        long shopNum   = shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
+                .eq(Shop::getIsdeleted,Constants.ZERO)
+                .eq(Shop::getStatus,Constants.ZERO));
+        MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>();
+        queryWrapper.selectAll(Goods.class);
+        queryWrapper.select("(select count(s.id) from shop_goods_relation s  " +
+                "left join shop g on s.SHOP_ID =g.id " +
+                "where g.status=0 and s.ISDELETED=0 and s.GOODS_ID=t.id) as pricedShopNum ");
+        queryWrapper.eq(GoodsSku::getIsdeleted,Constants.ZERO);
+        queryWrapper.in(Goods::getId,idList);
+        List<Goods> goodsList= goodsAdminJoinMapper.selectJoinList(Goods.class,queryWrapper);
+        if(goodsList==null || goodsList.size() == 0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍟嗗搧淇℃伅鏌ヨ鏃犳晥 ");
+        }
+        //鏌ヨ鍏ㄩ儴sku淇℃伅
+        List<GoodsSku> goodsSkuList=goodsSkuMapper.selectList(new QueryWrapper<GoodsSku>().lambda()
+                        .eq(GoodsSku::getIsdeleted,Constants.ZERO)
+                        .in(GoodsSku::getGoodsId,idList) );
+        if(goodsSkuList==null || goodsSkuList.size() == 0){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "鍟嗗搧灏氭湭璁剧疆闆跺敭浠凤紝璇峰厛璁剧疆浠锋牸锛� ");
+        }
+        for(Goods param: list){
+            Goods goods = getGoodsFromListById(param.getId(),goodsList,goodsSkuList);
+            if(goods ==null ){
+                continue;
+            }
+            //濡傛灉鏄笂鏋�
+            goods.setGoodsSkuList(goodsSkuList);
+            if(goods.getSkuPrice() == null || goods.getSkuPrice().compareTo(new BigDecimal(0)) <=0){
+                //榛樿sku淇℃伅
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":鍟嗗搧鍟嗗搧灏氭湭璁剧疆闆跺敭浠凤紝鏃犳硶涓婃灦");
+            }
+            if(Constants.formatLongNum(goods.getPricedShopNum()) <= shopNum){
+                //榛樿sku淇℃伅
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":鏈夋湭璁剧疆渚涜揣浠风殑缁忛攢鍟嗭紝鏃犳硶涓婃灦");
+            }
+        }
+        goodsMapper.update(null,new UpdateWrapper<Goods>().lambda()
+                .set(Goods::getEditDate,new Date() )
+                .set(Goods::getEditor,user.getId())
+                .set(Goods::getStatus,Constants.ZERO )
+                .in(Goods::getId,idList));
+    }
+
+    private Goods getGoodsFromListById(Integer id, List<Goods> goodsList, List<GoodsSku> skuList) {
+        for(Goods model: goodsList){
+            if(Constants.equalsObject(model.getIdList(),id)){
+                for(GoodsSku sku :skuList){
+                    if(Constants.equalsInteger(sku.getGoodsId(),id)){
+                        model.setSkuPrice(sku.getPrice());
+                    }
+                }
+                return  model;
+            }
+        }
+        return null;
     }
 
 
@@ -733,7 +791,11 @@
         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 count(id) from shop_goods_relation s where s.ISDELETED=0 and s.GOODS_ID=t.id) as pricedShopNum ");
+        if(pageWrap.getModel().getShopId() !=null){
+            queryWrapper.select("(select  s.price from shop_goods_relation s  where s.ISDELETED=0 and s.GOODS_ID=t.id  and s.shop_id="+pageWrap.getModel().getShopId()+" limit 1) as shopPrice");//鍟嗗渚涜揣浠�
+        }else{
+            queryWrapper.select("(select count(s.id) from shop_goods_relation s  left join shop g on s.SHOP_ID =g.id where g.status=0 and s.ISDELETED=0 and s.GOODS_ID=t.id) as pricedShopNum ");
+        }
         //瀹為檯閿�閲�
         queryWrapper.select("(select sum(gd.GOODS_NUM) from  goodsorder_detail gd" +
                 "        inner join  goods_sku gs on gs.id=gd.GOODS_SKU_ID" +
@@ -756,9 +818,12 @@
         queryWrapper.eq(pageWrap.getModel().getBrandId() != null, Goods::getBrandId, pageWrap.getModel().getBrandId());
         queryWrapper.eq(pageWrap.getModel().getStatus() != null, Goods::getStatus, pageWrap.getModel().getStatus());
         queryWrapper.in(pageWrap.getModel().getIdList() != null && pageWrap.getModel().getIdList().size()>0, Goods::getId, pageWrap.getModel().getIdList());
+        if(pageWrap.getModel().getShopId() !=null){
+            queryWrapper.orderByAsc("shopPrice");
+        }
         queryWrapper.orderByDesc(Goods::getId);
         IPage<Goods> result = goodsAdminJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
-        initResult(result.getRecords());
+        initResult(result.getRecords(),pageWrap.getModel().getShopId()==null);
         return PageData.from(result);
     }
 
@@ -781,12 +846,16 @@
 
 
 
-    private void initResult(List<Goods> list) {
+    private void initResult(List<Goods> list,boolean shopId) {
         if (list == null || list.size() == 0) {
             return;
         }
-       long shopNum = shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
-                .eq(Shop::getIsdeleted,Constants.ZERO));
+        long shopNum = 0;
+        if(shopId){//涓嶉拡瀵瑰晢瀹舵悳绱㈢殑璇濓紝
+            shopNum   = shopMapper.selectCount(new QueryWrapper<Shop>().lambda()
+                    .eq(Shop::getIsdeleted,Constants.ZERO)
+                    .eq(Shop::getStatus,Constants.ZERO));
+        }
         String path = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_FILE).getCode();
         for (Goods goods : list) {
@@ -865,7 +934,6 @@
         if (!CollectionUtils.isEmpty(page.getRecords())){
             String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
             page.getRecords().forEach(s->s.setImgurl(preFixPath+s.getImgurl()));
-
         }
         return page;
     }
@@ -935,8 +1003,7 @@
 
 
     @Override
-    public GoodsInfoResponse getGoodsInfo(Integer goodsId) {
-
+    public GoodsInfoResponse 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);
@@ -958,6 +1025,14 @@
                                                                                             Constants.GOODS_FILE);
         List<MultiFileDTO> multiFileDTOS = objAllFileUrl.get(Constants.MultiFile.PLATFORM_GOOD_ROTATION.getKey());
         goodsResponse.setGoodBannerMultiFiles(multiFileDTOS);
+        goodsResponse.setCollectStatus(Constants.ZERO);
+        if(Objects.nonNull(memberId)){
+            goodsResponse.setCollectStatus(collectMapper.selectCount(new QueryWrapper<Collect>().lambda()
+                    .eq(Collect::getMemberId,memberId)
+                    .eq(Collect::getObjId,goodsId)
+                    .eq(Collect::getObjType,Constants.ONE)
+            )>Constants.ZERO?Constants.ONE:Constants.ZERO);
+        }
 
         return goodsResponse;
     }

--
Gitblit v1.9.3