Commit 4403adbd by xiaoer.li@freemud.com

Merge remote-tracking branch 'remotes/origin/feature/1.9.30_买一赠一&第X件Y折'

parents 971ea04e b3b05aae
...@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter { ...@@ -84,6 +84,7 @@ public class ShoppingCartConvertAdapter {
public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoods(CartGoods cartGoods, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList, Map<String, String> duplicateGoodsMap) { public ShoppingCartGoodsDto.CartGoodsDetailDto convertCartGoods2DetailGoods(CartGoods cartGoods, List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> apportionGoodsList, Map<String, String> duplicateGoodsMap) {
// 设置基础信息 // 设置基础信息
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto(); ShoppingCartGoodsDto.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartGoodsDto.CartGoodsDetailDto();
cartGoodsDetailDto.setCartGoodsUid(cartGoods.getCartGoodsUid());
cartGoodsDetailDto.setSpuId(cartGoods.getSpuId()); cartGoodsDetailDto.setSpuId(cartGoods.getSpuId());
cartGoodsDetailDto.setSpuName(cartGoods.getSpuName()); cartGoodsDetailDto.setSpuName(cartGoods.getSpuName());
cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId()); cartGoodsDetailDto.setSkuId(StringUtils.isEmpty(cartGoods.getSkuId()) ? cartGoods.getSpuId() : cartGoods.getSkuId());
......
...@@ -87,6 +87,10 @@ public class ActivityCalculationDiscountRequestDto { ...@@ -87,6 +87,10 @@ public class ActivityCalculationDiscountRequestDto {
*/ */
private String goodsId; private String goodsId;
/** /**
* 购物车行uid
*/
private String cartGoodsUid;
/**
* 商品品类 * 商品品类
*/ */
private String category; private String category;
......
...@@ -347,6 +347,10 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -347,6 +347,10 @@ public class ActivityCalculationDiscountResponseDto {
private Integer apportionAmount; private Integer apportionAmount;
private List<ApportionDetails> apportionDetails; private List<ApportionDetails> apportionDetails;
/**
* 购物车行记录
*/
private String cartGoodsUid;
@Data @Data
public static class ApportionDetails { public static class ApportionDetails {
......
...@@ -125,6 +125,10 @@ public class ShoppingCartGoodsDto { ...@@ -125,6 +125,10 @@ public class ShoppingCartGoodsDto {
@Data @Data
public static class CartGoodsDetailDto { public static class CartGoodsDetailDto {
/** /**
* 购物车行uid
*/
private String cartGoodsUid;
/**
* spuId * spuId
*/ */
private String spuId; private String spuId;
......
...@@ -24,7 +24,6 @@ import org.springframework.stereotype.Service; ...@@ -24,7 +24,6 @@ import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
/** /**
* All rights Reserved, Designed By www.freemud.cn * All rights Reserved, Designed By www.freemud.cn
...@@ -60,17 +59,37 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -60,17 +59,37 @@ public class BuySendPromotionService implements IPromotionService {
if (CollectionUtils.isEmpty(sendActivityList)) { if (CollectionUtils.isEmpty(sendActivityList)) {
return; return;
} }
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = getSendActivity(sendActivityList, ActivityTypeEnum.TYPE_61); //ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = getSendActivity(sendActivityList, ActivityTypeEnum.TYPE_61);
if (sendActivity == null) { //if (sendActivity == null) {
// return;
//}
//Todo 获取多个赠品list
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityLists = getSendActivityList(ActivityTypeEnum.TYPE_61, sendActivityList);
//Todo 获取多个赠品list
if (sendActivityLists.size() == 0) {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = sendActivity.getSendGoods();
if (CollectionUtils.isEmpty(sendGoodsList)) { //List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = sendActivity.getSendGoods();
return; //if (CollectionUtils.isEmpty(sendGoodsList)) {
// return;
//}
//Integer maxNum = sendActivity.getMaxNum();
//List<String> activitySpuIds = sendGoodsList.stream().map(each -> each.getCategory()).collect(Collectors.toList());
//Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = getSendGoodsMap(sendGoodsList);
//Todo
List<String> activitySpuIds = new ArrayList<>();
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = new HashMap<>();
//Map<String, Integer> maxNums = new HashMap<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity activityList : sendActivityLists) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGood : activityList.getSendGoods()) {
sendGoodsMap.put(sendGood.getGoodsId(), sendGood);
//maxNums.put(sendGood.getGoodsId(), activityList.getMaxNum());
activitySpuIds.add(sendGood.getGoodsId());
} }
Integer maxNum = sendActivity.getMaxNum(); }
List<String> activitySpuIds = sendGoodsList.stream().map(each -> each.getCategory()).collect(Collectors.toList()); activitySpuIds = activitySpuIds.stream().distinct().collect(Collectors.toList());
Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap = getSendGoodsMap(sendGoodsList);
List<CartGoods> newCartGoodsList = new ArrayList<>(); List<CartGoods> newCartGoodsList = new ArrayList<>();
for (CartGoods cartGood : cartGoodsList) { for (CartGoods cartGood : cartGoodsList) {
/*if (cartGoodsList.stream().filter(c -> c.getSkuId().equals(cartGood.getSkuId())).count() >= 2){ /*if (cartGoodsList.stream().filter(c -> c.getSkuId().equals(cartGood.getSkuId())).count() >= 2){
...@@ -92,6 +111,7 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -92,6 +111,7 @@ public class BuySendPromotionService implements IPromotionService {
Long givePackAmount = 0L; Long givePackAmount = 0L;
// 优惠商品原总价格 // 优惠商品原总价格
Long giveTotalAmount = 0L; Long giveTotalAmount = 0L;
/*
for (CartGoods cartGoods : newCartGoodsList) { for (CartGoods cartGoods : newCartGoodsList) {
cartGoods.setAmount(0L); cartGoods.setAmount(0L);
if (maxNum <= 0) { if (maxNum <= 0) {
...@@ -108,10 +128,22 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -108,10 +128,22 @@ public class BuySendPromotionService implements IPromotionService {
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty()); cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoodsList.add(cartGoods); cartGoodsList.add(cartGoods);
} }
*/
for (CartGoods cartGoods : newCartGoodsList) {
//Integer max = maxNums.get(cartGoods.getGoodsId());
////if (max <= 0) continue;
//if (max < cartGoods.getQty()) {
// cartGoods.setQty(max);
//}
givePackAmount = givePackAmount + cartGoods.getPackPrice() * cartGoods.getQty();
giveTotalAmount = giveTotalAmount + cartGoods.getOriginalPrice() * cartGoods.getQty();
cartGoods.setOriginalAmount(cartGoods.getOriginalPrice() * cartGoods.getQty());
cartGoodsList.add(cartGoods);
}
Integer activityCartQty = cartGoodsList.stream().filter(each -> Objects.equals(each.getActivityType(), ActivityTypeEnum.TYPE_61.getCode())).mapToInt(each -> each.getQty()).sum(); Integer activityCartQty = cartGoodsList.stream().filter(each -> Objects.equals(each.getActivityType(), ActivityTypeEnum.TYPE_61.getCode())).mapToInt(each -> each.getQty()).sum();
ActivityTip activityTip = new ActivityTip(); ActivityTip activityTip = new ActivityTip();
activityTip.setActivityType(ActivityTypeEnum.TYPE_61.getCode()); activityTip.setActivityType(ActivityTypeEnum.TYPE_61.getCode());
activityTip.setActivityQty(sendActivity.getMaxNum()); //activityTip.setActivityQty(sendActivity.getMaxNum());
activityTip.setActivityCartQty(activityCartQty); activityTip.setActivityCartQty(activityCartQty);
activityTip.setActivitySpuIds(activitySpuIds); activityTip.setActivitySpuIds(activitySpuIds);
// 当maxNum>=minNum,在加入买一赠一商品时提示“您参加的买赠优惠最多赠送N件哦~” // 当maxNum>=minNum,在加入买一赠一商品时提示“您参加的买赠优惠最多赠送N件哦~”
...@@ -178,6 +210,19 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -178,6 +210,19 @@ public class BuySendPromotionService implements IPromotionService {
} }
/** /**
* 获取指定促销类型的SendActivity
*
* @param sendActivityList
* @param type
* @return
*/
private List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> getSendActivityList(ActivityTypeEnum type,
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityList) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> collect = sendActivityList.stream().filter(c -> c.getActivityType().equals(type.getCode())).collect(Collectors.toList());
return collect;
}
/**
* 筛选出spu商品中价格最低的商品,Key=spuId * 筛选出spu商品中价格最低的商品,Key=spuId
* *
* @param sendGoodsList * @param sendGoodsList
...@@ -204,12 +249,12 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -204,12 +249,12 @@ public class BuySendPromotionService implements IPromotionService {
*/ */
private void putNewCartGoodsList(Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap, CartGoods private void putNewCartGoodsList(Map<String, ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsMap, CartGoods
cartGood, List<CartGoods> newCartGoodsList, boolean manyOrSingle) { cartGood, List<CartGoods> newCartGoodsList, boolean manyOrSingle) {
if (sendGoodsMap.get(cartGood.getSpuId()) == null) { if (sendGoodsMap.get(cartGood.getGoodsId()) == null) {
return; return;
} }
if (manyOrSingle) { if (manyOrSingle) {
// 多规格 // 多规格
if (!Objects.equals(sendGoodsMap.get(cartGood.getSpuId()).getGoodsId(), cartGood.getSkuId())) { if (!Objects.equals(sendGoodsMap.get(cartGood.getSkuId()).getGoodsId(), cartGood.getSkuId())) {
return; return;
} }
} else { } else {
...@@ -219,7 +264,7 @@ public class BuySendPromotionService implements IPromotionService { ...@@ -219,7 +264,7 @@ public class BuySendPromotionService implements IPromotionService {
return; return;
} }
} }
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGoods = sendGoodsMap.get(cartGood.getSpuId()); ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGoods = sendGoodsMap.get(cartGood.getGoodsId());
CartGoods cartGoods = shoppingCartConvertAdapter.convent2CartGoods(cartGood, sendGoods.getNowPrice()); CartGoods cartGoods = shoppingCartConvertAdapter.convent2CartGoods(cartGood, sendGoods.getNowPrice());
cartGoods.setClassificationId(cartGood.getClassificationId()); cartGoods.setClassificationId(cartGood.getClassificationId());
cartGoods.setClassificationName(cartGood.getClassificationName()); cartGoods.setClassificationName(cartGood.getClassificationName());
......
...@@ -156,7 +156,7 @@ public class SetMealServiceImpl implements IPromotionService { ...@@ -156,7 +156,7 @@ public class SetMealServiceImpl implements IPromotionService {
cartGoods.setAmount(productComboxAmount + productGroupAmount * cartGoods.getQty()); cartGoods.setAmount(productComboxAmount + productGroupAmount * cartGoods.getQty());
//设置剩余优惠数量 //设置剩余优惠数量
numberMap.put(cartGoods.getGoodsId(), number - cartGoods.getQty()); numberMap.put(cartGoods.getGoodsId(), number - cartGoods.getQty());
return number - cartGoods.getQty() < 0 ? "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getActualGoodsNumber() + "份优惠 超出按照原价计算哦" : ""; return number - cartGoods.getQty() < 0 ? "该商品限" + number + "份优惠 超出按照原价计算哦" : "";
} else { } else {
cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty()); cartGoods.setAmount((cartGoods.getFinalPrice() + productGroupAmount) * cartGoods.getQty());
return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getActualGoodsNumber() + "份优惠 超出按照原价计算哦"; return "该商品限" + goodsMap.get(cartGoods.getGoodsId()).getActualGoodsNumber() + "份优惠 超出按照原价计算哦";
......
...@@ -743,7 +743,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -743,7 +743,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
String cartGoodsUid = cartGoods.getCartGoodsUid(); String cartGoodsUid = cartGoods.getCartGoodsUid();
// 商品不是商品券 // 商品不是商品券
if (!cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) { if (!cartGoodsUid.startsWith(CommonsConstant.COUPON_PREFIX)) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(),cartGoods.getMemberDiscount()); this.addCalculationDiscountGoods(calculationDiscountGoodsList, cartGoods.getGoodsId(), cartGoods.getQty(), cartGoods.getFinalPrice(), cartGoods.getMemberDiscount(), cartGoodsUid);
} }
// 商品是商品券 // 商品是商品券
else { else {
...@@ -767,13 +767,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -767,13 +767,13 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
coupons.add(coupon); coupons.add(coupon);
// 添加商品券代表的商品 // 添加商品券代表的商品
String goodsId = StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId(); String goodsId = StringUtils.isEmpty(checkSpqInfoResponseDto.getSkuId()) ? checkSpqInfoResponseDto.getSpuId() : checkSpqInfoResponseDto.getSkuId();
this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, 1, checkSpqInfoResponseDto.getPrice(),100); this.addCalculationDiscountGoods(calculationDiscountGoodsList, goodsId, 1, checkSpqInfoResponseDto.getPrice(), 100, cartGoodsUid);
} }
} }
// 当加价购商品不为空时 // 当加价购商品不为空时
if (CollectionUtils.isNotEmpty(sendGoodsList)) { if (CollectionUtils.isNotEmpty(sendGoodsList)) {
for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) { for (ShoppingCartInfoRequestVo.SendGoods sendGoods : sendGoodsList) {
this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(),100); this.addCalculationDiscountGoods(calculationDiscountGoodsList, sendGoods.getGoodsId(), sendGoods.getQty(), sendGoods.getOriginalPrice(), 100, "");
} }
} }
calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0))); calculationDiscountGoodsList.removeIf(calculationDiscountGoods -> (calculationDiscountGoods.getGoodsQuantity().equals(0)));
...@@ -823,9 +823,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -823,9 +823,10 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
* @param originalPrice * @param originalPrice
*/ */
private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList, private void addCalculationDiscountGoods(List<ActivityCalculationDiscountRequestDto.CalculationDiscountGoods> calculationDiscountGoodsList,
String goodsId, Integer goodsQuantity, Long originalPrice,Integer memberDiscount) { String goodsId, Integer goodsQuantity, Long originalPrice, Integer memberDiscount, String cartGoodsUid) {
ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods(); ActivityCalculationDiscountRequestDto.CalculationDiscountGoods calculationDiscountGoods = new ActivityCalculationDiscountRequestDto.CalculationDiscountGoods();
calculationDiscountGoods.setGoodsId(goodsId); calculationDiscountGoods.setGoodsId(goodsId);
calculationDiscountGoods.setCartGoodsUid(cartGoodsUid);
calculationDiscountGoods.setGoodsQuantity(goodsQuantity); calculationDiscountGoods.setGoodsQuantity(goodsQuantity);
calculationDiscountGoods.setOriginalPrice(originalPrice); calculationDiscountGoods.setOriginalPrice(originalPrice);
calculationDiscountGoods.setMemberDiscount(memberDiscount); calculationDiscountGoods.setMemberDiscount(memberDiscount);
......
...@@ -8,6 +8,7 @@ import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto; ...@@ -8,6 +8,7 @@ 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.IPromotionService; import cn.freemud.service.IPromotionService;
import lombok.extern.log4j.Log4j;
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;
......
...@@ -36,36 +36,64 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -36,36 +36,64 @@ public class XyDiscountServiceImpl implements IPromotionService {
@Override @Override
public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsDiscount(CouponPromotionVO couponPromotionVO, ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, List<CartGoods> cartGoodsList, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, UserLoginInfoDto userLoginInfoDto, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult); //ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null) { //if (apportionGoodsDetail != null) {
Optional<CartGoods> firstCartGoods = cartGoodsList.stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getGoodsId())).findFirst(); // Optional<CartGoods> firstCartGoods = cartGoodsList.stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getGoodsId())).findFirst();
if (firstCartGoods.isPresent()) { // if (firstCartGoods.isPresent()) {
firstCartGoods.get().setAmount(firstCartGoods.get().getAmount() - apportionGoodsDetail.getActivityApportionAmount()); // firstCartGoods.get().setAmount(firstCartGoods.get().getAmount() - apportionGoodsDetail.getActivityApportionAmount());
// }
//}
List<ApportionGoodsDetail> apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null && apportionGoodsDetail.size() > 0) {
for (CartGoods cartGoods : cartGoodsList) {
for (ApportionGoodsDetail detail : apportionGoodsDetail) {
if (detail.getCartGoodsUid().equals(cartGoods.getCartGoodsUid())) {
cartGoods.setAmount(cartGoods.getAmount() - detail.getActivityApportionAmount());
}
}
} }
} }
} }
@Override @Override
public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) { public void updateShoppingCartGoodsApportion(ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult, ShoppingCartGoodsDto shoppingCartGoodsDto, CreateOrderVo.PremiumExchangeActivity premiumExchangeActivity, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo) {
ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult); //ApportionGoodsDetail apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null) { //if (apportionGoodsDetail != null) {
Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst(); // Optional<ShoppingCartGoodsDto.CartGoodsDetailDto> firstCartGoods = shoppingCartGoodsDto.getProducts().stream().filter(cartGoods -> ObjectUtils.equals(apportionGoodsDetail.getGoodsId(), cartGoods.getSkuId())).findFirst();
if (firstCartGoods.isPresent()) { // if (firstCartGoods.isPresent()) {
ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get(); // ShoppingCartGoodsDto.CartGoodsDetailDto cartGoods = firstCartGoods.get();
cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue()); // cartGoods.setTotalDiscountAmount(cartGoods.getTotalDiscountAmount() + apportionGoodsDetail.getActivityApportionAmount().intValue());
// List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
// ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
// activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode());
// activityDiscountsDto.setActivityName(apportionGoodsDetail.getActivityName());
// activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
// activityDiscountsDto.setDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue());
// activityDiscountsDtoList.add(activityDiscountsDto);
// cartGoods.setActivityDiscountsDtos(activityDiscountsDtoList);
// }
//}
List<ApportionGoodsDetail> apportionGoodsDetail = getApportionGoodsDetail(calculationDiscountResult);
if (apportionGoodsDetail != null && apportionGoodsDetail.size() > 0) {
for (ShoppingCartGoodsDto.CartGoodsDetailDto product : shoppingCartGoodsDto.getProducts()) {
for (ApportionGoodsDetail detail : apportionGoodsDetail) {
if (detail.getCartGoodsUid().equals(product.getCartGoodsUid())) {
product.setTotalDiscountAmount(product.getTotalDiscountAmount() + detail.getActivityApportionAmount().intValue());
List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>(); List<ActivityDiscountsDto> activityDiscountsDtoList = new ArrayList<>();
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(apportionGoodsDetail.getActivityCode()); activityDiscountsDto.setActivityCode(detail.getActivityCode());
activityDiscountsDto.setActivityName(apportionGoodsDetail.getActivityName()); activityDiscountsDto.setActivityName(detail.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode()); activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
activityDiscountsDto.setDiscountAmount(apportionGoodsDetail.getActivityApportionAmount().intValue()); activityDiscountsDto.setDiscountAmount(detail.getActivityApportionAmount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto); activityDiscountsDtoList.add(activityDiscountsDto);
cartGoods.setActivityDiscountsDtos(activityDiscountsDtoList); product.setActivityDiscountsDtos(activityDiscountsDtoList);
}
}
} }
} }
} }
/*
private ApportionGoodsDetail getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) { private ApportionGoodsDetail getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历购物车内的商品,如果存在则进行均摊 // 遍历购物车内的商品,如果存在则进行均摊
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) { if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
...@@ -87,8 +115,30 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -87,8 +115,30 @@ public class XyDiscountServiceImpl implements IPromotionService {
} }
return null; return null;
} }
*/
private List<ApportionGoodsDetail> getApportionGoodsDetail(ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult) {
// 遍历购物车内的商品,如果存在则进行均摊
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
return null;
}
List<ApportionGoodsDetail> apportionGoodsDetail = new ArrayList<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) {
if (!CollectionUtils.isEmpty(apportionGood.getApportionDetails())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetail : apportionGood.getApportionDetails()) {
if (apportionDetail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())) {
ApportionGoodsDetail detail = new ApportionGoodsDetail();
detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
detail.setActivityCode(apportionDetail.getActivityCode());
detail.setActivityName(apportionDetail.getActivityName());
detail.setGoodsId(apportionGood.getGoodsId());
detail.setCartGoodsUid(apportionGood.getCartGoodsUid());
apportionGoodsDetail.add(detail);
}
}
}
}
return apportionGoodsDetail;
}
@Data @Data
private class ApportionGoodsDetail { private class ApportionGoodsDetail {
/** /**
...@@ -104,6 +154,10 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -104,6 +154,10 @@ public class XyDiscountServiceImpl implements IPromotionService {
*/ */
private Long activityApportionAmount; private Long activityApportionAmount;
private String goodsId; private String goodsId;
/**
* 购物车行uid
*/
private String cartGoodsUid;
} }
......
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