| @@ -330,7 +330,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| private void handleGiftAwards(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ | |||
| 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())){ | |||
| for(WxOfflineActivityRecord record :recordList){ | |||
| @@ -344,14 +344,23 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| if(awardsGrade == null){ | |||
| 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{ | |||
| 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){ | |||
| 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())); | |||
| WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); | |||
| 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){ | |||
| // 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() | |||
| .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) { | |||
| 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()); | |||
| if(awardsItem == null){ | |||
| throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); | |||
| @@ -789,10 +813,47 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity | |||
| } | |||
| else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ | |||
| handleGiftAwards(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); | |||
| if(activityItem.getActivityGrantItemList().isEmpty()){ | |||
| if(activityGrantItemList == null || activityGrantItemList.isEmpty()){ | |||
| 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())) { | |||
| handleCashback(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); | |||