Commit e8ac2bb5 by chongfu.liang

Merge branch 'feature/20210104-新算价优惠券重复计算问题-lcf'

parents 60cb0f5a 8b287ce3
...@@ -215,6 +215,13 @@ public class CartGoods { ...@@ -215,6 +215,13 @@ public class CartGoods {
private Integer memberDiscount; private Integer memberDiscount;
/** /**
* 当前选择的优惠券优惠
*
*/
private Integer currentCouponDiscount;
/**
* 费率 * 费率
*/ */
private Double tax; private Double tax;
......
...@@ -602,8 +602,9 @@ public class CouponServiceImpl implements CouponService { ...@@ -602,8 +602,9 @@ public class CouponServiceImpl implements CouponService {
Product product = new Product(); Product product = new Product();
product.setProductId(StringUtils.isEmpty(cartGood.getSkuId()) ? cartGood.getSpuId() : cartGood.getSkuId()); product.setProductId(StringUtils.isEmpty(cartGood.getSkuId()) ? cartGood.getSpuId() : cartGood.getSkuId());
// 普通商品价格 // 普通商品价格
product.setAmount(cartGood.getAmount().intValue()); Integer currentCouponDiscount = cartGood.getCurrentCouponDiscount() != null ? cartGood.getCurrentCouponDiscount() : 0;
totalAmount = totalAmount + cartGood.getAmount(); product.setAmount(cartGood.getAmount().intValue() + currentCouponDiscount);
totalAmount = totalAmount + product.getAmount();
// todo :小料价格累加到主商品上 // todo :小料价格累加到主商品上
if (CollectionUtils.isNotEmpty(cartGood.getProductMaterialList())) { if (CollectionUtils.isNotEmpty(cartGood.getProductMaterialList())) {
for (CartGoods.MaterialGoods materialGoods : cartGood.getProductMaterialList()) { for (CartGoods.MaterialGoods materialGoods : cartGood.getProductMaterialList()) {
......
...@@ -59,7 +59,7 @@ public class CalculationCommonService { ...@@ -59,7 +59,7 @@ public class CalculationCommonService {
*/ */
public void initShoppingCart(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult public void initShoppingCart(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList , List<CartGoods> cartGoodsList
, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { , ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, String couponCode) {
/** /**
* 使用促销算价赋值行记录 * 使用促销算价赋值行记录
...@@ -78,7 +78,7 @@ public class CalculationCommonService { ...@@ -78,7 +78,7 @@ public class CalculationCommonService {
originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty(); originalAmount = cartGoods.getOriginalPrice() * cartGoods.getQty();
cartGoods.setOriginalAmount(originalAmount); cartGoods.setOriginalAmount(originalAmount);
this.rowRealAmount(goods, cartGoods); this.rowRealAmount(goods, cartGoods, couponCode);
//成交价行记录 //成交价行记录
amount = cartGoods.getAmount(); amount = cartGoods.getAmount();
totalAmount += amount; totalAmount += amount;
...@@ -95,7 +95,7 @@ public class CalculationCommonService { ...@@ -95,7 +95,7 @@ public class CalculationCommonService {
shoppingCartGoodsResponseVo.setTotalDiscountAmount(discountResult == null ? 0L : discountResult.getTotalDiscountAmount()); shoppingCartGoodsResponseVo.setTotalDiscountAmount(discountResult == null ? 0L : discountResult.getTotalDiscountAmount());
} }
private void rowRealAmount(List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods, CartGoods cartGoods) { private void rowRealAmount(List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods, CartGoods cartGoods, String couponCode) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods find = goods CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods find = goods
.stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid())) .stream().filter((k) -> k.getCartGoodsUid().equals(cartGoods.getCartGoodsUid()))
...@@ -104,6 +104,14 @@ public class CalculationCommonService { ...@@ -104,6 +104,14 @@ public class CalculationCommonService {
if (find == null) return; if (find == null) return;
cartGoods.setAmount(find.getRealAmount()); cartGoods.setAmount(find.getRealAmount());
cartGoods.setCurrentCouponDiscount(0);
if (CollectionUtils.isNotEmpty(find.getDiscounts())){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = find.getDiscounts().stream()
.filter(p -> p.getActivityCode().equals(couponCode)).findFirst().orElse(null);
if (goodsDiscount != null){
cartGoods.setCurrentCouponDiscount(goodsDiscount.getDiscount() == null ? 0 : goodsDiscount.getDiscount().intValue());
}
}
//cartGoods.setOriginalAmount(find.getOriginalPrice()); //cartGoods.setOriginalAmount(find.getOriginalPrice());
/** /**
* 套餐的原价 * 套餐的原价
......
...@@ -73,7 +73,7 @@ public class CalculationSharingCartService { ...@@ -73,7 +73,7 @@ public class CalculationSharingCartService {
/** /**
* 用促销价格初始化购物车行记录成交价 * 用促销价格初始化购物车行记录成交价
*/ */
calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo); calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null);
/** /**
* 可用券及券折扣 * 可用券及券折扣
......
...@@ -76,7 +76,7 @@ public class CalculationSharingEquallyService { ...@@ -76,7 +76,7 @@ public class CalculationSharingEquallyService {
, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) { , CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity) {
calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo); calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo, couponPromotionVO != null ? couponPromotionVO.getCouponCode() : null);
/** /**
* 商品券\换购券 * 商品券\换购券
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment