|
@@ -47,7 +47,7 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
Date endDate = getYesnight();
|
|
Date endDate = getYesnight();
|
|
Date todayMidnight = getTodayMidnight(endDate);
|
|
Date todayMidnight = getTodayMidnight(endDate);
|
|
List<BotGroup> botGroups = handlerManager.getGroupRepository().findAllByAgentWarningThresholdOrPaymentWarningThresholdGreaterThanZero();
|
|
List<BotGroup> botGroups = handlerManager.getGroupRepository().findAllByAgentWarningThresholdOrPaymentWarningThresholdGreaterThanZero();
|
|
- List<BotGroup> mchGroups = botGroups.stream().filter(botGroup -> Constant.DATA_TYPE_MERCHANT.equals(botGroup.getDataType())).collect(Collectors.toList());
|
|
|
|
|
|
+ List<BotGroup> mchGroups = botGroups.stream().filter(botGroup -> DATA_TYPE_MERCHANT.equals(botGroup.getDataType())).collect(Collectors.toList());
|
|
if (!mchGroups.isEmpty()) {
|
|
if (!mchGroups.isEmpty()) {
|
|
List<Long> mchIds = mchGroups.stream().map(BotGroup::getDataId).collect(Collectors.toList());
|
|
List<Long> mchIds = mchGroups.stream().map(BotGroup::getDataId).collect(Collectors.toList());
|
|
List<MchAccount> mchAccounts = handlerManager.getMchAccountRepository().findByMchIds(mchIds);
|
|
List<MchAccount> mchAccounts = handlerManager.getMchAccountRepository().findByMchIds(mchIds);
|
|
@@ -157,7 +157,7 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
Date endDate = getYesnight();
|
|
Date endDate = getYesnight();
|
|
Date todayMidnight = getTodayMidnight(endDate);
|
|
Date todayMidnight = getTodayMidnight(endDate);
|
|
List<BotGroup> botGroups = handlerManager.getGroupRepository().findAllByAgentWarningThresholdOrPaymentWarningThresholdGreaterThanZero();
|
|
List<BotGroup> botGroups = handlerManager.getGroupRepository().findAllByAgentWarningThresholdOrPaymentWarningThresholdGreaterThanZero();
|
|
- List<BotGroup> mchGroups = botGroups.stream().filter(botGroup -> Constant.DATA_TYPE_CHANNEL.equals(botGroup.getDataType())).collect(Collectors.toList());
|
|
|
|
|
|
+ List<BotGroup> mchGroups = botGroups.stream().filter(botGroup -> DATA_TYPE_CHANNEL.equals(botGroup.getDataType())).collect(Collectors.toList());
|
|
if (!mchGroups.isEmpty()) {
|
|
if (!mchGroups.isEmpty()) {
|
|
List<Long> mchIds = mchGroups.stream().map(BotGroup::getDataId).collect(Collectors.toList());
|
|
List<Long> mchIds = mchGroups.stream().map(BotGroup::getDataId).collect(Collectors.toList());
|
|
List<PayPassage> mchAccounts = handlerManager.getPassageRepository().findByPassageIds(mchIds);
|
|
List<PayPassage> mchAccounts = handlerManager.getPassageRepository().findByPassageIds(mchIds);
|
|
@@ -224,7 +224,6 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
private boolean SettlementMch(BotMessage message, BotGroup mchGroup, List<PayOrder> payOrderList, Date todayMidnight, Date endDate) {
|
|
private boolean SettlementMch(BotMessage message, BotGroup mchGroup, List<PayOrder> payOrderList, Date todayMidnight, Date endDate) {
|
|
|
|
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
@@ -240,18 +239,18 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
// 扣除手续费后的总跑量
|
|
// 扣除手续费后的总跑量
|
|
BigDecimal totalAmountByMchRate = payOrderList.stream()
|
|
BigDecimal totalAmountByMchRate = payOrderList.stream()
|
|
.map(order -> BigDecimal.ONE
|
|
.map(order -> BigDecimal.ONE
|
|
- .subtract(order.getMchRate().movePointLeft(Constant.AMOUNT_MOVE_POINT))
|
|
|
|
|
|
+ .subtract(order.getMchRate().movePointLeft(AMOUNT_MOVE_POINT))
|
|
.multiply(order.getAmount()))
|
|
.multiply(order.getAmount()))
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
stringBuilder.append(DateUtil.formatDate(endDate)).append("账单,请核对:\n");
|
|
stringBuilder.append(DateUtil.formatDate(endDate)).append("账单,请核对:\n");
|
|
- stringBuilder.append("总跑量: ").append(totalAmount.movePointLeft(Constant.AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
+ stringBuilder.append("总跑量: ").append(totalAmount.movePointLeft(AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
stringBuilder.append("成功笔数: ").append(totalOrders).append("\n");
|
|
stringBuilder.append("成功笔数: ").append(totalOrders).append("\n");
|
|
- stringBuilder.append("扣除手续费总跑量: ").append(totalAmountByMchRate.movePointLeft(Constant.AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
+ stringBuilder.append("扣除手续费总跑量: ").append(totalAmountByMchRate.movePointLeft(AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
// 扣除金额(手续费)
|
|
// 扣除金额(手续费)
|
|
// 下发金额 = 总跑量 - 手续费
|
|
// 下发金额 = 总跑量 - 手续费
|
|
- BigDecimal deductionAmount = totalAmountByMchRate.movePointLeft(Constant.AMOUNT_MOVE_POINT);
|
|
|
|
|
|
+ BigDecimal deductionAmount = totalAmountByMchRate.movePointLeft(AMOUNT_MOVE_POINT);
|
|
|
|
|
|
|
|
|
|
// ================= 按费率分组汇总 =================
|
|
// ================= 按费率分组汇总 =================
|
|
@@ -270,7 +269,7 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
|
|
|
|
stringBuilder.append("费率").append(mchRate.doubleValue())
|
|
stringBuilder.append("费率").append(mchRate.doubleValue())
|
|
.append(": ")
|
|
.append(": ")
|
|
- .append(amount.movePointLeft(Constant.AMOUNT_MOVE_POINT).doubleValue())
|
|
|
|
|
|
+ .append(amount.movePointLeft(AMOUNT_MOVE_POINT).doubleValue())
|
|
.append("\n");
|
|
.append("\n");
|
|
});
|
|
});
|
|
|
|
|
|
@@ -356,18 +355,18 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
// 扣除手续费后的总跑量
|
|
// 扣除手续费后的总跑量
|
|
BigDecimal totalAmountByMchRate = payOrderList.stream()
|
|
BigDecimal totalAmountByMchRate = payOrderList.stream()
|
|
.map(order -> BigDecimal.ONE
|
|
.map(order -> BigDecimal.ONE
|
|
- .subtract(order.getMchRate().movePointLeft(Constant.AMOUNT_MOVE_POINT))
|
|
|
|
|
|
+ .subtract(order.getPayPassageRate().movePointLeft(AMOUNT_MOVE_POINT))
|
|
.multiply(order.getAmount()))
|
|
.multiply(order.getAmount()))
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
.reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- stringBuilder.append(DateUtil.formatDate(endDate)).append("账单,请核对:\n");
|
|
|
|
- stringBuilder.append("总跑量: ").append(totalAmount.movePointLeft(Constant.AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
+ stringBuilder.append(DateUtil.formatDate(endDate)).append("【" + mchGroup.getDataName() + "】账单,请核对:\n");
|
|
|
|
+ stringBuilder.append("总跑量: ").append(totalAmount.movePointLeft(AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
stringBuilder.append("成功笔数: ").append(totalOrders).append("\n");
|
|
stringBuilder.append("成功笔数: ").append(totalOrders).append("\n");
|
|
- stringBuilder.append("扣除手续费总跑量: ").append(totalAmountByMchRate.movePointLeft(Constant.AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
+ stringBuilder.append("扣除手续费总跑量: ").append(totalAmountByMchRate.movePointLeft(AMOUNT_MOVE_POINT).doubleValue()).append("\n");
|
|
|
|
|
|
// 扣除金额(手续费)
|
|
// 扣除金额(手续费)
|
|
// 下发金额 = 总跑量 - 手续费
|
|
// 下发金额 = 总跑量 - 手续费
|
|
- BigDecimal deductionAmount = totalAmountByMchRate.movePointLeft(Constant.AMOUNT_MOVE_POINT);
|
|
|
|
|
|
+ BigDecimal deductionAmount = totalAmountByMchRate.movePointLeft(AMOUNT_MOVE_POINT);
|
|
|
|
|
|
// ================= 发送账单 =================
|
|
// ================= 发送账单 =================
|
|
SendMessage sendMessage = new SendMessage(mchGroup.getGroupId(), stringBuilder.toString());
|
|
SendMessage sendMessage = new SendMessage(mchGroup.getGroupId(), stringBuilder.toString());
|
|
@@ -378,20 +377,29 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
} else {
|
|
} else {
|
|
// ================= 更新商户账本 =================
|
|
// ================= 更新商户账本 =================
|
|
BotAccountBook accountBook = handlerManager.getAccountBookRepository()
|
|
BotAccountBook accountBook = handlerManager.getAccountBookRepository()
|
|
- .findByBelongIdAndType(mchGroup.getDataId(), DATA_TYPE_MERCHANT);
|
|
|
|
|
|
+ .findByBelongIdAndType(mchGroup.getDataId(), DATA_TYPE_CHANNEL);
|
|
|
|
|
|
if (accountBook == null) {
|
|
if (accountBook == null) {
|
|
accountBook = new BotAccountBook();
|
|
accountBook = new BotAccountBook();
|
|
accountBook.setBelongId(mchGroup.getDataId());
|
|
accountBook.setBelongId(mchGroup.getDataId());
|
|
- accountBook.setType(DATA_TYPE_MERCHANT);
|
|
|
|
|
|
+ accountBook.setType(DATA_TYPE_CHANNEL);
|
|
accountBook.setPaymentBalance(0);
|
|
accountBook.setPaymentBalance(0);
|
|
accountBook.setAgentBalance(0);
|
|
accountBook.setAgentBalance(0);
|
|
handlerManager.getAccountBookRepository().save(accountBook);
|
|
handlerManager.getAccountBookRepository().save(accountBook);
|
|
}
|
|
}
|
|
|
|
|
|
log.info("一键结算发送消息成功, 群组ID: {}, 结算记录: {}", mchGroup.getGroupId(), stringBuilder.toString());
|
|
log.info("一键结算发送消息成功, 群组ID: {}, 结算记录: {}", mchGroup.getGroupId(), stringBuilder.toString());
|
|
-
|
|
|
|
- double oldPaymentBalance = accountBook.getPaymentBalance();
|
|
|
|
|
|
+ //查询总下发
|
|
|
|
+ BotAccountBook accountBookAll = handlerManager.getAccountBookRepository()
|
|
|
|
+ .findByBelongIdAndType(mchGroup.getGroupId(), DATA_TYPE_CHANNEL);
|
|
|
|
+ List<BotGroup> botGroups = this.handlerManager.getGroupRepository().findAllByGroupIdAndDataType(mchGroup.getGroupId(), DATA_TYPE_CHANNEL);
|
|
|
|
+ double oldPaymentBalance = 0;
|
|
|
|
+ for (BotGroup botGroup : botGroups) {
|
|
|
|
+ BotAccountBook accountBookchannl = handlerManager.getAccountBookRepository()
|
|
|
|
+ .findByBelongIdAndType(botGroup.getDataId(), DATA_TYPE_CHANNEL);
|
|
|
|
+ oldPaymentBalance += accountBookchannl.getPaymentBalance();
|
|
|
|
+ }
|
|
|
|
+ oldPaymentBalance += accountBookAll.getPaymentBalance();
|
|
double newPaymentBalance = BigDecimal.valueOf(oldPaymentBalance)
|
|
double newPaymentBalance = BigDecimal.valueOf(oldPaymentBalance)
|
|
.subtract(deductionAmount).doubleValue();
|
|
.subtract(deductionAmount).doubleValue();
|
|
|
|
|
|
@@ -402,8 +410,9 @@ public class MerchantOneClickSettlementHandler extends AbstractHandler {
|
|
try {
|
|
try {
|
|
UpdateBalance updateMerchantPaymentBalance = new UpdateBalance();
|
|
UpdateBalance updateMerchantPaymentBalance = new UpdateBalance();
|
|
updateMerchantPaymentBalance.setId(accountBook.getId());
|
|
updateMerchantPaymentBalance.setId(accountBook.getId());
|
|
- updateMerchantPaymentBalance.setOldBalance(oldPaymentBalance);
|
|
|
|
- updateMerchantPaymentBalance.setNewBalance(newPaymentBalance);
|
|
|
|
|
|
+ updateMerchantPaymentBalance.setOldBalance(accountBook.getPaymentBalance());
|
|
|
|
+ updateMerchantPaymentBalance.setNewBalance(BigDecimal.valueOf(accountBook.getPaymentBalance())
|
|
|
|
+ .subtract(deductionAmount).doubleValue());
|
|
updateMerchantPaymentBalance.setAmount(deductionAmount.doubleValue());
|
|
updateMerchantPaymentBalance.setAmount(deductionAmount.doubleValue());
|
|
updateMerchantPaymentBalance.setMessage(botMessage);
|
|
updateMerchantPaymentBalance.setMessage(botMessage);
|
|
|
|
|