校验分账金额方法

This commit is contained in:
Guoqs
2025-04-16 14:10:36 +08:00
parent fd4287bdf2
commit c2821c11d9
2 changed files with 25 additions and 24 deletions

View File

@@ -1055,5 +1055,9 @@ public class TempService {
logger.info("retrySplittingMethod, afterSettleOrderDTO:{}", JSON.toJSONString(afterSettleOrderDTO)); logger.info("retrySplittingMethod, afterSettleOrderDTO:{}", JSON.toJSONString(afterSettleOrderDTO));
orderBasicInfoService.splittingMethod(afterSettleOrderDTO); orderBasicInfoService.splittingMethod(afterSettleOrderDTO);
} }
/**
*
*/
} }

View File

@@ -1957,33 +1957,31 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
} }
/** /**
* 校验金额方法 * 校验分账金额方法
*/ */
private boolean verifyOrderAllAmount(AfterSettleOrderDTO afterSettleOrderDTO) { private boolean verifyOrderAllAmount(AfterSettleOrderDTO afterSettleOrderDTO) {
/* String orderCode = afterSettleOrderDTO.getOrderCode();
订单相关的所有金额需要满足一下规则 // 查询订单支付记录
订单总消费金额 = 订单总电费金额 + 订单总服务费金额 List<OrderPayRecord> orderPayRecordList = orderPayRecordService.getOrderPayRecordList(orderCode);
// 选出需要分账的支付id
实际消费电费金额 = 订单总电费金额 - 电费优惠金额 List<PaymentInfo> paymentInfos = Lists.newArrayList();
for (OrderPayRecord orderPayRecord : orderPayRecordList) {
实际消费服务费金额 = 订单总服务费金额 - 服务费优惠金额 BigDecimal payAmount = orderPayRecord.getPayAmount();
BigDecimal refundAmount = orderPayRecord.getRefundAmount() == null ? BigDecimal.ZERO : orderPayRecord.getRefundAmount();
订单总优惠金额 = 电费优惠金额 + 服务费优惠金额 // 如果相减等于0说明这笔支付单退完了就不用分账了
BigDecimal subtract = payAmount.subtract(refundAmount);
订单实际消费金额 = 订单总消费金额 - 订单总优惠金额 if (subtract.compareTo(BigDecimal.ZERO) > 0) {
paymentInfos.addAll(orderPayRecordService.parseDeductionRecord(orderPayRecord.getDeductionRecord()));
实际消费总金额 = 订单总消费金额 - 订单总优惠金额 } else {
logger.info("realTimeOrderSplit-订单:{}, 支付记录:{}, 支付金额({})与退款金额({})相等,不需要分账", orderCode, orderPayRecord.getPaymentId(), payAmount, refundAmount);
订单退款金额 = 订单支付金额 - 实际消费总金额 }
}
订单结算金额 = 实际消费电费金额 + 实际消费服务费金额 logger.info("根据订单号:{}, 查询出{}笔支付信息, 需要分账的支付信息为:{}", orderCode, paymentInfos.size(), JSON.toJSONString(paymentInfos));
*/
return true; return true;
} }
/** /**
* 实时分账方法 * 实时分账方法/新分账方法
* @param afterSettleOrderDTO * @param afterSettleOrderDTO
*/ */
@Override @Override
@@ -2003,7 +2001,6 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
return null; return null;
} }
// 校验分账 // 校验分账
verifyOrderAllAmount(afterSettleOrderDTO); verifyOrderAllAmount(afterSettleOrderDTO);
// 根据站点id查询分账配置(如果未配置则初始化) // 根据站点id查询分账配置(如果未配置则初始化)
@@ -2230,13 +2227,13 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService {
} }
/** /**
* 执行订单退款 * 执行订单退款/新退款方法
*/ */
private void refundMethod(AfterSettleOrderDTO afterSettleOrderDTO) { private void refundMethod(AfterSettleOrderDTO afterSettleOrderDTO) {
// 退款 // 退款
String mode = pileMerchantInfoService.getDelayModeByMerchantId(afterSettleOrderDTO.getMerchantId()); String mode = pileMerchantInfoService.getDelayModeByMerchantId(afterSettleOrderDTO.getMerchantId());
AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode); AbstractProgramLogic orderLogic = ProgramLogicFactory.getProgramLogic(mode);
orderLogic.refundOrder(afterSettleOrderDTO.getOrderBasicInfo()); orderLogic.refundOrder(afterSettleOrderDTO.getOrderBasicInfo()); // 新逻辑
} }
/** /**