From b97c8e7fda61923a02997645bbb8e12d816a6adf Mon Sep 17 00:00:00 2001 From: chc <1501738723@qq.com> Date: Thu, 22 Dec 2022 18:19:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=90=8E=E5=90=8C=E6=AD=A5=E5=88=B0=E8=B4=AD=E7=89=A9?= =?UTF-8?q?=E8=BD=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/render/impl/CheckDataRender.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 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 c85cfbbd..d00b1bec 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 @@ -95,8 +95,10 @@ public class CheckDataRender implements CartRenderStep { * @param tradeDTO 购物车视图 */ private void checkData(TradeDTO tradeDTO) { + List cartSkuVOS = tradeDTO.getSkuList(); + //循环购物车中的商品 - for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { + for (CartSkuVO cartSkuVO : cartSkuVOS) { //如果失效,确认sku为未选中状态 if (Boolean.TRUE.equals(cartSkuVO.getInvalid())) { @@ -106,14 +108,17 @@ public class CheckDataRender implements CartRenderStep { //缓存中的商品信息 GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId()); + Map promotionMap = promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name()); //商品有效性判定 - if (dataSku == null || dataSku.getCreateTime().after(cartSkuVO.getGoodsSku().getCreateTime())) { - //设置购物车未选中 - cartSkuVO.setChecked(false); - //设置购物车此sku商品已失效 - cartSkuVO.setInvalid(true); - //设置失效消息 - cartSkuVO.setErrorMessage("商品信息发生变化,已失效"); + if (dataSku == 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; } //商品上架状态判定