From e89e71158de719c70c487110a0f8d00d4a30d30b Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Thu, 12 Feb 2026 11:02:48 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserAssetsServices.java |  103 ++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 85 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index fa18738..238b1ea 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -68,7 +68,7 @@
     @Override
     public ServerResponse updateUserAssets(Integer id, String amt,String type) {
         UserAssets userAssets = userAssetsMapper.selectById(id);
-        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+        //UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
         //  0 入款  1是扣钱  2 是充值  3 是提币
         BigDecimal bigAmt = new BigDecimal(amt);
         if(type.equals("0") || type.equals("1")){
@@ -84,20 +84,25 @@
                         userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
                         userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                         userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
-                        if(null != userPosition){
-                            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
-                        }
                     }else{
-                        BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(bigAmt);
-                        userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(bigAmt));
-                        userAssets.setAmountToBeCovered(amountToBeCovered);
-                        if(null != userPosition){
-                            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered());
+                        BigDecimal subtract = bigAmt.subtract(userAssets.getHandlingChargeWritten());
+                        if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+                            BigDecimal decimal = bigAmt.subtract(userAssets.getAmountToBeCovered());
+                            decimal = decimal.subtract(userAssets.getHandlingChargeWritten());
+                            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(bigAmt.subtract(userAssets.getHandlingChargeWritten())));
+                            userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+                            userAssets.setAmountToBeCovered(decimal.negate());
+                        }else{
+                            userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().subtract(bigAmt));
                         }
                     }
                 }else{
                     userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
                 }
+                /*if(null != userPosition){
+                    userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
+                    userPositionMapper.updateById(userPosition);
+                }*/
             }else{
                 if(userAssets.getAvailableBalance().compareTo(BigDecimal.ZERO) <= 0){
                     return ServerResponse.createByErrorMsg("客户账户余额为0");
@@ -106,9 +111,9 @@
                 }
                 userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(bigAmt));
             }
-            if(null != userPosition){
+            /*if(null != userPosition){
                 userPositionMapper.updateById(userPosition);
-            }
+            }*/
             if( userAssetsMapper.updateById(userAssets)>0){
 //                saveUserRecharge(userAssets.getUserId(),bigAmt);
                 return ServerResponse.createBySuccess();
@@ -164,7 +169,7 @@
     public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) {
 
         UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
-        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+//        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
         String type = eUserAssets.getDesc();
         String before = userAssets.getAvailableBalance().toString();
         String accectType = userAssets.getAccectType();
@@ -179,10 +184,15 @@
                BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
                availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
                if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+                   //冻结 扣除的已补金额
+                   userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
+
                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
                }else{
+                   userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+
                    BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
                    userAssets.setAmountToBeCovered(amountToBeCovered);
                }
@@ -205,9 +215,16 @@
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
                }else{
-                   userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
-                   userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
-                   userAssets.setAmountToBeCovered(availableBalance.negate());
+                   BigDecimal subtract = amount.subtract(userAssets.getHandlingChargeWritten());
+                   if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+                       BigDecimal decimal = amount.subtract(userAssets.getAmountToBeCovered());
+                       decimal = decimal.subtract(userAssets.getHandlingChargeWritten());
+                       userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.subtract(userAssets.getHandlingChargeWritten())));
+                       userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+                       userAssets.setAmountToBeCovered(decimal.negate());
+                   }else{
+                       userAssets.setHandlingChargeWritten(userAssets.getHandlingChargeWritten().subtract(amount));
+                   }
                }
            }else{
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
@@ -234,10 +251,60 @@
            extracted(userAssets);
        }
 
-        if(null != userPosition){
-            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
-            userPositionMapper.updateById(userPosition);
+//        if(null != userPosition){
+//            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
+//            userPositionMapper.updateById(userPosition);
+//        }
+        String  after =  userAssets.getAvailableBalance().toString();
+        MoneyLog moneyLog = new MoneyLog();
+        moneyLog.setDescs(eUserAssets.getDesc());
+        moneyLog.setBeFore(before);
+        moneyLog.setAfter(after);
+        moneyLog.setAmount(amount.toString());
+        moneyLog.setAccectType(accectType);
+        moneyLog.setType(eUserAssets.getCode());
+        moneyLog.setUserId(userId+"");
+        moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
+        moneyLog.setCreateTime(new Date());
+        moneyLogMapper.insert(moneyLog);
+        return userAssetsMapper.updateById(userAssets)>1;
+    }
+
+    //平仓返回保证金
+    @Override
+    public Boolean availablebalanceSell(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, BigDecimal fzAmount) {
+
+        UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
+//        UserPosition userPosition = userPositionMapper.selectOne(new LambdaQueryWrapper<UserPosition>().gt(UserPosition::getAmountToBeCovered, BigDecimal.ZERO).eq(UserPosition::getUserId,userAssets.getUserId()));
+        String before = userAssets.getAvailableBalance().toString();
+        String accectType = userAssets.getAccectType();
+        if(Objects.equals(eUserAssets.getCode(), EUserAssets.CLOSE_POSITION_RETURN_SECURITY_DEPOSIT.getCode())){
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(fzAmount));
+            if(userAssets.getAmountToBeCovered().compareTo(BigDecimal.ZERO) > 0){
+                BigDecimal availableBalance = amount.subtract(userAssets.getAmountToBeCovered());
+                availableBalance = availableBalance.subtract(userAssets.getHandlingChargeWritten());
+                if(availableBalance.compareTo(BigDecimal.ZERO) >= 0){
+                    //冻结 扣除的已补金额
+                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(userAssets.getAmountToBeCovered()));
+
+                    userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
+                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+                }else{
+                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+
+                    BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
+                    userAssets.setAmountToBeCovered(amountToBeCovered);
+                }
+            }else{
+                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+            }
         }
+
+//        if(null != userPosition){
+//            userPosition.setAmountToBeCovered(userAssets.getAmountToBeCovered().add(userAssets.getHandlingChargeWritten()));
+//            userPositionMapper.updateById(userPosition);
+//        }
         String  after =  userAssets.getAvailableBalance().toString();
         MoneyLog moneyLog = new MoneyLog();
         moneyLog.setDescs(eUserAssets.getDesc());

--
Gitblit v1.9.3