Преглед изворни кода

Merge branch 'release_toaliyun_real' of https://git.malls.iformall.com/server/formallProject into release_toaliyun_real

release_toaliyun_real
winter пре 1 година
родитељ
комит
25e6e66e49
1 измењених фајлова са 137 додато и 56 уклоњено
  1. +137
    -56
      mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java

+ 137
- 56
mallinkService/src/main/java/com/iformall/service/impl/WxOfflineActivityGrantAwardServiceImpl.java Прегледај датотеку

@@ -276,7 +276,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
record_limit_count = activityAwardsModel.getAwardsCount();
}
}
if(record_limit_count > 0){
if(record_limit_count != null && record_limit_count > 0){
OfflineActivityGrantRule grantRule = new OfflineActivityGrantRule();
grantRule.setRecordId(record.getId());
grantRule.setRecord(record);
@@ -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);
// }
}
}

@@ -405,7 +426,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
grantAwardsItem = awardsItem;
}
}
if(grantAwardsItem != null){
if(grantAwardsItem != null && grantAwardsItem.getCashBackRatio() != null){
//计算返现金额
BigDecimal cashBackPrice = record.getOrderMoney().multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100)));
if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0
@@ -437,7 +458,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
grantAwardsItem = awardsItem;
}
}
if(grantAwardsItem != null){
if(grantAwardsItem != null && grantAwardsItem.getCashBackRatio() != null){

//计算返现金额
BigDecimal cashBackPrice = orderMoneySum
@@ -460,7 +481,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){
Map<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity()));
WxOfflineActivityAwardsItem awardsSecondItem = jointCountMap.get(jointCount);
if(awardsSecondItem != null){
if(awardsSecondItem != null && awardsSecondItem.getCashBackRatio() != null){
BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
//计算返现金额
BigDecimal cashBackPrice = orderMoneySum
@@ -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.getGrantAwardsMode())+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());
@@ -2099,8 +2160,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity

List<Map<String,Object>> grantItemObjectList = new ArrayList<>();

//单笔订单
Map<Long, List<OfflineActivityGrantItemVo>> grantItemMap;
WxOfflineActivityGrantSettlement grantSettlement = new WxOfflineActivityGrantSettlement();
grantSettlement.updateTenantInfo(activityItem);
grantSettlement.setActivityItemId(activityItem.getId());
@@ -2111,10 +2170,9 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
}
List<OfflineActivityGrantItemVo> grantItemList = wxOfflineActivityGrantSettlementMapper.findAwardItemGrantList(grantSettlement);
if(grantItemList != null && !grantItemList.isEmpty()){
grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId));

//订单表头
Map<Long, Long> grantItemSizeMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId, counting()));
Map<String, Long> grantItemSizeMap = grantItemList.stream().collect(groupingBy(e -> String.valueOf(e.getGrantId())+String.valueOf(e.getRecordId()), counting()));
Long maxGrantItemSize = Collections.max(grantItemSizeMap.values());
for (int i = 0; i < maxGrantItemSize.intValue(); i++) {
ExcelExportEntity entity_1 = new ExcelExportEntity("奖品名称","awardName_"+i,20);
@@ -2135,7 +2193,7 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
exportHead.add(entity_7);
}

List<Long> recordIds = new ArrayList<>(grantItemMap.keySet());
List<Long> recordIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getRecordId).distinct().collect(toList());
List<Long> grantIds = grantItemList.stream().map(OfflineActivityGrantItemVo::getGrantId).distinct().collect(toList());

List<WxOfflineActivityRecord> recordList = wxOfflineActivityRecordService.selectListByIds(recordIds,activityItem);
@@ -2144,27 +2202,50 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity
List<WxOfflineActivityGrantAward> grantList = this.selectListByIds(grantIds,activityItem);
Map<Long, WxOfflineActivityGrantAward> grantMap = grantList.stream().collect(toMap(WxOfflineActivityGrantAward::getId, Function.identity()));


