Commit 524253ba by chongfu.liang

满赠

parent 35c8fa42
package cn.freemud.demo.entities.bo.goods; package cn.freemud.demo.entities.bo.goods;
import cn.freemud.entities.dto.BenefitBeanDto;
import lombok.Data; import lombok.Data;
import java.util.List;
@Data @Data
public class BenefitBeanBO { public class BenefitBeanBO implements Comparable<BenefitBeanBO>{
/** /**
* 优惠券名称 * 优惠券名称
...@@ -23,5 +26,90 @@ public class BenefitBeanBO { ...@@ -23,5 +26,90 @@ public class BenefitBeanBO {
private Integer benefitSeq; private Integer benefitSeq;
private Integer benefitType; private Integer benefitType;
private List<BenefitBeanDto.ActivitySendGoodsVO> sendGoodsList;
@Override
public int compareTo(BenefitBeanBO o) {
return this.thresholdAmount.compareTo(o.getThresholdAmount());
}
@Data
public static class ActivitySendGoodsVO {
/**
* 活动号
*/
private String activityCode;
/**
* 商品id
*/
private String goodsId;
/**
* 商品CODE
*/
private String goodsCode;
/**
* 商品名
*/
private String goodsName;
/**
* 原价
*/
private Integer originalPrice;
/**
* 现价
*/
private Integer nowPrice;
/**
* 限制数量
*/
private Integer quantityLimit;
/**
* 赠送数量
*/
private Integer sendNumber;
/**
* 赠品类型 0或null为计件赠品 1为称重赠品
*/
private Integer sendGoodsType;
/**
* 赠品重量 g为单位
*/
private Integer sendGoodsWeight;
/**
* 排序
*/
private Integer serialNumber;
/**
* 商品类型:2、是加料商品,9、是虚拟商品,7、是套餐商品,1、是单品
*/
private Integer productType;
/**
* 商品可兑换的券号
*/
private String sendCouponCode;
/**
* 商品可兑换的券名称
*/
private String sendCouponName;
/**
* 是否兑换券
*/
private boolean sendCoupon=false;
}
} }
...@@ -117,6 +117,8 @@ public class CalculationDiscountBO { ...@@ -117,6 +117,8 @@ public class CalculationDiscountBO {
private Long thresholdAmount; private Long thresholdAmount;
private Long totalAmount; private Long totalAmount;
private Long alreadyDiscountAmount; private Long alreadyDiscountAmount;
private List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendGoods> sendGoods;
} }
@Data @Data
......
...@@ -63,6 +63,10 @@ public class ActivityBO { ...@@ -63,6 +63,10 @@ public class ActivityBO {
*/ */
private Integer activityType; private Integer activityType;
/** /**
* 活动子类型 1 阶梯 2 每满
*/
private Integer activitySubType;
/**
* 适用于优惠券活动,优惠券类型,0:满减券 1:代金券 * 适用于优惠券活动,优惠券类型,0:满减券 1:代金券
*/ */
private Integer couponType; private Integer couponType;
......
...@@ -1703,7 +1703,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1703,7 +1703,7 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
CalculationDiscountBO.CalculationDiscountResult.Goods goods = discountForGift.get(k); CalculationDiscountBO.CalculationDiscountResult.Goods goods = discountForGift.get(k);
CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts() CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount discount = goods.getDiscounts()
.stream() .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_230.getCode().equals(g.getType()))
.findFirst() .findFirst()
.get(); .get();
ShoppingCartApportionBO.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartApportionBO.CartGoodsDetailDto(); ShoppingCartApportionBO.CartGoodsDetailDto cartGoodsDetailDto = new ShoppingCartApportionBO.CartGoodsDetailDto();
......
...@@ -94,6 +94,7 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -94,6 +94,7 @@ public class DistributeServiceImpl implements DistributeService {
activityTypeEnums.add(ActivityTypeEnum.TYPE_12); activityTypeEnums.add(ActivityTypeEnum.TYPE_12);
activityTypeEnums.add(ActivityTypeEnum.TYPE_3); activityTypeEnums.add(ActivityTypeEnum.TYPE_3);
activityTypeEnums.add(ActivityTypeEnum.TYPE_31); activityTypeEnums.add(ActivityTypeEnum.TYPE_31);
activityTypeEnums.add(ActivityTypeEnum.TYPE_230);
GetActivityBO getActivityBO = new GetActivityBO(); GetActivityBO getActivityBO = new GetActivityBO();
getActivityBO.setActivityTypeEnums(activityTypeEnums); getActivityBO.setActivityTypeEnums(activityTypeEnums);
...@@ -139,7 +140,7 @@ public class DistributeServiceImpl implements DistributeService { ...@@ -139,7 +140,7 @@ public class DistributeServiceImpl implements DistributeService {
if (CollectionUtils.isNotEmpty(discountMap.getDiscounts())) { if (CollectionUtils.isNotEmpty(discountMap.getDiscounts())) {
sum = discountMap.getDiscounts() sum = discountMap.getDiscounts()
.stream() .stream()
.filter(d -> typeEnums.contains(d.getType())) .filter(d -> typeEnums.contains(d.getType()) && !d.getType().equals(ActivityTypeEnum.TYPE_230.getCode()))
.mapToLong(CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount) .mapToLong(CalculationDiscountBO.CalculationDiscountResult.Goods.GoodsDiscount::getDiscount)
.sum(); .sum();
cart.setAmount(cart.getAmount() + sum); cart.setAmount(cart.getAmount() + sum);
......
...@@ -4,13 +4,17 @@ import cn.freemud.demo.entities.bo.goods.BenefitBeanBO; ...@@ -4,13 +4,17 @@ import cn.freemud.demo.entities.bo.goods.BenefitBeanBO;
import cn.freemud.demo.entities.bo.goods.CalculationDiscountBO; import cn.freemud.demo.entities.bo.goods.CalculationDiscountBO;
import cn.freemud.demo.entities.bo.promotion.ActivityBO; import cn.freemud.demo.entities.bo.promotion.ActivityBO;
import cn.freemud.demo.service.MessageService; import cn.freemud.demo.service.MessageService;
import cn.freemud.entities.dto.BenefitBeanDto;
import cn.freemud.entities.dto.calculate.CalculationSharingDiscountResponseDto;
import cn.freemud.entities.vo.ActivityList; import cn.freemud.entities.vo.ActivityList;
import cn.freemud.enums.ActivityTypeEnum; import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.GiftTypeEnum;
import cn.freemud.utils.WebUtil; import cn.freemud.utils.WebUtil;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -91,6 +95,32 @@ public class MessageServiceImpl implements MessageService { ...@@ -91,6 +95,32 @@ public class MessageServiceImpl implements MessageService {
activityList.add(notInShopping); activityList.add(notInShopping);
} }
} }
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityBO.getActivityType())) {
ActivityList notInShopping = new ActivityList();
// 规则:满5赠奶茶2件,炸鸡1件,满10赠布丁3件,牛奶1份,鸡翅2份,
// 提示语:满5元可获赠奶茶*2,炸鸡*1
//阶梯满赠
if (GiftTypeEnum.TYPE_1.getType().equals(activityBO.getActivitySubType())) {
notInShopping.setTipType(6);
}
//每满赠
else if (GiftTypeEnum.TYPE_2.getType().equals(activityBO.getActivitySubType())) {
notInShopping.setTipType(7);
}
Collections.sort(benefitBeanBOList);
BenefitBeanBO benefitBean = benefitBeanBOList.get(0);
int len = benefitBean.getSendGoodsList().size();
notInShopping.setSatisfy(WebUtil.formatAmount(benefitBean.getThresholdAmount() * 1.00 / 100).toString());
List<ActivityList.SendGoods> sends = new ArrayList();
for (int i = 0; i < len; i++) {
ActivityList.SendGoods goods = new ActivityList.SendGoods();
goods.setQty(benefitBean.getSendGoodsList().get(i).getSendNumber());
goods.setGoodsName(benefitBean.getSendGoodsList().get(i).getGoodsName());
sends.add(goods);
}
notInShopping.setSends(sends);
activityList.add(notInShopping);
}
return activityList; return activityList;
} }
/** /**
...@@ -105,6 +135,7 @@ public class MessageServiceImpl implements MessageService { ...@@ -105,6 +135,7 @@ public class MessageServiceImpl implements MessageService {
ArrayList<ActivityList> result = new ArrayList<>(); ArrayList<ActivityList> result = new ArrayList<>();
ActivityList satisfyList = new ActivityList(); ActivityList satisfyList = new ActivityList();
CalculationDiscountBO.CalculationDiscountResult.ActivityPrompt activityPrompt = activityPrompts.get(0); CalculationDiscountBO.CalculationDiscountResult.ActivityPrompt activityPrompt = activityPrompts.get(0);
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType()) || Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) {
if (activityPrompt.getAlreadyDiscountAmount() == null if (activityPrompt.getAlreadyDiscountAmount() == null
|| activityPrompt.getAlreadyDiscountAmount() == 0) { || activityPrompt.getAlreadyDiscountAmount() == 0) {
messageBuilder.append("满 <span style=\"color:#fa5555\">") messageBuilder.append("满 <span style=\"color:#fa5555\">")
...@@ -140,6 +171,34 @@ public class MessageServiceImpl implements MessageService { ...@@ -140,6 +171,34 @@ public class MessageServiceImpl implements MessageService {
satisfyList.setAgainBuy(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString()); satisfyList.setAgainBuy(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString());
satisfyList.setAgianDeduct(WebUtil.formatAmount(toDiscountAmout * 1.00 / 100).toString()); satisfyList.setAgianDeduct(WebUtil.formatAmount(toDiscountAmout * 1.00 / 100).toString());
} }
}
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType()) && CollectionUtils.isNotEmpty(activityPrompt.getSendGoods())) {
satisfyList.setTipType(10);
List<ActivityList.SendGoods> sends = new ArrayList();
for (CalculationSharingDiscountResponseDto.CalculationDiscountResult.SendGoods sendGood : activityPrompt.getSendGoods()) {
ActivityList.SendGoods send = new ActivityList.SendGoods();
send.setGoodsName(sendGood.getGoodsName());
send.setQty(sendGood.getSendNumber());
sends.add(send);
}
satisfyList.setSends(sends);
satisfyList.setSatisfy(WebUtil.formatAmount(activityPrompt.getThresholdAmount() * 1.00 / 100).toString());
satisfyList.setMissing(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString());
if (GiftTypeEnum.TYPE_1.getType().equals(activityResponseDto.getActivitySubType())) {
satisfyList.setTipType(8);
}
else {
satisfyList.setTipType(7);
}
if (activityPrompt.getTotalAmount()>=activityPrompt.getThresholdAmount()) {
if (GiftTypeEnum.TYPE_1.getType().equals(activityResponseDto.getActivitySubType())) {
satisfyList.setTipType(10);
}
else {
satisfyList.setTipType(7);
}
}
}
result.add(satisfyList); result.add(satisfyList);
return result; return result;
} }
......
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