Commit 1b38e902 by chongfu.liang

老算价优惠问题

parent c1d06900
......@@ -10,6 +10,7 @@ import lombok.NoArgsConstructor;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
@Data
public class ActivityCalculationDiscountResponseDto {
......@@ -347,6 +348,10 @@ public class ActivityCalculationDiscountResponseDto {
*/
private String originalGoodsUid;
/**
* 购物车一行的Id(后台生成)
*/
private String cartGoodsUid = UUID.randomUUID().toString();
/**
* 赠送商品ID
*/
private String goodsId;
......@@ -367,6 +372,10 @@ public class ActivityCalculationDiscountResponseDto {
*/
private Long originalPrice;
/**
* 优惠
*/
private Long discount;
/**
* 赠送商品数量
*/
private Integer sendNumber;
......
......@@ -95,11 +95,13 @@ public class BuyAndGiftsPromotionService implements IPromotionService {
// nodeId标识activeCode,用于计算均摊时每个商品在每个活动上均摊金额
cartGoods.setNodeId(sendActivity.getActivityCode());
cartGoods.setOriginalGoodsUid(sendGoods.getOriginalGoodsUid());
cartGoods.setCartGoodsUid(sendGoods.getCartGoodsUid());
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);
totalGiftAmount += product.getFinalPrice() * sendGoods.getSendNumber();
......
......@@ -87,7 +87,7 @@ public class XyDiscountServiceImpl implements IPromotionService {
ActivityDiscountsDto activityDiscountsDto = new ActivityDiscountsDto();
activityDiscountsDto.setActivityCode(detail.getActivityCode());
activityDiscountsDto.setActivityName(detail.getActivityName());
activityDiscountsDto.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
activityDiscountsDto.setActivityType(detail.getActivityType());
activityDiscountsDto.setDiscountAmount(detail.getActivityApportionAmount().intValue());
activityDiscountsDtoList.add(activityDiscountsDto);
product.setActivityDiscountsDtos(activityDiscountsDtoList);
......@@ -132,21 +132,50 @@ public class XyDiscountServiceImpl implements IPromotionService {
.filter(p -> ActivityTypeEnum.TYPE_104.getCode().equals(p.getType()) && p.getZeroDiscount())
.map(p -> p.getActivityCode()).collect(Collectors.toList());
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());
*/
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()) && !activityCode.contains(apportionDetail.getActivityCode())) {
if (apportionDetail.getActivityType().equals(ActivityTypeEnum.TYPE_104.getCode())) {
ApportionGoodsDetail detail = new ApportionGoodsDetail();
detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
if (activityCode.contains(apportionDetail.getActivityCode())){
detail.setActivityApportionAmount(0L);
} else {
detail.setActivityApportionAmount(apportionDetail.getActivityApportionAmount());
}
detail.setActivityCode(apportionDetail.getActivityCode());
detail.setActivityName(apportionDetail.getActivityName());
detail.setGoodsId(apportionGood.getGoodsId());
detail.setCartGoodsUid(apportionGood.getCartGoodsUid());
detail.setActivityType(ActivityTypeEnum.TYPE_104.getCode());
apportionGoodsDetail.add(detail);
}
}
......@@ -161,6 +190,10 @@ public class XyDiscountServiceImpl implements IPromotionService {
*/
private String activityCode;
/**
* 活动type
*/
private Integer activityType;
/**
* 活动名称,如果是商品券,优惠券,放券名称
*/
private String activityName;
......
......@@ -96,6 +96,7 @@ public class GiftSharingService {
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());
......
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