recordIds.forEach(recordId -> {
List<OfflineActivityGrantItemVo> recordgrantItemList = grantItemMap.get(recordId);
Long grantId = recordgrantItemList.get(0).getGrantId();
WxOfflineActivityRecord record = recordMap.get(recordId);
WxOfflineActivityGrantAward grant = grantMap.get(grantId);
Map<String,Object> grantItemObject= getGrantItemExportObject(record,grant);

for (int i=0;i<recordgrantItemList.size();i++){
OfflineActivityGrantItemVo grantItem = recordgrantItemList.get(i);
grantItemObject.put("awardName_"+i,grantItem.getAwardName());
grantItemObject.put("awardCount_"+i,grantItem.getAwardCount());
grantItemObject.put("awardPrice_"+i,grantItem.getAwardPrice());
grantItemObject.put("realGrantPrice_"+i,grantItem.getRealGrantPrice());
grantItemObject.put("mallShareRate_"+i,grantItem.getMallShareRate());
grantItemObject.put("merchantShareRate_"+i,grantItem.getMerchantShareRate());
grantItemObject.put("realMallSharePrice_"+i,grantItem.getRealMallSharePrice());
grantItemObject.put("realMerchantSharePrice_"+i,grantItem.getRealMerchantSharePrice());
}
grantItemObjectList.add(grantItemObject);
Map<Long, List<OfflineActivityGrantItemVo>> grantItemMap = grantItemList.stream().collect(groupingBy(OfflineActivityGrantItemVo::getGrantId));
grantItemMap.keySet().forEach(grantId -> {
List<OfflineActivityGrantItemVo> offlineActivityGrantItemVos = grantItemMap.get(grantId);
Map<Long, List<OfflineActivityGrantItemVo>> recordGrantItemMap = offlineActivityGrantItemVos.stream().collect(groupingBy(OfflineActivityGrantItemVo::getRecordId));
recordGrantItemMap.keySet().forEach(recordId -> {
List<OfflineActivityGrantItemVo> recordGrantItemList = recordGrantItemMap.get(recordId);
WxOfflineActivityRecord record = recordMap.get(recordId);
WxOfflineActivityGrantAward grant = grantMap.get(grantId);
Map<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
for (int i=0;i<recordGrantItemList.size();i++){
OfflineActivityGrantItemVo grantItem = recordGrantItemList.get(i);
grantItemObject.put("awardName_"+i,grantItem.getAwardName());
grantItemObject.put("awardCount_"+i,grantItem.getAwardCount());
grantItemObject.put("awardPrice_"+i,grantItem.getAwardPrice());
grantItemObject.put("realGrantPrice_"+i,grantItem.getRealGrantPrice());
grantItemObject.put("mallShareRate_"+i,grantItem.getMallShareRate());
grantItemObject.put("merchantShareRate_"+i,grantItem.getMerchantShareRate());
grantItemObject.put("realMallSharePrice_"+i,grantItem.getRealMallSharePrice());
grantItemObject.put("realMerchantSharePrice_"+i,grantItem.getRealMerchantSharePrice());
}
grantItemObjectList.add(grantItemObject);
});
});

// recordIds.forEach(recordId -> {
// List<OfflineActivityGrantItemVo> recordgrantItemList = grantItemMap.get(recordId);
// Long grantId = recordgrantItemList.get(0).getGrantId();
// WxOfflineActivityRecord record = recordMap.get(recordId);
// WxOfflineActivityGrantAward grant = grantMap.get(grantId);
// Map<String,Object> grantItemObject= getGrantItemExportObject(record,grant);
//
// for (int i=0;i<recordgrantItemList.size();i++){
// OfflineActivityGrantItemVo grantItem = recordgrantItemList.get(i);
// grantItemObject.put("awardName_"+i,grantItem.getAwardName());
// grantItemObject.put("awardCount_"+i,grantItem.getAwardCount());
// grantItemObject.put("awardPrice_"+i,grantItem.getAwardPrice());
// grantItemObject.put("realGrantPrice_"+i,grantItem.getRealGrantPrice());
// grantItemObject.put("mallShareRate_"+i,grantItem.getMallShareRate());
// grantItemObject.put("merchantShareRate_"+i,grantItem.getMerchantShareRate());
// grantItemObject.put("realMallSharePrice_"+i,grantItem.getRealMallSharePrice());
// grantItemObject.put("realMerchantSharePrice_"+i,grantItem.getRealMerchantSharePrice());
// }
// grantItemObjectList.add(grantItemObject);
// });
}

excelService.exportExcel(exportHead, grantItemObjectList, null, "抽奖活动发放明细", "抽奖活动发放明细.xlsx",true, response);


Loading…
Откажи
Сачувај