Commit 300d7310 by huiyang.chen

fix 随单购折扣信息

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