fix: 商家修改商品价格后,购物车的商品价格不变动不提示问题。购物车sku集合引用地址修改无效导致。
This commit is contained in:
parent
25f8b103bf
commit
fad7c4a39d
@ -1,5 +1,6 @@
|
|||||||
package cn.lili.modules.order.cart.entity.vo;
|
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.distribution.entity.dos.DistributionGoods;
|
||||||
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
import cn.lili.modules.goods.entity.dos.GoodsSku;
|
||||||
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
|
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<String, Object> getPromotionMap() {
|
public Map<String, Object> getPromotionMap() {
|
||||||
return PromotionTools.filterInvalidPromotionsMap(this.promotionMap);
|
return PromotionTools.filterInvalidPromotionsMap(this.promotionMap);
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
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;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -74,13 +77,17 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(TradeDTO tradeDTO) {
|
public void render(TradeDTO tradeDTO) {
|
||||||
//预校验
|
|
||||||
preCalibration(tradeDTO);
|
|
||||||
|
|
||||||
//校验商品有效性
|
//校验商品有效性
|
||||||
checkData(tradeDTO);
|
checkData(tradeDTO);
|
||||||
|
|
||||||
|
//预校验
|
||||||
|
preCalibration(tradeDTO);
|
||||||
|
|
||||||
|
//批量销售预处理
|
||||||
preSaleModel(tradeDTO);
|
preSaleModel(tradeDTO);
|
||||||
|
|
||||||
//店铺分组数据初始化
|
//店铺分组数据初始化
|
||||||
groupStore(tradeDTO);
|
groupStore(tradeDTO);
|
||||||
|
|
||||||
@ -106,15 +113,12 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
//缓存中的商品信息
|
//缓存中的商品信息
|
||||||
GoodsSku dataSku = goodsSkuService.getGoodsSkuByIdFromCache(cartSkuVO.getGoodsSku().getId());
|
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());
|
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());
|
boolean checkGoodsValid = dataSku != null && dataSku.getUpdateTime() != null && dataSku.getUpdateTime().after(cartSkuVO.getGoodsSku().getUpdateTime());
|
||||||
|
|
||||||
Map<String, Object> promotionMap = dataSku != null ? promotionGoodsService.getCurrentGoodsPromotion(dataSku, tradeDTO.getCartTypeEnum().name()) : null;
|
|
||||||
|
|
||||||
log.info("dataSku: {}, goodsSku: {}", dataSku, cartSkuVO.getGoodsSku());
|
|
||||||
if (checkGoodsStatus || checkGoodsValid) {
|
if (checkGoodsStatus || checkGoodsValid) {
|
||||||
if (checkGoodsStatus) {
|
if (checkGoodsStatus) {
|
||||||
//设置购物车未选中
|
//设置购物车未选中
|
||||||
@ -125,14 +129,8 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
cartSkuVO.setErrorMessage("商品已下架");
|
cartSkuVO.setErrorMessage("商品已下架");
|
||||||
}
|
}
|
||||||
if (checkGoodsValid) {
|
if (checkGoodsValid) {
|
||||||
CartSkuVO newCartSkuVO = new CartSkuVO(dataSku,promotionMap);
|
cartSkuVO.rebuildBySku(dataSku);
|
||||||
newCartSkuVO.setCartType(tradeDTO.getCartTypeEnum());
|
|
||||||
newCartSkuVO.setNum(cartSkuVO.getNum());
|
|
||||||
newCartSkuVO.setSubTotal(CurrencyUtil.mul(newCartSkuVO.getPurchasePrice(), cartSkuVO.getNum()));
|
|
||||||
cartSkuVO = newCartSkuVO;
|
|
||||||
log.info("商品信息已更新,更新后的商品信息为:{}", cartSkuVO);
|
|
||||||
}
|
}
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//商品库存判定
|
//商品库存判定
|
||||||
@ -164,7 +162,7 @@ public class CheckDataRender implements CartRenderStep {
|
|||||||
private void groupStore(TradeDTO tradeDTO) {
|
private void groupStore(TradeDTO tradeDTO) {
|
||||||
//渲染的购物车
|
//渲染的购物车
|
||||||
List<CartVO> cartList = new ArrayList<>();
|
List<CartVO> cartList = new ArrayList<>();
|
||||||
if(tradeDTO.getCartList() == null || tradeDTO.getCartList().size() == 0){
|
if (tradeDTO.getCartList() == null || tradeDTO.getCartList().size() == 0) {
|
||||||
//根据店铺分组
|
//根据店铺分组
|
||||||
Map<String, List<CartSkuVO>> storeCollect = tradeDTO.getSkuList().stream().collect(Collectors.groupingBy(CartSkuVO::getStoreId));
|
Map<String, List<CartSkuVO>> storeCollect = tradeDTO.getSkuList().stream().collect(Collectors.groupingBy(CartSkuVO::getStoreId));
|
||||||
for (Map.Entry<String, List<CartSkuVO>> storeCart : storeCollect.entrySet()) {
|
for (Map.Entry<String, List<CartSkuVO>> storeCart : storeCollect.entrySet()) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user