From d9d43aec7372dc579ced50eda32d7881265533b9 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Mon, 14 Jul 2025 17:58:05 +0800
Subject: [PATCH] AI产品交易

---
 src/main/java/com/nq/service/impl/UserAssetsServices.java |   52 ++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 48 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserAssetsServices.java b/src/main/java/com/nq/service/impl/UserAssetsServices.java
index 6a5912d..3e4ad25 100644
--- a/src/main/java/com/nq/service/impl/UserAssetsServices.java
+++ b/src/main/java/com/nq/service/impl/UserAssetsServices.java
@@ -17,6 +17,7 @@
 import javax.annotation.Resource;
 import javax.validation.constraints.Email;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -51,8 +52,11 @@
 
     @Override
     public UserAssets assetsByTypeAndUserId(String accetType, Integer userId) {
-        if(accetType.equals("SZHB")){
+        /*if(accetType.equals("SZHB")){
             accetType = "US";
+        }*/
+        if(accetType.equals(EStockType.US.getCode()) || accetType.equals("IN")){
+            accetType = EStockType.MX.getCode();
         }
         QueryWrapper<UserAssets>  queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("accect_type",accetType);
@@ -169,7 +173,7 @@
     @Override
     public Boolean availablebalanceChange(String accetType, Integer userId, EUserAssets eUserAssets, BigDecimal amount, String desc, String descType) {
 
-        UserAssets userAssets =   assetsByTypeAndUserId(accetType,userId);
+        UserAssets userAssets = assetsByTypeAndUserId(accetType,userId);
         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();
@@ -211,9 +215,9 @@
                    userAssets.setAmountToBeCovered(BigDecimal.ZERO);
                    userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
                }else{
-                   BigDecimal amountToBeCovered = userAssets.getAmountToBeCovered().subtract(amount);
                    userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
-                   userAssets.setAmountToBeCovered(amountToBeCovered);
+                   userAssets.setHandlingChargeWritten(BigDecimal.ZERO);
+                   userAssets.setAmountToBeCovered(availableBalance.negate());
                }
            }else{
                userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
@@ -288,4 +292,44 @@
         }
         extracted(userAssets);
     }
+
+
+    public Boolean aiAvailableBalanceChange(UserAssets userAssets, EUserAssets eUserAssets, BigDecimal amount, BigDecimal buyAmount) {
+        String before = userAssets.getAvailableBalance().toString();
+        if (eUserAssets.getCode().equals(EUserAssets.BUY_AI.getCode())) {
+            //冻结金额
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount));
+            //扣除可用金额
+            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount.negate()));
+        } else if (eUserAssets.getCode().equals(EUserAssets.BUY_AI_REJECT.getCode())) {
+            //解除冻结金额
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(amount.negate()));
+            //归还可用金额
+            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+        } else if (eUserAssets.getCode().equals(EUserAssets.AI_SETTLEMENT.getCode())) {
+            //解除冻结金额
+            userAssets.setFreezeMoney(userAssets.getFreezeMoney().add(buyAmount.negate()));
+            //归还可用金额(买入金额+收益)
+            userAssets.setAvailableBalance(userAssets.getAvailableBalance().add(amount));
+        }
+        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(userAssets.getAccectType());
+        moneyLog.setType(eUserAssets.getCode());
+        moneyLog.setUserId(userAssets.getId()+"");
+        moneyLog.setSymbol(EStockType.getEStockTypeByCode(userAssets.getAccectType()).getSymbol());
+        moneyLog.setCreateTime(new Date());
+        moneyLogMapper.insert(moneyLog);
+        return userAssetsMapper.updateById(userAssets)>1;
+    }
+
+    @Override
+    public BigDecimal exchangeAmountByRate(BigDecimal amount, BigDecimal rate) {
+        //保留5位小数
+        return amount.multiply(rate).setScale(5, RoundingMode.HALF_UP);
+    }
 }

--
Gitblit v1.9.3