Commit a8b4bdfe by chongfu.liang

x件y折

parent a9acc7c4
......@@ -159,6 +159,8 @@ public class CalculationSharingDiscountResponseDto {
private Long thresholdAmount;
private SendPointDto sendPointVo;
private Date endTime;
private Boolean zeroDiscount;
}
@Data
......
......@@ -21,6 +21,7 @@ import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.CalculationGoodsType;
import cn.freemud.service.active.ActiveService;
import com.freemud.application.sdk.api.productcenter.domain.ProductBeanDTO;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.ObjectUtils;
import org.springframework.stereotype.Service;
......@@ -75,12 +76,21 @@ public class PlatformActiveServiceImpl implements ActiveService {
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) {
String k = product.getPid();
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k);
List<String> finalActivityCodeList = activityCodeList;
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream()
.filter(g -> ActivityTypeEnum.TYPE_63.getCode().equals(g.getType()) ||ActivityTypeEnum.TYPE_62.getCode().equals(g.getType()) || ActivityTypeEnum.TYPE_61.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_104.getCode().equals(g.getType()) && finalActivityCodeList.contains(g.getActivityCode())))
.findFirst()
.get();
CartGoods cartGood = new CartGoods();
......
......@@ -30,10 +30,7 @@ import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Objects;
import java.util.*;
import java.util.stream.Collectors;
/**
......@@ -204,6 +201,9 @@ public class CalculationSharingDiscountService {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO = result.getDiscounts().stream().filter(d -> 221 == d.getType()).findFirst().get();
convert2SendPoint(result, discountDTO);
}
// 将x件y折的0折数据转为赠品
xPiecesYFoldAdapter(sharingDiscountResponseDto);
result.setValidCouponMap(validCouponMap);
result.setDeliveryAmount(deliveryAmount);
result.setDistributionFee(result.getDistributionFee());
......@@ -220,6 +220,47 @@ public class CalculationSharingDiscountService {
return null;
}
private void xPiecesYFoldAdapter(CalculationSharingDiscountResponseDto sharingDiscountResponseDto) {
CalculationSharingDiscountResponseDto.CalculationDiscountResult result = sharingDiscountResponseDto.getResult();
if (result == null){
return;
}
if (CollectionUtils.isEmpty(result.getDiscounts()) && CollectionUtils.isEmpty(result.getGoods())){
return;
}
// 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;
}
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();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods : discountGoodsList){
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 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(discount.getSignleDiscount());
sendGoods.setRealAmount(0L);
goodsList.add(sendGoods);
}
}
}
private void convert2SendPoint(CalculationSharingDiscountResponseDto.CalculationDiscountResult result, CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount discountDTO) {
SendPoint sendPointNew = new SendPoint();
......
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