Commit 92f25048 by ping.wu

Merge branches 'feature/20210816_买M赠N券_wuping' and 'master' of…

Merge branches 'feature/20210816_买M赠N券_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group

# Conflicts:
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/ShoppingCartNewServiceImpl.java
#	shopping-cart-application-service/src/main/java/cn/freemud/service/impl/calculate/CalculationSharingDiscountService.java
parents 5d85b30c 2299a71b
...@@ -3860,6 +3860,7 @@ public class OrderSdkAdapter { ...@@ -3860,6 +3860,7 @@ public class OrderSdkAdapter {
couponCodeVerificationProductDto.setPid(pid); couponCodeVerificationProductDto.setPid(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty()); couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1); couponCodeVerificationProductDto.setSeq(i + 1);
couponCodeVerificationProductDto.setRedeem_price(new BigDecimal(productBean.getPrice()));
products.add(couponCodeVerificationProductDto); products.add(couponCodeVerificationProductDto);
} }
} }
......
...@@ -21,6 +21,11 @@ public enum GoodsTypeEnum { ...@@ -21,6 +21,11 @@ public enum GoodsTypeEnum {
SET_MEAL_GOODS(3, "套餐商品"), SET_MEAL_GOODS(3, "套餐商品"),
SKU_GOODS(4, "sku商品"), SKU_GOODS(4, "sku商品"),
SPU_GOODS(5, "spu商品"), SPU_GOODS(5, "spu商品"),
REDUCE_PRICE_GOODS(6,"超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配"); EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType; private Integer goodsType;
......
...@@ -232,7 +232,9 @@ public interface ShoppingCartBaseService { ...@@ -232,7 +232,9 @@ public interface ShoppingCartBaseService {
CartGoodsStates cartGoodsStates = new CartGoodsStates(); CartGoodsStates cartGoodsStates = new CartGoodsStates();
for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) { for (CartGoods cartGoods : checkCartRequest.getCartGoodsList()) {
// 当goodsId为空或商品是商品券时直接跳过 // 当goodsId为空或商品是商品券时直接跳过
if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())) { if (StringUtils.isEmpty(cartGoods.getGoodsId()) || Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.COUPON_GOODS.getGoodsType())
|| Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType())
|| Objects.equals(cartGoods.getGoodsType(), GoodsTypeEnum.BUY_M_SEND_N_COUPON.getGoodsType())) {
continue; continue;
} }
shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList); shoppingCartAdapter.updateCartGoodsInfoNew(cartGoods, productList);
......
...@@ -920,7 +920,8 @@ public class CreateOrderAdapter { ...@@ -920,7 +920,8 @@ public class CreateOrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType()))) .accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence()) .sequence(createOrderProductDto.getSequence())
.productId(material.getSpuId()) .productId(material.getSpuId())
.discountQty(createOrderProductDto.getNumber()) .discountQty((activityDiscountsDto.getActualActivityGoodsNumber() == null || activityDiscountsDto.getActualActivityGoodsNumber() == 0)
? createOrderProductDto.getNumber() : activityDiscountsDto.getActualActivityGoodsNumber())
.build(); .build();
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
......
...@@ -464,7 +464,8 @@ public class OrderAdapter { ...@@ -464,7 +464,8 @@ public class OrderAdapter {
.accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType()))) .accountType(getQueryOrderAccountType(getOrderAccountType(activityDiscountsDto.getActivityType())))
.sequence(createOrderProductDto.getSequence()) .sequence(createOrderProductDto.getSequence())
.productId(createOrderProductDto.getSpecification()) .productId(createOrderProductDto.getSpecification())
.discountQty(createOrderProductDto.getNumber()) .discountQty((activityDiscountsDto.getActualActivityGoodsNumber() == null || activityDiscountsDto.getActualActivityGoodsNumber() == 0)
? createOrderProductDto.getNumber() : activityDiscountsDto.getActualActivityGoodsNumber())
.build(); .build();
orderAccountDtos.add(createOrderAccountDto); orderAccountDtos.add(createOrderAccountDto);
} }
......
...@@ -50,6 +50,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -50,6 +50,7 @@ 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;
import java.math.BigDecimal;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -148,6 +149,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService ...@@ -148,6 +149,7 @@ public class PlatformCouponRelationServiceImpl implements CouponRelationService
couponCodeVerificationProductDto.setPID(pid); couponCodeVerificationProductDto.setPID(pid);
couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty()); couponCodeVerificationProductDto.setConsume_num(productDiscount.getDiscountQty());
couponCodeVerificationProductDto.setSeq(i + 1); couponCodeVerificationProductDto.setSeq(i + 1);
couponCodeVerificationProductDto.setRedeem_price(new BigDecimal(productBean.getPrice()));
products.add(couponCodeVerificationProductDto); products.add(couponCodeVerificationProductDto);
} }
} }
......
...@@ -358,7 +358,8 @@ public class ActivityAdapter { ...@@ -358,7 +358,8 @@ public class ActivityAdapter {
List<String> couponCodes = discountResult.getDiscounts().stream().filter(discount -> Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_3.getCode()) List<String> couponCodes = discountResult.getDiscounts().stream().filter(discount -> Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_3.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_31.getCode()) || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_31.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_32.getCode()) || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getActivityCode).collect(Collectors.toList()); || Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(discount.getType(),ActivityTypeEnum.TYPE_330.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getActivityCode).collect(Collectors.toList());
couponAvailableCartInfo.setCouponCodes(couponCodes); couponAvailableCartInfo.setCouponCodes(couponCodes);
totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum(); totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum();
...@@ -380,8 +381,11 @@ public class ActivityAdapter { ...@@ -380,8 +381,11 @@ public class ActivityAdapter {
Long mealDiscountAmount = 0L;//套餐优惠不算在内 Long mealDiscountAmount = 0L;//套餐优惠不算在内
if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){ if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){
Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode()) Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst(); goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_330.getCode())
).map(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst();
cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null); cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null);
mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum(); mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum();
...@@ -424,7 +428,8 @@ public class ActivityAdapter { ...@@ -424,7 +428,8 @@ public class ActivityAdapter {
List<String> couponCodes = discountResult.getCouponDiscounts().stream().filter(discount -> Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_3.getCode()) List<String> couponCodes = discountResult.getCouponDiscounts().stream().filter(discount -> Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_3.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_31.getCode()) || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_31.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_32.getCode()) || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_33.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults::getCouponCode).collect(Collectors.toList()); || Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(discount.getActivityType(),ActivityTypeEnum.TYPE_330.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults::getCouponCode).collect(Collectors.toList());
couponAvailableCartInfo.setCouponCodes(couponCodes); couponAvailableCartInfo.setCouponCodes(couponCodes);
totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum(); totalMealDiscountAmount = discountResult.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount::getDiscount).sum();
...@@ -440,8 +445,10 @@ public class ActivityAdapter { ...@@ -440,8 +445,10 @@ public class ActivityAdapter {
Pair<Long,Long> pair = getSmallMaterialAmount(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠 Pair<Long,Long> pair = getSmallMaterialAmount(discountGood.getSmallMaterial());//value1=总实付 value2=总优惠
Long mealDiscountAmount = 0L;//套餐优惠不算在内 Long mealDiscountAmount = 0L;//套餐优惠不算在内
if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){ if(CollectionUtils.isNotEmpty(discountGood.getDiscounts())){
Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode()) Optional<String> goodCoupon = discountGood.getDiscounts().stream().filter(
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst(); goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_32.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_33.getCode())
|| Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_330.getCode())).map(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getActivityCode).findFirst();
cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null); cartProduct.setCouponCode(goodCoupon!=null && goodCoupon.isPresent()?goodCoupon.get():null);
mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum(); mealDiscountAmount = discountGood.getDiscounts().stream().filter(goodsDiscount -> Objects.equals(goodsDiscount.getType(),ActivityTypeEnum.TYPE_310.getCode())).mapToLong(ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount).sum();
......
...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum { ...@@ -36,6 +36,7 @@ public enum ActivityTypeEnum {
TYPE_31(31, "折扣券"), TYPE_31(31, "折扣券"),
TYPE_32(32, "商品券"), TYPE_32(32, "商品券"),
TYPE_33(33, "换购券"), TYPE_33(33, "换购券"),
TYPE_330(330, "买M赠N券"),
TYPE_34(34, "配送券"), TYPE_34(34, "配送券"),
TYPE_37(37, "月享卡种子券"), TYPE_37(37, "月享卡种子券"),
TYPE_35(35, "买3赠1券"), TYPE_35(35, "买3赠1券"),
......
...@@ -6,7 +6,8 @@ public enum CouponTypeEnum { ...@@ -6,7 +6,8 @@ public enum CouponTypeEnum {
TYPE_1(1, "代金券"), TYPE_1(1, "代金券"),
TYPE_3(3, "折扣券"), TYPE_3(3, "折扣券"),
TYPE_4(4, "换购券"), TYPE_4(4, "换购券"),
TYPE_5(5, "配送券"); TYPE_5(5, "配送券"),
TYPE_7(7, "买M赠N券");
private Integer code; private Integer code;
......
...@@ -24,6 +24,7 @@ public enum GoodsTypeEnum { ...@@ -24,6 +24,7 @@ public enum GoodsTypeEnum {
REDUCE_PRICE_GOODS(6,"超值加购商品"), REDUCE_PRICE_GOODS(6,"超值加购商品"),
ALL_COUPON_GOODS(8, "万能券商品"), ALL_COUPON_GOODS(8, "万能券商品"),
VIRTUAL_GOODS(9,"虚拟商品"), VIRTUAL_GOODS(9,"虚拟商品"),
BUY_M_SEND_N_COUPON(10, "买M送N券"),
MATERIAL(88, "有加料的商品"), MATERIAL(88, "有加料的商品"),
EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配"); EXCEPTION_GOODS(99, "异常商品:商品菜单变化导致和购物车不商品匹配");
private Integer goodsType; private Integer goodsType;
......
...@@ -28,6 +28,7 @@ public enum ShoppingCartPromotionEnum { ...@@ -28,6 +28,7 @@ public enum ShoppingCartPromotionEnum {
Material(12, "MaterialPromotionService"), Material(12, "MaterialPromotionService"),
// 集点活动类 // 集点活动类
GATHER_SPOT(13, "gatherSpotPromotionService"), GATHER_SPOT(13, "gatherSpotPromotionService"),
BUY_M_SEND_N_COUPON(14, "buyMSendNCouponDiscountService"),
MEMBER_DISCOUNT_NEw(27, "memberDiscountService"); MEMBER_DISCOUNT_NEw(27, "memberDiscountService");
private Integer type; private Integer type;
......
...@@ -137,7 +137,7 @@ public interface ShoppingCartNewService { ...@@ -137,7 +137,7 @@ public interface ShoppingCartNewService {
} }
/** /**
* 换购券 * 换购券 买M赠N券
* *
* @param partnerId * @param partnerId
* @param storeId * @param storeId
......
package cn.freemud.service.impl;
import cn.freemud.entities.dto.ActivityCalculationDiscountResponseDto;
import cn.freemud.entities.dto.UserLoginInfoDto;
import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.IPromotionService;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Service("buyMSendNCouponDiscountService")
public class BuyMSendNCouponDiscountServiceImpl implements IPromotionService {
@Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto,
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getCouponDiscounts())) {
return;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponResultsList = calculationDiscountResult.getCouponDiscounts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> collect = couponResultsList.stream().filter(c -> ActivityTypeEnum.TYPE_330.getCode().equals(c.getActivityType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(collect)) {
return;
}
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods : calculationDiscountResult.getGoods()) {
if (CollectionUtils.isEmpty(goods.getDiscounts())) {
continue;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts = goods.getDiscounts().stream().filter(c -> ActivityTypeEnum.TYPE_330.getCode().equals(c.getType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(goodsDiscounts)) {
continue;
}
// List<CartGoods> addSendGoodsList = new ArrayList<>();
for (CartGoods cartGoods : cartGoodsList) {
if (Objects.equals(goods.getCartGoodsUid(), cartGoods.getCartGoodsUid())) {
Integer actualGoodsNumber = goodsDiscounts.get(0).getActualGoodsNumber();
if (cartGoods.getQty() > actualGoodsNumber) {
// CartGoods cartGood = new CartGoods();
// BeanUtils.copyProperties(cartGoods, cartGood);
// cartGood.setQty(actualGoodsNumber);
// cartGood.setAmount(0L);
// cartGoods.setQty(cartGoods.getQty() - actualGoodsNumber);
cartGoods.setAmount(goods.getRealAmount());
// addSendGoodsList.add(cartGood);
}
if (cartGoods.getQty() == actualGoodsNumber) {
cartGoods.setAmount(0L);
}
}
}
// cartGoodsList.addAll(addSendGoodsList);
}
}
@Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,
ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity,
ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
}
}
...@@ -98,7 +98,8 @@ public class CouponPromotionService implements IPromotionService { ...@@ -98,7 +98,8 @@ public class CouponPromotionService implements IPromotionService {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponResults : couponResultsList) {
//前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除 //前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除
if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getActivityType() if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getActivityType()
|| ActivityTypeEnum.TYPE_32.getCode()== couponResults.getActivityType()){ || ActivityTypeEnum.TYPE_32.getCode()== couponResults.getActivityType()
|| Objects.equals(ActivityTypeEnum.TYPE_330.getCode(), couponResults.getActivityType())){
continue; continue;
} }
couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount()); couponDiscount = couponDiscount + (couponResults.getDiscountAmount() == null ? 0 : couponResults.getDiscountAmount());
...@@ -218,15 +219,21 @@ public class CouponPromotionService implements IPromotionService { ...@@ -218,15 +219,21 @@ public class CouponPromotionService implements IPromotionService {
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) { for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) {
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) { if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount); if(Objects.equals(couponDiscount.getActivityType(),ActivityTypeEnum.TYPE_330.getCode())){
if (activityDiscountsDto != null) { List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> collect = calculationDiscountResult.getGoods().stream().filter(goods -> Objects.equals(cartGoods.getCartGoodsUid(), goods.getCartGoodsUid())).collect(Collectors.toList());
ActivityDiscountsDto activityDiscountsDto1 = new ActivityDiscountsDto(); //商品优惠赋值
BeanUtils.copyProperties(activityDiscountsDto, activityDiscountsDto1); getActivityDiscountDto2(collect,cartGoods);
activityDiscountsDto1.setDiscountAmount(-activityDiscountsDto.getDiscountAmount()); }else {
ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount);
if (activityDiscountsDto != null) {
ActivityDiscountsDto activityDiscountsDto1 = new ActivityDiscountsDto();
BeanUtils.copyProperties(activityDiscountsDto, activityDiscountsDto1);
activityDiscountsDto1.setDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount()); cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount());
cartGoods.setSalePrice(0L); cartGoods.setSalePrice(0L);
cartGoods.setActivityDiscountsDtos(Arrays.asList(activityDiscountsDto1)); cartGoods.setActivityDiscountsDtos(Arrays.asList(activityDiscountsDto1));
}
} }
} }
} }
...@@ -269,6 +276,30 @@ public class CouponPromotionService implements IPromotionService { ...@@ -269,6 +276,30 @@ public class CouponPromotionService implements IPromotionService {
return null; return null;
} }
private ActivityDiscountsDto getActivityDiscountDto2(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> goods, ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods) {
if(CollectionUtils.isNotEmpty(goods)){
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods1 = goods.get(0);
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discounts = goods1.getDiscounts();
if(CollectionUtils.isNotEmpty(discounts) && Objects.equals(discounts.get(0).getType(),ActivityTypeEnum.TYPE_330.getCode())){
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(discounts.get(0).getActivityCode());
activityDiscountsDto.setActivityName(discounts.get(0).getActivityName());
activityDiscountsDto.setActivityType(this.convent2ActivityType(discounts.get(0).getType()));
activityDiscountsDto.setDiscountAmount(0 - discounts.get(0).getDiscount().intValue());
activityDiscountsDto.setActualActivityGoodsNumber(discounts.get(0).getActualGoodsNumber());
activityDiscountsDto.setCartGoodsUid(goods1.getCartGoodsUid());
//商品优惠赋值
cartGoods.setTotalDiscountAmount(-goods1.getDiscountAmount().intValue());
cartGoods.setSalePrice(goods1.getNowPrice());
cartGoods.setActivityDiscountsDtos(Arrays.asList(activityDiscountsDto));
return activityDiscountsDto;
}
}
return null;
}
public ActivityClassifyCouponBean createEmptyActivityCouponBean() { public ActivityClassifyCouponBean createEmptyActivityCouponBean() {
ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean(); ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean();
...@@ -285,6 +316,10 @@ public class CouponPromotionService implements IPromotionService { ...@@ -285,6 +316,10 @@ public class CouponPromotionService implements IPromotionService {
if (type != null && Hg.equals(type)) { if (type != null && Hg.equals(type)) {
type = 32; type = 32;
} }
Integer buyMsendN = 330;
if (type != null && buyMsendN.equals(type)) {
type = 32;
}
return type; return type;
} }
} }
...@@ -446,9 +446,7 @@ public class CalculationCommonService { ...@@ -446,9 +446,7 @@ public class CalculationCommonService {
activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName())); activityDiscountsDto.setActivityName(this.convertName(discount.getType(), discount.getActivityName()));
activityDiscountsDto.setActivityType(this.convertType(discount.getType())); activityDiscountsDto.setActivityType(this.convertType(discount.getType()));
activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue()); activityDiscountsDto.setDiscountAmount(discount.getDiscount().intValue());
if(cocoPartnerId.contains(partnerId)){ activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
activityDiscountsDto.setActualActivityGoodsNumber(discount.getActualGoodsNumber());
}
activityDiscountsDtoList.add(activityDiscountsDto); activityDiscountsDtoList.add(activityDiscountsDto);
} }
} }
...@@ -722,6 +720,9 @@ public class CalculationCommonService { ...@@ -722,6 +720,9 @@ public class CalculationCommonService {
case 33: case 33:
newType = 32; newType = 32;
break; break;
case 330:
newType = 32;
break;
} }
return newType; return newType;
} }
......
...@@ -307,7 +307,8 @@ public class CouponDiscountCalculation { ...@@ -307,7 +307,8 @@ public class CouponDiscountCalculation {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount couponResults : couponDiscounts) {
//前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除 //前端计算小计拿商品现价累计减couponDiscount,商品券换购券现价已排除
if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getType() if(ActivityTypeEnum.TYPE_33.getCode()== couponResults.getType()
|| ActivityTypeEnum.TYPE_32.getCode()== couponResults.getType()){ || ActivityTypeEnum.TYPE_32.getCode()== couponResults.getType()
|| Objects.equals(ActivityTypeEnum.TYPE_330.getCode(),couponResults.getType())){
continue; continue;
} }
couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount()); couponDiscount = couponDiscount + (couponResults.getDiscount() == null ? 0 : couponResults.getDiscount());
......
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