Commit 1ee962b0 by xiaoer.li@freemud.com

满赠提示

parent 4e872244
......@@ -114,13 +114,30 @@ public class ActivityCalculationDiscountResponseDto {
@Data
public static class ActivityPrompt {
/**
* 活动名称
*/
private String acitivityName;
/**
* 活动号
*/
private String activityCode;
/**
* 活动类型
*/
private Integer activityType;
private Long discountAmout;
/**
* 门槛金额
*/
private Long thresholdAmount;
private Long totalAmount;
/**
* 已经优惠金额
*/
private Long alreadyDiscountAmount;
private Integer activitySubType;
private List<SendGoods> sendGoods;
}
@Data
......@@ -512,6 +529,12 @@ public class ActivityCalculationDiscountResponseDto {
}
}
@Data
public static class SendGoods {
private String goodsId;
private String goodsName;
private Integer sendNumber;
}
}
......
package cn.freemud.entities.dto;
import com.freemud.application.sdk.api.promotioncenter.domain.ActivityBenefitVO;
import lombok.Data;
import java.util.List;
......@@ -126,7 +127,10 @@ public class ActivityResponseDto {
private String creater;
private String updateor;
/**
* 活动子类型 1 阶梯 2 每满
*/
private Integer activitySubType;
/**
* 优惠列表(单品促销不需要此字段,传入此字段则不允许保存。)
*/
......
package cn.freemud.entities.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.Min;
import java.util.ArrayList;
import java.util.List;
@Data
public class BenefitBeanDto {
/**
......@@ -22,7 +27,82 @@ public class BenefitBeanDto {
private Integer benefitSeq;
private Integer benefitType;
private List<ActivitySendGoodsVO> sendGoodsList;
@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;
}
}
\ No newline at end of file
......@@ -114,8 +114,15 @@ public class CalculationSharingDiscountResponseDto {
private Long thresholdAmount;
private Long totalAmount;
private Long alreadyDiscountAmount;
private Integer activitySubType;
private List<SendGoods> sendGoods;
}
@Data
public static class SendGoods {
private String goodsId;
private String goodsName;
private Integer sendNumber;
}
@Data
public static class Discount {
/**
......
......@@ -2,6 +2,8 @@ package cn.freemud.entities.vo;
import lombok.Data;
import java.util.List;
/**
* All rights Reserved, Designed By www.freemud.cn
*
......@@ -49,5 +51,12 @@ public class ActivityList {
private String againBuy;
//在减
private String agianDeduct;
private List<SendGoods> sends;
@Data
public static class SendGoods {
private Integer qty;
private String goodsName;
}
}
......@@ -16,6 +16,7 @@ public enum ActivityTypeEnum {
TYPE_1(1, "整单满减"),
TYPE_11(11, "每满减"),
TYPE_12(12, "阶梯满减"),
TYPE_230(230, "满赠"),
TYPE_13(13, "新用户立减"),
TYPE_14(14, "满额减配送费"),
TYPE_104(104,"x件y折"),
......
package cn.freemud.enums;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @Title: cn.freemud.enums GiftTypeEnum
* @Description: TDO 描述....
* @author: 铁牌灵魂工程师
* @date: 2021/2/23
* @Copyright: www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目
*/
public enum GiftTypeEnum {
TYPE_1(1,"阶梯满赠"),
TYPE_2(2,"每满赠");
private Integer type;
private String desc;
GiftTypeEnum(Integer type, String desc) {
this.type = type;
this.desc = desc;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
......@@ -80,7 +80,7 @@ public class PlatformActiveServiceImpl implements ActiveService {
CalculationSharingDiscountResponseDto.CalculationDiscountResult.Goods goods = discountForGift.get(k);
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_230.getCode().equals(g.getType()))
.findFirst()
.get();
CartGoods cartGood = new CartGoods();
......
......@@ -60,7 +60,8 @@ public class BuySendPromotionService implements IPromotionService {
return;
}
//Todo 获取多个赠品list
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityLists = getSendActivityList(ActivityTypeEnum.TYPE_61, sendActivityList);
List<Integer> integers = Arrays.asList(ActivityTypeEnum.TYPE_61.getCode(), ActivityTypeEnum.TYPE_230.getCode());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityLists = getSendActivityList(integers, sendActivityList);
//Todo 获取多个赠品list
if (sendActivityLists.size() == 0) {
......@@ -145,7 +146,11 @@ public class BuySendPromotionService implements IPromotionService {
return;
}
//添加促销活动
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendGoods1 = calculationDiscountResult.getSendGoods() == null ? new ArrayList<>() : calculationDiscountResult.getSendGoods().stream().filter(t -> ObjectUtils.equals(ActivityTypeEnum.TYPE_6.getCode(), t.getActivityType()) || ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), t.getActivityType())).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendGoods1 = calculationDiscountResult.getSendGoods() == null ? new ArrayList<>() : calculationDiscountResult.getSendGoods().stream()
.filter(t -> ObjectUtils.equals(ActivityTypeEnum.TYPE_6.getCode(), t.getActivityType())
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_61.getCode(), t.getActivityType())
|| ObjectUtils.equals(ActivityTypeEnum.TYPE_230.getCode(), t.getActivityType()))
.collect(Collectors.toList() );
List<ActivityDiscountsDto> activityDiscountsDtos = shoppingCartGoodsDto.getActivityDiscountsDtos() == null ? new ArrayList<>() : shoppingCartGoodsDto.getActivityDiscountsDtos();
if (CollectionUtils.isNotEmpty(sendGoods1)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity = sendGoods1.get(0);
......@@ -199,9 +204,9 @@ public class BuySendPromotionService implements IPromotionService {
* @param type
* @return
*/
private List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> getSendActivityList(ActivityTypeEnum type,
private List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> getSendActivityList(List<Integer> type,
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> sendActivityList) {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> collect = sendActivityList.stream().filter(c -> c.getActivityType().equals(type.getCode())).collect(Collectors.toList());
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity> collect = sendActivityList.stream().filter(c ->type.contains(c.getActivityType())).collect(Collectors.toList());
return collect;
}
......
......@@ -6,10 +6,12 @@ import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.dto.shoppingCart.ShoppingCartGoodsDto;
import cn.freemud.entities.vo.*;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.GiftTypeEnum;
import cn.freemud.service.ActivityService;
import cn.freemud.service.IPromotionService;
import cn.freemud.utils.WebUtil;
import com.freemud.application.sdk.api.promotioncenter.service.PromotionSdkService;
import lombok.experimental.var;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -54,6 +56,7 @@ public class FullPromotionService implements IPromotionService {
List<ActivityTypeEnum> activityTypeEnums = new LinkedList<>();
activityTypeEnums.add(ActivityTypeEnum.TYPE_11);
activityTypeEnums.add(ActivityTypeEnum.TYPE_12);
activityTypeEnums.add(ActivityTypeEnum.TYPE_230);
//调用促销统一活动查询
//过滤出参与的满减(目前只有每满减和阶梯满减)
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivityByType(activityQueryDto, activityTypeEnums, null);
......@@ -80,12 +83,14 @@ public class FullPromotionService implements IPromotionService {
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList);
}else{
}
else{
//促销返回满减提示语
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ActivityPrompt> activityPrompts = calculationDiscountResult.getActivityPrompts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discountList1 = calculationDiscountResult.getDiscounts();
//构建提示语
if (CollectionUtils.isNotEmpty(activityPrompts)){
// 还差多少提示
setMessageSatisfyCart(messageBuilder, activityPrompts, activityResponseDto, activityList);
}else {
setMessageNoSatisfyCart(messageBuilder, discountList1, activityList);
......@@ -145,7 +150,7 @@ public class FullPromotionService implements IPromotionService {
.append("</span> 元");
//满足 x 元 减 Y 元 ,最高 减 Z元
cn.freemud.entities.vo.ActivityList notInShopping = new ActivityList();
ActivityList notInShopping = new ActivityList();
notInShopping.setTipType(1);
notInShopping.setSatisfy(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100).toString());
notInShopping.setDeduct(WebUtil.formatAmount(benefitBeanDto.getDiscountAmount() * 1.00 / 100).toString());
......@@ -174,6 +179,32 @@ public class FullPromotionService implements IPromotionService {
activityList.add(notInShopping);
}
}
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType())) {
ActivityList notInShopping = new ActivityList();
// 规则:满5赠奶茶2件,炸鸡1件,满10赠布丁3件,牛奶1份,鸡翅2份,
// 提示语:满5元可获赠奶茶*2,炸鸡*1
//阶梯满赠
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(6);
}
//每满赠
else if (GiftTypeEnum.TYPE_2.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(7);
}
for (BenefitBeanDto beanDto : benefitBeanDtos) {
notInShopping.setSatisfy(WebUtil.formatAmount(beanDto.getThresholdAmount() * 1.00 / 100).toString());
int len = beanDto.getSendGoodsList().size();
List<ActivityList.SendGoods> sends = new ArrayList();
for (int i = len - 1; i >= 0; i--) {
ActivityList.SendGoods goods = new ActivityList.SendGoods();
goods.setQty(goods.getQty());
goods.setGoodsName(goods.getGoodsName());
sends.add(goods);
}
notInShopping.setSends(sends);
break;
}
}
}
/**
......@@ -203,9 +234,13 @@ public class FullPromotionService implements IPromotionService {
satisfyList.setSatisfy(WebUtil.formatAmount(activityPrompt.getThresholdAmount() * 1.00 / 100).toString());
satisfyList.setDeduct(WebUtil.formatAmount(activityPrompt.getDiscountAmout() * 1.00 / 100).toString());
satisfyList.setMissing(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString());
} else {
}
else
{
Long toDiscountAmout;
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
//每满减
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())
|| (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType()) && GiftTypeEnum.TYPE_2.equals(activityResponseDto.getActivitySubType()))) {
toDiscountAmout = activityPrompt.getDiscountAmout() + activityPrompt.getAlreadyDiscountAmount();
} else {
toDiscountAmout = activityPrompt.getDiscountAmout();
......@@ -223,6 +258,23 @@ public class FullPromotionService implements IPromotionService {
satisfyList.setAgainBuy(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 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);
ActivityList.SendGoods send = new ActivityList.SendGoods();
send.setQty(activityPrompt.getSendGoods().get(0).getSendNumber());
send.setGoodsName(activityPrompt.getSendGoods().get(0).getGoodsName());
List<ActivityList.SendGoods> sends = new ArrayList();
sends.add(send);
satisfyList.setSends(sends);
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
satisfyList.setTipType(8);
}
else {
satisfyList.setTipType(9);
}
}
activityList.add(satisfyList);
}
......
......@@ -5,6 +5,7 @@ import cn.freemud.entities.dto.activity.ActivityQueryDto;
import cn.freemud.entities.dto.activity.ActivityQueryResponseDto;
import cn.freemud.entities.vo.ActivityList;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.GiftTypeEnum;
import cn.freemud.service.ActivityService;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.WebUtil;
......@@ -192,7 +193,7 @@ public class FullSubtractionActivityServiceImpl {
public PromotionMessageDto getFullPromotionActivityInfo(ActivityQueryDto activityQueryDto, ActivityCalculationDiscountResponseDto.CalculationDiscountResult calculationDiscountResult,
ArrayList<ActivityList> activityList) {
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivityByType(activityQueryDto, Arrays.asList(ActivityTypeEnum.TYPE_11, ActivityTypeEnum.TYPE_12), null);
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivityByType(activityQueryDto, Arrays.asList(ActivityTypeEnum.TYPE_11, ActivityTypeEnum.TYPE_12,ActivityTypeEnum.TYPE_230), null);
if (activityQueryResponseDto == null) {
return null;
}
......@@ -204,7 +205,8 @@ public class FullSubtractionActivityServiceImpl {
activityQueryDtoList = activityQueryDtoList.parallelStream().filter(k -> {
Integer activityType = k.getActivityType();
return Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityType)
|| Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityType);
|| Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityType)
|| Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityType);
}).limit(1).collect(Collectors.toList());
if (CollectionUtils.isEmpty(activityQueryDtoList)) {
return promotionMessageDto;
......@@ -214,7 +216,7 @@ public class FullSubtractionActivityServiceImpl {
promotionMessageDto.setActivityName(activityResponseDto.getActivityName());
promotionMessageDto.setActivityType(activityResponseDto.getActivityType());
promotionMessageDto.setPromotionAmount(0L);
//没有加入购物车
// 没有加入购物车
if (calculationDiscountResult == null) {
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
......@@ -258,15 +260,42 @@ public class FullSubtractionActivityServiceImpl {
activityList.add(notInShopping);
}
}
} else {
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType())) {
ActivityList notInShopping = new ActivityList();
// 规则:满5赠奶茶2件,炸鸡1件,满10赠布丁3件,牛奶1份,鸡翅2份,
// 提示语:满5元可获赠奶茶*2,炸鸡*1
//阶梯满赠
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(6);
}
//每满赠
else if (GiftTypeEnum.TYPE_2.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(7);
}
for (BenefitBeanDto beanDto : benefitBeanDtos) {
notInShopping.setSatisfy(WebUtil.formatAmount(beanDto.getThresholdAmount() * 1.00 / 100).toString());
int len = beanDto.getSendGoodsList().size();
List<ActivityList.SendGoods> sends = new ArrayList();
for (int i = len - 1; i >= 0; i--) {
ActivityList.SendGoods goods = new ActivityList.SendGoods();
goods.setQty(goods.getQty());
goods.setGoodsName(goods.getGoodsName());
sends.add(goods);
}
notInShopping.setSends(sends);
break;
}
}
}
// 有商品在购物车
else {
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ActivityPrompt> activityPrompts = calculationDiscountResult.getActivityPrompts();
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.Discount> discountList = calculationDiscountResult.getDiscounts();
//加入商品满足购物车
//加入商品满足购物车 还差多少提示
if (CollectionUtils.isNotEmpty(activityPrompts)) {
ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ActivityPrompt activityPrompt = activityPrompts.get(0);
ActivityList satisfyList = new ActivityList();
if (activityPrompt.getAlreadyDiscountAmount() == null
|| activityPrompt.getAlreadyDiscountAmount() == 0) {
if (activityPrompt.getAlreadyDiscountAmount() == null || activityPrompt.getAlreadyDiscountAmount() == 0) {
messageBuilder.append("满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(activityPrompt.getThresholdAmount() * 1.00 / 100))
.append("</span> 减 <span style=\"color:#fa5555\">")
......@@ -280,9 +309,12 @@ public class FullSubtractionActivityServiceImpl {
satisfyList.setSatisfy(WebUtil.formatAmount(activityPrompt.getThresholdAmount() * 1.00 / 100).toString());
satisfyList.setDeduct(WebUtil.formatAmount(activityPrompt.getDiscountAmout() * 1.00 / 100).toString());
satisfyList.setMissing(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString());
} else {
}
else {
Long toDiscountAmout;
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
//每满减
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())
|| (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType()) && GiftTypeEnum.TYPE_2.equals(activityResponseDto.getActivitySubType()))) {
toDiscountAmout = activityPrompt.getDiscountAmout() + activityPrompt.getAlreadyDiscountAmount();
} else {
toDiscountAmout = activityPrompt.getDiscountAmout();
......@@ -300,7 +332,24 @@ public class FullSubtractionActivityServiceImpl {
satisfyList.setAgainBuy(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 1.00 / 100).toString());
satisfyList.setAgianDeduct(WebUtil.formatAmount(toDiscountAmout * 1.00 / 100).toString());
}
} else {
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType()) && CollectionUtils.isNotEmpty(activityPrompt.getSendGoods())) {
satisfyList.setTipType(10);
ActivityList.SendGoods send = new ActivityList.SendGoods();
send.setQty(activityPrompt.getSendGoods().get(0).getSendNumber());
send.setGoodsName(activityPrompt.getSendGoods().get(0).getGoodsName());
List<ActivityList.SendGoods> sends = new ArrayList();
sends.add(send);
satisfyList.setSends(sends);
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
satisfyList.setTipType(8);
}
else {
satisfyList.setTipType(9);
}
}
}
else {
discountList = discountList.parallelStream().filter(k -> (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), k.getType())
|| Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), k.getType()))).collect(Collectors.toList());
if (CollectionUtils.isNotEmpty(discountList)) {
......
......@@ -1445,7 +1445,8 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (calculationDiscountResult != null && CollectionUtils.isNotEmpty(calculationDiscountResult.getSendGoods())) {
if (calculationDiscountResult.getSendGoods().stream()
.anyMatch(sendActivity -> Objects.equals(sendActivity.getActivityType(), ActivityTypeEnum.TYPE_6.getCode())
|| Objects.equals(sendActivity.getActivityType(), ActivityTypeEnum.TYPE_61.getCode()))) {
|| Objects.equals(sendActivity.getActivityType(), ActivityTypeEnum.TYPE_61.getCode())
|| Objects.equals(sendActivity.getActivityType(), ActivityTypeEnum.TYPE_230.getCode()))) {
// 买赠
BuySendPromotionService buySendPromotionService = (BuySendPromotionService) PromotionFactory.getPromotionService(ShoppingCartPromotionEnum.BUY_ONE_SEND);
buySendPromotionService.updateShoppingCartGoodsDiscount(couponPromotionVO, activityQueryDto, calculationDiscountResult, cartGoodsList, shoppingCartGoodsResponseVo, userLoginInfoDto, shoppingCartInfoRequestVo);
......
......@@ -11,6 +11,7 @@ import cn.freemud.entities.vo.ActivityTip;
import cn.freemud.entities.vo.CartGoods;
import cn.freemud.entities.vo.ShoppingCartGoodsResponseVo;
import cn.freemud.enums.ActivityTypeEnum;
import cn.freemud.enums.GiftTypeEnum;
import cn.freemud.service.ActivityService;
import cn.freemud.utils.WebUtil;
import com.alibaba.fastjson.JSONObject;
......@@ -62,6 +63,7 @@ public class FullSharingService {
/**
* 调用促销统一活动查询,过滤出参与的满减(目前只有每满减和阶梯满减)
*/
activityTypeEnums.add(ActivityTypeEnum.TYPE_230);
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivityByType(activityQueryDto, activityTypeEnums, null);
if (null==activityQueryResponseDto || CollectionUtils.isEmpty(activityQueryResponseDto.getResult())) {
return;
......@@ -96,7 +98,8 @@ public class FullSharingService {
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> discounts = discountResult.getDiscounts();
List<CalculationSharingDiscountResponseDto.CalculationDiscountResult.Discount> fullDiscountsList = discounts
.stream()
.filter(d -> ActivityTypeEnum.TYPE_11.getCode().equals(d.getType()) || ActivityTypeEnum.TYPE_12.getCode().equals(d.getType()))
.filter(d -> ActivityTypeEnum.TYPE_11.getCode().equals(d.getType())
|| ActivityTypeEnum.TYPE_12.getCode().equals(d.getType()) || ActivityTypeEnum.TYPE_230.getCode().equals(d.getType()))
.collect(Collectors.toList());
/**
* 设置到响应中 总的满减优惠金额
......@@ -248,7 +251,7 @@ public class FullSharingService {
notInShopping.setMaxDeduct(WebUtil.formatAmount(activityResponseDto.getMaxMoney() * 1.00 / 100).toString());
activityList.add(notInShopping);
}
if (Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) {
else if (Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) {
int len = benefitBeanDtos.size();
// // 购物车中无商品或者存在与满减互斥的活动
for (int i = len - 1; i >= 0; i--) {
......@@ -270,6 +273,32 @@ public class FullSharingService {
activityList.add(notInShopping);
}
}
if (Objects.equals(ActivityTypeEnum.TYPE_230.getCode(), activityResponseDto.getActivityType())) {
ActivityList notInShopping = new ActivityList();
// 规则:满5赠奶茶2件,炸鸡1件,满10赠布丁3件,牛奶1份,鸡翅2份,
// 提示语:满5元可获赠奶茶*2,炸鸡*1
//阶梯满赠
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(6);
}
//每满赠
else if (GiftTypeEnum.TYPE_2.equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(7);
}
for (BenefitBeanDto beanDto : benefitBeanDtos) {
notInShopping.setSatisfy(WebUtil.formatAmount(beanDto.getThresholdAmount() * 1.00 / 100).toString());
int len = beanDto.getSendGoodsList().size();
List<ActivityList.SendGoods> sends = new ArrayList();
for (int i = len - 1; i >= 0; i--) {
ActivityList.SendGoods goods = new ActivityList.SendGoods();
goods.setQty(goods.getQty());
goods.setGoodsName(goods.getGoodsName());
sends.add(goods);
}
notInShopping.setSends(sends);
break;
}
}
}
/**
......@@ -319,6 +348,23 @@ public class FullSharingService {
satisfyList.setAgainBuy(WebUtil.formatAmount((activityPrompt.getThresholdAmount() - activityPrompt.getTotalAmount()) * 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);
ActivityList.SendGoods send = new ActivityList.SendGoods();
send.setQty(activityPrompt.getSendGoods().get(0).getSendNumber());
send.setGoodsName(activityPrompt.getSendGoods().get(0).getGoodsName());
List<ActivityList.SendGoods> sends = new ArrayList();
sends.add(send);
satisfyList.setSends(sends);
if (GiftTypeEnum.TYPE_1.equals(activityResponseDto.getActivitySubType())) {
satisfyList.setTipType(8);
}
else {
satisfyList.setTipType(9);
}
}
activityList.add(satisfyList);
}
......
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