From fd97ec2db0324c7884eb21089dd0b7d9764f3ea0 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Sat, 18 May 2024 11:06:48 +0800
Subject: [PATCH] 1

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

diff --git a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
index e876b28..6bdb651 100644
--- a/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserPositionServiceImpl.java
@@ -37,6 +37,9 @@
 import java.time.ZoneId;
 import java.time.temporal.ChronoUnit;
 import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 
@@ -119,6 +122,8 @@
 
     @Autowired
     IStockConfigServices iStockConfigServices;
+
+
 
 
     @Transactional
@@ -1209,7 +1214,7 @@
             userPosition.setIsLock(Integer.valueOf(0));
 
 
-            userPosition.setOrderLever(10);
+            userPosition.setOrderLever(1);
 
 
             //递延费特殊处理
@@ -1542,6 +1547,7 @@
         /*实名认证开关开启*/
         SiteProduct siteProduct = iSiteProductService.getProductSetting();
         User user = this.iUserService.getCurrentRefreshUser(request);
+
         if (siteProduct.getRealNameDisplay() && user.getIsActive() != 2) {
             return ServerResponse.createByErrorMsg("Order failed, please first real name authentication");
         }
@@ -1574,11 +1580,13 @@
             return ServerResponse.createByErrorMsg("最小购买数据" + stockDz.getStockNum(), request);
         }
         BigDecimal buyAmt = nowPrice.multiply(new BigDecimal(num.intValue()));
-        BigDecimal   fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
-        BigDecimal availableBalance =  fundratio.multiply(userAssets.getAvailableBalance());
+        BigDecimal fundratio = new BigDecimal(user.getFundRatio()).divide(new BigDecimal(100));
+        BigDecimal availableBalance = fundratio.multiply(userAssets.getAvailableBalance());
         if (buyAmt.compareTo(availableBalance) > 0) {
             return ServerResponse.createByErrorMsg("订单失败,配资不足", request);
         }
+
+        // 创建UserPosition对象
         UserPosition userPosition = new UserPosition();
         userPosition.setPositionType(3);
         userPosition.setPositionSn(KeyUtils.getUniqueKey());
@@ -1628,25 +1636,29 @@
     @Override
     @Transactional
     public void stockConstraint(List<UserPosition> list) {
-        SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
+        try {
+            SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
 
-        for (UserPosition position : list) {
-            UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
-                    .eq(UserAssets::getUserId, position.getUserId())
-                    .eq(UserAssets::getAccectType, "IN")
-            );
-            if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
-                continue;
-            }
-            //平仓检查
-            Result result = getResult(position);
-            if (result == null) continue;
+            for (UserPosition position : list) {
+                UserAssets userAssets = userAssetsMapper.selectOne(new LambdaQueryWrapper<UserAssets>()
+                        .eq(UserAssets::getUserId, position.getUserId())
+                        .eq(UserAssets::getAccectType, "IN")
+                );
+                if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+                    continue;
+                }
+                //平仓检查
+                Result result = getResult(position);
+                if (result == null) continue;
 
-            Integer liquidation = 0;
-            liquidation = isLiquidation(position, result.signum, result.profit, liquidation);
-            if(liquidation != 0){
-                extracted(position, result.nowPrice, result.stock,liquidation);
+                Integer liquidation = 0;
+                liquidation = isLiquidation(position, result.signum, result.profit, liquidation);
+                if(liquidation != 0){
+                    extracted(position, result.nowPrice, result.stock,liquidation);
+                }
             }
+        }catch (Exception e){
+            log.error("强制平仓--->错误",e);
         }
     }
 

--
Gitblit v1.9.3