mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-13 14:30:08 +08:00
校验分账金额方法
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()); // 新逻辑
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user