Просмотр исходного кода

//AwardsItem

release_toaliyun_real
xiaohu 1 год назад
Родитель
Сommit
764ffc50c6
1 измененных файлов: 88 добавлений и 27 удалений
  1. +88
    -27
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java

+ 88
- 27
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Просмотреть файл

@@ -330,7 +330,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){
List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>();


Map<Integer, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getGrade, Function.identity()));
// Map<Integer, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getGrade, Function.identity()));


if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){
for(WxOfflineActivityRecord record :recordList){ for(WxOfflineActivityRecord record :recordList){
@@ -344,14 +344,23 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(awardsGrade == null){ if(awardsGrade == null){
continue; continue;
} }
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
if(awardsItem != null){
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setRecordId(record.getId());
grantGrantItem.setRecord(record);
handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem);
grantItemList.add(grantGrantItem);
}

WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantGrantItem.setRecordId(record.getId());
grantGrantItem.setRecord(record);
grantGrantItem.setAwardGrade(awardsGrade);
grantGrantItem.setAwardCount(1);
grantItemList.add(grantGrantItem);

// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
// if(awardsItem != null){
// WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
// grantGrantItem.setRecordId(record.getId());
// grantGrantItem.setRecord(record);
// handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem);
// grantItemList.add(grantGrantItem);
// }
} }
}else{ }else{
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
@@ -363,12 +372,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
} }
} }
if(awardsGrade != null){ if(awardsGrade != null){
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
if(awardsItem != null){
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem();
handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem);
grantItemList.add(wxOfflineActivityGrantItem);
}
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode());
grantGrantItem.setAwardGrade(awardsGrade);
grantGrantItem.setAwardCount(1);
grantItemList.add(grantGrantItem);

// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade);
// if(awardsItem != null){
// WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem();
// handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem);
// grantItemList.add(wxOfflineActivityGrantItem);
// }
} }
} }


@@ -378,12 +393,18 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount);
if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){ if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade());
if(awardsItem != null){
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem();
handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.COUNT,activity,activityItem,awardsItem);
grantItemList.add(wxOfflineActivityGrantItem);
}
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem();
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode());
grantGrantItem.setAwardGrade(activityAwardsModel.getAwardsGrade());
grantGrantItem.setAwardCount(1);
grantItemList.add(grantGrantItem);

// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade());
// if(awardsItem != null){
// WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem();
// handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.COUNT,activity,activityItem,awardsItem);
// grantItemList.add(wxOfflineActivityGrantItem);
// }
} }
} }


@@ -757,7 +778,10 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
// if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){ // if(wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(activityItem.getLimitMoney()) < 0){
// throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足"); // throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"金额不满足");
// } // }

boolean isAwardItamId = activityGrantItemList.stream().anyMatch(grantItem -> grantItem.getAwardItamId() == null);
if(isAwardItamId){
throw new MallinkException(Result.ERROR, "请检查抽奖活动是否都选择奖项");
}
//所得奖项不能重复, 后续计算问题 //所得奖项不能重复, 后续计算问题
boolean isRepeat = activityGrantItemList.stream() boolean isRepeat = activityGrantItemList.stream()
.collect(groupingBy(e -> String.valueOf(e.getAwardItamId())+String.valueOf(e.getRecordId()), counting())) .collect(groupingBy(e -> String.valueOf(e.getAwardItamId())+String.valueOf(e.getRecordId()), counting()))
@@ -767,9 +791,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
} }


for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) {
if(grantGrantItem.getAwardItamId() == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
}
// if(grantGrantItem.getAwardItamId() == null){
// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
// }
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId());
if(awardsItem == null){ if(awardsItem == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
@@ -789,10 +813,47 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity


} }
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){
handleGiftAwards(activity,activityItem,wxOfflineActivityGrantAward.getRecordList());
if(activityItem.getActivityGrantItemList().isEmpty()){
if(activityGrantItemList == null || activityGrantItemList.isEmpty()){
continue; continue;
} }

boolean isAwardItamId = activityGrantItemList.stream().anyMatch(grantItem -> grantItem.getAwardItamId() == null);
if(isAwardItamId){
throw new MallinkException(Result.ERROR, "请检查赠礼活动是否都选择奖项");
}
//所得奖项不能重复, 后续计算问题
boolean isRepeat = activityGrantItemList.stream()
.collect(groupingBy(e -> String.valueOf(e.getAwardItamId())+String.valueOf(e.getRecordId()), counting()))
.entrySet().stream().anyMatch(e -> e.getValue() > 1);
if(isRepeat){
throw new MallinkException(Result.ERROR, "请检查赠礼活动奖项存在重复");
}

for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) {
// if(grantGrantItem.getAwardItamId() == null){
// throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
// }
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId());
if(awardsItem == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数");
}
if(grantGrantItem.getGrantAwardsMode() == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项类型参数");
}

EnumOfflineActivityAwardsModeType modeType = EnumOfflineActivityAwardsModeType.getEnum(grantGrantItem.getGrantAwardsMode());
if(modeType == null){
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项类型参数");
}
handlerGrantItem(grantGrantItem, modeType, activity, activityItem, awardsItem);
}
activityItem.setActivityGrantItemList(activityGrantItemList);


// handleGiftAwards(activity,activityItem,wxOfflineActivityGrantAward.getRecordList());
// if(activityItem.getActivityGrantItemList().isEmpty()){
// continue;
// }
} }
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) {
handleCashback(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); handleCashback(activity,activityItem,wxOfflineActivityGrantAward.getRecordList());


Загрузка…
Отмена
Сохранить