Эх сурвалжийг харах

提现失败自动补偿一次

wujiefeng 9 сар өмнө
parent
commit
c18e158d78

+ 7 - 5
RewardServer/src/main/java/com/zhongshu/reward/server/core/service/WxTransferService.java

@@ -43,6 +43,7 @@ import java.time.LocalDateTime;
 import java.time.temporal.TemporalAdjuster;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
+import java.util.concurrent.locks.ReentrantLock;
 import java.util.stream.Collectors;
 
 /**
@@ -80,13 +81,14 @@ public class WxTransferService {
     @Autowired
     DBHelper dbHelper;
 
+//    private final ReentrantLock lock = new ReentrantLock();
 
     /**
      * 发起提现
      * @param param
      * @return
      */
-//    @Transactional
+    @Transactional
     public ResultContent transfer(WalletTransferParam param){
         String userId = authHelper.getCurrentUser().getUserId();
         OperateDisable operateDisable = operateDisableDao.findTopByUserIdAndType(userId, OperateType.TRANSFER);
@@ -97,7 +99,6 @@ public class WxTransferService {
                 operateDisableDao.delete(operateDisable);
             }
         }
-
         Wallet wallet = walletDao.findTop1ById(param.getWalletId());
         //校验提现规则
         validTransfer(param.getTotal(), wallet);
@@ -142,7 +143,7 @@ public class WxTransferService {
             wxTransferBatch.setFailReason("提现失败请一小时后再次尝试");
             wxTransferBatchDao.save(wxTransferBatch);
             //失败做一次补偿
-            return transfer(param);
+            return ResultContent.build(ResultState.Fail);
         }
 //        wxTransferBatch.setBatchNo(outBatchNo);
 //        wxTransferBatch.setDetailNo(outDetailNo);
@@ -155,8 +156,9 @@ public class WxTransferService {
         wxTransferBatch.setTransferStatus(TransferStatus.PROCESSING);
         wxTransferBatchDao.save(wxTransferBatch);
 
-        wallet.setAmount(wallet.getAmount().subtract(param.getTotal()));
-        wallet.setTodayTransferAmount(wallet.getTodayTransferAmount().add(param.getTotal()));
+        Wallet currentWallet = walletDao.findTop1ById(param.getWalletId());
+        wallet.setAmount(currentWallet.getAmount().subtract(param.getTotal()));
+        wallet.setTodayTransferAmount(currentWallet.getTodayTransferAmount().add(param.getTotal()));
         walletDao.save(wallet);
         return ResultContent.build(ResultState.Success);
     }