pp
jiangping
2023-09-20 c166834a4aa5545a30115ea0195dab8dbab59fbd
server/service/src/main/java/com/doumee/service/business/impl/GoodsServiceImpl.java
@@ -175,6 +175,8 @@
            //  如果选择平台商品和查询结果对不上,提示错误
            throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请正确选择平台商品!");
        }
        List<Multifile> multifileList = new ArrayList<>();
        List<GoodsParam> goodsParamList = new ArrayList<>();
        for(BaseGoods model : goodsList){
            //遍历平台商品信息,进行商品信息同步
            Goods goods = initGoodsPlatParam(user,model,param);
@@ -183,16 +185,21 @@
            }
            goodsMapper.insert(goods);
           //开始处理附件
            dealPlatMultifule(goods.getId(),user,model);
            dealPlatMultifule(goods.getId(),user,model,multifileList);
            //开始处理参数配置
            dealPlatGoodsParam(model,goods,user);
            dealPlatGoodsParam(model,goods,user,goodsParamList);
        }
        if(multifileList.size()>0){
            multifileMapper.insertBatch(multifileList);
        }
        if(goodsParamList.size()>0){
            goodsParamMapper.insertBatch(goodsParamList);
        }
        return 1;
    }
    private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user) {
    private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user,List<GoodsParam> paramList) {
        BaseGoodsParam baseGoodsParam = new BaseGoodsParam();
        baseGoodsParam.setGoodsId(model.getId());
        baseGoodsParam.setIsdeleted(Constants.ZERO);
@@ -207,9 +214,9 @@
                        .eq("ISDELETED",Constants.ZERO)
                        .eq("STATUS",Constants.ZERO)
                        .last(" limit 1 "));
                if(Objects.isNull(cateParam)){
                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业分类数据同步异常请联系管理员");
                }
//                if(Objects.isNull(cateParam)){
//                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业分类数据同步异常请联系管理员");
//                }
                GoodsParam goodsParam = new GoodsParam();
                goodsParam.setCreator(user.getId());
                goodsParam.setCreateDate(new Date());
@@ -219,24 +226,9 @@
                goodsParam.setGoodsId(goods.getId());
                goodsParam.setVal(bgParam.getVal());
                goodsParam.setName(bgParam.getName());
                goodsParam.setPramaId(cateParam.getId());
                goodsParamMapper.insert(goodsParam);
                //存储 cate_param_select 查询是否已存在
                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
                    CateParamSelect cateParamSelect = new CateParamSelect();
                    cateParamSelect.setCreator(user.getId());
                    cateParamSelect.setCreateDate(new Date());
                    cateParamSelect.setName(goodsParam.getVal());
                    cateParamSelect.setIsdeleted(Constants.ZERO);
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelect.setParamId(goodsParam.getPramaId());
                    cateParamSelect.setCategoryId(goods.getCategoryId());
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelectMapper.insert(cateParamSelect);
                };
                goodsParam.setPramaId(Objects.isNull(cateParam)?null:cateParam.getId());
                paramList.add(goodsParam);
//                goodsParamMapper.insert(goodsParam);
            }
        }
    }
@@ -245,6 +237,7 @@
        Goods goods = new Goods();
        goods.setIsdeleted(Constants.ZERO);
        goods.setGoodsId(model.getId());
        goods.setCompanyId(user.getCompanyId());
        if(goodsMapper.selectCount(new QueryWrapper<>(goods))>0){
            //如果已经同步过,跳过此次同步
            return  null;
@@ -272,7 +265,7 @@
    /**
     *  开始处理平台商品关联附件,复制一套到企业商品上
     */
    private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model) {
    private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model,List<Multifile> fileList ) {
        Multifile f = new Multifile();
        f.setObjId(model.getId());
        f.setIsdeleted(Constants.ZERO);
@@ -291,7 +284,8 @@
                multifile.setName(multifile.getName());
                multifile.setSortnum(multifile.getSortnum());
                multifile.setCompanyId(user.getCompanyId());
                multifileMapper.insert(multifile);
                fileList.add(multifile);
//                multifileMapper.insert(multifile);
            }
        }
    }
@@ -300,16 +294,16 @@
        if(Constants.equalsInteger(Constants.ONE, param.getType())){
            for(PlatGoodsParam p: param.getGoodsParamList()){
                if(Constants.equalsInteger(model.getId(),p.getGoodsId())){
                    return p.getPrice();
                    return p.getPrice().setScale(0,BigDecimal.ROUND_CEILING);
                }
            }
        }
        //如果没有配置入手价,安装加价系数来计算
        if(model.getCateRatePrice()==null){
            model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate());
        }
        //返回
        return Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate());
