mirror of
https://codeup.aliyun.com/67c68d4e484ca2f0a13ac3c1/ydc/jsowell-charger-web.git
synced 2026-05-04 01:50:17 +08:00
bugfix 余额支付退款时空指针异常
This commit is contained in:
@@ -1103,17 +1103,22 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
|
||||
|
||||
// 判断消费金额,如果消费金额 - 折扣金额小于 1 元,则将保险费也进行退回
|
||||
if (orderBasicInfo.getOrderAmount().subtract(orderBasicInfo.getDiscountAmount()).compareTo(BigDecimal.ONE) < 0) {
|
||||
// orderBasicInfoService.refundInsurance(orderBasicInfo);
|
||||
// 判断是否需要退保险费用
|
||||
boolean checkResult = orderBasicInfoService.checkRefundInsuranceAmount(orderBasicInfo);
|
||||
if (checkResult) {
|
||||
// 退保险, 计算退保金额
|
||||
// 退保险, 使用 calculateBalanceRefund 重新计算完整的退款金额(电费退款+保险费退款)
|
||||
// 注意:不能在 calculateReturnAmount 的基础上叠加保险费,因为 calculateReturnAmount 不感知保险费,
|
||||
// 算出的退款金额中已包含保险费部分,叠加会导致保险费被重复退还
|
||||
Map<String, BigDecimal> refundMap = calculateBalanceRefund(principalPay, giftPay, orderBasicInfo.getOrderAmount(), orderBasicInfo.getDiscountAmount(), orderBasicInfo.getInsuranceAmount());
|
||||
BigDecimal refundPrincipal = refundMap.get("returnPrincipal");
|
||||
BigDecimal refundGift = refundMap.get("returnGift");
|
||||
BigDecimal returnPrincipalForInsurance = refundMap.get("returnPrincipalForInsurance");
|
||||
BigDecimal returnGiftForInsurance = refundMap.get("returnGiftForInsurance");
|
||||
refundPrincipal = refundPrincipal == null ? BigDecimal.ZERO : refundPrincipal;
|
||||
refundGift = refundGift == null ? BigDecimal.ZERO : refundGift;
|
||||
|
||||
updateMemberBalanceDTO.setUpdatePrincipalBalance(returnPrincipal.add(returnPrincipalForInsurance));
|
||||
updateMemberBalanceDTO.setUpdateGiftBalance(returnGift.add(returnGiftForInsurance));
|
||||
updateMemberBalanceDTO.setUpdatePrincipalBalance(refundPrincipal.add(returnPrincipalForInsurance));
|
||||
updateMemberBalanceDTO.setUpdateGiftBalance(refundGift.add(returnGiftForInsurance));
|
||||
}
|
||||
}
|
||||
// 统一退款
|
||||
|
||||
Reference in New Issue
Block a user