liujie
2026-04-28 a4b9938d86ccbd870a49bf8ab3f03e62fdda82e1
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TChargingOrderServiceImpl.java
@@ -441,6 +441,23 @@
        appUser.setBalance(money(appUser.getBalance()).add(delta).setScale(2, RoundingMode.HALF_UP));
        appUserClient.updateAppUser(appUser);
    }
    private void recordBalanceRefund(TChargingOrder chargingOrder, BigDecimal refundAmount, String refundNo) {
        if (chargingOrder == null || chargingOrder.getAppUserId() == null || chargingOrder.getId() == null
                || refundAmount == null || refundAmount.compareTo(BigDecimal.ZERO) <= 0) {
            return;
        }
        ExchangeCodeConsumeDTO refundDTO = new ExchangeCodeConsumeDTO();
        refundDTO.setUserId(chargingOrder.getAppUserId());
        refundDTO.setOrderId(chargingOrder.getId());
        refundDTO.setAmount(refundAmount);
        refundDTO.setRefundNo(refundNo);
        R<ExchangeCodeConsumeResultVO> result = otherClient.refundExchangeCodeBalance(refundDTO);
        if (result == null || result.getCode() != 200) {
            throw new RuntimeException("??????????");
        }
    }
   @Override
   public AjaxResult paymentChargingOrder(AddChargingOrder addChargingOrder) {
      Long userId = tokenService.getLoginUserApplet().getUserId();
@@ -1145,6 +1162,7 @@
                    if (thirdRefundAmount.compareTo(BigDecimal.ZERO) == 0) {
                        if (balanceRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
                            changeUserBalance(chargingOrder.getAppUserId(), balanceRefundAmount);
                            recordBalanceRefund(chargingOrder, balanceRefundAmount, chargingOrderRefund.getRefundCode());
                        }
                        chargingOrderRefund.setRefundStatus(2);
                        chargingOrderRefund.setRefundSerialNumber("BALANCE");
@@ -1379,6 +1397,7 @@
                if (money(order.getBalanceRefundAmount()).compareTo(BigDecimal.ZERO) > 0) {
                    changeUserBalance(order.getAppUserId(), money(order.getBalanceRefundAmount()));
                    recordBalanceRefund(order, money(order.getBalanceRefundAmount()), one.getRefundCode());
                }
                TChargingOrder chargingOrder = new TChargingOrder();
                chargingOrder.setId(one.getChargingOrderId());
@@ -2976,6 +2995,10 @@
                        chargingOrderRefund.setPayAmount(rechargeAmount);
                        chargingOrderRefund.setRefundTime(LocalDateTime.now());
                        chargingOrderRefundService.save(chargingOrderRefund);
                        if (balanceRefundAmount.compareTo(BigDecimal.ZERO) > 0) {
                            changeUserBalance(chargingOrder.getAppUserId(), balanceRefundAmount);
                            recordBalanceRefund(chargingOrder, balanceRefundAmount, chargingOrderRefund.getRefundCode());
                        }
                        chargingOrder.setRefundStatus(2);
                        chargingOrder.setRefundTime(LocalDateTime.now());