|
|
|
@@ -209,154 +209,27 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
|
|
|
|
//处理发奖数量 |
|
|
|
activityItem.setIsMeet(true); |
|
|
|
handleLotteryDrawCount(activityItem,activityItem.getRecordList()); |
|
|
|
handleLotteryDrawCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
if(activityItem.getRealAwardsItemLimit() == 0){ |
|
|
|
activityItem.setIsMeet(false); |
|
|
|
} |
|
|
|
} |
|
|
|
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ |
|
|
|
|
|
|
|
//计算商户商管分别承担金额 |
|
|
|
handlerAwardsSharePrice(activityItem.getActivityAwardsItemList()); |
|
|
|
|
|
|
|
//处理发放奖项 |
|
|
|
handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
handleGiftAwards(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
activityItem.setIsMeet(true); |
|
|
|
if(activityItem.getActivityGrantItemList() == null || activityItem.getActivityGrantItemList().isEmpty()){ |
|
|
|
activityItem.setIsMeet(false); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { |
|
|
|
|
|
|
|
BigDecimal cashBackPriceTotal = BigDecimal.ZERO; |
|
|
|
List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); |
|
|
|
|
|
|
|
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); |
|
|
|
//单笔订单计算 |
|
|
|
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ |
|
|
|
|
|
|
|
for (WxOfflineActivityRecord record : activityItem.getRecordList()){ |
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = record.getOrderMoney() |
|
|
|
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0 |
|
|
|
&& grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ |
|
|
|
cashBackPrice = grantAwardsItem.getLimitPrice(); |
|
|
|
} |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
|
|
|
|
// WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); |
|
|
|
// grantItem.setActivityItemId(activityItem.getId()); |
|
|
|
// grantItem.setActivityItemName(activityItem.getName()); |
|
|
|
// grantItem.setActivityItemType(activityItem.getType()); |
|
|
|
// grantItem.setAwardItamId(grantAwardsItem.getId()); |
|
|
|
// grantItem.setAwardName(grantAwardsItem.getName()); |
|
|
|
// grantItem.setAwardGrade(grantAwardsItem.getGrade()); |
|
|
|
// grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); |
|
|
|
// grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); |
|
|
|
// grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
// grantItem.setAwardCount(1); |
|
|
|
// |
|
|
|
// //计算返现金额 |
|
|
|
// BigDecimal cashBackPrice = record.getOrderMoney() |
|
|
|
// .multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// grantItem.setAwardPrice(cashBackPrice.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// grantItem.setAwardPrice(cashBackPrice.setScale(0, RoundingMode.HALF_UP)); |
|
|
|
// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// BigDecimal cashBackPriceTen = cashBackPrice.divide(new BigDecimal(10)) |
|
|
|
// .setScale(0, RoundingMode.HALF_UP); |
|
|
|
// grantItem.setAwardPrice(cashBackPriceTen.multiply(new BigDecimal(10))); |
|
|
|
// } |
|
|
|
// grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); |
|
|
|
// grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); |
|
|
|
// grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); |
|
|
|
//// grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); |
|
|
|
//// grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); |
|
|
|
// grantItemList.add(grantItem); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
}else{ |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ |
|
|
|
// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ |
|
|
|
// orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() |
|
|
|
// .filter(record -> activityItem.getRecordIds().contains(record.getId())) |
|
|
|
// .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// }else{ |
|
|
|
// orderMoneySum = BigDecimal.ZERO; |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = orderMoneySum |
|
|
|
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
if(jointCount != 0 && activityItem.getActivityAwardsItemSecondList() != null && !activityItem.getActivityAwardsItemSecondList().isEmpty()){ |
|
|
|
Map<Integer, WxOfflineActivityAwardsItem> jointCountMap = activityItem.getActivityAwardsItemSecondList().stream().collect(toMap(WxOfflineActivityAwardsItem::getMerchantCount, Function.identity())); |
|
|
|
WxOfflineActivityAwardsItem grantAwardsSecondItem = jointCountMap.get(jointCount); |
|
|
|
if(grantAwardsSecondItem != null){ |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() |
|
|
|
.multiply(grantAwardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ |
|
|
|
cashBackPriceTotal = activityItem.getMaxAmount(); |
|
|
|
} |
|
|
|
|
|
|
|
WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); |
|
|
|
activityGrantCashBack.setActivityId(activity.getId()); |
|
|
|
activityGrantCashBack.setActivityName(activity.getName()); |
|
|
|
activityGrantCashBack.setActivityItemId(activityItem.getId()); |
|
|
|
activityGrantCashBack.setActivityItemName(activityItem.getName()); |
|
|
|
activityGrantCashBack.setActivityItemType(activityItem.getType()); |
|
|
|
activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); |
|
|
|
activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); |
|
|
|
activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); |
|
|
|
activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); |
|
|
|
activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); |
|
|
|
if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0 |
|
|
|
&& activityGrantCashBack.getTaxPoints() != null){ |
|
|
|
activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) |
|
|
|
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
activityItem.setIsMeet(true); |
|
|
|
activityItem.setActivityGrantCashBack(activityGrantCashBack); |
|
|
|
activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount())); |
|
|
|
handleCashback(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
|
|
|
|
WxOfflineActivityGrantCashBack activityGrantCashBack = activityItem.getActivityGrantCashBack(); |
|
|
|
|
|
|
|
WxOfflineActivityGrantCashBack lastActivityGrantCashBack = getLastActivityGrantCashBack(wxOfflineActivityGrantAward, activity.getId(), activityItem.getId()); |
|
|
|
if(lastActivityGrantCashBack != null){ |
|
|
|
@@ -374,8 +247,6 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
} |
|
|
|
activityItem.setCashBackMsg(msg); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -396,21 +267,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
} |
|
|
|
|
|
|
|
}else{ |
|
|
|
BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ |
|
|
|
// if(activityItem.getRecordList() != null && !activityItem.getRecordList().isEmpty()){ |
|
|
|
// orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// }else{ |
|
|
|
// orderMoneySum = BigDecimal.ZERO; |
|
|
|
// } |
|
|
|
// } |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
if(activityItem.getAwardsItemPrice() != null && activityItem.getAwardsItemPrice().compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
limitCount = orderMoneySum.divide(activityItem.getAwardsItemPrice(),0, RoundingMode.HALF_DOWN).intValue(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//这里是联单, 按选择的订单计算 |
|
|
|
Integer jointCount = getJointCount(activityItem,recordList); |
|
|
|
Integer jointCount = getJointCount(activityItem,activityItem.getRecordList()); |
|
|
|
if(jointCount != 0){ |
|
|
|
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); |
|
|
|
WxOfflineActivityAwardsModel activityAwardsModel = jointCountMap.get(jointCount); |
|
|
|
@@ -426,9 +290,8 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
activityItem.setRealAwardsItemLimit(limitCount); |
|
|
|
} |
|
|
|
|
|
|
|
private void handleGiftAwards(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
List<WxOfflineActivityGrantItem> grantItem = new ArrayList<>(); |
|
|
|
Map<Integer,WxOfflineActivityGrantItem> grantItemMap = new HashMap<>(); |
|
|
|
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())); |
|
|
|
|
|
|
|
@@ -444,30 +307,17 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
if(awardsGrade == null){ |
|
|
|
break; |
|
|
|
} |
|
|
|
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(awardsGrade); |
|
|
|
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); |
|
|
|
if(wxOfflineActivityGrantItem != null){ |
|
|
|
wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); |
|
|
|
wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); |
|
|
|
}else{ |
|
|
|
if(awardsItem != null){ |
|
|
|
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem); |
|
|
|
wxOfflineActivityGrantItem.setRecordId(record.getId()); |
|
|
|
grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); |
|
|
|
} |
|
|
|
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 = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ |
|
|
|
if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ |
|
|
|
orderMoneySum = recordList.stream() |
|
|
|
.filter(record -> activityItem.getRecordIds().contains(record.getId())) |
|
|
|
.map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
}else{ |
|
|
|
orderMoneySum = BigDecimal.ZERO; |
|
|
|
} |
|
|
|
} |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
Integer awardsGrade = null; |
|
|
|
for (WxOfflineActivityAwardsModel activityAwardsModel :activityItem.getActivityAwardsModelList()){ |
|
|
|
if((activityAwardsModel.getMinAmount() == null || orderMoneySum.compareTo(activityAwardsModel.getMinAmount()) >= 0) |
|
|
|
@@ -478,18 +328,14 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
if(awardsGrade != null){ |
|
|
|
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(awardsGrade); |
|
|
|
if(awardsItem != null){ |
|
|
|
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem,EnumOfflineActivityAwardsModeType.AMOUNT, awardsItem); |
|
|
|
grantItemMap.put(awardsGrade, wxOfflineActivityGrantItem); |
|
|
|
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem); |
|
|
|
grantItemList.add(wxOfflineActivityGrantItem); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(!grantItemMap.isEmpty()){ |
|
|
|
grantItem.addAll(grantItemMap.values()); |
|
|
|
} |
|
|
|
|
|
|
|
//这里是联单, 按所有订单计算 |
|
|
|
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = null; |
|
|
|
Integer jointCount = getJointCount(activityItem,recordList); |
|
|
|
if(jointCount != 0){ |
|
|
|
Map<Integer, WxOfflineActivityAwardsModel> jointCountMap = activityItem.getActivityAwardsModelSecondList().stream().collect(toMap(WxOfflineActivityAwardsModel::getMerchantCount, Function.identity())); |
|
|
|
@@ -497,27 +343,136 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
if(activityAwardsModel != null && activityAwardsModel.getAwardsGrade() != null){ |
|
|
|
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); |
|
|
|
if(awardsItem != null){ |
|
|
|
wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, EnumOfflineActivityAwardsModeType.COUNT,awardsItem); |
|
|
|
WxOfflineActivityGrantItem wxOfflineActivityGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
handlerGrantItem(wxOfflineActivityGrantItem,EnumOfflineActivityAwardsModeType.COUNT,activity,activityItem,awardsItem); |
|
|
|
grantItemList.add(wxOfflineActivityGrantItem); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// WxOfflineActivityGrantItem wxOfflineActivityGrantItem = grantItemMap.get(activityAwardsModel.getAwardsGrade()); |
|
|
|
// WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(activityAwardsModel.getAwardsGrade()); |
|
|
|
// if(wxOfflineActivityGrantItem != null){ |
|
|
|
// wxOfflineActivityGrantItem.setAwardCount(wxOfflineActivityGrantItem.getAwardCount() + 1); |
|
|
|
// wxOfflineActivityGrantItem.setAwardPrice(awardsItem.getPrice().multiply(new BigDecimal(wxOfflineActivityGrantItem.getAwardCount()))); |
|
|
|
// }else{ |
|
|
|
// if(awardsItem != null){ |
|
|
|
// wxOfflineActivityGrantItem = createGrantItemFromGrant(activityItem, awardsItem); |
|
|
|
// grantItemMap.put(activityAwardsModel.getAwardsGrade(), wxOfflineActivityGrantItem); |
|
|
|
// } |
|
|
|
// } |
|
|
|
activityItem.setActivityGrantItemList(grantItemList); |
|
|
|
} |
|
|
|
|
|
|
|
private void handleCashback(WxOfflineActivity activity, WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
List<WxOfflineActivityGrantItem> grantItemList = new ArrayList<>(); |
|
|
|
BigDecimal cashBackPriceTotal = BigDecimal.ZERO; |
|
|
|
|
|
|
|
if(activityItem.getActivityAwardsItemList() != null && !activityItem.getActivityAwardsItemList().isEmpty()){ |
|
|
|
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); |
|
|
|
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ |
|
|
|
for (WxOfflineActivityRecord record : recordList){ |
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = record.getOrderMoney().multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0 |
|
|
|
&& grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ |
|
|
|
cashBackPrice = grantAwardsItem.getLimitPrice(); |
|
|
|
} |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
grantAwardsItem.setPrice(cashBackPrice); |
|
|
|
|
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
grantGrantItem.setRecordId(record.getId()); |
|
|
|
grantGrantItem.setRecord(record); |
|
|
|
handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,grantAwardsItem); |
|
|
|
grantItemList.add(grantGrantItem); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
}else{ |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
|
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
|
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = orderMoneySum |
|
|
|
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
grantAwardsItem.setPrice(cashBackPrice); |
|
|
|
|
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,grantAwardsItem); |
|
|
|
grantItemList.add(grantGrantItem); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if(wxOfflineActivityGrantItem != null){ |
|
|
|
grantItem.add(wxOfflineActivityGrantItem); |
|
|
|
Integer jointCount = getJointCount(activityItem,recordList); |
|
|
|
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){ |
|
|
|
BigDecimal orderMoneySum = recordList.stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = orderMoneySum |
|
|
|
.multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
awardsSecondItem.setPrice(cashBackPrice); |
|
|
|
|
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.COUNT,activity,activityItem,awardsSecondItem); |
|
|
|
grantItemList.add(grantGrantItem); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
BigDecimal prop = BigDecimal.ONE; |
|
|
|
if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ |
|
|
|
prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); |
|
|
|
cashBackPriceTotal = activityItem.getMaxAmount(); |
|
|
|
} |
|
|
|
|
|
|
|
if(prop.compareTo(BigDecimal.ONE) < 0){ |
|
|
|
for (WxOfflineActivityGrantItem grantItem:grantItemList){ |
|
|
|
grantItem.setAwardPrice(awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule())); |
|
|
|
} |
|
|
|
} |
|
|
|
activityItem.setActivityGrantItemList(grantItem); |
|
|
|
activityItem.setActivityGrantItemList(grantItemList); |
|
|
|
|
|
|
|
WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); |
|
|
|
activityGrantCashBack.setActivityId(activity.getId()); |
|
|
|
activityGrantCashBack.setActivityName(activity.getName()); |
|
|
|
activityGrantCashBack.setActivityItemId(activityItem.getId()); |
|
|
|
activityGrantCashBack.setActivityItemName(activityItem.getName()); |
|
|
|
activityGrantCashBack.setActivityItemType(activityItem.getType()); |
|
|
|
activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); |
|
|
|
activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); |
|
|
|
activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); |
|
|
|
activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); |
|
|
|
activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); |
|
|
|
if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0 |
|
|
|
&& activityGrantCashBack.getTaxPoints() != null){ |
|
|
|
activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) |
|
|
|
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
activityItem.setActivityGrantCashBack(activityGrantCashBack); |
|
|
|
//实际展示返现金额 |
|
|
|
activityItem.setCashBackPrice(activityGrantCashBack.getCashBackPrice().subtract(activityGrantCashBack.getTaxPointsAmount())); |
|
|
|
} |
|
|
|
|
|
|
|
private Integer getJointCount(WxOfflineActivityItem activityItem, List<WxOfflineActivityRecord> recordList){ |
|
|
|
@@ -537,27 +492,29 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
return jointCount; |
|
|
|
} |
|
|
|
|
|
|
|
private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivityAwardsItem grantAwardsItem){ |
|
|
|
WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); |
|
|
|
grantItem.setGrantAwardsMode(modeType.getCode()); |
|
|
|
grantItem.setActivityItemId(activityItem.getId()); |
|
|
|
grantItem.setActivityItemName(activityItem.getName()); |
|
|
|
grantItem.setActivityItemType(activityItem.getType()); |
|
|
|
grantItem.setAwardItamId(grantAwardsItem.getId()); |
|
|
|
grantItem.setAwardName(grantAwardsItem.getName()); |
|
|
|
grantItem.setAwardGrade(grantAwardsItem.getGrade()); |
|
|
|
grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); |
|
|
|
grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); |
|
|
|
grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
grantItem.setAwardCount(1); |
|
|
|
grantItem.setAwardPrice(grantAwardsItem.getPrice()); |
|
|
|
grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); |
|
|
|
grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); |
|
|
|
grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); |
|
|
|
grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); |
|
|
|
grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); |
|
|
|
return grantItem; |
|
|
|
} |
|
|
|
// private WxOfflineActivityGrantItem createGrantItemFromGrant(WxOfflineActivityItem activityItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivityAwardsItem grantAwardsItem){ |
|
|
|
// WxOfflineActivityGrantItem grantItem = new WxOfflineActivityGrantItem(); |
|
|
|
// grantItem.setGrantAwardsMode(modeType.getCode()); |
|
|
|
// grantItem.setActivityId(activityItem.getActivityId()); |
|
|
|
//// grantItem.setActivityName(); |
|
|
|
// grantItem.setActivityItemId(activityItem.getId()); |
|
|
|
// grantItem.setActivityItemName(activityItem.getName()); |
|
|
|
// grantItem.setActivityItemType(activityItem.getType()); |
|
|
|
// grantItem.setAwardItamId(grantAwardsItem.getId()); |
|
|
|
// grantItem.setAwardName(grantAwardsItem.getName()); |
|
|
|
// grantItem.setAwardGrade(grantAwardsItem.getGrade()); |
|
|
|
// grantItem.setAwardMinAmount(grantAwardsItem.getMinAmount()); |
|
|
|
// grantItem.setAwardMaxAmount(grantAwardsItem.getMaxAmount()); |
|
|
|
// grantItem.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
// grantItem.setAwardCount(1); |
|
|
|
// grantItem.setAwardPrice(grantAwardsItem.getPrice()); |
|
|
|
// grantItem.setMoneyRule(grantAwardsItem.getMoneyRule()); |
|
|
|
// grantItem.setMallShareRate(grantAwardsItem.getMallShareRate()); |
|
|
|
// grantItem.setMallSharePrice(grantAwardsItem.getMallSharePrice()); |
|
|
|
// grantItem.setMerchantShareRate(grantAwardsItem.getMerchantShareRate()); |
|
|
|
// grantItem.setMerchantSharePrice(grantAwardsItem.getMerchantSharePrice()); |
|
|
|
// return grantItem; |
|
|
|
// } |
|
|
|
|
|
|
|
private WxOfflineActivityGrantCashBack getLastActivityGrantCashBack(WxOfflineActivityGrantAward wxOfflineActivityGrantAward,Long activityId,Long activityItemId){ |
|
|
|
Long grantId = wxOfflineActivityGrantAwardMapper.getLastId(wxOfflineActivityGrantAward); |
|
|
|
@@ -745,168 +702,19 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
if(awardsItem == null){ |
|
|
|
throw new MallinkException(Result.ERROR, "请检查活动"+activityItem.getName()+"奖项参数"); |
|
|
|
} |
|
|
|
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); |
|
|
|
handlerGrantItem(grantGrantItem,EnumOfflineActivityAwardsModeType.AMOUNT,activity,activityItem,awardsItem); |
|
|
|
} |
|
|
|
activityItem.setActivityGrantItemList(activityGrantItemList); |
|
|
|
|
|
|
|
} |
|
|
|
else if(EnumOfflineActivityType.GIFT.getCode().equals(activityItem.getType())){ |
|
|
|
handleGiftAwards(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
handleGiftAwards(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
if(activityItem.getActivityGrantItemList().isEmpty()){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { |
|
|
|
WxOfflineActivityAwardsItem awardsItem = awardsItemMap.get(grantGrantItem.getAwardItamId()); |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,awardsItem); |
|
|
|
} |
|
|
|
} |
|
|
|
else if (EnumOfflineActivityType.CASHBACK.getCode().equals(activityItem.getType())) { |
|
|
|
BigDecimal cashBackPriceTotal = BigDecimal.ZERO; |
|
|
|
activityGrantItemList = new ArrayList<>(); |
|
|
|
|
|
|
|
List<WxOfflineActivityAwardsItem> sortAwardsItemList = activityItem.getActivityAwardsItemList().stream().sorted(Comparator.comparing(WxOfflineActivityAwardsItem::getMinAmount)).collect(toList()); |
|
|
|
//单笔订单计算 |
|
|
|
if(EnumOfflineActivityMode.ONE.getCode().equals(activityItem.getModeType())){ |
|
|
|
for (WxOfflineActivityRecord record : activityItem.getRecordList()){ |
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || record.getOrderMoney().compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
grantGrantItem.setRecordId(record.getId()); |
|
|
|
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = record.getOrderMoney() |
|
|
|
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
if(grantAwardsItem.getLimitPrice() != null && grantAwardsItem.getLimitPrice().compareTo(BigDecimal.ZERO) > 0 |
|
|
|
&& grantAwardsItem.getLimitPrice().compareTo(cashBackPrice) < 0 ){ |
|
|
|
cashBackPrice = grantAwardsItem.getLimitPrice(); |
|
|
|
} |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) == 0){ |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
grantAwardsItem.setPrice(cashBackPrice); |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); |
|
|
|
|
|
|
|
activityGrantItemList.add(grantGrantItem); |
|
|
|
|
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
}else{ |
|
|
|
BigDecimal orderMoneySum = activityItem.getRecordList().stream().map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// if(EnumOfflineActivityMode.CONDITION_SUM.getCode().equals(activityItem.getModeType())){ |
|
|
|
// if(activityItem.getRecordIds() != null && !activityItem.getRecordIds().isEmpty()){ |
|
|
|
// orderMoneySum = wxOfflineActivityGrantAward.getRecordList().stream() |
|
|
|
// .filter(record -> activityItem.getRecordIds().contains(record.getId())) |
|
|
|
// .map(WxOfflineActivityRecord::getOrderMoney).reduce(BigDecimal.ZERO, BigDecimal::add); |
|
|
|
// }else{ |
|
|
|
// orderMoneySum = BigDecimal.ZERO; |
|
|
|
// } |
|
|
|
// } |
|
|
|
|
|
|
|
WxOfflineActivityAwardsItem grantAwardsItem = null; |
|
|
|
for(WxOfflineActivityAwardsItem awardsItem : sortAwardsItemList){ |
|
|
|
if((awardsItem.getMinAmount() == null || orderMoneySum.compareTo(awardsItem.getMinAmount()) >= 0) |
|
|
|
&& (awardsItem.getMaxAmount() == null || orderMoneySum.compareTo(awardsItem.getMaxAmount()) <= 0)){ |
|
|
|
grantAwardsItem = awardsItem; |
|
|
|
} |
|
|
|
} |
|
|
|
if(grantAwardsItem != null){ |
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.AMOUNT.getCode()); |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = orderMoneySum |
|
|
|
.multiply(grantAwardsItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
grantAwardsItem.setPrice(cashBackPrice); |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,grantAwardsItem); |
|
|
|
|
|
|
|
activityGrantItemList.add(grantGrantItem); |
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
Integer jointCount = getJointCount(activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
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){ |
|
|
|
WxOfflineActivityGrantItem grantGrantItem = new WxOfflineActivityGrantItem(); |
|
|
|
grantGrantItem.setGrantAwardsMode(EnumOfflineActivityAwardsModeType.COUNT.getCode()); |
|
|
|
//计算返现金额 |
|
|
|
BigDecimal cashBackPrice = wxOfflineActivityGrantAward.getOrderMoneySum() |
|
|
|
.multiply(awardsSecondItem.getCashBackRatio().divide(new BigDecimal(100))); |
|
|
|
cashBackPrice = awardsRulePrice(cashBackPrice,activityItem.getAwardsItemRule()); |
|
|
|
if(cashBackPrice.compareTo(BigDecimal.ZERO) > 0){ |
|
|
|
awardsSecondItem.setPrice(cashBackPrice); |
|
|
|
handlerGrantItem(grantGrantItem,activity,activityItem,awardsSecondItem); |
|
|
|
|
|
|
|
activityGrantItemList.add(grantGrantItem); |
|
|
|
cashBackPriceTotal = cashBackPriceTotal.add(cashBackPrice); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
BigDecimal prop = BigDecimal.ONE; |
|
|
|
if(cashBackPriceTotal.compareTo(activityItem.getMaxAmount()) >= 0){ |
|
|
|
prop = activityItem.getMaxAmount().divide(cashBackPriceTotal,4,RoundingMode.HALF_UP); |
|
|
|
cashBackPriceTotal = activityItem.getMaxAmount(); |
|
|
|
} |
|
|
|
// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// cashBackPriceTotal = cashBackPriceTotal.setScale(2, RoundingMode.HALF_UP); |
|
|
|
// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { |
|
|
|
// cashBackPriceTotal = cashBackPriceTotal.setScale(0, RoundingMode.HALF_UP); |
|
|
|
// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// cashBackPriceTotal = cashBackPriceTotal.divide(new BigDecimal(10)) |
|
|
|
// .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10)); |
|
|
|
// } |
|
|
|
if(prop.compareTo(BigDecimal.ONE) < 0){ |
|
|
|
for (WxOfflineActivityGrantItem grantItem:activityGrantItemList){ |
|
|
|
grantItem.setAwardPrice(awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule())); |
|
|
|
// awardsRulePrice(grantItem.getAwardPrice().multiply(prop),activityItem.getAwardsItemRule()); |
|
|
|
// if(EnumOfflineActivityAwardsRule.DEF.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
// } else if (EnumOfflineActivityAwardsRule.YUAN.getCode().equals(activityItem.getAwardsItemRule())) { |
|
|
|
// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).setScale(0, RoundingMode.HALF_UP)); |
|
|
|
// }else if (EnumOfflineActivityAwardsRule.TEN.getCode().equals(activityItem.getAwardsItemRule())){ |
|
|
|
// grantItem.setAwardPrice(grantItem.getAwardPrice().multiply(prop).divide(new BigDecimal(10)) |
|
|
|
// .setScale(0, RoundingMode.HALF_UP).multiply(new BigDecimal(10))); |
|
|
|
// } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
activityItem.setActivityGrantItemList(activityGrantItemList); |
|
|
|
|
|
|
|
WxOfflineActivityGrantCashBack activityGrantCashBack = new WxOfflineActivityGrantCashBack(); |
|
|
|
activityGrantCashBack.setActivityId(activity.getId()); |
|
|
|
activityGrantCashBack.setActivityName(activity.getName()); |
|
|
|
activityGrantCashBack.setActivityItemId(activityItem.getId()); |
|
|
|
activityGrantCashBack.setActivityItemName(activityItem.getName()); |
|
|
|
activityGrantCashBack.setActivityItemType(activityItem.getType()); |
|
|
|
activityGrantCashBack.setAwardsItemRule(activityItem.getAwardsItemRule()); |
|
|
|
activityGrantCashBack.setMaxAmount(activityItem.getMaxAmount()); |
|
|
|
activityGrantCashBack.setStartingTaxPoint(activityItem.getStartingTaxPoint()); |
|
|
|
activityGrantCashBack.setTaxPoints(activityItem.getTaxPoints()); |
|
|
|
activityGrantCashBack.setCashBackPrice(cashBackPriceTotal); |
|
|
|
activityGrantCashBack.setTaxPointsAmount(BigDecimal.ZERO); |
|
|
|
if(activityGrantCashBack.getStartingTaxPoint() != null && activityGrantCashBack.getCashBackPrice().compareTo(activityGrantCashBack.getStartingTaxPoint()) > 0 |
|
|
|
&& activityGrantCashBack.getTaxPoints() != null){ |
|
|
|
activityGrantCashBack.setTaxPointsAmount(activityGrantCashBack.getCashBackPrice().multiply(activityGrantCashBack.getTaxPoints()) |
|
|
|
.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_UP)); |
|
|
|
} |
|
|
|
activityItem.setActivityGrantCashBack(activityGrantCashBack); |
|
|
|
handleCashback(activity,activityItem,wxOfflineActivityGrantAward.getRecordList()); |
|
|
|
} |
|
|
|
|
|
|
|
for (WxOfflineActivityGrantItem grantGrantItem : activityItem.getActivityGrantItemList()) { |
|
|
|
@@ -914,14 +722,15 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
} |
|
|
|
} |
|
|
|
if(i == 0){ |
|
|
|
throw new MallinkException(Result.ERROR, "请检查是否有活动奖项"); |
|
|
|
throw new MallinkException(Result.ERROR, "请检查是否发奖"); |
|
|
|
} |
|
|
|
|
|
|
|
wxOfflineActivityGrantAward.setActivityItemList(activityItemList); |
|
|
|
} |
|
|
|
|
|
|
|
private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ |
|
|
|
private void handlerGrantItem(WxOfflineActivityGrantItem grantGrantItem,EnumOfflineActivityAwardsModeType modeType,WxOfflineActivity activity,WxOfflineActivityItem activityItem,WxOfflineActivityAwardsItem awardsItem){ |
|
|
|
// grantGrantItem.setGrantId(wxOfflineActivityGrantAward.getId()); |
|
|
|
grantGrantItem.setGrantAwardsMode(modeType.getCode()); |
|
|
|
grantGrantItem.setActivityId(activity.getId()); |
|
|
|
grantGrantItem.setActivityName(activity.getName()); |
|
|
|
grantGrantItem.setActivityItemId(activityItem.getId()); |
|
|
|
@@ -943,6 +752,11 @@ public class WxOfflineActivityGrantAwardServiceImpl implements WxOfflineActivity |
|
|
|
grantGrantItem.setMoneyRule(awardsItem.getMoneyRule()); |
|
|
|
grantGrantItem.setMallShareRate(awardsItem.getMallShareRate()); |
|
|
|
grantGrantItem.setMerchantShareRate(awardsItem.getMerchantShareRate()); |
|
|
|
|
|
|
|
grantGrantItem.setMallSharePrice(grantGrantItem.getAwardPrice() |
|
|
|
.multiply(grantGrantItem.getMallShareRate().divide(new BigDecimal(100))) |
|
|
|
.setScale(2, RoundingMode.HALF_UP)); |
|
|
|
grantGrantItem.setMerchantSharePrice(grantGrantItem.getAwardPrice().subtract(grantGrantItem.getMallSharePrice())); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|