update 保险金额分账

This commit is contained in:
Lemon
2025-09-08 15:57:16 +08:00
parent 5da6c5c2bb
commit 74b2f93db3

View File

@@ -1947,8 +1947,13 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode());
String payMode = orderBasicInfo.getPayMode();
// 校验订单支付金额,消费金额,退款金额
BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额
if (orderBasicInfo.getInsuranceAmount() != null) {
// 如果该笔订单保险金额不为空,则将支付金额 - 保险金额作为新的支付金额
orderPayAmount = orderPayAmount.subtract(orderBasicInfo.getInsuranceAmount());
}
BigDecimal orderConsumeAmount = afterSettleOrderDTO.getOrderConsumeAmount(); // 消费金额
BigDecimal orderSettleAmount = afterSettleOrderDTO.getOrderSettleAmount();
BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额
@@ -2008,6 +2013,8 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
*/
private List<PaymentInfo> getOrderPaymentInfoList(AfterSettleOrderDTO afterSettleOrderDTO) {
String orderCode = afterSettleOrderDTO.getOrderCode();
OrderBasicInfo orderBasicInfo = afterSettleOrderDTO.getOrderBasicInfo();
// 查询订单支付记录
List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
// 选出需要分账的支付id
@@ -2052,6 +2059,9 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
// 订单编号
String orderCode = afterSettleOrderDTO.getOrderCode();
// 订单信息
OrderBasicInfo orderBasicInfo = afterSettleOrderDTO.getOrderBasicInfo();
// 订单是否需要分账, 结算金额必须大于0
if (orderSettleAmount == null || orderSettleAmount.compareTo(BigDecimal.ZERO) <= 0) {
logger.info("realTimeOrderSplit-订单[{}]结算金额[{}]必须大于0", afterSettleOrderDTO.getOrderCode(), orderSettleAmount);
@@ -2175,6 +2185,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
@Override
public List<SplitData> calculationSplitDataList(List<StationSplitConfig> stationSplitConfigList, AfterSettleOrderDTO afterSettleOrderDTO) {
List<SplitData> resultList = Lists.newArrayList();
OrderBasicInfo orderBasicInfo = afterSettleOrderDTO.getOrderBasicInfo();
// totalElecSplitRatio和totalServiceSplitRatio 都等于100%, 才进行后续操作
boolean verifySplitConfig = stationSplitConfigService.verifySplitConfig(stationSplitConfigList);
@@ -2237,6 +2248,16 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return resultList;
}
// 如果保险金额不为空,新增一条分账信息
if (orderBasicInfo.getInsuranceAmount() != null) {
SplitData insuranceSplit = new SplitData();
insuranceSplit.setMemberId(Constants.ZERO);
insuranceSplit.setAmount(String.valueOf(orderBasicInfo.getInsuranceAmount()));
insuranceSplit.setFeeFlag(Constants.ZERO);
resultList.add(insuranceSplit);
}
return resultList;
}