//        if(model.getCateRatePrice()==null){
//            model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate());
//        }
        //返回 .multiply(model.getCateRatePrice())
        return (Constants.formatBigdecimal(model.getPrice()).multiply(param.getRate())).setScale(0,BigDecimal.ROUND_CEILING);
    }
@@ -345,6 +339,7 @@
                multifile.setObjId(goods.getId());
                multifile.setType(Constants.ZERO);
                multifile.setObjType(Constants.ZERO);
                multifile.setCompanyId(goods.getCompanyId());
                multifileMapper.insert(multifile);
            }
        }
@@ -359,20 +354,6 @@
                goodsParam.setSortnum(i+Constants.ONE);
                goodsParam.setGoodsId(goods.getId());
                goodsParamMapper.insert(goodsParam);
                //存储 cate_param_select 查询是否已存在
                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
                    CateParamSelect cateParamSelect = new CateParamSelect();
                    cateParamSelect.setCreator(user.getId());
                    cateParamSelect.setCreateDate(new Date());
                    cateParamSelect.setName(goodsParam.getVal());
                    cateParamSelect.setIsdeleted(Constants.ZERO);
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelect.setParamId(goodsParam.getPramaId());
                    cateParamSelect.setCategoryId(goods.getCategoryId());
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelectMapper.insert(cateParamSelect);
                };
            }
        }
        return goods.getId();
@@ -457,7 +438,8 @@
        }else{
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前登录用户类别错误,无法进行该操作");
        }
        if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).ne("id",goods.getId()).eq("name",goods.getName()))>0){
        if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId())
                .eq("ISDELETED",Constants.ZERO).ne("id",goods.getId()).eq("name",goods.getName()))>0){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+goods.getName()+"】已存在");
        };
        goods.setStatus(Constants.ZERO);
@@ -469,7 +451,8 @@
        goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName()));
        goodsMapper.updateById(goods);
        multifileMapper.delete(new QueryWrapper<Multifile>().eq("OBJ_ID",goods.getId()));
        multifileMapper.delete(new QueryWrapper<Multifile>().eq("OBJ_ID",goods.getId())
                .eq("OBJ_TYPE",0).eq("COMPANY_ID",user.getCompanyId()));
        List<Multifile> multifileList = goods.getMultifileList();
        if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){
            for (int i = 0; i < multifileList.size(); i++) {
@@ -480,6 +463,7 @@
                multifile.setSortnum(i+Constants.ONE);
                multifile.setObjId(goods.getId());
                multifile.setType(Constants.ZERO);
                multifile.setCompanyId(goods.getCompanyId());
                multifile.setObjType(Constants.ZERO);
                multifileMapper.insert(multifile);
            }
@@ -497,19 +481,19 @@
                goodsParam.setGoodsId(goods.getId());
                goodsParamMapper.insert(goodsParam);
                //存储 cate_param_select 查询是否已存在
                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
                    CateParamSelect cateParamSelect = new CateParamSelect();
                    cateParamSelect.setCreator(user.getId());
                    cateParamSelect.setCreateDate(new Date());
                    cateParamSelect.setName(goodsParam.getVal());
                    cateParamSelect.setIsdeleted(Constants.ZERO);
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelect.setParamId(goodsParam.getPramaId());
                    cateParamSelect.setCategoryId(goods.getCategoryId());
                    cateParamSelect.setStatus(Constants.ZERO);
                    cateParamSelectMapper.insert(cateParamSelect);
                };
//                if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
//                        .eq("PARAM_ID",goodsParam.getPramaId()).eq("NAME",goodsParam.getName()))<=Constants.ZERO){
//                    CateParamSelect cateParamSelect = new CateParamSelect();
//                    cateParamSelect.setCreator(user.getId());
//                    cateParamSelect.setCreateDate(new Date());
//                    cateParamSelect.setName(goodsParam.getVal());
//                    cateParamSelect.setIsdeleted(Constants.ZERO);
//                    cateParamSelect.setStatus(Constants.ZERO);
//                    cateParamSelect.setParamId(goodsParam.getPramaId());
//                    cateParamSelect.setCategoryId(goods.getCategoryId());
//                    cateParamSelect.setStatus(Constants.ZERO);
//                    cateParamSelectMapper.insert(cateParamSelect);
//                };
            }
        }
    }
