Commit 300d7310 by huiyang.chen

fix 随单购折扣信息

parent 40cdf4f6
...@@ -64,7 +64,8 @@ public class CouponDiscountCalculation { ...@@ -64,7 +64,8 @@ public class CouponDiscountCalculation {
// private CardBinClient cardBinClient; // private CardBinClient cardBinClient;
@Value("${coupon.app.id}") @Value("${coupon.app.id}")
private String appid; private String appid;
@Value("${mccafe.universal.coupon.code }")
private String mccafeUniversalCouponCode;
private static final String mcafe = "mccafe"; private static final String mcafe = "mccafe";
...@@ -75,9 +76,9 @@ public class CouponDiscountCalculation { ...@@ -75,9 +76,9 @@ public class CouponDiscountCalculation {
*/ */
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts()) if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getCouponDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getActivityType()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getActivityType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getActivityType())) ))) { ||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())) ))) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
...@@ -85,12 +86,26 @@ public class CouponDiscountCalculation { ...@@ -85,12 +86,26 @@ public class CouponDiscountCalculation {
return; return;
} }
//订单级别券优惠
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscountResult.getDiscounts();
if (CollectionUtils.isEmpty(discounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(couponDiscounts)) {
return;
}
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream() Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1)); .collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountMon = couponDiscounts.stream().filter(t -> (ActivityTypeEnum.TYPE_32.getCode().equals(t.getType())
&& mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (CartGoods cartGoods : cartGoodsList) { for (CartGoods cartGoods : cartGoodsList) {
//商品券商品 //商品券商品
if (StringUtils.isNotBlank(cartGoods.getCouponCode())) { if (StringUtils.isNotBlank(cartGoods.getCouponCode()) || discountMon != null) {
// String couponCode = cartGoods.getCouponCode(); // String couponCode = cartGoods.getCouponCode();
// // 计算优惠信息时,已将券校验过,放在map中 // // 计算优惠信息时,已将券校验过,放在map中
// Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult.getValidCouponMap(); // Map<String, CheckSpqInfoResponseDto> validCouponMap = calculationDiscountResult.getValidCouponMap();
...@@ -105,19 +120,18 @@ public class CouponDiscountCalculation { ...@@ -105,19 +120,18 @@ public class CouponDiscountCalculation {
// cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName()); // cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
// } // }
// } // }
if (goodsMap.get(cartGoods.getGoodsId()) == null) { if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue; continue;
} }
cartGoods.setAmount(goodsMap.get(cartGoods.getGoodsId()).getRealAmount()); cartGoods.setAmount(goodsMap.get(cartGoods.getCartGoodsUid()).getRealAmount());
} }
} }
// 当couponCode不为空时,需计算优惠价格 // 当couponCode不为空时,需计算优惠价格
long couponDiscount = 0; long couponDiscount = 0;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponResultsList = calculationDiscountResult.getCouponDiscounts(); if (CollectionUtils.isNotEmpty(couponDiscounts)) {
if (CollectionUtils.isNotEmpty(couponResultsList)) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) { couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount());
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
} }
} }
shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount); shoppingCartGoodsResponseVo.setCouponDiscount(couponDiscount);
...@@ -129,13 +143,21 @@ public class CouponDiscountCalculation { ...@@ -129,13 +143,21 @@ public class CouponDiscountCalculation {
*/ */
public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto){ public void updateShoppingCartGoodsApportion(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto){
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts()) if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getCouponDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getActivityType()) || !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getActivityType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getActivityType())) ))) { ||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())) ))) {
return; return;
} }
//订单级别券优惠 //订单级别券优惠
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult.getCouponDiscounts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = calculationDiscountResult.getDiscounts();
if (CollectionUtils.isEmpty(couponDiscounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = couponDiscounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType())
|| (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(discounts)) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
if (CollectionUtils.isEmpty(goodsList)) { if (CollectionUtils.isEmpty(goodsList)) {
...@@ -143,19 +165,21 @@ public class CouponDiscountCalculation { ...@@ -143,19 +165,21 @@ public class CouponDiscountCalculation {
} }
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream() Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsMap = goodsList.parallelStream()
.collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getGoodsId, Function.identity(), (k1, k2) -> k1)); .collect(Collectors.toMap(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
// 匹配随单购悦享卡
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discount = discounts.stream().filter(t -> (ActivityTypeEnum.TYPE_32.getCode().equals(t.getType()) && mccafeUniversalCouponCode.equals(t.getActivityCode()))).findFirst().orElse(null);
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) { for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
//商品券商品 //商品券商品
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) { if (StringUtils.isNotEmpty(cartGoods.getCouponCode()) || discount != null) {
List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>(); List<ActivityDiscountsDto> productActivityDiscountsDtos = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponDiscount : discounts) {
if(couponDiscount.getCouponCode().equals(cartGoods.getCouponCode())){ if (couponDiscount.getActivityCode().equals(cartGoods.getCouponCode())) {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(couponDiscount.getCouponCode()); activityDiscountsDto.setActivityCode(couponDiscount.getActivityCode());
activityDiscountsDto.setActivityName(couponDiscount.getActivityName()); activityDiscountsDto.setActivityName(couponDiscount.getActivityName());
activityDiscountsDto.setActivityType(couponDiscount.getActivityType()); activityDiscountsDto.setActivityType(couponDiscount.getType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscountAmount()); activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscount());
productActivityDiscountsDtos.add(activityDiscountsDto); productActivityDiscountsDtos.add(activityDiscountsDto);
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount()); cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
...@@ -164,14 +188,14 @@ public class CouponDiscountCalculation { ...@@ -164,14 +188,14 @@ public class CouponDiscountCalculation {
} }
} }
if (goodsMap.get(cartGoods.getSkuId()) == null) { if (goodsMap.get(cartGoods.getCartGoodsUid()) == null) {
continue; continue;
} }
//商品券键位编号为空 //商品券键位编号为空
if(StringUtils.isBlank(goodsMap.get(cartGoods.getSkuId()).getArtNo())){ if(StringUtils.isBlank(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo())){
throw new ServiceException(ResponseResult.SHOPPING_CART_SEAT_EMPTY); throw new ServiceException(ResponseResult.SHOPPING_CART_SEAT_EMPTY);
} }
cartGoods.setCustomerCode(goodsMap.get(cartGoods.getSkuId()).getArtNo()); cartGoods.setCustomerCode(goodsMap.get(cartGoods.getCartGoodsUid()).getArtNo());
} }
} }
......
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