From 77a994bcfe18f2362733a5cea36c47dc963083fe Mon Sep 17 00:00:00 2001 From: liyj <1617420630@qq.com> Date: Wed, 30 Jul 2025 16:38:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81sku=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ShopProductItemServiceImpl.java | 90 +++++++++++++------ 1 file changed, 61 insertions(+), 29 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java index 563ab374..075c76de 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/product/service/impl/ShopProductItemServiceImpl.java @@ -2305,49 +2305,81 @@ public class ShopProductItemServiceImpl extends BaseServiceImpl updateShopProductItem=new ArrayList<>(); List updateShopProductBase=new ArrayList<>(); List updateShopProductIndex=new ArrayList<>(); - for (ShopProductItem shopProductItem : shopProductItemList) { - queryWrapper.eq("product_id",shopProductItem.getProduct_id()); - List oldShopProductItems= shopProductItemService.list(queryWrapper); - List oldShopProductItemList= oldShopProductItems.stream().filter(s -> s.getItem_id().equals(shopProductItem.getItem_id())).collect(Collectors.toList()); - if(CollUtil.isEmpty(oldShopProductItemList)){ - return CommonResult.failed("不存在商品sku"); + //校验数据 + Iterator itemIs=shopProductItemList.iterator(); + StringBuilder ids= new StringBuilder(); + Long productId=shopProductItemList.get(0).getProduct_id(); + while (itemIs.hasNext()) {//去重 + ShopProductItem shopProductItem=itemIs.next(); + if(ObjectUtil.isEmpty(shopProductItem.getProduct_id())){ + return CommonResult.failed("产品id不能为空"); + } + if(ObjectUtil.isEmpty(shopProductItem.getItem_id())){ + return CommonResult.failed("商品sku不能为空"); } - ShopProductItem oldShopProductItem=oldShopProductItemList.get(0); if(ObjectUtil.isEmpty(shopProductItem.getItem_quantity())){ return CommonResult.failed("库存不能为空"); } if(ObjectUtil.isEmpty(shopProductItem.getItem_unit_price())){ return CommonResult.failed("价格不能为空"); } + if(!productId.equals(shopProductItem.getProduct_id())){ + return CommonResult.failed("只能修改相同产品的sku列表"); + } + if(ids.toString().contains(shopProductItem.getItem_id().toString())){ + itemIs.remove(); + }else { + ids.append(shopProductItem.getItem_id()); + } + } + BigDecimal item_unit_price = shopProductItemList.stream().map(ShopProductItem::getItem_unit_price).min(BigDecimal::compareTo).get(); + BigDecimal item_unit_price_max =shopProductItemList.stream().map(ShopProductItem::getItem_unit_price).max(BigDecimal::compareTo).get(); - BigDecimal item_unit_price =shopProductItem.getItem_unit_price(); - BigDecimal item_unit_price_max =shopProductItem.getItem_unit_price(); - - BigDecimal item_unit_price_old = oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).min(BigDecimal::compareTo).get(); - ShopProductIndex shopProductIndex=new ShopProductIndex(); - if(item_unit_price_old.compareTo(item_unit_price)>0){ - ShopProductBase shopProductBase=new ShopProductBase(); - shopProductBase.setProduct_id(shopProductItem.getProduct_id()); - shopProductBase.setProduct_unit_price(item_unit_price); - shopProductIndex.setProduct_unit_price(item_unit_price); - shopProductIndex.setProduct_id(shopProductItem.getProduct_id()); - updateShopProductBase.add(shopProductBase); - // shopProductBaseService.updateById(shopProductBase); - } - BigDecimal item_unit_price_max_old=oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).max(BigDecimal::compareTo).get(); - if(item_unit_price_max.compareTo(item_unit_price_max_old)>0){ - shopProductIndex.setProduct_id(shopProductItem.getProduct_id()); - shopProductIndex.setProduct_unit_price_max(item_unit_price_max); - } - if(ObjectUtil.isNotEmpty(shopProductIndex.getProduct_id())){ - updateShopProductIndex.add(shopProductIndex); - //shopProductIndexService.updateById(shopProductIndex); + queryWrapper.eq("product_id",productId); + List oldShopProductItems= shopProductItemService.list(queryWrapper); + BigDecimal item_unit_price_old = oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).min(BigDecimal::compareTo).get(); + BigDecimal item_unit_price_max_old=oldShopProductItems.stream().map(ShopProductItem::getItem_unit_price).max(BigDecimal::compareTo).get(); + for (ShopProductItem shopProductItem : shopProductItemList) { + List oldShopProductItemList= oldShopProductItems.stream().filter(s -> s.getItem_id().equals(shopProductItem.getItem_id())).collect(Collectors.toList()); + if(CollUtil.isEmpty(oldShopProductItemList)){ + return CommonResult.failed("不存在商品sku"); } + ShopProductItem oldShopProductItem=oldShopProductItemList.get(0); oldShopProductItem.setItem_quantity(shopProductItem.getItem_quantity()); oldShopProductItem.setItem_unit_price(shopProductItem.getItem_unit_price()); updateShopProductItem.add(oldShopProductItem); // shopProductItemService.updateById(oldShopProductItem); } + + ShopProductIndex shopProductIndex=new ShopProductIndex(); + ShopProductBase shopProductBase=new ShopProductBase(); + if(item_unit_price_old.compareTo(item_unit_price)>0&&oldShopProductItems.size()>1){ + shopProductBase.setProduct_id(productId); + shopProductBase.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_id(productId); + updateShopProductBase.add(shopProductBase); + } + + + if(item_unit_price_max.compareTo(item_unit_price_max_old)>0&&oldShopProductItems.size()>1){ + shopProductIndex.setProduct_id(productId); + shopProductIndex.setProduct_unit_price_max(item_unit_price_max); + } + + if(oldShopProductItems.size()==1){ + shopProductBase.setProduct_id(productId); + shopProductBase.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_id(productId); + shopProductIndex.setProduct_unit_price(item_unit_price); + shopProductIndex.setProduct_unit_price_max(item_unit_price); + shopProductIndex.setProduct_id(productId); + updateShopProductBase.add(shopProductBase); + } + + if(ObjectUtil.isNotEmpty(shopProductIndex.getProduct_id())){ + updateShopProductIndex.add(shopProductIndex); + } if(!updateShopProductBase.isEmpty()){ shopProductBaseService.updateBatchById(updateShopProductBase); }