From 5ed78846f18a51a66869b44491a53065b058549d Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Wed, 21 Jan 2026 18:27:35 +0800
Subject: [PATCH] 新增可取资金

---
 src/main/java/com/nq/service/impl/UserPositionServiceImpl.java |   20 ++++++++++++++++++++
 1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index a7d5d1f..5993506 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -106,6 +106,8 @@
     StockDzMapper stockDzMapper;
     @Autowired
     StockVipMapper stockVipMapper;
+    @Autowired
+    FundFlowMapper fundFlowMapper;
 
 
     @Transactional
@@ -779,6 +781,8 @@
         BigDecimal reckon_all = user_all_amt.add(all_profit);
         //修改用戶可用余額=當前可用余額+總盈虧+買入總金額+追加保證金
         BigDecimal reckon_enable = user_enable_amt.add(all_profit).add(freez_amt).add(userPosition.getMarginAdd());
+        //锁定提现金额
+        BigDecimal lockAmount = reckon_enable.subtract(user_enable_amt);
 
         log.info("用戶平倉後的總資金  = {} , 可用資金 = {}", reckon_all, reckon_enable);
         user.setUserAmt(reckon_all);
@@ -790,6 +794,18 @@
             log.error("用戶平倉】修改用戶金額出錯");
             throw new Exception("用戶平倉】修改用戶金額出錯");
         }
+        if (lockAmount.compareTo(BigDecimal.ZERO) > 0) {
+            Date date = new Date();
+            FundFlow fundFlow = new FundFlow();
+            fundFlow.setUserId(userPosition.getUserId());
+            fundFlow.setAmount(lockAmount);
+            fundFlow.setUsedAmount(BigDecimal.ZERO);
+            fundFlow.setWithdrawDate(DateTimeUtil.addDayAndGetZeroTime(date, 1));
+            fundFlow.setStatus(0);
+            fundFlow.setCreateTime(date);
+            fundFlowMapper.insert(fundFlow);
+        }
+
 
         UserCashDetail ucd = new UserCashDetail();
         ucd.setPositionId(userPosition.getId());
@@ -1985,6 +2001,10 @@
             userPosition.setStockCode(userStockSubscribe.getNewCode());
             userPosition.setStockName(userStockSubscribe.getNewName());
             userPosition.setStockGid(stockSubscribe.getStockType() + userStockSubscribe.getNewCode());
+            Stock stock = stockMapper.selectOne(new QueryWrapper<Stock>().eq("stock_code", userStockSubscribe.getNewCode()));
+            if (stock != null) {
+                userPosition.setStockGid(stock.getStockGid());
+            }
 
             userPosition.setBuyOrderId(GeneratePosition.getPositionId());
             userPosition.setBuyOrderTime(new Date());

--
Gitblit v1.9.3