From fad7c4a39dd2296caf376c020286036ddda6af92 Mon Sep 17 00:00:00 2001 From: Chopper711 Date: Wed, 29 Mar 2023 16:04:53 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=95=86=E5=AE=B6=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC=E5=90=8E=EF=BC=8C=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E7=9A=84=E5=95=86=E5=93=81=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E4=B8=8D=E5=8F=98=E5=8A=A8=E4=B8=8D=E6=8F=90=E7=A4=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82=E8=B4=AD=E7=89=A9=E8=BD=A6sku=E9=9B=86?= =?UTF-8?q?=E5=90=88=E5=BC=95=E7=94=A8=E5=9C=B0=E5=9D=80=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=97=A0=E6=95=88=E5=AF=BC=E8=87=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/cart/entity/vo/CartSkuVO.java | 13 ++++++++ .../cart/render/impl/CheckDataRender.java | 30 +++++++++---------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java index f05087fa..1cef92e1 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/CartSkuVO.java @@ -1,5 +1,6 @@ package cn.lili.modules.order.cart.entity.vo; +import cn.lili.common.utils.CurrencyUtil; import cn.lili.modules.distribution.entity.dos.DistributionGoods; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; @@ -123,6 +124,18 @@ public class CartSkuVO extends CartBase implements Serializable { } } + public void rebuildBySku(GoodsSku goodsSku) { + this.goodsSku = goodsSku; + this.purchasePrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); + this.utilPrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice(); + + + //计算购物车小计 + this.subTotal = CurrencyUtil.mul(this.getPurchasePrice(), this.getNum()); + this.setStoreId(goodsSku.getStoreId()); + this.setStoreName(goodsSku.getStoreName()); + } + public Map getPromotionMap() { return PromotionTools.filterInvalidPromotionsMap(this.promotionMap); } 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 c0d5823d..a39e99ae 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,7 +36,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; /** @@ -74,13 +77,17 @@ public class CheckDataRender implements CartRenderStep { @Override public void render(TradeDTO tradeDTO) { - //预校验 - preCalibration(tradeDTO); + //校验商品有效性 checkData(tradeDTO); + //预校验 + preCalibration(tradeDTO); + + //批量销售预处理 preSaleModel(tradeDTO); + //店铺分组数据初始化 groupStore(tradeDTO); @@ -106,15 +113,12 @@ public class CheckDataRender implements CartRenderStep { //缓存中的商品信息 GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId()); - - //商品上架状态判定 + //商品上架状态判定 sku为空、sku非上架状态、sku审核不通过 boolean checkGoodsStatus = dataSku == null || !GoodsAuthEnum.PASS.name().equals(dataSku.getAuthFlag()) || !GoodsStatusEnum.UPPER.name().equals(dataSku.getMarketEnable()); - //商品有效性判定 + //商品有效性判定 sku不为空且sku的更新时间不为空且sku的更新时间在购物车sku的更新时间之后 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) { //设置购物车未选中 @@ -125,14 +129,8 @@ public class CheckDataRender implements CartRenderStep { 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); + cartSkuVO.rebuildBySku(dataSku); } - continue; } //商品库存判定 @@ -164,7 +162,7 @@ public class CheckDataRender implements CartRenderStep { private void groupStore(TradeDTO tradeDTO) { //渲染的购物车 List cartList = new ArrayList<>(); - if(tradeDTO.getCartList() == null || tradeDTO.getCartList().size() == 0){ + if (tradeDTO.getCartList() == null || tradeDTO.getCartList().size() == 0) { //根据店铺分组 Map> storeCollect = tradeDTO.getSkuList().stream().collect(Collectors.groupingBy(CartSkuVO::getStoreId)); for (Map.Entry> storeCart : storeCollect.entrySet()) {