Commit 1ee962b0 by xiaoer.li@freemud.com

满赠提示

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