|  |  | 
 |  |  | import com.doumee.dao.business.*; | 
 |  |  | import com.doumee.dao.business.join.GoodsJoinMapper; | 
 |  |  | import com.doumee.dao.business.model.*; | 
 |  |  | import com.doumee.dao.business.model.dto.GoodsRequest; | 
 |  |  | import com.doumee.dao.business.model.dto.*; | 
 |  |  | import com.doumee.service.business.BaseDataService; | 
 |  |  | import com.doumee.service.business.GoodsService; | 
 |  |  | import com.github.yulichang.wrapper.MPJLambdaWrapper; | 
 |  |  | import io.swagger.v3.oas.annotations.callbacks.Callback; | 
 |  |  | import lombok.extern.java.Log; | 
 |  |  | import org.apache.commons.lang3.StringUtils; | 
 |  |  | import org.apache.poi.ss.usermodel.*; | 
 |  |  | import org.apache.poi.xssf.usermodel.XSSFWorkbook; | 
 |  |  | import org.apache.shiro.SecurityUtils; | 
 |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
 |  |  | import org.springframework.context.annotation.Lazy; | 
 |  |  | import org.springframework.data.redis.core.RedisTemplate; | 
 |  |  | import org.springframework.scheduling.annotation.Async; | 
 |  |  | import org.springframework.stereotype.Service; | 
 |  |  | import org.springframework.transaction.annotation.Transactional; | 
 |  |  | import org.springframework.util.CollectionUtils; | 
 |  |  | 
 |  |  | import java.io.File; | 
 |  |  | import java.io.InputStream; | 
 |  |  | import java.io.OutputStream; | 
 |  |  | import java.io.UnsupportedEncodingException; | 
 |  |  | import java.math.BigDecimal; | 
 |  |  | import java.net.URLEncoder; | 
 |  |  | import java.nio.charset.Charset; | 
 |  |  | import java.util.ArrayList; | 
 |  |  | import java.util.Date; | 
 |  |  | import java.util.List; | 
 |  |  | import java.util.Objects; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | /** | 
 |  |  |  * 商品信息表Service实现 | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private GoodsMapper goodsMapper; | 
 |  |  |     @Autowired | 
 |  |  |     @Lazy | 
 |  |  |     private BaseDataService baseDataService; | 
 |  |  |     @Autowired | 
 |  |  |     private BaseGoodsMapper baseGoodsMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private BaseGoodsParamMapper baseGoodsParamMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private CategoryMapper categoryMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private BaseCategoryMapper baseCategoryMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private CateAttrMapper cateAttrMapper; | 
 |  |  |     @Autowired | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private GoodsJoinMapper goodsJoinMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private CateParamSelectMapper cateParamSelectMapper; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private RedisTemplate redisTemplate; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         return goods.getId(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Async | 
 |  |  |     @Override | 
 |  |  |     @Transactional( rollbackFor = {Exception.class, BusinessException.class}) | 
 |  |  |     public  Integer createPlat(GoodCreatePlatRequest param){ | 
 |  |  |         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         if(!Constants.equalsInteger(user.getType(), Constants.UserType.COMPANY.getKey())){ | 
 |  |  |             //非企业用户不能操作 | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED); | 
 |  |  |         } | 
 |  |  |         if(param.getCategoryId() == null | 
 |  |  |                 || param.getType() == null | 
 |  |  |                 || param.getRate() == null | 
 |  |  |                 || (Constants.equalsInteger(param.getType(), Constants.ONE) | 
 |  |  |                 && (param.getGoodsParamList() == null | 
 |  |  |                 || param.getGoodsParamList().size()==0))){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST); | 
 |  |  |         } | 
 |  |  |         Category category = categoryMapper.selectById(param.getCategoryId()); | 
 |  |  |         if(category ==null ||Constants.equalsInteger(category.getIsdeleted(), Constants.ONE) ||!Constants.equalsInteger(category.getCompanyId(), user.getCompanyId())){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,类别信息不正确,请刷新重试!"); | 
 |  |  |         } | 
 |  |  |         if(category.getPlatCateId() == null){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请前往【类别管理】先关联平台类别!"); | 
 |  |  |         } | 
 |  |  |         BaseCategory baseCategory = baseCategoryMapper.selectById(category.getPlatCateId()); | 
 |  |  |         if(baseCategory == null){ | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请前往【类别管理】先关联平台类别!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         BaseGoods bp = new BaseGoods(); | 
 |  |  |         bp.setCategoryId(category.getPlatCateId()); | 
 |  |  |         bp.setIsdeleted(Constants.ZERO); | 
 |  |  |         List<BaseGoods> goodsList = new ArrayList<>(); | 
 |  |  |         List<Integer> ids = null; | 
 |  |  |         if(Constants.equalsInteger(Constants.ONE, param.getType())){ | 
 |  |  |             //如果选择部分商品 | 
 |  |  |             for(PlatGoodsParam p : param.getGoodsParamList()){ | 
 |  |  |                 if(p.getGoodsId() == null || p.getPrice() == null){ | 
 |  |  |                     throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请正确选择平台商品并配置入手价!"); | 
 |  |  |                 } | 
 |  |  |                 if(ids == null){ | 
 |  |  |                     ids = new ArrayList<>(); | 
 |  |  |                 } | 
 |  |  |                 ids.add(p.getGoodsId()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         goodsList = baseGoodsMapper.selectList(new QueryWrapper<>(bp).lambda().in((ids!=null && ids.size()>0),BaseGoods::getId,ids)); | 
 |  |  |         if(Constants.equalsInteger(Constants.ONE, param.getType()) &&( goodsList==null || ids.size()!=goodsList.size())){ | 
 |  |  |             //  如果选择平台商品和查询结果对不上,提示错误 | 
 |  |  |             throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请正确选择平台商品!"); | 
 |  |  |         } | 
 |  |  |         List<Multifile> multifileList = new ArrayList<>(); | 
 |  |  |         List<GoodsParam> goodsParamList = new ArrayList<>(); | 
 |  |  |         try{ | 
 |  |  |             for(BaseGoods model : goodsList){ | 
 |  |  |                 //遍历平台商品信息,进行商品信息同步 | 
 |  |  |                 //分类加价系数 | 
 |  |  |  | 
 |  |  |                 model.setCateRatePrice(baseCategory.getPriceRate()); | 
 |  |  |                 Goods goods = initGoodsPlatParam(user,model,param); | 
 |  |  |                 if(goods == null){ | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |                 goodsMapper.insert(goods); | 
 |  |  |                 //开始处理附件 | 
 |  |  |                 dealPlatMultifule(goods.getId(),user,model,multifileList); | 
 |  |  |                 //开始处理参数配置 | 
 |  |  |                 dealPlatGoodsParam(model,goods,user,goodsParamList); | 
 |  |  |             } | 
 |  |  |             if(multifileList.size()>0){ | 
 |  |  |                 multifileMapper.insertBatch(multifileList); | 
 |  |  |             } | 
 |  |  |             if(goodsParamList.size()>0){ | 
 |  |  |                 goodsParamMapper.insertBatch(goodsParamList); | 
 |  |  |             } | 
 |  |  |         }catch (Exception e){ | 
 |  |  |            e.printStackTrace(); | 
 |  |  |         }finally { | 
 |  |  |             redisTemplate.opsForValue().set(user.getCompanyId()+Constants.OPEN_SYNC_SWITCH,false); | 
 |  |  |         } | 
 |  |  |         return 1; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void dealPlatGoodsParam(BaseGoods model, Goods goods, LoginUserInfo user,List<GoodsParam> paramList) { | 
 |  |  |         BaseGoodsParam baseGoodsParam = new BaseGoodsParam(); | 
 |  |  |         baseGoodsParam.setGoodsId(model.getId()); | 
 |  |  |         baseGoodsParam.setIsdeleted(Constants.ZERO); | 
 |  |  |         List<BaseGoodsParam> goodsParamList = baseGoodsParamMapper.selectList(new QueryWrapper<>(baseGoodsParam)); | 
 |  |  |         if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ | 
 |  |  |             for (int i = 0; i < goodsParamList.size(); i++) { | 
 |  |  |                 BaseGoodsParam bgParam = goodsParamList.get(i); | 
 |  |  |                 //根据平台商品配置的平台参数信息查询企业绑定的参数信息 进行存储到 企业商品参数内 | 
 |  |  |                 CateParam cateParam = cateParamMapper.selectOne(new QueryWrapper<CateParam>() | 
 |  |  |                         .eq("CATEGORY_ID",goods.getCategoryId()) | 
 |  |  |                         .eq("BASE_CATE_PARAM_ID",bgParam.getPramaId()) | 
 |  |  |                         .eq("ISDELETED",Constants.ZERO) | 
 |  |  |                         .eq("STATUS",Constants.ZERO) | 
 |  |  |                         .last(" limit 1 ")); | 
 |  |  | //                if(Objects.isNull(cateParam)){ | 
 |  |  | //                    throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"企业分类数据同步异常请联系管理员"); | 
 |  |  | //                } | 
 |  |  |                 GoodsParam goodsParam = new GoodsParam(); | 
 |  |  |                 goodsParam.setCreator(user.getId()); | 
 |  |  |                 goodsParam.setCreateDate(new Date()); | 
 |  |  |                 goodsParam.setIsdeleted(Constants.ZERO); | 
 |  |  |                 goodsParam.setSortnum(i+Constants.ONE); | 
 |  |  |                 goodsParam.setStatus(Constants.ZERO); | 
 |  |  |                 goodsParam.setGoodsId(goods.getId()); | 
 |  |  |                 goodsParam.setVal(bgParam.getVal()); | 
 |  |  |                 goodsParam.setName(bgParam.getName()); | 
 |  |  |                 goodsParam.setPramaId(Objects.isNull(cateParam)?null:cateParam.getId()); | 
 |  |  |                 paramList.add(goodsParam); | 
 |  |  | //                goodsParamMapper.insert(goodsParam); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private Goods initGoodsPlatParam(LoginUserInfo user, BaseGoods model, GoodCreatePlatRequest param) { | 
 |  |  |         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; | 
 |  |  |         } | 
 |  |  |         goods.setType(Constants.ONE); | 
 |  |  |         goods.setStatus(Constants.ZERO); | 
 |  |  |         goods.setCreateDate(new Date()); | 
 |  |  |         goods.setCreator(user.getId()); | 
 |  |  |         goods.setCompanyId(user.getCompanyId()); | 
 |  |  |         goods.setIsdeleted(Constants.ZERO); | 
 |  |  |         //处理拼音问题 | 
 |  |  |         goods.setPinyin(PinYinUtil.getFullSpell(goods.getName())); | 
 |  |  |         goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName())); | 
 |  |  |         goods.setName(model.getName()); | 
 |  |  |         goods.setCategoryId(param.getCategoryId()); | 
 |  |  |         //获取入手价格 | 
 |  |  |         goods.setPrice(getPriceFromParam(model,param)); | 
 |  |  |         goods.setZdPrice(model.getZdPrice()); | 
 |  |  |         goods.setRemark(model.getRemark()); | 
 |  |  |         goods.setImgurl(model.getImgurl()); | 
 |  |  |         goods.setBrandId(model.getBrandId()); | 
 |  |  |         return goods; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      *  开始处理平台商品关联附件,复制一套到企业商品上 | 
 |  |  |      */ | 
 |  |  |     private void dealPlatMultifule(Integer id, LoginUserInfo user, BaseGoods model,List<Multifile> fileList ) { | 
 |  |  |         Multifile f = new Multifile(); | 
 |  |  |         f.setObjId(model.getId()); | 
 |  |  |         f.setIsdeleted(Constants.ZERO); | 
 |  |  |         List<Multifile> multifileList =multifileMapper.selectList(new QueryWrapper<>(f)); | 
 |  |  |         if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){ | 
 |  |  |             for (int i = 0; i < multifileList.size(); i++) { | 
 |  |  |                 Multifile multifile = multifileList.get(i); | 
 |  |  |                 multifile.setCreator(user.getId()); | 
 |  |  |                 multifile.setCreateDate(new Date()); | 
 |  |  |                 multifile.setIsdeleted(Constants.ZERO); | 
 |  |  |                 multifile.setSortnum(i+Constants.ONE); | 
 |  |  |                 multifile.setObjId(id); | 
 |  |  |                 multifile.setType(Constants.ZERO); | 
 |  |  |                 multifile.setObjType(Constants.ZERO); | 
 |  |  |                 multifile.setFileurl(multifile.getFileurl()); | 
 |  |  |                 multifile.setName(multifile.getName()); | 
 |  |  |                 multifile.setSortnum(multifile.getSortnum()); | 
 |  |  |                 multifile.setCompanyId(user.getCompanyId()); | 
 |  |  |                 fileList.add(multifile); | 
 |  |  | //                multifileMapper.insert(multifile); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private BigDecimal getPriceFromParam(BaseGoods model, GoodCreatePlatRequest param) { | 
 |  |  |         if(Constants.equalsInteger(Constants.ONE, param.getType())){ | 
 |  |  |             for(PlatGoodsParam p: param.getGoodsParamList()){ | 
 |  |  |                 if(Constants.equalsInteger(model.getId(),p.getGoodsId())){ | 
 |  |  |                     return p.getPrice().setScale(0,BigDecimal.ROUND_CEILING); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_ERRO.getCode(),"数据异常请刷新重试"); | 
 |  |  |         } | 
 |  |  |         //如果没有配置入手价,安装加价系数来计算 | 
 |  |  |         if(model.getCateRatePrice()==null){ | 
 |  |  |             model.setCateRatePrice(systemDictDataBiz.getGoodsPriceRate()); | 
 |  |  |         } | 
 |  |  |         //返回 .multiply(model.getCateRatePrice()) | 
 |  |  |         return (Constants.formatBigdecimal(model.getPrice()).multiply(model.getCateRatePrice()).multiply(param.getRate())).setScale(0,BigDecimal.ROUND_CEILING); | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Integer companyCreate(Goods goods) { | 
 |  |  |         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         if(user.getType()==1){ | 
 |  |  |             goods.setCompanyId(user.getCompanyId()); | 
 |  |  |         }else{ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"当前登录用户类别错误,无法进行该操作"); | 
 |  |  |         } | 
 |  |  |         if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("COMPANY_ID",user.getCompanyId()).eq("ISDELETED",Constants.ZERO).eq("name",goods.getName()))>0){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+goods.getName()+"】已存在"); | 
 |  |  |         } | 
 |  |  |         goods.setStatus(Constants.ZERO); | 
 |  |  |         goods.setCreateDate(new Date()); | 
 |  |  |         goods.setCreator(user.getId()); | 
 |  |  |         goods.setIsdeleted(Constants.ZERO); | 
 |  |  |         //处理拼音问题 | 
 |  |  |         goods.setPinyin(PinYinUtil.getFullSpell(goods.getName())); | 
 |  |  |         goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName())); | 
 |  |  |         goodsMapper.insert(goods); | 
 |  |  |  | 
 |  |  |         List<Multifile> multifileList = goods.getMultifileList(); | 
 |  |  |         if(!Objects.isNull(multifileList)&&multifileList.size()>Constants.ZERO){ | 
 |  |  |             for (int i = 0; i < multifileList.size(); i++) { | 
 |  |  |                 Multifile multifile = multifileList.get(i); | 
 |  |  |                 multifile.setCreator(user.getId()); | 
 |  |  |                 multifile.setCreateDate(new Date()); | 
 |  |  |                 multifile.setIsdeleted(Constants.ZERO); | 
 |  |  |                 multifile.setSortnum(i+Constants.ONE); | 
 |  |  |                 multifile.setObjId(goods.getId()); | 
 |  |  |                 multifile.setType(Constants.ZERO); | 
 |  |  |                 multifile.setObjType(Constants.ZERO); | 
 |  |  |                 multifile.setCompanyId(goods.getCompanyId()); | 
 |  |  |                 multifileMapper.insert(multifile); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         List<GoodsParam> goodsParamList = goods.getGoodsParamList(); | 
 |  |  |         if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ | 
 |  |  |             for (int i = 0; i < goodsParamList.size(); i++) { | 
 |  |  |                 GoodsParam goodsParam = goodsParamList.get(i); | 
 |  |  |                 goodsParam.setCreator(user.getId()); | 
 |  |  |                 goodsParam.setCreateDate(new Date()); | 
 |  |  |                 goodsParam.setIsdeleted(Constants.ZERO); | 
 |  |  |                 goodsParam.setStatus(Constants.ZERO); | 
 |  |  |                 goodsParam.setSortnum(i+Constants.ONE); | 
 |  |  |                 goodsParam.setGoodsId(goods.getId()); | 
 |  |  |                 goodsParamMapper.insert(goodsParam); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return goods.getId(); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void deleteById(Integer id) { | 
 |  |  |         Goods goods = goodsMapper.selectById(id); | 
 |  |  | 
 |  |  |         if (CollectionUtils.isEmpty(ids)) { | 
 |  |  |             return; | 
 |  |  |         } | 
 |  |  |         goodsMapper.deleteBatchIds(ids); | 
 |  |  |         for(Integer id : ids){ | 
 |  |  |             deleteById(id); | 
 |  |  |         } | 
 |  |  | //        goodsMapper.deleteBatchIds(ids); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void companyUpdateById(Goods goods) { | 
 |  |  |         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         if(user.getType()==1){ | 
 |  |  |             goods.setCompanyId(user.getCompanyId()); | 
 |  |  |         }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){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+goods.getName()+"】已存在"); | 
 |  |  |         }; | 
 |  |  |         goods.setStatus(Constants.ZERO); | 
 |  |  |         goods.setEditDate(new Date()); | 
 |  |  |         goods.setEditor(user.getId()); | 
 |  |  |         goods.setIsdeleted(Constants.ZERO); | 
 |  |  |         //处理拼音问题 | 
 |  |  |         goods.setPinyin(PinYinUtil.getFullSpell(goods.getName())); | 
 |  |  |         goods.setShortPinyin(PinYinUtil.getFirstSpell(goods.getName())); | 
 |  |  |         goodsMapper.updateById(goods); | 
 |  |  |  | 
 |  |  |         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++) { | 
 |  |  |                 Multifile multifile = multifileList.get(i); | 
 |  |  |                 multifile.setCreator(user.getId()); | 
 |  |  |                 multifile.setCreateDate(new Date()); | 
 |  |  |                 multifile.setIsdeleted(Constants.ZERO); | 
 |  |  |                 multifile.setSortnum(i+Constants.ONE); | 
 |  |  |                 multifile.setObjId(goods.getId()); | 
 |  |  |                 multifile.setType(Constants.ZERO); | 
 |  |  |                 multifile.setCompanyId(goods.getCompanyId()); | 
 |  |  |                 multifile.setObjType(Constants.ZERO); | 
 |  |  |                 multifileMapper.insert(multifile); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         goodsParamMapper.delete(new QueryWrapper<GoodsParam>().eq("GOODS_ID",goods.getId())); | 
 |  |  |         List<GoodsParam> goodsParamList = goods.getGoodsParamList(); | 
 |  |  |         if(!Objects.isNull(goodsParamList)&&goodsParamList.size()>0){ | 
 |  |  |             for (int i = 0; i < goodsParamList.size(); i++) { | 
 |  |  |                 GoodsParam goodsParam = goodsParamList.get(i); | 
 |  |  |                 goodsParam.setCreator(user.getId()); | 
 |  |  |                 goodsParam.setCreateDate(new Date()); | 
 |  |  |                 goodsParam.setIsdeleted(Constants.ZERO); | 
 |  |  |                 goodsParam.setSortnum(i+Constants.ONE); | 
 |  |  |                 goodsParam.setStatus(Constants.ZERO); | 
 |  |  |                 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); | 
 |  |  | //                }; | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updateByIdInBatch(List<Goods> goodss) { | 
 |  |  |         if (CollectionUtils.isEmpty(goodss)) { | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void updateDisableById(Goods goods) { | 
 |  |  |         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         Goods dbGoods = goodsMapper.selectById(goods.getId()); | 
 |  |  |         if(Objects.isNull(dbGoods)){ | 
 |  |  |             throw new BusinessException(ResponseStatus.DATA_EMPTY); | 
 |  |  |         } | 
 |  |  |         //拉式商品 且 上架时,需要限制 平台商品是否已下架 | 
 |  |  |         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(),"未查询到平台商品信息"); | 
 |  |  |             } | 
 |  |  |             if(!baseGoods.getStatus().equals(Constants.ZERO)){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"平台商品已下架,无法上架"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         goods.setEditDate(new Date()); | 
 |  |  |         goods.setEditor(user.getId()); | 
 |  |  |         goodsMapper.updateById(goods); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 批量上下架 | 
 |  |  |      * @param batchDisableDTO | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public String batchUpdateDisableById(BatchDisableDTO batchDisableDTO) { | 
 |  |  |         LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         if(StringUtils.isBlank(batchDisableDTO.getIds())){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"请选择对应的商品进行该操作"); | 
 |  |  |         } | 
 |  |  |         if(!(batchDisableDTO.getStatus().equals(Constants.ZERO)||batchDisableDTO.getStatus().equals(Constants.ONE))){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"操作类型错误"); | 
 |  |  |         } | 
 |  |  |         Integer okNum = 0; | 
 |  |  |         Integer errNum = 0; | 
 |  |  |         List<String> goodsList  = Arrays.asList(batchDisableDTO.getIds().split(",")); | 
 |  |  |         for (String goodsId:goodsList) { | 
 |  |  |             Goods dbGoods = goodsMapper.selectById(goodsId); | 
 |  |  |             if(Objects.isNull(dbGoods)){ | 
 |  |  |                 errNum++; | 
 |  |  |                 continue; | 
 |  |  |             } | 
 |  |  |             //拉式商品 且 上架时,需要限制 平台商品是否已下架 | 
 |  |  |             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++; | 
 |  |  |                     continue; | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             dbGoods.setEditDate(new Date()); | 
 |  |  |             dbGoods.setEditor(user.getId()); | 
 |  |  |             dbGoods.setStatus(batchDisableDTO.getStatus()); | 
 |  |  |             goodsMapper.updateById(dbGoods); | 
 |  |  |             okNum++; | 
 |  |  |         } | 
 |  |  |         return "更新成功数量("+okNum+");更新失败数量("+errNum+")"; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public Goods findById(Integer id) { | 
 |  |  |         Goods goods = goodsMapper.selectById(id); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); | 
 |  |  |         goods.setPrefixUrl(prefixUrl); | 
 |  |  |         Brand brand = brandMapper.selectById(goods.getBrandId()); | 
 |  |  |         if(!Objects.isNull(brand)){ | 
 |  |  | 
 |  |  |                 Goods::getPrice,goods.getSPrice(),goods.getEPrice()); | 
 |  |  |         queryWrapper.orderByDesc(Goods::getId); | 
 |  |  |         List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); | 
 |  |  |         goodsList.forEach(i->{ | 
 |  |  |             i.setPrefixUrl(prefixUrl); | 
 |  |  |             i.setMultifileList(multifileMapper.selectList(new QueryWrapper<Multifile>().eq("OBJ_ID",i.getId()).orderByAsc(" SORTNUM "))); | 
 |  |  | 
 |  |  |         queryWrapper.selectAll(Goods.class); | 
 |  |  |  | 
 |  |  |         queryWrapper.selectAs(Category::getName, Goods::getCategoryName); | 
 |  |  |         queryWrapper.selectAs(BaseGoods::getZdPrice, Goods::getBaseZdPrice); | 
 |  |  |         queryWrapper.selectAs(BaseGoods::getPrice, Goods::getBasePrice); | 
 |  |  |         queryWrapper.selectAs(Brand::getName, Goods::getBrandName); | 
 |  |  |         queryWrapper.selectAs(Category::getAttrFirst, Goods::getAttrFirst); | 
 |  |  |         queryWrapper.selectAs(Category::getAttrSecond, Goods::getAttrSecond); | 
 |  |  |         queryWrapper.selectAs(BaseCategory::getPriceRate,Goods::getBasePriceRate); | 
 |  |  |         queryWrapper.leftJoin(Category.class, Category::getId, Goods::getCategoryId); | 
 |  |  |         queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId); | 
 |  |  |         queryWrapper.leftJoin(BaseGoods.class,BaseGoods::getId,Goods::getGoodsId); | 
 |  |  |         queryWrapper.leftJoin(BaseCategory.class,BaseCategory::getId,BaseGoods::getCategoryId); | 
 |  |  |  | 
 |  |  |         queryWrapper.eq(Goods::getIsdeleted, Constants.ZERO); | 
 |  |  |         if (pageWrap.getModel().getId() != null) { | 
 |  |  | 
 |  |  |         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()); | 
 |  |  |         } | 
 |  |  |         if (pageWrap.getModel().getBrandId() != null) { | 
 |  |  |             queryWrapper.eq(Goods::getBrandId, pageWrap.getModel().getBrandId()); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         if (pageWrap.getModel().getCompanyId() != null) { | 
 |  |  |             queryWrapper.eq(Goods::getCompanyId, pageWrap.getModel().getCompanyId()); | 
 |  |  |         } | 
 |  |  |         queryWrapper.orderByDesc(Goods::getId); | 
 |  |  |  | 
 |  |  |         IPage<Goods> goodsIPage =  goodsJoinMapper.selectJoinPage(page, Goods.class, queryWrapper); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); | 
 |  |  |         goodsIPage.getRecords().forEach(i->{ | 
 |  |  |             i.setPrefixUrl(prefixUrl); | 
 |  |  |         }); | 
 |  |  | 
 |  |  |             Goods g = new Goods(); | 
 |  |  |             g.setIsdeleted(Constants.ZERO); | 
 |  |  |             g.setRemark(m.getId()); | 
 |  |  |             g.setCompanyId(user.getCompanyId()); | 
 |  |  |             //品类数据 | 
 |  |  |             g = goodsMapper.selectOne(new QueryWrapper<>(g).last(" limit 1")); | 
 |  |  |             if(g != null){ | 
 |  |  | 
 |  |  |             Category cate = new Category(); | 
 |  |  |             cate.setIsdeleted(Constants.ZERO); | 
 |  |  |             cate.setName(m.getCategory()); | 
 |  |  |             cate.setCompanyId(user.getCompanyId()); | 
 |  |  |             //品类数据 | 
 |  |  |             cate = categoryMapper.selectOne(new QueryWrapper<>(cate).last(" limit 1")); | 
 |  |  |             if(cate == null){ | 
 |  |  | 
 |  |  |             brand.setIsdeleted(Constants.ZERO); | 
 |  |  |             brand.setName(m.getBrand()); | 
 |  |  |             //品类数据 | 
 |  |  |             brand = brandMapper.selectOne(new QueryWrapper<>(brand).last(" limit 1")); | 
 |  |  |             QueryWrapper<Brand> qwrapper = new QueryWrapper<>(brand); | 
 |  |  |             qwrapper.lambda().and(wapper-> wapper.eq(Brand::getCompanyId ,user.getCompanyId()).or().eq(Brand::getType,Constants.ONE)); | 
 |  |  |             brand = brandMapper.selectOne(qwrapper.last(" limit 1")); | 
 |  |  |             if(brand == null){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第【"+(num)+"】行商品品牌无效,请检查输入!"); | 
 |  |  |             } | 
 |  |  |             if(goodsMapper.selectCount(new QueryWrapper<Goods>().eq("ISDELETED",Constants.ZERO).eq("name",m.getName()))>0){ | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"【"+m.getName()+"】已存在"); | 
 |  |  |             }; | 
 |  |  |                 throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"第【"+(num)+"】行【"+m.getName()+"】已存在"); | 
 |  |  |             } | 
 |  |  |             Goods newModel = new Goods(); | 
 |  |  |             newModel.setRemark(m.getId()); | 
 |  |  |             newModel.setCategoryId(cate.getId()); | 
 |  |  |             newModel.setBrandId(brand.getId()); | 
 |  |  |             newModel.setIsdeleted(Constants.ZERO); | 
 |  |  |             newModel.setCreator(user.getId()); | 
 |  |  |             newModel.setCompanyId(user.getCompanyId()); | 
 |  |  |             newModel.setCreateDate(new Date()); | 
 |  |  |             newModel.setName(m.getName()); | 
 |  |  |             newModel.setStatus(Constants.ZERO); | 
 |  |  | 
 |  |  |             newModel.setPinyin(PinYinUtil.getFullSpell(m.getName())); | 
 |  |  |             newModel.setShortPinyin(PinYinUtil.getFirstSpell(m.getName())); | 
 |  |  |  | 
 |  |  |             CateAttr ca = new CateAttr(); | 
 |  |  |             ca.setCategoryId(cate.getId()); | 
 |  |  |             ca.setIsdeleted(Constants.ZERO); | 
 |  |  |             //查询全部属性1和属性2规格值 | 
 |  |  |             List<CateAttr> allAttr = cateAttrMapper.selectList(new QueryWrapper<>(ca)); | 
 |  |  |             //属性1集合 | 
 |  |  |             String[] attrs = StringUtils.defaultString(m.getAttrFirstNames(),"").split("\n"); | 
 |  |  |             //属性2集合 | 
 |  |  |             String[] attrs2 = StringUtils.defaultString(m.getAttrSecodNames(),"").split("\n"); | 
 |  |  |             //产品参数集合 | 
 |  |  |             String[] params =  StringUtils.defaultString(m.getParamStr(),"").split("\n"); | 
 |  |  |             if(attrs.length > 0){ | 
 |  |  |                 String attrids="" ,attrNames=""; | 
 |  |  |                 for(String s : attrs){ | 
 |  |  |                     if(StringUtils.isBlank(s)){ | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     //查询属性规格对象 | 
 |  |  |                     CateAttr ta = getCateAttrByName(s,Constants.ZERO,allAttr); | 
 |  |  |                     if(ta == null){ | 
 |  |  |                         throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第【"+(num)+"】行属性1中【"+s+"】无效,请检查输入!"); | 
 |  |  |                     } | 
 |  |  |                     if(StringUtils.isNotBlank(attrids)){ | 
 |  |  |                         attrids += ","; | 
 |  |  |                         attrNames += ","; | 
 |  |  |                     } | 
 |  |  |                     attrids+= ta.getId(); | 
 |  |  |                     attrNames+= ta.getName(); | 
 |  |  |                 } | 
 |  |  |                 newModel.setAttrFirstIds(attrids); | 
 |  |  |                 newModel.setAttrFirstNames(attrNames); | 
 |  |  |             } | 
 |  |  |             if(attrs2.length > 0){ | 
 |  |  |                 String attrids="" ,attrNames=""; | 
 |  |  |                 for(String s : attrs2){ | 
 |  |  |                     if(StringUtils.isBlank(s)){ | 
 |  |  |                         continue; | 
 |  |  |                     } | 
 |  |  |                     //查询属性规格对象 | 
 |  |  |                     CateAttr ta = getCateAttrByName(s,Constants.ONE,allAttr); | 
 |  |  |                     if(ta == null){ | 
 |  |  |                         throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第【"+(num)+"】行属性1中【"+s+"】无效,请检查输入!"); | 
 |  |  |                     } | 
 |  |  |                     if(StringUtils.isNotBlank(attrids)){ | 
 |  |  |                         attrids += ","; | 
 |  |  |                         attrNames += ","; | 
 |  |  |                     } | 
 |  |  |                     attrids+= ta.getId(); | 
 |  |  |                     attrNames+= ta.getName(); | 
 |  |  |                 } | 
 |  |  |                 newModel.setAttrSecodIds(attrids); | 
 |  |  |                 newModel.setAttrSecodNames(attrNames); | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |             List<String> mulFiles = null; | 
 |  |  |             String proDir =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROJECTS).getCode(); | 
 |  |  |  | 
 |  |  |             String tf = proDir.substring(0,proDir.length()-1); | 
 |  |  |             String path = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.GOODS_IMG_DIR).getCode() | 
 |  |  |                     + proDir; | 
 |  |  |                     + proDir + File.separator + user.getCompanyId(); | 
 |  |  |             if(StringUtils.isNotBlank(path)){ | 
 |  |  |                 OssModel ossModel = baseDataService.initOssModel(); | 
 |  |  |                 File dir =new File(path+File.separator+newModel.getRemark()+File.separator); | 
 |  |  |                 if(dir!=null && dir.isDirectory()){ | 
 |  |  |                     File[]  files = dir.listFiles(); | 
 |  |  | 
 |  |  |                         for(File f:files){ | 
 |  |  |                             if(StringUtils.isBlank(newModel.getImgurl()) && isImgFile(f)){ | 
 |  |  |                                 //取第一张图片作为列表图 | 
 |  |  |                                 String imgdir =f.getPath().substring(f.getPath().indexOf(tf)+tf.length()+1); | 
 |  |  |                                 newModel.setImgurl(imgdir.replace(File.separator,"/")); | 
 |  |  | //                                 newModel.setImgurl(f.getPath().replace(path.replace(File.separator,"/"),"")); | 
 |  |  |                                 newModel.setImgurl(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),f)); | 
 |  |  |                             } | 
 |  |  | //                             else{ | 
 |  |  | //                                 if(mulFiles==null){ | 
 |  |  | //                                     mulFiles = new ArrayList<>(); | 
 |  |  | //                                 } | 
 |  |  | //                                 mulFiles.add(f.getPath().replace(path.replace("/",File.separator),"")); | 
 |  |  | //                             } | 
 |  |  |                             if((mulFiles ==null || mulFiles.size() == 0) && f.isDirectory()){ | 
 |  |  |                                 //如果是文件夹 | 
 |  |  |                                 File[] fs = f.listFiles(); | 
 |  |  | 
 |  |  |                                             if(mulFiles==null){ | 
 |  |  |                                                 mulFiles = new ArrayList<>(); | 
 |  |  |                                             } | 
 |  |  |  | 
 |  |  |                                             String imgdir =mf.getPath().substring(mf.getPath().indexOf(tf)+tf.length()+1); | 
 |  |  |                                             mulFiles.add(imgdir.replace(File.separator,"/")); | 
 |  |  | //                                             newModel.setImgurl(imgdir); | 
 |  |  | ////                                             mulFiles.add(mf.getName()); | 
 |  |  | //                                             mulFiles.add(mf.getPath().replace(path.replace(File.separator,"/"),"")); | 
 |  |  |                                             mulFiles.add(baseDataService.getOssImgurl(ossModel,ossModel.getGoodsFolder(),mf)); | 
 |  |  |                                         } | 
 |  |  |                                     } | 
 |  |  |                                 } | 
 |  |  | 
 |  |  |                     gp.setSortnum(ta.getSortnum()); | 
 |  |  |                     //插入产品参数关联表 | 
 |  |  |                     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(mulFiles !=null && mulFiles.size()>0){ | 
 |  |  | 
 |  |  |                     f.setCreator(newModel.getCreator()); | 
 |  |  |                     f.setIsdeleted(Constants.ZERO); | 
 |  |  |                     f.setSortnum(i); | 
 |  |  |                     f.setCompanyId(user.getCompanyId()); | 
 |  |  |                     f.setFileurl(s); | 
 |  |  |                     multifileMapper.insert(f); | 
 |  |  |                 } | 
 |  |  | 
 |  |  |         return  num; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private boolean isImgFile(File f) { | 
 |  |  |         if(f!=null && f.isFile() ){ | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public void export(HttpServletRequest request, HttpServletResponse response) throws Exception { | 
 |  |  |         try { | 
 |  |  |             LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |             String fileName = "产品导入表"+System.currentTimeMillis()+".xlsx"; | 
 |  |  |             // 获取文件输入流 | 
 |  |  |             InputStream inputStream =  this.getClass().getClassLoader().getResourceAsStream("static/file/goodsExcelTemp.xlsx"); | 
 |  |  | 
 |  |  |             // sheet.getPhysicalNumberOfRows()获取总的行数 | 
 |  |  |             // 循环读取每一行 | 
 |  |  |             Row row = sheet.createRow(1); | 
 |  |  |             List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().eq("ISDELETED",0)); | 
 |  |  |             List<Category> categoryList = categoryMapper.selectList( | 
 |  |  |                     new QueryWrapper<Category>().eq("ISDELETED",0) | 
 |  |  |                             .eq("COMPANY_ID",loginUserInfo.getCompanyId()) | 
 |  |  |             ); | 
 |  |  |             categoryList.forEach(i->{ | 
 |  |  |                 i.setParamList(cateParamMapper.selectList(new QueryWrapper<CateParam>().eq("ISDELETED",0).eq("CATEGORY_ID",i.getId()))); | 
 |  |  |             }); | 
 |  |  | 
 |  |  |                                 .or().like(Goods::getShortPinyin,pageWrap.getModel().getKeyword()) | 
 |  |  |                                 .or().like(Goods::getName,pageWrap.getModel().getKeyword()) | 
 |  |  |                 ) | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ") | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ") | 
 |  |  | //                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " find_in_set('"+pageWrap.getModel().getAttrFirst()+"',t.ATTR_FIRST_IDS) ") | 
 |  |  | //                .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " find_in_set('"+pageWrap.getModel().getAttrSecond()+"',t.ATTR_SECOD_IDS) ") | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrFirst()), " t.id in ( SELECT  gp.GOODS_ID   FROM  cate_param_select cps  ,  goods_param gp where     gp.PRAMA_ID = cps.PARAM_ID     and gp.VAL = cps.`NAME`  " + | 
 |  |  |                         " and cps.ID = '"+pageWrap.getModel().getAttrFirst()+"' ) ") | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getAttrSecond()), " t.id in ( SELECT  gp.GOODS_ID   FROM  cate_param_select cps  ,  goods_param gp where     gp.PRAMA_ID = cps.PARAM_ID     and gp.VAL = cps.`NAME`  " + | 
 |  |  |                         " and cps.ID = '"+pageWrap.getModel().getAttrSecond()+"' ) ") | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getSPrice()), "  t.PRICE >=  "+pageWrap.getModel().getSPrice()+" ") | 
 |  |  |                 .apply(!Objects.isNull(pageWrap.getModel()) && !Objects.isNull(pageWrap.getModel().getEPrice()), "  t.PRICE <=  "+pageWrap.getModel().getEPrice()+" "); | 
 |  |  |         queryWrapper.orderByDesc(Goods::getId); | 
 |  |  |         IPage<Goods> goodsIPage =  goodsJoinMapper.selectJoinPage(page, Goods.class, queryWrapper); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); | 
 |  |  |         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); | 
 |  |  |     } | 
 |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public List<Goods> findListForH5(GoodsRequest goodsRequest) { | 
 |  |  |         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         if(!loginUserInfo.getType().equals(Constants.UserType.ZHUBO.getKey())){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"非主播用户无法使用"); | 
 |  |  |         } | 
 |  |  |         MPJLambdaWrapper<Goods> queryWrapper = new MPJLambdaWrapper<>(); | 
 |  |  |         queryWrapper.selectAll(Goods.class); | 
 |  |  |         queryWrapper.selectAs(Category::getName, Goods::getCategoryName); | 
 |  |  | 
 |  |  |         queryWrapper.leftJoin(Brand.class, Brand::getId, Goods::getBrandId); | 
 |  |  |         queryWrapper.eq(Goods::getStatus,Constants.ZERO); | 
 |  |  |         queryWrapper.eq(Goods::getIsdeleted,Constants.ZERO); | 
 |  |  |         queryWrapper.eq(Goods::getCompanyId,loginUserInfo.getCompanyId()); | 
 |  |  |         queryWrapper.eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getCategoryId()), Goods::getCategoryId, goodsRequest.getCategoryId()) | 
 |  |  |                 .eq(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getBrandId()), Goods::getBrandId, goodsRequest.getBrandId()) | 
 |  |  |                 .and(!Objects.isNull(goodsRequest) && StringUtils.isNotBlank(goodsRequest.getKeyword()), | 
 |  |  | 
 |  |  |                 .apply(!Objects.isNull(goodsRequest) && !Objects.isNull(goodsRequest.getEPrice()), "  t.PRICE <=  "+goodsRequest.getEPrice()+" "); | 
 |  |  |         queryWrapper.orderByDesc(Goods::getId); | 
 |  |  |         List<Goods> goodsList = goodsJoinMapper.selectJoinList(Goods.class,queryWrapper); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.FILE_DIR).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.SYSTEM, Constants.PROJECTS).getCode(); | 
 |  |  |         String prefixUrl = systemDictDataBiz.queryByCode(Constants.OSS, Constants.RESOURCE_PATH).getCode() | 
 |  |  |                 + systemDictDataBiz.queryByCode(Constants.OSS, Constants.GOODS_IMG).getCode(); | 
 |  |  |         goodsList.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()) | 
 |  |  |                             .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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     @Transactional | 
 |  |  |     public  void openSyncSwitch() { | 
 |  |  |         LoginUserInfo loginUserInfo = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); | 
 |  |  |         Boolean  openSyncSwitch = (Boolean)redisTemplate.opsForValue().get(loginUserInfo.getCompanyId()+Constants.OPEN_SYNC_SWITCH); | 
 |  |  |         if(openSyncSwitch!=null && openSyncSwitch ){ | 
 |  |  |             throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"数据同步中,请稍后刷新重试"); | 
 |  |  |         } | 
 |  |  |         redisTemplate.opsForValue().set(loginUserInfo.getCompanyId()+Constants.OPEN_SYNC_SWITCH,true); | 
 |  |  |     } | 
 |  |  | } | 
 |  |  |  |