Commit e44d0ca0 by huiyang.chen

fix 买三赠一开发2

parent 5e0e5b74
...@@ -6,6 +6,7 @@ public enum SaveCouponType { ...@@ -6,6 +6,7 @@ public enum SaveCouponType {
FREIGHT_COUPON(2, "运费券"), FREIGHT_COUPON(2, "运费券"),
MON_COUPON(3, "随单购月卡"), MON_COUPON(3, "随单购月卡"),
THREE_TO_ONE_COUPON(4, "买三赠一券"), THREE_TO_ONE_COUPON(4, "买三赠一券"),
THREE_TO_ONE_ACTIVITY_CODE(5, "买三赠一券虚拟活动号"),
; ;
private Integer code; private Integer code;
......
...@@ -114,6 +114,8 @@ public class CalculationServiceImpl { ...@@ -114,6 +114,8 @@ public class CalculationServiceImpl {
//加料 //加料
materialCalculation.updateShoppingCartGoodsApportion(calculationDiscount,cartGoodsList); materialCalculation.updateShoppingCartGoodsApportion(calculationDiscount,cartGoodsList);
//买三赠一券
couponDiscountCalculation.updateBuyThreeToOneShoppingCartGoodsDiscount(calculationDiscount,cartGoodsList,shoppingCartGoodsResponseVo);
return calculationDiscount; return calculationDiscount;
} }
......
...@@ -22,6 +22,7 @@ import lombok.extern.slf4j.Slf4j; ...@@ -22,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils; import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -78,8 +79,7 @@ public class CouponDiscountCalculation { ...@@ -78,8 +79,7 @@ public class CouponDiscountCalculation {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts()) if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getDiscounts())
|| !calculationDiscountResult.getDiscounts().stream().anyMatch(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType()) || !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())) ||(ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType())) ))) {
|| (ActivityTypeEnum.TYPE_35.getCode().equals(discount.getType())) ))) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscountResult.getGoods();
...@@ -93,7 +93,7 @@ public class CouponDiscountCalculation { ...@@ -93,7 +93,7 @@ public class CouponDiscountCalculation {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> couponDiscounts = discounts.stream().filter(discount -> (ActivityTypeEnum.TYPE_3.getCode().equals(discount.getType()) 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())) || (ActivityTypeEnum.TYPE_35.getCode().equals(discount.getType())))).collect(Collectors.toList()); || (ActivityTypeEnum.TYPE_31.getCode().equals(discount.getType())) || (ActivityTypeEnum.TYPE_32.getCode().equals(discount.getType()) ))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(couponDiscounts)) { if (CollectionUtils.isEmpty(couponDiscounts)) {
return; return;
} }
...@@ -607,4 +607,60 @@ public class CouponDiscountCalculation { ...@@ -607,4 +607,60 @@ public class CouponDiscountCalculation {
return couponPromotionVO; return couponPromotionVO;
} }
/**
* 买三赠一券
* @param calculationDiscount
* @param cartGoodsList
* @param shoppingCartGoodsResponseVo
*/
public void updateBuyThreeToOneShoppingCartGoodsDiscount(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscount, List<CartGoods> cartGoodsList,
ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo) {
List<CartGoods> cartGoodsListNew =new ArrayList<>();
if (CollectionUtils.isNotEmpty(calculationDiscount.getDiscounts())) {
// 对促销返回的数据进行拆分
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discounts = calculationDiscount.getDiscounts().stream().filter(discount -> ActivityTypeEnum.TYPE_35.getCode().equals(discount.getType())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(discounts) ){
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = calculationDiscount.getGoods();
if (CollectionUtils.isNotEmpty(goodsList)) {
Map<String, CartGoods> goodsCartMap = cartGoodsList.parallelStream().collect(Collectors.toMap(CartGoods::getCartGoodsUid, Function.identity(), (k1, k2) -> k1));
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods: goodsList) {
CartGoods cartGoods = goodsCartMap.get(goods.getCartGoodsUid());
if (cartGoods == null ) continue;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> collect = goods.getDiscounts().stream().filter(s ->
ActivityTypeEnum.TYPE_35.getCode().equals(s.getType())).collect(Collectors.toList());
int sum = collect.stream().mapToInt(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActualGoodsNumber).sum();
if (CollectionUtils.isNotEmpty(collect) ){
if (sum > 0 && sum < goods.getGoodsQuantity()) {
Integer qty = cartGoods.getQty();
//需要拆分
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount: collect) {
CartGoods cartGoods1 =new CartGoods();
BeanUtils.copyProperties(cartGoods,cartGoods1);
cartGoods1.setQty(goodsDiscount.getActualGoodsNumber());
Long count = cartGoods.getOriginalPrice() * goodsDiscount.getActualGoodsNumber();
cartGoods1.setAmount(count - goodsDiscount.getDiscount());
cartGoods1.setCouponName(goodsDiscount.getActivityName());
cartGoods1.setOriginalAmount(count);
cartGoodsListNew.add(cartGoods1);
qty = qty - goodsDiscount.getActualGoodsNumber();
}
cartGoods.setQty(qty);
cartGoods.setCouponName("");
}
}
}
}
}
}
cartGoodsList.addAll(cartGoodsListNew);
//筛选数量不为0商品
cartGoodsList = cartGoodsList.stream().filter(cartGoods -> cartGoods.getQty() != 0).collect(Collectors.toList());
}
} }
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