| | |
| | | if ("SUCCESS".equals(dStatus)) { |
| | | walletBillRecordDO.setTransferState(Constants.SETTLEMENT_STATUS.COMPLETED.name()); |
| | | walletBillRecordDO.update("sys"); |
| | | walletBillRecordDO.setRemark("微信商户转账成功"); |
| | | walletBillRecordMapper.updateById(walletBillRecordDO); |
| | | //更新钱包 |
| | | WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId()); |
| | | RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId())); |
| | | try { |
| | | if (lock.tryLock(10, 30, TimeUnit.SECONDS)) { |
| | | try { |
| | | if (!ObjectUtils.isEmpty(walletDO)) { |
| | | WalletBillRecordDO walletBillRecordDO2 = new WalletBillRecordDO(); |
| | | walletBillRecordDO2.setId(UUIDGenerator.getUUID()); |
| | | walletBillRecordDO2.setSupplierId(walletDO.getSupplierId()); |
| | | walletBillRecordDO2.setWalletId(walletDO.getId()); |
| | | walletBillRecordDO2.setType(Constants.BILL_CHANGE_TYPE.withdraw.name()); |
| | | // 发起提现 |
| | | walletBillRecordDO2.setWithdrawType(Constants.BILL_WITHDRAW_TYPE.success.name()); |
| | | walletBillRecordDO2.setMethod(Constants.BILL_CHANGE_METHOD.reduce.name()); |
| | | walletBillRecordDO2.setOriginalAmount(walletDO.getWithdrawableAmount()); |
| | | walletBillRecordDO2.setChangeAmount(BigDecimal.ZERO); |
| | | walletBillRecordDO2.setBalance(walletDO.getWithdrawableAmount()); |
| | | walletBillRecordDO2.create(SecurityUtils.getUserId()); |
| | | walletBillRecordDO.setId(UUIDGenerator.getUUID()); |
| | | // 保存账单明细 |
| | | walletBillRecordService.save(walletBillRecordDO); |
| | | //提现中金额:减少提现中金额 |
| | | walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount())); |
| | | //已提现金额:增加已提现金额 |
| | | walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount())); |
| | | walletMapper.updateById(walletDO); |
| | | } |
| | | } finally { |
| | | lock.unlock(); |
| | | } |
| | | } |
| | | } catch (InterruptedException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | // WalletDO walletDO = walletService.getOrCreateBySupplierId(walletBillRecordDO.getWalletId()); |
| | | // RLock lock = redissonClient.getLock(String.format(LockConstants.WALLET_ID_KEY, walletDO.getId())); |
| | | // try { |
| | | // if (lock.tryLock(10, 30, TimeUnit.SECONDS)) { |
| | | // try { |
| | | // if (!ObjectUtils.isEmpty(walletDO)) { |
| | | // WalletBillRecordDO walletBillRecordDO2 = new WalletBillRecordDO(); |
| | | // walletBillRecordDO2.setId(UUIDGenerator.getUUID()); |
| | | // walletBillRecordDO2.setSupplierId(walletDO.getSupplierId()); |
| | | // walletBillRecordDO2.setWalletId(walletDO.getId()); |
| | | // walletBillRecordDO2.setType(Constants.BILL_CHANGE_TYPE.withdraw.name()); |
| | | // // 发起提现 |
| | | // walletBillRecordDO2.setWithdrawType(Constants.BILL_WITHDRAW_TYPE.success.name()); |
| | | // walletBillRecordDO2.setMethod(Constants.BILL_CHANGE_METHOD.reduce.name()); |
| | | // walletBillRecordDO2.setOriginalAmount(walletDO.getWithdrawableAmount()); |
| | | // walletBillRecordDO2.setChangeAmount(BigDecimal.ZERO); |
| | | // walletBillRecordDO2.setBalance(walletDO.getWithdrawableAmount()); |
| | | // walletBillRecordDO2.create(SecurityUtils.getUserId()); |
| | | // walletBillRecordDO.setId(UUIDGenerator.getUUID()); |
| | | // // 保存账单明细 |
| | | // walletBillRecordService.save(walletBillRecordDO); |
| | | // //提现中金额:减少提现中金额 |
| | | // walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(walletBillRecordDO.getChangeAmount())); |
| | | // //已提现金额:增加已提现金额 |
| | | // walletDO.setWithdrawnAmount(walletDO.getWithdrawnAmount().add(walletBillRecordDO.getChangeAmount())); |
| | | // walletMapper.updateById(walletDO); |
| | | // } |
| | | // } finally { |
| | | // lock.unlock(); |
| | | // } |
| | | // } |
| | | // } catch (InterruptedException e) { |
| | | // throw new RuntimeException(e); |
| | | // } |
| | | //回写提现状态 |
| | | if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) { |
| | | WalletWithdrawRecordDO withdrawRecordDO = walletWithdrawRecordMapper.selectById(walletBillRecordDO.getWithdrawRecordId()); |
| | | withdrawRecordDO.setWithdrawState(Constants.BILL_WITHDRAW_TYPE.success.name()); |
| | | walletBillRecordDO.setRemark("账户资金提现完成"); |
| | | walletBillRecordDO.setRemark("微信商户转账成功"); |
| | | walletWithdrawRecordMapper.updateById(withdrawRecordDO); |
| | | } |
| | | |
| | |
| | | walletBillRecordDO2.setBalance(walletDO.getWithdrawableAmount().add(walletBillRecordDO.getActualTransferAmount())); |
| | | walletBillRecordDO2.create(SecurityUtils.getUserId()); |
| | | walletBillRecordDO.setId(UUIDGenerator.getUUID()); |
| | | walletBillRecordDO.setRemark("微信商户转账失败,余额返还钱包"); |
| | | // 保存账单明细 |
| | | walletBillRecordService.save(walletBillRecordDO); |
| | | //提现中金额:减少提现中金额 |
| | |
| | | if (StringUtils.isEmpty(walletBillRecordDO.getWithdrawRecordId())) { |
| | | WalletWithdrawRecordDO withdrawRecordDO = walletWithdrawRecordMapper.selectById(walletBillRecordDO.getWithdrawRecordId()); |
| | | withdrawRecordDO.setWithdrawState(Constants.BILL_WITHDRAW_TYPE.fail.name()); |
| | | walletBillRecordDO.setRemark("账户资金提现失败"); |
| | | walletBillRecordDO.setRemark("微信商户转账失败,余额返还钱包"); |
| | | walletWithdrawRecordMapper.updateById(withdrawRecordDO); |
| | | } |
| | | } |
| | |
| | | page.setRecords(list); |
| | | return page; |
| | | } |
| | | |
| | | @Override |
| | | public WalletBillRecordDO getBillRecordByWithdrawRecordId(Long withdrawRecordId) { |
| | | return walletBillRecordMapper.getBillRecordByWithdrawRecordId(withdrawRecordId); |
| | | } |
| | | } |