Commit aa6af870 by xiaoer.li@freemud.com

fix:券

parent f705d267
...@@ -8,10 +8,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto; ...@@ -8,10 +8,7 @@ import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*; import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.service.impl.calculate.promotion.AdditionSharingService; import cn.freemud.service.impl.calculate.promotion.*;
import cn.freemud.service.impl.calculate.promotion.DeliverySharingService;
import cn.freemud.service.impl.calculate.promotion.GiftSharingService;
import cn.freemud.service.impl.calculate.promotion.ScoreSharingService;
import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum; import com.freemud.sdk.api.assortment.shoppingcart.enums.BusinessTypeEnum;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
...@@ -52,6 +49,9 @@ public class CalculationSharingEquallyService { ...@@ -52,6 +49,9 @@ public class CalculationSharingEquallyService {
@Autowired @Autowired
private AdditionSharingService additionSharingService; private AdditionSharingService additionSharingService;
@Autowired
private CouponSharingService promotionSharingService;
/** /**
* 均摊服务 * 均摊服务
* @param discountResult * @param discountResult
...@@ -80,7 +80,10 @@ public class CalculationSharingEquallyService { ...@@ -80,7 +80,10 @@ public class CalculationSharingEquallyService {
calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo); calculationCommonService.initShoppingCart(discountResult, cartGoodsList, shoppingCartGoodsResponseVo);
/**
* 商品券\换购券
*/
promotionSharingService.equally(discountResult, cartGoodsList);
List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts(); List<ShoppingCartGoodsDto.CartGoodsDetailDto> cartGoodsDetailDtoList = CollectionUtils.isEmpty(shoppingCartGoodsDto.getProducts()) ? new ArrayList<>() : shoppingCartGoodsDto.getProducts();
shoppingCartGoodsDto.setProducts(cartGoodsDetailDtoList); shoppingCartGoodsDto.setProducts(cartGoodsDetailDtoList);
...@@ -108,6 +111,7 @@ public class CalculationSharingEquallyService { ...@@ -108,6 +111,7 @@ public class CalculationSharingEquallyService {
shoppingCartGoodsDto.setTotalDiscountAmount(shoppingCartGoodsResponseVo.getTotalDiscountAmount()); shoppingCartGoodsDto.setTotalDiscountAmount(shoppingCartGoodsResponseVo.getTotalDiscountAmount());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = discountResult.getGoods(); List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goods = discountResult.getGoods();
/** /**
* 利用促销赋值totalDiscountAmount * 利用促销赋值totalDiscountAmount
*/ */
...@@ -134,7 +138,6 @@ public class CalculationSharingEquallyService { ...@@ -134,7 +138,6 @@ public class CalculationSharingEquallyService {
scoreSharingService.equally(shoppingCartGoodsResponseVo, shoppingCartGoodsDto); scoreSharingService.equally(shoppingCartGoodsResponseVo, shoppingCartGoodsDto);
calculationCommonService.getNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsDto); calculationCommonService.getNeedCardAmount(shoppingCartInfoRequestVo, shoppingCartGoodsDto);
if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) { if (BusinessTypeEnum.SAAS_DELIVERY.getCode().equals(menuType)) {
deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount); deliverySharingService.deliveryResponse(discountResult, activityQueryDto, shoppingCartGoodsResponseVo, deliveryAmount);
} }
......
...@@ -116,55 +116,50 @@ public class CouponSharingService { ...@@ -116,55 +116,50 @@ public class CouponSharingService {
} }
} }
public void equally(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList) {
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { if (CollectionUtils.isEmpty(cartGoodsList)) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults> couponDiscounts = calculationDiscountResult == null ? new ArrayList<>() : calculationDiscountResult.getCouponDiscounts(); return;
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos() == null ? new ArrayList<>() : shoppingCartGoodsDto.getActivityDiscountsDtos(); }
//循环购物车商品券
for (ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods : shoppingCartGoodsDto.getProducts()) { for (CartGoods cartGoods : cartGoodsList) {
if (StringUtils.isNotEmpty(cartGoods.getCouponCode())) { if (cartGoods.getCartGoodsUid().startsWith(CommonsConstant.COUPON_PREFIX)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) { String spqId = cartGoods.getCartGoodsUid().substring(CommonsConstant.COUPON_PREFIX.length());
ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount); // 计算优惠信息时,已将券校验过,放在map中
if (activityDiscountsDto != null) { Map<String, CheckSpqInfoResponseDto> validCouponMap = discountResult == null ? new HashMap<>() : discountResult.getValidCouponMap();
ActivityDiscountsDto activityDiscountsDto1 = new ActivityDiscountsDto(); if (MapUtils.isNotEmpty(validCouponMap)) {
BeanUtils.copyProperties(activityDiscountsDto, activityDiscountsDto1); CheckSpqInfoResponseDto checkSpqInfoResponseDto = validCouponMap.get(spqId);
activityDiscountsDto1.setDiscountAmount(-activityDiscountsDto.getDiscountAmount()); if (checkSpqInfoResponseDto != null) {
cartGoods.setOriginalPrice(checkSpqInfoResponseDto.getPrice());
cartGoods.setTotalDiscountAmount(-activityDiscountsDto.getDiscountAmount()); cartGoods.setSpuId(checkSpqInfoResponseDto.getSpuId());
cartGoods.setSalePrice(0L); cartGoods.setSkuId(StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId());
cartGoods.setActivityDiscountsDtos(Arrays.asList(activityDiscountsDto1)); cartGoods.setQty(1);
cartGoods.setCouponCode(checkSpqInfoResponseDto.getCouponCode());
cartGoods.setSpuName(checkSpqInfoResponseDto.getSpuName());
cartGoods.setSpecProductId(checkSpqInfoResponseDto.getDefaultSpecId());
cartGoods.setSubName(checkSpqInfoResponseDto.getDefaultSpecName());
cartGoods.setExtra(checkSpqInfoResponseDto.getExtras());
if (GoodsTypeEnum.HG_COUPON_GOODS.getGoodsType().equals(cartGoods.getGoodsType())) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods discountGoods = discountResult.getGoods()
.stream()
.filter(d -> cartGoods.getCartGoodsUid().equals(d.getCartGoodsUid()))
.findFirst()
.orElse(null);
if (discountGoods != null) {
cartGoods.setAmount(discountGoods.getRealAmount());
} else {
cartGoods.setAmount(checkSpqInfoResponseDto.getPrice());
}
}
cartGoods.setOriginalAmount(checkSpqInfoResponseDto.getPrice());
} }
} }
} }
} }
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount : couponDiscounts) {
ActivityDiscountsDto activityDiscountsDto = getActivityDiscountDto(calculationDiscountResult.getApportionGoods(), couponDiscount);
if (activityDiscountsDto != null) {
activityDiscountsDtos.add(activityDiscountsDto);
}
}
shoppingCartGoodsDto.setActivityDiscountsDtos(activityDiscountsDtos);
} }
private ActivityDiscountsDto getActivityDiscountDto(List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoods, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.CouponResults couponDiscount) {
String couponCode = couponDiscount.getCouponCode();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : apportionGoods) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails> list = apportionGood.getApportionDetails().stream().filter(detail -> ObjectUtils.equals(couponCode, detail.getActivityCode())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(list)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetails = list.get(0);
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(apportionDetails.getActivityCode());
activityDiscountsDto.setActivityName(apportionDetails.getActivityName());
activityDiscountsDto.setActivityType(apportionDetails.getActivityType());
activityDiscountsDto.setDiscountAmount(0 - couponDiscount.getDiscountAmount());
return activityDiscountsDto;
}
}
return null;
}
public ActivityClassifyCouponBean createEmptyActivityCouponBean() { public ActivityClassifyCouponBean createEmptyActivityCouponBean() {
ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean(); ActivityClassifyCouponBean activityClassifyCouponBean = new ActivityClassifyCouponBean();
activityClassifyCouponBean.setCouponNum(0); activityClassifyCouponBean.setCouponNum(0);
......
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