| | |
| | | appUserClient.updateAppUser(appUser); |
| | | } |
| | | |
| | | |
| | | private void recordBalanceConsume(TChargingOrder chargingOrder, BigDecimal consumeAmount) { |
| | | if (chargingOrder == null || chargingOrder.getAppUserId() == null || chargingOrder.getId() == null |
| | | || consumeAmount == null || consumeAmount.compareTo(BigDecimal.ZERO) <= 0) { |
| | | return; |
| | | } |
| | | ExchangeCodeConsumeDTO consumeDTO = new ExchangeCodeConsumeDTO(); |
| | | consumeDTO.setUserId(chargingOrder.getAppUserId()); |
| | | consumeDTO.setOrderId(chargingOrder.getId()); |
| | | consumeDTO.setAmount(consumeAmount); |
| | | R<ExchangeCodeConsumeResultVO> result = otherClient.consumeExchangeCodeBalance(consumeDTO); |
| | | if (result == null || result.getCode() != 200) { |
| | | throw new RuntimeException("??????????"); |
| | | } |
| | | } |
| | | |
| | | 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) { |
| | |
| | | |
| | | if (thirdPayAmount.compareTo(BigDecimal.ZERO) == 0 && balancePayAmount.compareTo(BigDecimal.ZERO) > 0) { |
| | | changeUserBalance(userId, balancePayAmount.negate()); |
| | | recordBalanceConsume(chargingOrder, balancePayAmount); |
| | | } |
| | | if (thirdPayAmount.compareTo(BigDecimal.ZERO) == 0) { |
| | | return chargingOrderCallback(addChargingOrder.getPaymentType(), chargingOrder.getCode(), "BALANCE", null); |
| | |
| | | throw new RuntimeException("余额不足,支付回调处理失败"); |
| | | } |
| | | changeUserBalance(chargingOrder.getAppUserId(), money(chargingOrder.getBalancePayAmount()).negate()); |
| | | recordBalanceConsume(chargingOrder, money(chargingOrder.getBalancePayAmount())); |
| | | } |
| | | chargingOrder.setRechargePaymentStatus(2); |
| | | chargingOrder.setRechargeSerialNumber(transaction_id); |
| | |
| | | BigDecimal actualBalancePayAmount = money(chargingOrder.getBalancePayAmount()).subtract(balanceRefundAmount); |
| | | if (actualBalancePayAmount.compareTo(BigDecimal.ZERO) < 0) { |
| | | actualBalancePayAmount = BigDecimal.ZERO; |
| | | } |
| | | if (isBalancePayMode(chargingOrder.getPayMethod()) && chargingOrder.getAppUserId() != null |
| | | && actualBalancePayAmount.compareTo(BigDecimal.ZERO) > 0) { |
| | | ExchangeCodeConsumeDTO exchangeCodeConsumeDTO = new ExchangeCodeConsumeDTO(); |
| | | exchangeCodeConsumeDTO.setUserId(chargingOrder.getAppUserId()); |
| | | exchangeCodeConsumeDTO.setOrderId(chargingOrder.getId()); |
| | | exchangeCodeConsumeDTO.setAmount(actualBalancePayAmount); |
| | | otherClient.consumeExchangeCodeBalance(exchangeCodeConsumeDTO); |
| | | } |
| | | refundAmount = thirdRefundAmount.add(balanceRefundAmount); |
| | | chargingOrder.setBalanceRefundAmount(balanceRefundAmount.setScale(2, RoundingMode.HALF_UP)); |