|
|
|
@@ -30,6 +30,8 @@ import java.util.*; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static java.util.stream.Collectors.*; |
|
|
|
|
|
|
|
/** |
|
|
|
* @author xiaohu |
|
|
|
* @description 针对表【wx_offline_activity_grant_award(线下活动发放奖励)】的数据库操作Service实现 |
|
|
|
@@ -199,10 +201,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
&& activityItem.getAwardsItemLimit() < limitCount){ |
|
|
|
limitCount = activityItem.getAwardsItemLimit(); |
|
|
|
} |
|
|
|
if(limitCount == 0){ |
|
|
|
activityItem.setIsMeet(false); |
|
|
|
} |
|
|
|
activityItem.setRealAwardsItemLimit(limitCount); |
|
|
|
} |
|
|
|
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ |
|
|
|
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(Collectors.toList()); |
|
|
|
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); |
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || wxOfflineActivityGrantAward.getOrderMoneySum().compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
@@ -321,7 +326,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
private void handlerGrantItem(WxOfflineActivity activity, WxOfflineActivityGrantAward wxOfflineActivityGrantAward){ |
|
|
|
|
|
|
|
List<WxOfflineActivityItem> activityItemList = wxOfflineActivityItemService.getActivityItemList(activity.getId(), activity.getTenantId()); |
|
|
|
Map<Long, WxOfflineActivityItem> activityItemMap = activityItemList.stream().collect(Collectors.toMap(WxOfflineActivityItem::getId, Function.identity())); |
|
|
|
Map<Long, WxOfflineActivityItem> activityItemMap = activityItemList.stream().collect(toMap(WxOfflineActivityItem::getId, Function.identity())); |
|
|
|
|
|
|
|
int i = 0;//检查活动奖项 |
|
|
|
for (WxOfflineActivityItem grantActivityItem : wxOfflineActivityGrantAward.getActivityItemList()) { |
|
|
|
@@ -337,8 +342,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
continue; |
|
|
|
// throw new MallinkException(Result.ERROR, "请检查活动奖项参数"); |
|
|
|
} |
|
|
|
boolean isRepeat = activityGrantItemList.stream() |
|
|
|
.collect(groupingBy(WxOfflineActivityGrantItem::getAwardItamId, counting())) |
|
|
|
.entrySet().stream().anyMatch(e -> e.getValue() > 1); |
|
|
|
if(isRepeat){ |
|
|
|
throw new MallinkException(Result.ERROR, "请检查活动奖项存在重复"); |
|
|
|
} |
|
|
|
|
|
|
|
Map<Long, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(Collectors.toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); |
|
|
|
Map<Long, WxOfflineActivityAwardsItem> awardsItemMap = activityItem.getActivityAwardsItemList().stream().collect(toMap(WxOfflineActivityAwardsItem::getId, Function.identity())); |
|
|
|
|
|
|
|
for (WxOfflineActivityGrantItem grantGrantItem : activityGrantItemList) { |
|
|
|
i++; |
|
|
|
@@ -361,7 +372,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
&& activityItem.getAwardsItemLimit() < limitCount){ |
|
|
|
limitCount = activityItem.getAwardsItemLimit(); |
|
|
|
} |
|
|
|
if(limitCount != 0 && activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ |
|
|
|
if(activityGrantItemList.stream().mapToInt(WxOfflineActivityGrantItem::getAwardCount).sum()>limitCount){ |
|
|
|
throw new MallinkException(Result.ERROR, "活动项"+activityItem.getName()+"奖券超过限制"); |
|
|
|
} |
|
|
|
|
|
|
|
@@ -514,7 +525,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
grantItemQ.updateTenantInfo(grantAward); |
|
|
|
grantItemQ.setGrantId(grantId); |
|
|
|
List<WxOfflineActivityGrantItem> grantItemList = wxOfflineActivityGrantItemMapper.findList(grantItemQ); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> activityItemGrantMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> activityItemGrantMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); |
|
|
|
for (WxOfflineActivityItem activityItem : grantAward.getActivityItemList()) { |
|
|
|
List<WxOfflineActivityGrantItem> grantActivityItemList = activityItemGrantMap.get(activityItem.getId()); |
|
|
|
if (grantActivityItemList == null || grantActivityItemList.isEmpty()) { |
|
|
|
@@ -554,7 +565,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
grantItemQ.updateTenantInfo(wxOfflineActivity); |
|
|
|
grantItemQ.setActivityId(wxOfflineActivity.getId()); |
|
|
|
List<WxOfflineActivityGrantItem> grantItem = wxOfflineActivityGrantItemMapper.findList(grantItemQ); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getGrantId)); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> grantItemMap = grantItem.stream().collect(groupingBy(WxOfflineActivityGrantItem::getGrantId)); |
|
|
|
for (WxOfflineActivityGrantAward grantAward : grantAwardList) { |
|
|
|
List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordMapper.findGrantList(grantAward.getId(),grantAward.getTenantId()); |
|
|
|
List<WxOfflineActivityGrantItem> grantItemList = grantItemMap.get(grantAward.getId()); |
|
|
|
@@ -564,7 +575,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
for (WxOfflineActivityRecord record : recordList) { |
|
|
|
merchantOrder.add(record.getOrderNo()+"["+merchantMap.get(record.getMerchantId())+"]"); |
|
|
|
} |
|
|
|
activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(Collectors.joining(";"))); |
|
|
|
activityGrantObject.put("merchantOrder",merchantOrder.stream().collect(joining(";"))); |
|
|
|
activityGrantObject.put("orderMoneySum",grantAward.getOrderMoneySum()); |
|
|
|
activityGrantObject.put("cusName",grantAward.getCusName()); |
|
|
|
activityGrantObject.put("cusPhone",grantAward.getCusPhone()); |
|
|
|
@@ -572,13 +583,13 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
activityGrantObject.put("realCard",grantAward.getRealCard()); |
|
|
|
activityGrantObject.put("createByName",grantAward.getCreateBy()!=null?userMap.get(grantAward.getCreateBy()).getName():""); |
|
|
|
activityGrantObject.put("createDate",DateUtils.date2String(grantAward.getCreateDate())); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> granActivityItemMap = grantItemList.stream().collect(Collectors.groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); |
|
|
|
Map<Long, List<WxOfflineActivityGrantItem>> granActivityItemMap = grantItemList.stream().collect(groupingBy(WxOfflineActivityGrantItem::getActivityItemId)); |
|
|
|
for (WxOfflineActivityItem activityItem : activity.getActivityItemList()) { |
|
|
|
List<WxOfflineActivityGrantItem> granActivityItemList = granActivityItemMap.get(activityItem.getId()); |
|
|
|
if(EnumOfflineActivityType.LOTTERY_DRAW.getCode().equals(activityItem.getType())){ |
|
|
|
Map<Long, WxOfflineActivityGrantItem> granAwardItamMap = new HashMap<>(); |
|
|
|
if(granActivityItemList != null && !granActivityItemList.isEmpty()){ |
|
|
|
granAwardItamMap = granActivityItemList.stream().collect(Collectors.toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); |
|
|
|
granAwardItamMap = granActivityItemList.stream().collect(toMap(WxOfflineActivityGrantItem::getAwardItamId, Function.identity())); |
|
|
|
} |
|
|
|
for (WxOfflineActivityAwardsItem awardsItem : activityItem.getActivityAwardsItemList()) { |
|
|
|
WxOfflineActivityGrantItem grantAwardsItem = granAwardItamMap.get(awardsItem.getId()); |
|
|
|
|