doum
10 小时以前 0a206f3acb9af0ec9db650861d34a256cda1c960
server/dmmall_service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -60,6 +60,9 @@
    @Autowired
    private ShopGoodsRelationMapper shopGoodsRelationMapper;
    @Autowired
    private SearchHistoryMapper searchHistoryMapper;
    @Autowired
@@ -129,7 +132,7 @@
        dealBatchMultiFiles(goods, goods.getFileList(), user,false);
        return goods.getId();
    }
    private void dealDefaultGoodsSku(Goods goods) {
    private Integer dealDefaultGoodsSku(Goods goods) {
        Date date = goods.getEditDate();
        Integer userId = goods.getEditor();
        Sku sku = new Sku();
@@ -183,6 +186,8 @@
        goodsSkuAttr.setGoodsSkuId(goodsSku.getId());
        goodsSkuAttr.setSkuAttrId(skuAttr.getId());
        goodsSkuAttrMapper.insert(goodsSkuAttr);
        return goodsSku.getId();
    }
    public void dealBatchMultiFiles(Goods goods, List<Multifile> fileList, LoginUserInfo user,boolean update) {
@@ -372,6 +377,7 @@
        if(goodsSkuList==null || goodsSkuList.size() == 0){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "商品尚未设置零售价,请先设置价格! ");
        }
        List<Integer> idList2 = new ArrayList<>();
        for(Goods param: list){
            Goods goods = getGoodsFromListById(param.getId(),goodsList,goodsSkuList);
            if(goods ==null ){
@@ -379,25 +385,47 @@
            }
            //如果是上架
            goods.setGoodsSkuList(goodsSkuList);
            boolean s =true;
            if(goods.getSkuPrice() == null || goods.getSkuPrice().compareTo(new BigDecimal(0)) <=0){
                //默认sku信息
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":商品商品尚未设置零售价,无法上架");
                s =false;
                if(idList.size()==1) {
                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":商品商品尚未设置零售价,无法上架");
                }
            }
            if(Constants.formatLongNum(goods.getPricedShopNum()) <= shopNum){
            if(Constants.formatLongNum(goods.getPricedShopNum()) < shopNum){
                //默认sku信息
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":有未设置供货价的经销商,无法上架");
                s =false;
                if(idList.size()==1){
                  throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), goods.getName()+":有未设置供货价的经销商,无法上架");
                }
            }
            if(s){
                idList2.add(param.getId());
            }
        }
        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));
        int successNum = 0;
        if(idList2.size()>0){
            successNum = 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,idList2));
        }
        if(successNum != idList.size()){
            if( idList.size()>1){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "成功上架商品数:【"+successNum+"】,上架失败:【"+(idList.size()-successNum)+"】个商品,请确保待上架商品的均销售价和供货价已设置");
            }else {
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode()," 上架失败");
            }
        }
    }
    private Goods getGoodsFromListById(Integer id, List<Goods> goodsList, List<GoodsSku> skuList) {
        for(Goods model: goodsList){
            if(Constants.equalsObject(model.getIdList(),id)){
            if(Constants.equalsInteger(model.getId(),id)){
                for(GoodsSku sku :skuList){
                    if(Constants.equalsInteger(sku.getGoodsId(),id)){
                        model.setSkuPrice(sku.getPrice());
@@ -425,6 +453,16 @@
            goods.setLabels(  StringUtils.removeEnd( goods.getLabels().replace(",",","),","));
        }
        goodsMapper.updateById(goods);
        boolean needUpdatesku = true;
        if(goods.getSkuPrice()!=null){
            GoodsSku queryGoodsSku=new GoodsSku();
            queryGoodsSku.setGoodsId(goods.getId());
            queryGoodsSku.setIsdeleted(Constants.ZERO);
            GoodsSku goodsSku=goodsSkuMapper.selectOne(new QueryWrapper<>(queryGoodsSku).last("limit 1"));
            if(goodsSku !=null && Constants.formatBigdecimal(goodsSku.getPrice()).compareTo(goods.getSkuPrice()) ==0){
                needUpdatesku = false;//价格未变化无需重新生成供货价
            }
        }
        //清空原有的sku数据
        skuMapper.update(null,new UpdateWrapper<Sku>().lambda()
                .set(Sku::getIsdeleted,Constants.ONE)
@@ -434,7 +472,21 @@
                .set(GoodsSku::getIsdeleted,Constants.ONE)
                .eq(GoodsSku::getIsdeleted,Constants.ZERO)
                .eq(GoodsSku::getGoodsId,goods.getId()));
        dealDefaultGoodsSku(goods);//新建sku信息
       Integer skuId = dealDefaultGoodsSku(goods);//新建sku信息
        if(needUpdatesku){ //先删除原来的数据
            shopGoodsRelationMapper.delete(new QueryWrapper<ShopGoodsRelation>().lambda()
                    .eq(ShopGoodsRelation::getGoodsId,goods.getId())
            );
        }else{
            //否则更新所有供货价关联关系中的skuID
            shopGoodsRelationMapper.update(null,new UpdateWrapper<ShopGoodsRelation>().lambda()
                    .eq(ShopGoodsRelation::getGoodsId,goods.getId())
                    .set(ShopGoodsRelation::getGoodsSkuId,skuId)
            );
        }
        dealBatchMultiFiles(goods, goods.getFileList(), user,true);
    }
@@ -899,7 +951,6 @@
    @Override
    public IPage<GoodsInfoResponse> getGoodsPage(PageWrap<GoodsRequest> pageWrap) {
       GoodsRequest model = pageWrap.getModel();
       QueryWrapper<GoodsRequest> wrapper = new QueryWrapper<GoodsRequest>()
                .eq("g.ISDELETED",Constants.ZERO)
                .eq(!Objects.isNull(model) && Objects.nonNull(model.getCategoryId()),
@@ -933,7 +984,38 @@
                goodsMapper.goodsPageForShop(pageWrap.toPage(),wrapper,model.getShopId()) ;
        if (!CollectionUtils.isEmpty(page.getRecords())){
            String preFixPath = systemDictDataBiz.getPreFixPath(Constants.RESOURCE_PATH, Constants.GOODS_FILE);
            page.getRecords().forEach(s->s.setImgurl(preFixPath+s.getImgurl()));
            for (GoodsInfoResponse goodsInfoResponse:page.getRecords()
                 ) {
                goodsInfoResponse.setImgurl(StringUtils.isNotBlank(goodsInfoResponse.getImgurl())?(preFixPath+goodsInfoResponse.getImgurl()):null);
                if(Objects.isNull(model.getShopId())){
                    //sku基础信息
                    this.getSkuInfo(goodsInfoResponse);
                }
                if(StringUtils.isNotBlank(goodsInfoResponse.getBrandIds())){
                    List<Labels> allBrands = labelsMapper.selectList(new QueryWrapper<Labels>().lambda()
                            .in(Labels::getId,getNumIdByIdsString(goodsInfoResponse.getBrandIds()))
                            .eq(Labels::getType,Constants.LabelsType.APPLICABLE_BRAND.getKey())
                            .eq(Labels::getIsdeleted,Constants.ZERO)
                    );
                    if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(allBrands)){
                        goodsInfoResponse.setBrandNames(String.join("/",allBrands.stream().map(i->i.getName()).collect(Collectors.toList())));
                    }
                }
            }
        }
        if(StringUtils.isNotBlank(model.getGoodsName())&&Objects.nonNull(model.getMemberId())){
            searchHistoryMapper.delete(new QueryWrapper<SearchHistory>().lambda()
                    .eq(SearchHistory::getMemberId,model.getMemberId())
                    .eq(SearchHistory::getContent,model.getGoodsName())
            );
            SearchHistory searchHistory = new SearchHistory();
            searchHistory.setIsdeleted(Constants.ZERO);
            searchHistory.setContent(model.getGoodsName());
            searchHistory.setMemberId(model.getMemberId());
            searchHistory.setType(Constants.ZERO);
            searchHistoryMapper.insert(searchHistory);
        }
        return page;
    }
@@ -948,41 +1030,42 @@
        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();
//        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());
            }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+1)
                        .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));
            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;
@@ -1000,7 +1083,6 @@
        }
        goodsResponse.setSkuResponsesList(skuResponseList);
    }
    @Override
    public GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId) {
@@ -1033,7 +1115,6 @@
                    .eq(Collect::getObjType,Constants.ONE)
            )>Constants.ZERO?Constants.ONE:Constants.ZERO);
        }
        return goodsResponse;
    }