From f77c25900aac7231d006d8f4e08aaa12d72c62b4 Mon Sep 17 00:00:00 2001
From: cloudroam <cloudroam>
Date: 星期一, 28 十月 2024 16:21:39 +0800
Subject: [PATCH] add: 钱包供应商财务

---
 src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java |   25 ++++++++++++++++++-------
 1 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
index e6dd65d..9a6fbbe 100644
--- a/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
+++ b/src/main/java/com/mzl/flower/service/impl/wallet/WalletWithdrawRecordServiceImpl.java
@@ -238,7 +238,6 @@
             }
 
             //记录转账状态,定时任务定时获取状态并更新钱包交易记录表信息
-            walletBillRecordDO.setTransferDetailId(Constants.TRANSFER_STATUS.ACCEPTED.name());
             walletBillRecordMapper.insert(walletBillRecordDO);
             //不需要更新结算单了,此时提现的金额和计算单上的金额不一致
         }
@@ -246,13 +245,25 @@
         if (Constants.WALLET_APPROVE_STATE.REJECT.name().equals(walletWithdrawRecordDTO.getApproveState())) {
             //更新钱包
             Supplier s = supplierMapper.selectById(withdrawRecordDO.getSupplierId());
+
             WalletDO walletDO = walletService.getBySupplierId(s.getId());
-            if(!ObjectUtils.isEmpty(walletDO)){
-                //提现中金额:审核失败体现中金额扣减
-                walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(withdrawRecordDO.getAmount()));
-                //可提现金额:审核失败可提现金额增加
-                walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(withdrawRecordDO.getAmount()));
-                walletMapper.updateById(walletDO);
+            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)) {
+                            //提现中金额:审核失败体现中金额扣减
+                            walletDO.setWithdrawingAmount(walletDO.getWithdrawingAmount().subtract(withdrawRecordDO.getAmount()));
+                            //可提现金额:审核失败可提现金额增加
+                            walletDO.setWithdrawableAmount(walletDO.getWithdrawableAmount().add(withdrawRecordDO.getAmount()));
+                            walletMapper.updateById(walletDO);
+                        }
+                    } finally {
+                        lock.unlock();
+                    }
+                }
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
             }
         }
     }

--
Gitblit v1.9.3