From 0ebdfd97b5400c864584147bd72a0de768172d6e Mon Sep 17 00:00:00 2001
From: dd <gitluke@outlook.com>
Date: Tue, 27 Jan 2026 10:19:48 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserAssetsServices.java |   58 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 8723e52..6f22fd7 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -77,9 +77,7 @@
         List<UserAssets> userAssetsList =  userAssetsMapper.selectList(queryWrapper);
         List<EStockType> stockTypes = Arrays.asList(
                 EStockType.US,
-                EStockType.HK,
-                EStockType.IN,
-                EStockType.TW
+                EStockType.JP
         );
         for (EStockType stockType : stockTypes) {
             //是否存在记录
@@ -103,7 +101,7 @@
     @Override
     public ServerResponse updateUserAssets(Integer id, String amt,String type, String accectType) {
         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")){
@@ -119,20 +117,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");
@@ -141,9 +144,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();
@@ -207,7 +210,7 @@
             amount = exchangeAmountByRate(accetType, amount);
         }*/
         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();
         accetType = userAssets.getAccectType();
@@ -227,8 +230,15 @@
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
                }else{
-                   BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
-                   userAssets.setAmountToBeCovered(amountToBeCovered);
+                   BigDecimal subtract = amount.subtract(userAssets.getHandlingChargeWritten());
+                   if(subtract.compareTo(BigDecimal.ZERO) >= 0) {
+                       BigDecimal decimal = amount.subtract(userAssets.getAmountToBeCovered());
+                       decimal = decimal.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));
@@ -310,12 +320,22 @@
                userAssets.setCumulativeProfitAndLoss(userAssets.getCumulativeProfitAndLoss().add(amount));
            }
            extracted(userAssets);
+        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.PENDING_ORDER_FREEZE.getCode())){
+            // 挂单冻结资金:从可用余额转到冻结金额
+            // amount 是负数,表示扣除
+            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.negate()));
+        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.PENDING_ORDER_UNFREEZE.getCode())){
+            // 取消挂单解冻资金:从冻结金额转回可用余额
+            // amount 是正数,表示增加
+            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
         }
 
-        if(null != 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());

--
Gitblit v1.9.3