From 4130970dd61791e0a5cb0771a9b707084f1ed464 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Thu, 08 May 2025 00:39:05 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserAssetsServices.java |   32 ++++++++++++++++++++++++++++++--
 1 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 20cc581..f6ffa9f 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -7,8 +7,10 @@
 import com.nq.dao.*;
 import com.nq.enums.EStockType;
 import com.nq.enums.EUserAssets;
+import com.nq.enums.TradeType;
 import com.nq.pojo.*;
 import com.nq.service.IUserAssetsServices;
+import com.nq.service.TransactionLogService;
 import com.nq.utils.KeyUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -51,6 +53,8 @@
     @Autowired
     StockConfigMapper stockConfigMapper;
 
+    @Autowired
+    TransactionLogService transactionLogService;
     @Override
     public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
         if(accetType.equals("SZHB")){
@@ -179,6 +183,22 @@
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
            }
             userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
+       }else  if(Objects.equals(eUserAssets.getCode(), EUserAssets.THE_DEPOSIT_WILL_BE_RETURNED_IF_THE_ORDER_IS_CANCELLED.getCode())){
+           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.setAvailableBalance(userAssets.getAvailableBalance().add(availableBalance));
+                   userAssets.setAmountToBeCovered(BigDecimal.ZERO);
+                   userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+               }else{
+                   BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
+                   userAssets.setAmountToBeCovered(amountToBeCovered);
+               }
+           }else{
+               userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+           }
+           userAssets.setFreezeMoney(userAssets.getFreezeMoney().subtract(amount));
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.CALCULATE_PROFIT_AND_LOSS.getCode())){
            extracted(amount, userAssets);
        }else if(Objects.equals(eUserAssets.getCode(), EUserAssets.TRANSFER.getCode())){
@@ -242,7 +262,15 @@
         moneyLog.setSymbol(EStockType.getEStockTypeByCode(accetType).getSymbol());
         moneyLog.setCreateTime(new Date());
         moneyLogMapper.insert(moneyLog);
-        return userAssetsMapper.updateById(userAssets)>1;
+        int update = userAssetsMapper.updateById(userAssets);
+        if(update > 0){
+            if(Objects.equals(eUserAssets.getCode(), EUserAssets.HANDLING_CHARGE.getCode())){
+                amount = amount.negate();
+            }
+            transactionLogService.add(userId, eUserAssets.getDesc(),amount.toString(),eUserAssets.getDesc());
+            return true;
+        }
+        return false;
     }
 
     @Override
@@ -335,7 +363,7 @@
             userAssetsMapper.updateById(disbursement);
         }else if(disbursementAccount.equals("ST")){
             // 更新转入账户余额
-            deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount.divide(new BigDecimal(stockConfig.getCValue()))));
+            deposit.setAvailableBalance(deposit.getAvailableBalance().add(transferAmount.divide(new BigDecimal(stockConfig.getCValue()), 2, BigDecimal.ROUND_DOWN)));
             userAssetsMapper.updateById(deposit);
             // 更新转出账户余额
             disbursement.setAvailableBalance(disbursement.getAvailableBalance().subtract(transferAmount));

--
Gitblit v1.9.3