Commit f595e0ef by chongfu.liang

回滚

parent 674b5d46
...@@ -158,7 +158,7 @@ public class ShoppingCartConvertAdapter { ...@@ -158,7 +158,7 @@ public class ShoppingCartConvertAdapter {
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_62.getCode(), cartGoods.getActivityType())) { || ObjectUtils.equals(ActivityTypeEnum.TYPE_62.getCode(), cartGoods.getActivityType())) {
cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue()); cartGoodsDetailDto.setTotalDiscountAmount(cartGoods.getOriginalAmount().intValue() - cartGoods.getAmount().intValue());
} else { } else {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> collect = apportionGoodsList.stream().filter(a -> ObjectUtils.equals(cartGoods.getCartGoodsUid(), a.getCartGoodsUid()) && (cartGoods.getQty() != null && cartGoods.getQty() > 0)).collect(Collectors.toList()); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> collect = apportionGoodsList.stream().filter(a -> ObjectUtils.equals(cartGoods.getCartGoodsUid(), a.getCartGoodsUid())).collect(Collectors.toList());
//List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> collect = apportionGoodsList.stream().filter(a -> ObjectUtils.equals(cartGoods.getSkuId(), a.getGoodsId()) || ObjectUtils.equals(cartGoods.getSpuId(), a.getGoodsId())).collect(Collectors.toList()); //List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods> collect = apportionGoodsList.stream().filter(a -> ObjectUtils.equals(cartGoods.getSkuId(), a.getGoodsId()) || ObjectUtils.equals(cartGoods.getSpuId(), a.getGoodsId())).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(collect)) { if (CollectionUtils.isNotEmpty(collect)) {
setTotalDiscountAndSalePrice(collect, cartGoodsDetailDto, duplicateGoodsMap); setTotalDiscountAndSalePrice(collect, cartGoodsDetailDto, duplicateGoodsMap);
......
...@@ -348,10 +348,6 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -348,10 +348,6 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
private String originalGoodsUid; private String originalGoodsUid;
/** /**
* 购物车一行的Id(后台生成)
*/
private String cartGoodsUid = UUID.randomUUID().toString();
/**
* 赠送商品ID * 赠送商品ID
*/ */
private String goodsId; private String goodsId;
...@@ -372,10 +368,6 @@ public class ActivityCalculationDiscountResponseDto { ...@@ -372,10 +368,6 @@ public class ActivityCalculationDiscountResponseDto {
*/ */
private Long originalPrice; private Long originalPrice;
/** /**
* 优惠
*/
private Long discount;
/**
* 赠送商品数量 * 赠送商品数量
*/ */
private Integer sendNumber; private Integer sendNumber;
......
...@@ -130,10 +130,6 @@ public class CartGoods { ...@@ -130,10 +130,6 @@ public class CartGoods {
* 购物车一行商品的数量 * 购物车一行商品的数量
*/ */
private Integer qty; private Integer qty;
/**
* 购物车一行商品的数量(X件y折时才显示)
*/
private Integer actualQty;
/** /**
* 参与活动商品数量 前端展示参数 * 参与活动商品数量 前端展示参数
......
...@@ -19,7 +19,6 @@ public enum ActivityTypeEnum { ...@@ -19,7 +19,6 @@ public enum ActivityTypeEnum {
TYPE_13(13, "新用户立减"), TYPE_13(13, "新用户立减"),
TYPE_14(14, "满额减配送费"), TYPE_14(14, "满额减配送费"),
TYPE_104(104,"x件y折"), TYPE_104(104,"x件y折"),
TYPE_1040(1040,"x件y折0折活动"),
/** /**
* 限时特价 * 限时特价
......
...@@ -77,28 +77,18 @@ public class PlatformActiveServiceImpl implements ActiveService { ...@@ -77,28 +77,18 @@ public class PlatformActiveServiceImpl implements ActiveService {
Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult); Map<String, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountForGift = this.getDiscountForGift(discountResult);
List<String> activityCodeList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(discountResult.getDiscounts())){
// 0折的x件y折活动
activityCodeList = discountResult.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
}
for (ProductBeanDTO product : products) { for (ProductBeanDTO product : products) {
String k = product.getPid(); String k = product.getPid();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k); CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k);
List<String> finalActivityCodeList = activityCodeList;
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts() CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream() .stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) .filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_62.getCode().equals(g.getType())
|| ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()) || (ActivityTypeEnum.TYPE_1040.getCode().equals(g.getType()) && finalActivityCodeList.contains(g.getActivityCode()))) || ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()))
.findFirst() .findFirst()
.get(); .get();
CartGoods cartGood = new CartGoods(); CartGoods cartGood = new CartGoods();
cartGood.setGoodsId(goods.getGoodsId()); cartGood.setGoodsId(goods.getGoodsId());
if (StringUtils.isNotBlank(goods.getCartGoodsUid()) && ActivityTypeEnum.TYPE_1040.getCode().equals(discount.getType())){
cartGood.setCartGoodsUid(goods.getCartGoodsUid());
}
cartGood.setGoodsType(1); cartGood.setGoodsType(1);
cartGood.setSpuId(goods.getGoodsId()); cartGood.setSpuId(goods.getGoodsId());
cartGood.setSkuId(goods.getGoodsId()); cartGood.setSkuId(goods.getGoodsId());
......
...@@ -51,7 +51,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -51,7 +51,7 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
return; return;
} }
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivities = calculationDiscountResult.getSendGoods().stream() List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivities = calculationDiscountResult.getSendGoods().stream()
.filter(goods -> ActivityTypeEnum.TYPE_62.getCode().equals(goods.getActivityType()) || ActivityTypeEnum.TYPE_1040.getCode().equals(goods.getActivityType())).collect(Collectors.toList()); .filter(goods -> ActivityTypeEnum.TYPE_62.getCode().equals(goods.getActivityType())).collect(Collectors.toList());
if (CollectionUtils.isEmpty(sendActivities)) { if (CollectionUtils.isEmpty(sendActivities)) {
return; return;
} }
...@@ -95,19 +95,9 @@ public class BuyAndGiftsPromotionService implements IPromotionService { ...@@ -95,19 +95,9 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额 // nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGoods.setNodeId(sendActivity.getActivityCode()); cartGoods.setNodeId(sendActivity.getActivityCode());
cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid()); cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid());
cartGoods.setCartGoodsUid(sendGoods.getCartGoodsUid());
this.setGiftExtra(cartGoods,product,cartGoodsList); this.setGiftExtra(cartGoods,product,cartGoodsList);
CartGoods fatherGoods = cartGoodsList.stream().filter(p -> p.getCartGoodsUid().equals(sendGoods.getOriginalGoodsUid()) && ObjectUtils.equals(p.getQty(), 0)).findFirst().orElse(null);
if (fatherGoods != null){
cartGoods.setCartGoodsUid(fatherGoods.getCartGoodsUid());
sendGoods.setCartGoodsUid(fatherGoods.getCartGoodsUid());
}
cartGoodsList.add(cartGoods); cartGoodsList.add(cartGoods);
if (!ActivityTypeEnum.TYPE_1040.getCode().equals(sendActivity.getActivityType())){ totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber();
totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber();
}
} }
} }
......
...@@ -41,7 +41,6 @@ import cn.freemud.service.*; ...@@ -41,7 +41,6 @@ import cn.freemud.service.*;
import cn.freemud.service.delivery.DeliveryFactory; import cn.freemud.service.delivery.DeliveryFactory;
import cn.freemud.service.delivery.DeliveryService; import cn.freemud.service.delivery.DeliveryService;
import cn.freemud.service.impl.calculate.*; import cn.freemud.service.impl.calculate.*;
import cn.freemud.service.impl.calculate.promotion.GiftSharingService;
import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory; import cn.freemud.service.shoppingCart.ShoppingCartRelationFactory;
import cn.freemud.service.shoppingCart.ShoppingCartRelationService; import cn.freemud.service.shoppingCart.ShoppingCartRelationService;
import cn.freemud.service.thirdparty.*; import cn.freemud.service.thirdparty.*;
...@@ -192,8 +191,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -192,8 +191,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
@Autowired @Autowired
private ShoppingCartRelationFactory shoppingCartRelationFactory; private ShoppingCartRelationFactory shoppingCartRelationFactory;
@Autowired
private GiftSharingService giftSharingService;
/** /**
...@@ -1255,18 +1252,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService { ...@@ -1255,18 +1252,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get(); ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get();
convert2SendPoint(result, discountDTO); convert2SendPoint(result, discountDTO);
} }
Map<String, Integer> qtyMap = giftSharingService.xPiecesYFoldAdapter(activityCalculationDiscountResponseDto);
if (MapUtils.isNotEmpty(qtyMap)){
for (String key : qtyMap.keySet()){
CartGoods cartGoods = cartGoodsList.stream().filter(p -> p.getCartGoodsUid().equals(key)).findFirst().orElse(null);
if (cartGoods != null){
cartGoods.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
cartGoods.setActualQty(cartGoods.getQty());
cartGoods.setQty(qtyMap.get(key));
}
}
}
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(distributionFee); result.setDeliveryAmount(distributionFee);
result.setDistributionFee(result.getDistributionFee()); result.setDistributionFee(result.getDistributionFee());
......
...@@ -87,7 +87,7 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -87,7 +87,7 @@ public class XyDiscountServiceImpl implements IPromotionService {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto(); ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(detail.getActivityCode()); activityDiscountsDto.setActivityCode(detail.getActivityCode());
activityDiscountsDto.setActivityName(detail.getActivityName()); activityDiscountsDto.setActivityName(detail.getActivityName());
activityDiscountsDto.setActivityType(detail.getActivityType()); activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
activityDiscountsDto.setDiscountAmount(detail.getActivityApportionAmount().intValue()); activityDiscountsDto.setDiscountAmount(detail.getActivityApportionAmount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto); activityDiscountsDtoList.add(activityDiscountsDto);
product.setActivityDiscountsDtos(activityDiscountsDtoList); product.setActivityDiscountsDtos(activityDiscountsDtoList);
...@@ -126,56 +126,17 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -126,56 +126,17 @@ public class XyDiscountServiceImpl implements IPromotionService {
if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) { if (calculationDiscountResult == null || CollectionUtils.isEmpty(calculationDiscountResult.getApportionGoods())) {
return null; return null;
} }
// 0折的x件y折活动
List<String> activityCode = calculationDiscountResult.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
List<ApportionGoodsDetail> apportionGoodsDetail = new ArrayList<>(); List<ApportionGoodsDetail> apportionGoodsDetail = new ArrayList<>();
if (!CollectionUtils.isEmpty(calculationDiscountResult.getSendGoods())){
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityList = calculationDiscountResult.getSendGoods().stream().filter(p -> ActivityTypeEnum.TYPE_1040.getCode().equals(p.getActivityType())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(sendActivityList)){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity : sendActivityList){
if (!CollectionUtils.isEmpty(sendActivity.getSendGoods())){
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGoods : sendActivity.getSendGoods()){
ApportionGoodsDetail detail = new ApportionGoodsDetail();
detail.setActivityApportionAmount(sendGoods.getDiscount() == null ? 0L : sendGoods.getDiscount());
detail.setActivityCode(sendActivity.getActivityCode());
detail.setActivityName(sendActivity.getActivityName());
detail.setGoodsId(sendGoods.getGoodsId());
detail.setCartGoodsUid(sendGoods.getCartGoodsUid());
detail.setActivityType(ActivityTypeEnum.TYPE_1040.getCode());
apportionGoodsDetail.add(detail);
}
}
}
}
}
/*
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = calculationDiscountResult.getGoods().stream().filter(p -> org.apache.commons.collections4.CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
*/
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods apportionGood : calculationDiscountResult.getApportionGoods()) {
if (!CollectionUtils.isEmpty(apportionGood.getApportionDetails())) { if (!CollectionUtils.isEmpty(apportionGood.getApportionDetails())) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetail : apportionGood.getApportionDetails()) { for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ApportionGoods.ApportionDetails apportionDetail : apportionGood.getApportionDetails()) {
if (apportionDetail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())) { if (apportionDetail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())) {
ApportionGoodsDetail detail = new ApportionGoodsDetail(); ApportionGoodsDetail detail = new ApportionGoodsDetail();
if (activityCode.contains(apportionDetail.getActivityCode())){ detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
detail.setActivityApportionAmount(0L);
} else {
detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
}
detail.setActivityCode(apportionDetail.getActivityCode()); detail.setActivityCode(apportionDetail.getActivityCode());
detail.setActivityName(apportionDetail.getActivityName()); detail.setActivityName(apportionDetail.getActivityName());
detail.setGoodsId(apportionGood.getGoodsId()); detail.setGoodsId(apportionGood.getGoodsId());
detail.setCartGoodsUid(apportionGood.getCartGoodsUid()); detail.setCartGoodsUid(apportionGood.getCartGoodsUid());
detail.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
apportionGoodsDetail.add(detail); apportionGoodsDetail.add(detail);
} }
} }
...@@ -190,10 +151,6 @@ public class XyDiscountServiceImpl implements IPromotionService { ...@@ -190,10 +151,6 @@ public class XyDiscountServiceImpl implements IPromotionService {
*/ */
private String activityCode; private String activityCode;
/** /**
* 活动type
*/
private Integer activityType;
/**
* 活动名称,如果是商品券,优惠券,放券名称 * 活动名称,如果是商品券,优惠券,放券名称
*/ */
private String activityName; private String activityName;
......
...@@ -208,25 +208,7 @@ public class CalculationSharingDiscountService { ...@@ -208,25 +208,7 @@ public class CalculationSharingDiscountService {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get(); CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get();
convert2SendPoint(result, discountDTO); convert2SendPoint(result, discountDTO);
} }
// 将x件y折的0折数据转为赠品
Map<String, Integer> qtyMap = giftSharingService.xPiecesYFoldAdapter(sharingDiscountResponseDto);
if (MapUtils.isNotEmpty(qtyMap)){
for (String key : qtyMap.keySet()){
CartGoods cartGoods = cartGoodsList.stream().filter(p -> p.getCartGoodsUid().equals(key)).findFirst().orElse(null);
if (cartGoods != null){
cartGoods.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
cartGoods.setActualQty(cartGoods.getQty());
cartGoods.setQty(qtyMap.get(key));
if (ObjectUtils.equals(cartGoods.getQty(), 0)){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = sharingDiscountResponseDto.getResult().getGoods().stream().filter(p -> cartGoods.getCartGoodsUid().equals(p.getOriginalGoodsUid())).findFirst().orElse(null);
if (goods != null){
goods.setCartGoodsUid(cartGoods.getCartGoodsUid());
}
}
}
}
}
result.setValidCouponMap(validCouponMap); result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(deliveryAmount); result.setDeliveryAmount(deliveryAmount);
result.setDistributionFee(result.getDistributionFee()); result.setDistributionFee(result.getDistributionFee());
......
...@@ -47,158 +47,6 @@ public class GiftSharingService { ...@@ -47,158 +47,6 @@ public class GiftSharingService {
@Autowired @Autowired
private ActiveFactory activeFactory; private ActiveFactory activeFactory;
public void giftResponse(CalculationSharingDiscountResponseDto.CalculationDiscountResult discountResult
, List<CartGoods> cartGoodsList
, ShoppingCartInfoRequestVo shoppingCartInfoRequestVo
, ActivityQueryDto activityQueryDto
, String partnerId
, Integer flag) {
if (discountResult == null || CollectionUtils.isEmpty(discountResult.getGoods())) {
return;
}
String menuType = shoppingCartInfoRequestVo == null ? null : shoppingCartInfoRequestVo.getMenuType();
List<ProductBeanDTO> beanDTOList = this.drawGiftInfo(discountResult, activityQueryDto, menuType);
this.setCartGoods(discountResult, cartGoodsList, beanDTOList,shoppingCartInfoRequestVo, partnerId, flag);
}
public Map<String, Integer> xPiecesYFoldAdapter(ActivityCalculationDiscountResponseDto activityCalculationDiscountResponseDto) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult result = activityCalculationDiscountResponseDto.getResult();
if (result == null){
return null;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return null;
}
// 0折的x件y折活动
List<String> activityCode = result.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityCode)){
return null;
}
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = result.getGoods().stream().filter(p -> CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> goodsList = result.getSendGoods() == null ? new ArrayList<>() : result.getSendGoods();
Map<String, Integer> qtyMap = new HashMap<>();
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
int sendQty = 0;
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountList = goods.getDiscounts()
.stream().filter(p -> activityCode.contains(p.getActivityCode())).collect(Collectors.toList());
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountList){
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendGoods = new ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods> sendGoodsList = new ArrayList<>();
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods sendGoodsInfo = new ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity.SendGoods();
sendGoodsInfo.setGoodsId(discount.getGoodsId());
sendGoodsInfo.setOriginalGoodsUid(goods.getCartGoodsUid());
sendGoodsInfo.setSendNumber(discount.getActualGoodsNumber());
sendGoodsInfo.setDiscount(discount.getDiscount());
sendGoodsList.add(sendGoodsInfo);
sendGoods.setSendGoods(sendGoodsList);
sendGoods.setActivityCode(discount.getActivityCode());
sendGoods.setActivityName(discount.getActivityName());
sendGoods.setActivityType(ActivityTypeEnum.TYPE_1040.getCode());
sendQty += discount.getActualGoodsNumber();
goodsList.add(sendGoods);
}
qtyMap.put(goods.getCartGoodsUid(), goods.getGoodsQuantity() - sendQty);
}
result.setSendGoods(goodsList);
return qtyMap;
}
public Map<String, Integer> xPiecesYFoldAdapter(CalculationSharingDiscountResponseDto sharingDiscountResponseDto) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult result = sharingDiscountResponseDto.getResult();
if (result == null){
return null;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return null;
}
// 0折的x件y折活动
List<String> activityCode = result.getDiscounts().stream()
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityCode)){
return null;
}
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> discountGoodsList = result.getGoods().stream().filter(p -> CollectionUtils.isNotEmpty(p.getDiscounts())
&& p.getDiscounts().stream().filter(discount -> activityCode.contains(discount.getActivityCode())).count() > 0).collect(Collectors.toList());
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods> goodsList = result.getGoods() == null ? new ArrayList<>() : result.getGoods();
Map<String, Integer> qtyMap = new HashMap<>();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
int sendQty = 0;
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> discountList = goods.getDiscounts()
.stream().filter(p -> activityCode.contains(p.getActivityCode())).collect(Collectors.toList());
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount : discountList){
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods oldSendGoods = goodsList.stream().filter(p -> p.getGoodsId().equals(discount.getGoodsId()) && ObjectUtils.equals(p.getCartGoodType(), 1)).findFirst().orElse(null);
if (oldSendGoods != null){ // 表明赠品原来有
Integer goodsQuantity = oldSendGoods.getGoodsQuantity();
Integer send = goodsQuantity + discount.getActualGoodsNumber();
oldSendGoods.setGoodsQuantity(send);
Long discountAmount = oldSendGoods.getDiscountAmount();
discountAmount = discountAmount + discount.getDiscount();
oldSendGoods.setDiscountAmount(discountAmount);
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount oldDiscount = oldSendGoods.getDiscounts().stream().filter(p -> p.getActivityCode().equals(discount.getActivityCode()) && ObjectUtils.equals(p.getType(), ActivityTypeEnum.TYPE_1040.getCode())).findFirst().orElse(null);
if (oldDiscount != null){
oldDiscount.setActualGoodsNumber(send);
oldDiscount.setDiscount(discountAmount);
}
} else {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods sendGoods = new CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods();
sendGoods.setCartGoodsUid(UUID.randomUUID().toString());
sendGoods.setGoodsId(discount.getGoodsId());
sendGoods.setCartGoodType(CalculationGoodsType.TYPE_1.getType());
sendGoods.setGoodsQuantity(discount.getActualGoodsNumber());
sendGoods.setOriginalPrice(goods.getOriginalPrice());
sendGoods.setDiscountAmount(discount.getDiscount());
sendGoods.setOriginalGoodsUid(goods.getCartGoodsUid());
sendGoods.setRealAmount(0L);
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount> goodsDiscounts = new ArrayList<>();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount goodsDiscount = new CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount();
goodsDiscount.setActivityCode(discount.getActivityCode());
goodsDiscount.setActivityDesc(discount.getActivityDesc());
goodsDiscount.setActivityName(discount.getActivityName());
goodsDiscount.setActualGoodsNumber(discount.getActualGoodsNumber());
goodsDiscount.setDiscount(discount.getDiscount());
goodsDiscount.setGoodsId(discount.getGoodsId());
goodsDiscount.setSignleDiscount(discount.getSignleDiscount());
goodsDiscount.setType(ActivityTypeEnum.TYPE_1040.getCode());
goodsDiscounts.add(goodsDiscount);
sendGoods.setDiscounts(goodsDiscounts);
goodsList.add(sendGoods);
}
sendQty += discount.getActualGoodsNumber();
if (goods.getDiscountAmount() != null && discount.getDiscount() != null){
goods.setDiscountAmount(goods.getDiscountAmount() - discount.getDiscount());
}
}
if (qtyMap.get(goods.getCartGoodsUid()) != null){
qtyMap.put(goods.getCartGoodsUid(), qtyMap.get(goods.getCartGoodsUid()) - sendQty);
} else {
qtyMap.put(goods.getCartGoodsUid(), goods.getGoodsQuantity() - sendQty);
}
}
result.setGoods(goodsList);
return qtyMap;
}
/** /**
* 抽取赠品 * 抽取赠品
* goodsId->goods * goodsId->goods
...@@ -356,7 +204,7 @@ public class GiftSharingService { ...@@ -356,7 +204,7 @@ public class GiftSharingService {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts() CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream() .stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) .filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_62.getCode().equals(g.getType())
|| ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_1040.getCode().equals(g.getType())) || ActivityTypeEnum.TYPE_61.getCode().equals(g.getType()))
.findFirst() .findFirst()
.get(); .get();
return discount; return discount;
......
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