From 0f2ed23b020f1071d20939cb38ab7b8f0b1f636b Mon Sep 17 00:00:00 2001 From: misworga831 Date: Fri, 3 Feb 2023 15:34:00 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E8=BD=A6=E6=A3=80=E6=9F=A5=E6=95=B0=E6=8D=AE=E9=9B=86=E5=90=88?= =?UTF-8?q?=E6=93=8D=E4=BD=9C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/render/impl/CheckDataRender.java | 51 ++++++++++--------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 12306fab..61ebe0ac 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -36,10 +36,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Optional; +import java.util.*; import java.util.stream.Collectors; /** @@ -108,32 +105,36 @@ public class CheckDataRender implements CartRenderStep { //缓存中的商品信息 GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId()); - Map promotionMap = promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name()); + //商品上架状态判定 - if (!GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable())) { - //设置购物车未选中 - cartSkuVO.setChecked(false); - //设置购物车此sku商品已失效 - cartSkuVO.setInvalid(true); - //设置失效消息 - cartSkuVO.setErrorMessage("商品已下架"); + boolean checkGoodsStatus = dataSku == null || !GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable()); + //商品有效性判定 + boolean checkGoodsValid = dataSku != null && dataSku.getUpdateTime() != null && dataSku.getUpdateTime().after(cartSkuVO.getGoodsSku().getUpdateTime()); + + Map promotionMap = dataSku != null ? promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name()) : null; + + log.info("dataSku: {}, goodsSku: {}", dataSku, cartSkuVO.getGoodsSku()); + if (checkGoodsStatus || checkGoodsValid) { + if (checkGoodsStatus) { + //设置购物车未选中 + cartSkuVO.setChecked(false); + //设置购物车此sku商品已失效 + cartSkuVO.setInvalid(true); + //设置失效消息 + cartSkuVO.setErrorMessage("商品已下架"); + } + if (checkGoodsValid) { + CartSkuVO newCartSkuVO = new CartSkuVO(dataSku,promotionMap); + newCartSkuVO.setCartType(tradeDTO.getCartTypeEnum()); + newCartSkuVO.setNum(cartSkuVO.getNum()); + newCartSkuVO.setSubTotal(CurrencyUtil.mul(newCartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); + cartSkuVO = newCartSkuVO; + log.info("商品信息已更新,更新后的商品信息为:{}", cartSkuVO); + } continue; } - //商品有效性判定 - log.info("dataSku: {}, goodsSku: {}", dataSku, cartSkuVO.getGoodsSku()); - if (dataSku == null || (dataSku.getUpdateTime() != null && dataSku.getUpdateTime().after(cartSkuVO.getGoodsSku().getUpdateTime()))) { - //商品失效,将商品移除并重新填充商品 - cartSkuVOS.remove(cartSkuVO); - //设置新商品 - CartSkuVO newCartSkuVO = new CartSkuVO(dataSku,promotionMap); - newCartSkuVO.setCartType(tradeDTO.getCartTypeEnum()); - newCartSkuVO.setNum(cartSkuVO.getNum()); - newCartSkuVO.setSubTotal(CurrencyUtil.mul(newCartSkuVO.getPurchasePrice(), cartSkuVO.getNum())); - cartSkuVOS.add(newCartSkuVO); - continue; - } //商品库存判定 if (dataSku.getQuantity() < cartSkuVO.getNum()) { //设置购物车未选中