From a90216e174ae1b251ee582e7440eb7cee536e342 Mon Sep 17 00:00:00 2001 From: Lemon Date: Fri, 6 Jun 2025 15:32:46 +0800 Subject: [PATCH] =?UTF-8?q?bugfix=20=20=E4=BF=AE=E5=A4=8D=E5=81=B6?= =?UTF-8?q?=E5=B0=94=E5=87=BA=E7=8E=B0=E4=B8=8D=E4=BC=9A=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E9=80=80=E6=AC=BE=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/OrderBasicInfoServiceImpl.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java index 9893ffa8b..0c4c78955 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/OrderBasicInfoServiceImpl.java @@ -1923,7 +1923,7 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { public OrderSplitResult realTimeOrderSplit(AfterSettleOrderDTO afterSettleOrderDTO) throws BaseAdaPayException { // 查询订单信息 OrderBasicInfo orderBasicInfo = this.getOrderInfoByOrderCode(afterSettleOrderDTO.getOrderCode()); - afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo); + String payMode = orderBasicInfo.getPayMode(); // 校验订单支付金额,消费金额,退款金额 BigDecimal orderPayAmount = afterSettleOrderDTO.getOrderPayAmount(); // 支付金额 @@ -1932,31 +1932,35 @@ public class OrderBasicInfoServiceImpl implements OrderBasicInfoService { BigDecimal orderRefundAmount = afterSettleOrderDTO.getOrderRefundAmount(); // 退款金额 // 如果是白名单支付, 直接返回 - if (StringUtils.equals(orderBasicInfo.getPayMode(), "3")) { - logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode()); + if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WHITELIST.getValue())) { + logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 白名单支付不做处理", afterSettleOrderDTO.getOrderCode(), payMode); return null; } // 如果是余额支付, 校验消费金额 - 折扣金额 + 退款金额 = 支付金额 - if (StringUtils.equals(orderBasicInfo.getPayMode(), "1")) { + if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_PRINCIPAL_BALANCE.getValue())) { // 订单折扣金额 = 电费折扣金额 + 服务费折扣金额 BigDecimal orderDiscountAmount = afterSettleOrderDTO.getOrderElectricityDiscountAmount().add(afterSettleOrderDTO.getOrderServiceDiscountAmount()); if (orderConsumeAmount.subtract(orderDiscountAmount).add(orderRefundAmount).compareTo(orderPayAmount) != 0) { logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与消费金额({})-折扣金额({})+退款金额({})不相等", - afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount); + afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderConsumeAmount, orderDiscountAmount, orderRefundAmount); return null; } } // 如果是在线支付, 校验消费金额+ 退款金额 = 支付金额 - if (StringUtils.equals(orderBasicInfo.getPayMode(), "4") || StringUtils.equals(orderBasicInfo.getPayMode(), "5")) { + if (StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_WECHATPAY.getValue()) || StringUtils.equals(payMode, OrderPayModeEnum.PAYMENT_OF_ALIPAY.getValue())) { if (orderSettleAmount.add(orderRefundAmount).compareTo(orderPayAmount) != 0) { logger.info("realTimeOrderSplit-订单:{}, payMode:{}, 支付金额({})与结算金额({})+退款金额({})不相等", - afterSettleOrderDTO.getOrderCode(), orderBasicInfo.getPayMode(), orderPayAmount, orderSettleAmount, orderRefundAmount); + afterSettleOrderDTO.getOrderCode(), payMode, orderPayAmount, orderSettleAmount, orderRefundAmount); return null; } } + // 校验通过,将退款金额重新set(为了避免数据库的退款金额没有及时更新) + orderBasicInfo.setRefundAmount(orderRefundAmount); + afterSettleOrderDTO.setOrderBasicInfo(orderBasicInfo); + // 订单退款,汇付退款 try { refundMethod(afterSettleOrderDTO);