From 0dd4d58348ea76cb24bbe3b862fec6ebbd35b78a Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Fri, 23 Jan 2026 12:40:00 +0800
Subject: [PATCH] 1

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

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index 66da0ec..8919907 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());
@@ -2111,18 +2131,21 @@
             return ServerResponse.createByErrorMsg("下单失败,系统设置错误");
         }
         StockDz stockDz = null;
-        stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_code", stockCode));
-        String am_begin = siteSetting.getTransAmBeginhk();
-        String am_end = siteSetting.getTransAmEndhk();
-        String pm_begin = siteSetting.getTransPmBeginhk();
-        String pm_end = siteSetting.getTransPmEndhk();
-        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
-        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
-        log.info("是否在大宗交易时间 = {}", Boolean.valueOf(pm_flag));
+        stockDz = this.stockDzMapper.selectOne(new QueryWrapper<StockDz>().eq("stock_gid", stockCode));
+//        String am_begin = siteSetting.getTransAmBeginhk();
+//        String am_end = siteSetting.getTransAmEndhk();
+//        String pm_begin = siteSetting.getTransPmBeginhk();
+//        String pm_end = siteSetting.getTransPmEndhk();
+//        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
+//        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
+//        log.info("是否在大宗交易时间 = {}", Boolean.valueOf(pm_flag));
         //15-15:30
 //        if (!pm_flag) {
 //            return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
 //        }
+        if(stockDz.getStartTime().getTime() > new Date().getTime() || stockDz.getEndTime().getTime() < new Date().getTime()){
+            return ServerResponse.createByErrorMsg("不在交易时间之内");
+        }
         if (siteProduct.getHolidayDisplay()) {
             return ServerResponse.createByErrorMsg("周末或节假日不能交易!");
         }
@@ -2424,18 +2447,20 @@
             return ServerResponse.createByErrorMsg("下單失敗,系統設置錯誤");
         }
         StockVip stockVip = null;
-        stockVip = this.stockVipMapper.selectOne(new QueryWrapper<StockVip>().eq("stock_code", stockCode));
-        String am_begin = siteSetting.getTransAmBeginhk();
-        String am_end = siteSetting.getTransAmEndhk();
-        String pm_begin = siteSetting.getTransPmBeginhk();
-        String pm_end = siteSetting.getTransPmEndhk();
-        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
-        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
-        log.info("是否在VIP交易时间 = {}", Boolean.valueOf(pm_flag));
-        //15-15:30
+        stockVip = this.stockVipMapper.selectOne(new QueryWrapper<StockVip>().eq("stock_gid", stockCode));
+//        String am_begin = siteSetting.getTransAmBeginhk();
+//        String am_end = siteSetting.getTransAmEndhk();
+//        String pm_begin = siteSetting.getTransPmBeginhk();
+//        String pm_end = siteSetting.getTransPmEndhk();
+//        boolean am_flag = BuyAndSellUtils.isTransTime(am_begin, am_end);
+//        boolean pm_flag = BuyAndSellUtils.isTransTime(pm_begin, pm_end);
+//        log.info("是否在VIP交易时间 = {}", Boolean.valueOf(pm_flag));
 //        if (!pm_flag) {
 //            return ServerResponse.createByErrorMsg("下单失败,不在交易时段内");
 //        }
+        if(stockVip.getStartTime().getTime() > new Date().getTime() || stockVip.getEndTime().getTime() < new Date().getTime()){
+            return ServerResponse.createByErrorMsg("不在交易时间之内");
+        }
         if (siteProduct.getHolidayDisplay()) {
             return ServerResponse.createByErrorMsg("周末或节假日不能交易!");
         }

--
Gitblit v1.9.3