| | |
| | | @Autowired |
| | | private ShopGoodsRelationMapper shopGoodsRelationMapper; |
| | | |
| | | @Autowired |
| | | private SearchHistoryMapper searchHistoryMapper; |
| | | |
| | | |
| | | |
| | | @Autowired |
| | |
| | | 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(); |
| | |
| | | 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) { |
| | |
| | | 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 ){ |
| | |
| | | } |
| | | //如果是上架 |
| | | 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()); |
| | |
| | | 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) |
| | |
| | | .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); |
| | | } |
| | | |
| | |
| | | @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()), |
| | |
| | | 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; |
| | | } |
| | |
| | | |
| | | 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; |
| | |
| | | } |
| | | goodsResponse.setSkuResponsesList(skuResponseList); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public GoodsInfoResponse getGoodsInfo(Integer goodsId,Integer memberId) { |
| | |
| | | .eq(Collect::getObjType,Constants.ONE) |
| | | )>Constants.ZERO?Constants.ONE:Constants.ZERO); |
| | | } |
| | | |
| | | return goodsResponse; |
| | | } |
| | | |