| | |
| | | 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(); |
| | |
| | | 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"); |
| | |
| | | |
| | | 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()); |
| | |
| | | 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()); |