@@ -534,7 +518,7 @@
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        //拉式商品 且 上架时,需要限制 平台商品是否已下架
        if(dbGoods.getType().equals(Constants.goodsType.PULL)&&goods.getStatus().equals(Constants.ZERO)){
        if(dbGoods.getType().equals(Constants.goodsType.PULL.getValue())&&goods.getStatus().equals(Constants.ZERO)){
            BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId());
            if(Objects.isNull(baseGoods)){
                throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"未查询到平台商品信息");
@@ -572,7 +556,7 @@
                continue;
            }
            //拉式商品 且 上架时,需要限制 平台商品是否已下架
            if(dbGoods.getType().equals(Constants.goodsType.PULL)&&batchDisableDTO.getStatus().equals(Constants.ZERO)){
            if(dbGoods.getType().equals(Constants.goodsType.PULL.getValue())&&batchDisableDTO.getStatus().equals(Constants.ZERO)){
                BaseGoods baseGoods = baseGoodsMapper.selectById(dbGoods.getGoodsId());
                if(Objects.isNull(baseGoods)||!baseGoods.getStatus().equals(Constants.ZERO)){
                    errNum++;
@@ -677,7 +661,9 @@
        if (pageWrap.getModel().getStatus() != null) {
            queryWrapper.eq(Goods::getStatus, pageWrap.getModel().getStatus());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.eq(Goods::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getCategoryId() != null) {
            queryWrapper.eq(Goods::getCategoryId, pageWrap.getModel().getCategoryId());
        }
@@ -693,10 +679,6 @@
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
        goodsIPage.getRecords().forEach(i->{
            i.setPrefixUrl(prefixUrl);
            if(i.getType().equals(Constants.ONE)){
                i.setBasePrice(i.getBasePrice().multiply(i.getBasePriceRate()));
            }
        });
        return PageData.from(goodsIPage);
    }
@@ -875,19 +857,19 @@
                    //插入产品参数关联表
                    goodsParamMapper.insert(gp);
                    //存储 cate_param_select 查询是否已存在
                    if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
                            .eq("PARAM_ID",gp.getPramaId()).eq("NAME",gp.getName()))<=Constants.ZERO){
                        CateParamSelect cateParamSelect = new CateParamSelect();
                        cateParamSelect.setCreator(user.getId());
                        cateParamSelect.setCreateDate(new Date());
                        cateParamSelect.setName(gp.getVal());
                        cateParamSelect.setIsdeleted(Constants.ZERO);
                        cateParamSelect.setStatus(Constants.ZERO);
                        cateParamSelect.setParamId(gp.getPramaId());
                        cateParamSelect.setCategoryId(newModel.getCategoryId());
                        cateParamSelect.setStatus(Constants.ZERO);
                        cateParamSelectMapper.insert(cateParamSelect);
                    };
//                    if(cateParamSelectMapper.selectCount(new QueryWrapper<CateParamSelect>()
//                            .eq("PARAM_ID",gp.getPramaId()).eq("NAME",gp.getName()))<=Constants.ZERO){
//                        CateParamSelect cateParamSelect = new CateParamSelect();
//                        cateParamSelect.setCreator(user.getId());
//                        cateParamSelect.setCreateDate(new Date());
//                        cateParamSelect.setName(gp.getVal());
//                        cateParamSelect.setIsdeleted(Constants.ZERO);
//                        cateParamSelect.setStatus(Constants.ZERO);
//                        cateParamSelect.setParamId(gp.getPramaId());
//                        cateParamSelect.setCategoryId(newModel.getCategoryId());
//                        cateParamSelect.setStatus(Constants.ZERO);
//                        cateParamSelectMapper.insert(cateParamSelect);
//                    };
                }
            }
            if(mulFiles !=null && mulFiles.size()>0){
@@ -1090,9 +1072,13 @@
        String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode();
        goodsIPage.getRecords().forEach(i->{
            i.setCategoryImgurl(systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode()
                    + systemDictDataBiz.queryByCode(Constants.OSS, Constants.CATEGORY_IMG).getCode() + i.getCategoryImgurl());
            i.setPrefixUrl(prefixUrl);
            i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
            i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId()).orderByAsc(" SORTNUM ")));
            i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>()
                    .eq("GOODS_ID",i.getId())
                    .orderByAsc(" SORTNUM ")));
        });
        return PageData.from(goodsIPage);
    }
@@ -1134,7 +1120,10 @@
        goodsList.forEach(i->{
            i.setPrefixUrl(prefixUrl);
            i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM ")));
            i.setGoodsParamList(goodsParamMapper.selectList(new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId()).orderByAsc(" SORTNUM ")));
            i.setGoodsParamList(goodsParamMapper.selectList(
                    new QueryWrapper<GoodsParam>().eq("GOODS_ID",i.getId())
                            .apply(" name in ( select cp.NAME from cate_param cp where cp.CATEGORY_ID = "+i.getCategoryId()+" and cp.ISSHOW = 1 and cp.ISDELETED = 0 and cp.STATUS = 0 ) ")
                            .orderByAsc(" SORTNUM ")));
        });
        return goodsList;
    }