Commit 668a2af3 by ping.wu

benefitBeanDtos.get(0)报错修改,判断benefitBeanDtos集合不为空

parent bf8799ba
...@@ -77,9 +77,8 @@ public class FullPromotionService implements IPromotionService { ...@@ -77,9 +77,8 @@ public class FullPromotionService implements IPromotionService {
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
// 因为没有促销活动的计算信息,所以没有加入购物车内 // 因为没有促销活动的计算信息,所以没有加入购物车内
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits(); List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法 //调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList); setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, activityList);
} }
else{ else{
//促销返回满减提示语 //促销返回满减提示语
...@@ -134,8 +133,13 @@ public class FullPromotionService implements IPromotionService { ...@@ -134,8 +133,13 @@ public class FullPromotionService implements IPromotionService {
} }
//设置没有加入购物车的提示语 //设置没有加入购物车的提示语
private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto, List<BenefitBeanDto> benefitBeanDtos, BenefitBeanDto benefitBeanDto, private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto,
List<BenefitBeanDto> benefitBeanDtos,
ArrayList<ActivityList> activityList) { ArrayList<ActivityList> activityList) {
if(CollectionUtils.isEmpty(benefitBeanDtos)){
return;
}
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) { if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
messageBuilder.append("每满 <span style=\"color:#fa5555\">") messageBuilder.append("每满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100)) .append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100))
...@@ -189,7 +193,6 @@ public class FullPromotionService implements IPromotionService { ...@@ -189,7 +193,6 @@ public class FullPromotionService implements IPromotionService {
else if (GiftTypeEnum.TYPE_2.getType().equals(activityResponseDto.getActivitySubType())) { else if (GiftTypeEnum.TYPE_2.getType().equals(activityResponseDto.getActivitySubType())) {
notInShopping.setTipType(7); notInShopping.setTipType(7);
} }
//int len = benefitBeanDto.getSendGoodsList().size();
Collections.sort(benefitBeanDtos); Collections.sort(benefitBeanDtos);
BenefitBeanDto dto = benefitBeanDtos.get(0); BenefitBeanDto dto = benefitBeanDtos.get(0);
int len = dto.getSendGoodsList().size(); int len = dto.getSendGoodsList().size();
......
...@@ -27,154 +27,6 @@ public class FullSubtractionActivityServiceImpl { ...@@ -27,154 +27,6 @@ public class FullSubtractionActivityServiceImpl {
@Autowired @Autowired
private ActivityService activityService; private ActivityService activityService;
/**
* 获取满减活动
*
* @param activityQueryDto
* @param totalAmount 处理过了的总价
* @return
*/
public PromotionMessageDto getFullPromotionActivityInfo(ActivityQueryDto activityQueryDto, Long totalAmount, boolean hasOtherDiscount) {
totalAmount = totalAmount == null ? 0L : totalAmount;
ActivityQueryResponseDto activityQueryResponseDto = activityService.queryActivitys(activityQueryDto, null, null);
if (activityQueryResponseDto == null) {
return null;
}
PromotionMessageDto promotionMessageDto = new PromotionMessageDto();
List<ActivityResponseDto> activityQueryDtoList = activityQueryResponseDto.getResult();
if (CollectionUtils.isNotEmpty(activityQueryDtoList)) {
activityQueryDtoList = activityQueryDtoList.parallelStream().filter(k -> {
Integer activityType = k.getActivityType();
return Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityType)
|| Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityType);
}).limit(1).collect(Collectors.toList());
// 存在满减活动
if (CollectionUtils.isNotEmpty(activityQueryDtoList)) {
totalAmount = totalAmount == null ? 0L : totalAmount;
StringBuilder messageBuilder = new StringBuilder();
ActivityResponseDto activityResponseDto = activityQueryDtoList.get(0);
promotionMessageDto.setActivityId(activityResponseDto.getActivityCode());
promotionMessageDto.setActivityName(activityResponseDto.getActivityName());
promotionMessageDto.setActivityType(activityResponseDto.getActivityType());
promotionMessageDto.setPromotionAmount(0L);
// 每满减
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
if (CollectionUtils.isNotEmpty(benefitBeanDtos)) {
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
Integer thresholdAmount = benefitBeanDto.getThresholdAmount();
Integer discountAmount = benefitBeanDto.getDiscountAmount();
// 购物车中无商品或者存在与满减互斥的活动
if (totalAmount == 0
|| (hasOtherDiscount && Objects.equals(activityResponseDto.getIsShared(), 0))) {
messageBuilder.append("每满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100))
.append("</span> 减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getDiscountAmount() * 1.00 / 100))
.append("</span> ")
.append("最高减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(activityResponseDto.getMaxMoney() * 1.00 / 100))
.append("</span> ");
}
// 购物车中有商品但还不够满减
else if (totalAmount < thresholdAmount) {
messageBuilder.append("满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(thresholdAmount * 1.00 / 100))
.append("</span> 减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(discountAmount * 1.00 / 100))
.append("</span> ")
.append("还差 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount((thresholdAmount - totalAmount) * 1.00 / 100))
.append("</span> 元");
}
// 已够满减
else if (totalAmount >= thresholdAmount) {
// 最大阶级
Long maxLevel = activityResponseDto.getMaxMoney() / discountAmount;
Long currentLevel = totalAmount / thresholdAmount;
if (currentLevel > maxLevel || currentLevel * discountAmount == activityResponseDto.getMaxMoney()) {
Long diccountAmount = activityResponseDto.getMaxMoney() < currentLevel * discountAmount ? activityResponseDto.getMaxMoney() : maxLevel * discountAmount;
messageBuilder.append("已减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(diccountAmount * 1.00 / 100))
.append("</span> 元");
} else {
Long maxDiscountAmount = activityResponseDto.getMaxMoney() < (discountAmount * (currentLevel + 1)) ? activityResponseDto.getMaxMoney() : (discountAmount * (currentLevel + 1));
messageBuilder.append("已减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(discountAmount * currentLevel * 1.00 / 100))
.append("</span> 元 再买 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount((thresholdAmount * (currentLevel + 1) - totalAmount) * 1.00 / 100))
.append("</span> 元减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(maxDiscountAmount * 1.00 / 100))
.append("</span> 元");
}
}
}
// 阶梯满减
else if (Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) {
int len = benefitBeanDtos.size();
BenefitBeanDto minBenefitBeanDto = benefitBeanDtos.get(len - 1);
// // 购物车中无商品或者存在与满减互斥的活动
if (totalAmount == 0
|| (hasOtherDiscount && Objects.equals(activityResponseDto.getIsShared(), 0))) {
for (int i = len - 1, j = 0; i >= 0 && j < 2; i--, j++) {
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(i);
messageBuilder.append("满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100))
.append("</span> 减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getDiscountAmount() * 1.00 / 100))
.append("</span> ");
}
}
// 购物车中有商品但还不够满减
else if (totalAmount < minBenefitBeanDto.getThresholdAmount()) {
messageBuilder.append("满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(minBenefitBeanDto.getThresholdAmount() * 1.00 / 100))
.append("</span> 减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(minBenefitBeanDto.getDiscountAmount() * 1.00 / 100))
.append("</span> ")
.append("还差 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount((minBenefitBeanDto.getThresholdAmount() - totalAmount) * 1.00 / 100))
.append("</span> 元");
}
// 已够满减
else {
for (int i = 0; i < len; i++) {
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(i);
int thresholdAmount = benefitBeanDto.getThresholdAmount();
// 最高阶
if (i == 0 && totalAmount >= thresholdAmount) {
messageBuilder.append("已减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getDiscountAmount() * 1.00 / 100))
.append("</span> 元");
break;
} else {
if (i > 0 && totalAmount >= thresholdAmount) {
int lastThresholdAmount = benefitBeanDtos.get(i - 1).getThresholdAmount();
int lastDiscountAmount = benefitBeanDtos.get(i - 1).getDiscountAmount();
messageBuilder.append("已减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getDiscountAmount() * 1.00 / 100))
.append("</span> 元 再买 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount((lastThresholdAmount - totalAmount) * 1.00 / 100))
.append("</span> 元减 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(lastDiscountAmount * 1.00 / 100))
.append("</span> 元");
break;
}
}
}
}
}
promotionMessageDto.setPromotionMessage(messageBuilder.toString());
return promotionMessageDto;
}
}
}
return null;
}
/** /**
* 获取满减活动信息_新方法 * 获取满减活动信息_新方法
* *
...@@ -211,8 +63,10 @@ public class FullSubtractionActivityServiceImpl { ...@@ -211,8 +63,10 @@ public class FullSubtractionActivityServiceImpl {
// 没有加入购物车 // 没有加入购物车
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits(); List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
if(CollectionUtils.isEmpty(benefitBeanDtos)){
return promotionMessageDto;
}
ArrayList<ActivityList> arrayList = new ArrayList(); ArrayList<ActivityList> arrayList = new ArrayList();
//BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
BenefitBeanDto benefitBeanDto = null; BenefitBeanDto benefitBeanDto = null;
// 每满减 // 每满减
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) { if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
...@@ -235,7 +89,6 @@ public class FullSubtractionActivityServiceImpl { ...@@ -235,7 +89,6 @@ public class FullSubtractionActivityServiceImpl {
arrayList.add(notInShopping); arrayList.add(notInShopping);
} }
if (Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) { if (Objects.equals(ActivityTypeEnum.TYPE_12.getCode(), activityResponseDto.getActivityType())) {
benefitBeanDto = benefitBeanDtos.get(0);
int len = benefitBeanDtos.size(); int len = benefitBeanDtos.size();
// // 购物车中无商品或者存在与满减互斥的活动 // // 购物车中无商品或者存在与满减互斥的活动
for (int i = len - 1, j = 0; i >= 0 && j < 2; i--, j++) { for (int i = len - 1, j = 0; i >= 0 && j < 2; i--, j++) {
......
...@@ -79,9 +79,8 @@ public class FullSharingService { ...@@ -79,9 +79,8 @@ public class FullSharingService {
ArrayList<ActivityList> activityList = new ArrayList<>(); ArrayList<ActivityList> activityList = new ArrayList<>();
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits(); List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法 //调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList); setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, activityList);
promotionMessageDto.setPromotionMessage(messageBuilder.toString()); promotionMessageDto.setPromotionMessage(messageBuilder.toString());
ActivityTip activityTip = new ActivityTip(); ActivityTip activityTip = new ActivityTip();
...@@ -189,9 +188,8 @@ public class FullSharingService { ...@@ -189,9 +188,8 @@ public class FullSharingService {
*/ */
if (null==discountResult) { if (null==discountResult) {
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits(); List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法 //调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList); setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, activityList);
} }
//促销返回满减提示语 //促销返回满减提示语
else { else {
...@@ -226,12 +224,14 @@ public class FullSharingService { ...@@ -226,12 +224,14 @@ public class FullSharingService {
* @param messageBuilder * @param messageBuilder
* @param activityResponseDto * @param activityResponseDto
* @param benefitBeanDtos * @param benefitBeanDtos
* @param benefitBeanDto
* @param activityList * @param activityList
*/ */
private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto, List<BenefitBeanDto> benefitBeanDtos, BenefitBeanDto benefitBeanDto, private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto,
ArrayList<ActivityList> activityList) { List<BenefitBeanDto> benefitBeanDtos,ArrayList<ActivityList> activityList) {
if(CollectionUtils.isEmpty(benefitBeanDtos)){
return;
}
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) { if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
messageBuilder.append("每满 <span style=\"color:#fa5555\">") messageBuilder.append("每满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100)) .append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100))
......
...@@ -70,9 +70,8 @@ public class FullPromotionCalculation { ...@@ -70,9 +70,8 @@ public class FullPromotionCalculation {
if (calculationDiscountResult == null) { if (calculationDiscountResult == null) {
// 因为没有促销活动的计算信息,所以没有加入购物车内 // 因为没有促销活动的计算信息,所以没有加入购物车内
List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits(); List<BenefitBeanDto> benefitBeanDtos = activityResponseDto.getBenefits();
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
//调用没有加入购物车的提示语的方法 //调用没有加入购物车的提示语的方法
setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, benefitBeanDto, activityList); setMessageNotInShoppingCart(messageBuilder, activityResponseDto, benefitBeanDtos, activityList);
} else { } else {
//促销返回满减提示语 //促销返回满减提示语
List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ActivityPrompt> activityPrompts = calculationDiscountResult.getActivityPrompts(); List<ActivityCalculationDiscountResponseDto.CalculationDiscountResult.ActivityPrompt> activityPrompts = calculationDiscountResult.getActivityPrompts();
...@@ -130,8 +129,12 @@ public class FullPromotionCalculation { ...@@ -130,8 +129,12 @@ public class FullPromotionCalculation {
//设置没有加入购物车的提示语 //设置没有加入购物车的提示语
private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto, List<BenefitBeanDto> benefitBeanDtos, BenefitBeanDto benefitBeanDto, private void setMessageNotInShoppingCart(StringBuilder messageBuilder, ActivityResponseDto activityResponseDto,
ArrayList<ActivityList> activityList) { List<BenefitBeanDto> benefitBeanDtos, ArrayList<ActivityList> activityList) {
if(CollectionUtils.isEmpty(benefitBeanDtos)){
return;
}
BenefitBeanDto benefitBeanDto = benefitBeanDtos.get(0);
if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) { if (Objects.equals(ActivityTypeEnum.TYPE_11.getCode(), activityResponseDto.getActivityType())) {
messageBuilder.append("每满 <span style=\"color:#fa5555\">") messageBuilder.append("每满 <span style=\"color:#fa5555\">")
.append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100)) .append(WebUtil.formatAmount(benefitBeanDto.getThresholdAmount() * 1.00 / 100))
......
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