From fd112c08c7bdc1b549c92d1e851f948c3410c502 Mon Sep 17 00:00:00 2001
From: zyy <zyy@email.com>
Date: Mon, 11 Aug 2025 18:30:18 +0800
Subject: [PATCH] 8.6二开 新增资金账户,对应资金购买对应股票

---
 src/main/java/com/nq/service/impl/UserServiceImpl.java |   32 +++++++++++++++++++++++---------
 1 files changed, 23 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index f5c8a42..aa2bf20 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -9,6 +9,7 @@
 import com.google.common.collect.Lists;
 import com.nq.common.ServerResponse;
 import com.nq.dao.*;
+import com.nq.enums.EConfigKey;
 import com.nq.enums.EStockType;
 import com.nq.enums.EUserAssets;
 import com.nq.pojo.*;
@@ -122,6 +123,9 @@
     @Autowired
     IUserService iUserService;
 
+    @Autowired
+    IStockConfigServices iStockConfigServices;
+
 
     public ServerResponse reg(String yzmCode, String agentCode, String phone, String userPwd, HttpServletRequest request) {
         if (StringUtils.isBlank(agentCode) || StringUtils.isBlank(phone) ||
@@ -193,8 +197,8 @@
             if (user.getIsLogin().intValue() == 1) {
                 return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
             }
-            //默认资产
-            userAssetsServices.assetsByTypeAndUserId(EStockType.getDefault().getCode(),user.getId());
+            //新增账号资产
+            userAssetsServices.addUserAssetsListByUserId(user.getId());
             this.iSiteLoginLogService.saveLog(user, request);
             return ServerResponse.createBySuccess(user);
         }
@@ -571,7 +575,7 @@
 
 
 
-        RUserAssets rUserAssets  = new RUserAssets();
+        /*RUserAssets rUserAssets  = new RUserAssets();
         rUserAssets.setAccectType("ALL");
         rUserAssets.setProfitAndLoss(AllProfitAndLose.setScale(s,BigDecimal.ROUND_DOWN).toString());
         rUserAssets.setProfitAndLossUSD(AllProfitAndLose.setScale(s,BigDecimal.ROUND_DOWN).toString());
@@ -587,7 +591,7 @@
         rUserAssets.setFreezeMoneyUSD(allFreeMoney.setScale(s,BigDecimal.ROUND_DOWN).toString());
         rUserAssets.setSymbol("$");
         rUserAssets.setSymbolCode("USD");
-        rUserAssetsList.add(rUserAssets);
+        rUserAssetsList.add(rUserAssets);*/
 
         return ServerResponse.createBySuccess(rUserAssetsList);
     }
@@ -631,13 +635,23 @@
         try {
             User user =  userService.getCurrentUser(request);
             UserAssets formAssets = userAssetsServices.assetsByTypeAndUserId(fromType,user.getId());
-            BigDecimal amtBig = new BigDecimal(amt);
-            if(formAssets.getAvailableBalance().compareTo(amtBig)<0){
-                return ServerResponse.createByErrorMsg("余额不足",request);
+            BigDecimal amtBig = new BigDecimal(amt).abs();
+
+            // 转换手续费率
+            BigDecimal siteSettingBuyFee = new BigDecimal(iStockConfigServices.queryByKey(EConfigKey.EXCHANGE_HANDLING_CHARGE.getCode()).getCValue()) ;
+            BigDecimal orderFree = siteSettingBuyFee.multiply(amtBig);
+            //资金校验
+            BigDecimal needAmt = amtBig.add(orderFree);
+            if(formAssets.getAvailableBalance().compareTo(needAmt)<0){
+                return ServerResponse.createByErrorMsg("余额不足", request);
             }
-            userAssetsServices.availablebalanceChange(fromType,user.getId(), EUserAssets.TRANSFER,amtBig.negate(),fromType+"/"+toType,"");
-            amtBig = rateServices.currencyRate(EStockType.getEStockTypeByCode(fromType),EStockType.getEStockTypeByCode(toType)).multiply(amtBig);
+
+            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.HANDLING_CHARGE, orderFree, "", "");
+            userAssetsServices.availablebalanceChange(fromType, user.getId(), EUserAssets.TRANSFER, amtBig.negate(),fromType+"/"+toType,"");
+            //转换金额
+            amtBig = userAssetsServices.exchangeAmountByRate(fromType, toType, amtBig);
             userAssetsServices.availablebalanceChange(toType,user.getId(),EUserAssets.TRANSFER,amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
+
             return ServerResponse.createBySuccess();
         } catch (Exception e) {
             return ServerResponse.createByErrorMsg(e.getMessage());

--
Gitblit v1.9.3