rk
2026-03-23 bf7b975c7ebe94ac801d72671cefc4d6ec01d56e
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -889,9 +889,9 @@
        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");
        }
//        if(pageWrap.getModel().getShopId() !=null){
//            queryWrapper.orderByAsc("shopPrice");
//        }
        queryWrapper.orderByDesc(Goods::getId);
        IPage<Goods> result = goodsAdminJoinMapper.selectJoinPage(page, Goods.class, queryWrapper);
        initResult(result.getRecords(),pageWrap.getModel().getShopId()==null);
@@ -972,7 +972,8 @@
       GoodsRequest model = pageWrap.getModel();
        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)
                .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0  ),0)   ",Goods::getMinPrice)
                .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0 ),0)   ",Goods::getLinePrice)
                .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
                .eq(Goods::getIsdeleted,Constants.ZERO)
                .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -988,10 +989,10 @@
                .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);
            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id` and  go.DISTRIBUTION_SHOP_ID = "+model.getShopId()+" ),0) ",Goods::getRealSaleNum);
        }else{
            wrapper.select(" (( select ifnull(sum(GOODS_NUM),0) from goodsorder_detail gd  where gd.GOODS_ID =  t.id  )) ",Goods::getRealSaleNum);
            wrapper.select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id` ),0) ",Goods::getRealSaleNum);
        }
        if(Objects.nonNull(model.getSortInfo())){
@@ -999,11 +1000,11 @@
            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)");
                wrapper.orderByAsc("(realSaleNum + ifnull(t.SALENUM,0))");
            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.TWO)){
                wrapper.orderByAsc("minPrice");
            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.THREE)){
                wrapper.orderByDesc("(realSaleNum + t.SALENUM)");
                wrapper.orderByDesc("(realSaleNum + ifnull(t.SALENUM,0))");
            }else if(Constants.equalsInteger(model.getSortInfo(),Constants.FOUR)){
                wrapper.orderByDesc("minPrice");
            }
@@ -1055,14 +1056,21 @@
        List<GoodsSkuResponse>  goodsSkuResponseList = goodsSkuMapper.getSkuResponseList(goodsResponse.getId());
        Integer sumStock = Constants.ZERO;
        Boolean noRestrictions = true;
        for (GoodsSkuResponse goodsSkuResponse:goodsSkuResponseList) {
            goodsSkuResponse.setStock(Objects.isNull(goodsSkuResponse.getStock())?Constants.ZERO:goodsSkuResponse.getStock());
            sumStock = sumStock + goodsSkuResponse.getStock();
            if(StringUtils.isNotBlank(goodsSkuResponse.getStockStr())){
                noRestrictions  = false;
            }
        }
        //真实销量 = realSaleNum  - saleNum;
        //真实库存= sumStock - (realSaleNum  - saleNum)
        goodsResponse.setStock(sumStock);
        goodsResponse.setRealSaleNum(goodsResponse.getRealSaleNum()+sumStock);
        if(noRestrictions){
            goodsResponse.setStock(-Constants.ONE);
        }else{
            goodsResponse.setStock(sumStock);
        }
        goodsResponse.setGoodsSkuResponseList(goodsSkuResponseList);
        //Sku基础信息
        List<SkuResponse> skuResponseList = skuMapper.getSkuResponseList(goodsResponse.getId());
@@ -1084,9 +1092,9 @@
        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)
                        .select(" ifnull(( select sum(gd.GOODS_NUM) from goodsorder_detail gd  inner join goodsorder go on gd.ORDER_ID = go.id  where go.PAY_STATUS = 1 and gd.GOODS_ID = t.`id`  ),0) ",Goods::getRealSaleNum)
                        .select("  ifnull(( select min(gs.PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0),0)   ",Goods::getMinPrice)
                         .select("  ifnull(( select min(gs.SHOW_PRICE) from goods_sku gs where gs.GOODS_ID = t.id and gs.ISDELETED = 0),0)   ",Goods::getLinePrice)
                        .leftJoin(SystemUser.class, SystemUser::getId, Goods::getCreator)
//                        .eq(Goods::getIsdeleted,Constants.ZERO)
//                        .eq(Goods::getStatus, Constants.ZERO)