From 665c763cb07deb261cf4fa62c6eb574aec1d816a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Mon, 30 Dec 2024 14:03:05 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java |   35 ++++++++++++++++++++++++++---------
 1 files changed, 26 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
index 2132ef0..6cd9324 100644
--- a/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserWithdrawServiceImpl.java
@@ -241,6 +241,7 @@
                 return ServerResponse.createByErrorMsg("用户资金账户不存在");
             }
             userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
             int updateUserCount = userAssetsMapper.updateById(userAssets);
 
             if (updateUserCount > 0) {
@@ -329,6 +330,7 @@
     }
 
 
+    @Transactional
     public ServerResponse updateState(Integer withId, Integer state, String authMsg) throws Exception {
         UserWithdraw userWithdraw = this.userWithdrawMapper.selectByPrimaryKey(withId);
         SiteSetting siteSetting = siteSettingService.getSiteSetting();
@@ -342,18 +344,29 @@
         if (state.intValue() == 3 &&
                 StringUtils.isBlank(authMsg)) {
             return ServerResponse.createByErrorMsg("失败信息必填");
-
+        }
+        User user = this.userMapper.selectById(userWithdraw.getUserId());
+        if (user == null) {
+            return ServerResponse.createByErrorMsg("用户不存在");
+        }
+        UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
+        if (userAssets == null) {
+            return ServerResponse.createByErrorMsg("用户资金账户不存在");
         }
         if (state == 3) {
-            User user = this.userMapper.selectById(userWithdraw.getUserId());
-            if (user == null) {
-                return ServerResponse.createByErrorMsg("用户不存在");
+            if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+                BigDecimal subtract = userWithdraw.getWithAmt().subtract(userAssets.getAmountToBeCovered());
+                if(subtract.compareTo(BigDecimal.ZERO) > 0){
+                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(subtract));
+                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(subtract));
+                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+                }else{
+                    userAssets.setAmountToBeCovered(userAssets.getAmountToBeCovered().subtract(userWithdraw.getWithAmt()));
+                }
+            }else{
+                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
+                userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
             }
-            UserAssets userAssets = iUserAssetsServices.assetsByTypeAndUserId("IN", user.getId());
-            if (userAssets == null) {
-                return ServerResponse.createByErrorMsg("用户资金账户不存在");
-            }
-            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(userWithdraw.getWithAmt()));
             int updateCount = userAssetsMapper.updateById(userAssets);
             if (updateCount > 0) {
                 log.info("提现失败,返还用户资金成功!");
@@ -362,7 +375,11 @@
                 throw new Exception("修改用户资金出错,抛出异常");
             }
             userWithdraw.setWithMsg(authMsg);
+        }else{
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(userWithdraw.getWithAmt()));
+            userAssetsMapper.updateById(userAssets);
         }
+
         userWithdraw.setWithStatus(state);
         userWithdraw.setTransTime(new Date());
         int updateCount = this.userWithdrawMapper.updateByPrimaryKeySelective(userWithdraw);

--
Gitblit v1.9.3