From afb9b1cefb1c2d2f57fe8f0f3c19efa354669c66 Mon Sep 17 00:00:00 2001
From: zj <1772600164@qq.com>
Date: Wed, 14 Jan 2026 14:42:08 +0800
Subject: [PATCH] 1

---
 src/main/java/com/nq/service/impl/UserServiceImpl.java |   65 +++++++++++++++++++++++---------
 1 files changed, 46 insertions(+), 19 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 7357ab5..4972401 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) ||
@@ -162,7 +166,7 @@
 
 
         user.setAccountType(Integer.valueOf(0));
-        user.setIsLock(Integer.valueOf(1));
+        user.setIsLock(Integer.valueOf(0));
         user.setIsActive(Integer.valueOf(0));
 
         user.setRegTime(new Date());
@@ -172,7 +176,7 @@
         user.setRegAddress(uadd);
 
         user.setIsLogin(Integer.valueOf(0));
-
+        user.setRealType(0);
         int insertCount = this.userMapper.insert(user);
 
         if (insertCount > 0) {
@@ -193,8 +197,8 @@
             if (user.getIsLogin().intValue() == 1) {
                 return ServerResponse.createByErrorMsg("登录失败。账户锁定",request);
             }
-            //默认墨西哥资产
-            userAssetsServices.assetsByTypeAndUserId(EStockType.MX.getCode(),user.getId());
+            //新增账号资产
+            userAssetsServices.addUserAssetsListByUserId(user.getId());
             this.iSiteLoginLogService.saveLog(user, request);
             return ServerResponse.createBySuccess(user);
         }
@@ -391,7 +395,7 @@
     }
 
 
-    public ServerResponse auth(String realName, String idCard, String vaildNumber, String img1key, String img2key, String img3key, HttpServletRequest request) {
+    public ServerResponse auth(String realName, String idCard, Integer realType, String vaildNumber, String img1key, String img2key, String img3key, HttpServletRequest request) {
         if (StringUtils.isBlank(realName) ||
                 StringUtils.isBlank(idCard)) {
 
@@ -409,6 +413,7 @@
         user.setRealName(realName);
         user.setIdCard(idCard);
         user.setVaildNumber(vaildNumber);
+        user.setRealType(realType);
 
         user.setIsActive(Integer.valueOf(1));
 
@@ -571,7 +576,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 +592,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,14 +636,27 @@
         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(toType,user.getId(),EUserAssets.TRANSFER,amtBig.setScale(5,RoundingMode.HALF_DOWN),fromType+"/"+toType,"");
-            return ServerResponse.createBySuccess();
+
+            if (orderFree.compareTo(BigDecimal.ZERO) > 0) {
+                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("操作成功", request);
         } catch (Exception e) {
             return ServerResponse.createByErrorMsg(e.getMessage());
         }
@@ -757,7 +775,7 @@
             ServerResponse money = iUserService.getMoney(user.getId());
             List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData();
             RUserAssets rUserAssets = rUserAssetsList.stream()
-                    .filter(stock -> EStockType.MX.getCode().equals(stock.getAccectType()))
+                    .filter(stock -> EStockType.getDefault().getCode().equals(stock.getAccectType()))
                     .findFirst()
                     .orElse(null);
 
@@ -799,7 +817,8 @@
             user.setIsLogin(Integer.valueOf(0));
             user.setIsActive(Integer.valueOf(0));
             user.setRegTime(new Date());
-
+            user.setRealType(0);
+            user.setUserPwd(SymmetricCryptoUtil.encryptPassword(pwd));
 
             if (accountType.intValue() == 1) {
                 user.setNickName("模拟用户");
@@ -814,8 +833,8 @@
 
             int insertCount = this.userMapper.insert(user);
             dbUser = userMapper.selectOne(queryWrapper);
-            userAssetsServices.getAvailableBalance(EStockType.MX.getCode(),dbUser.getId() );
-            userAssetsServices.availablebalanceChange(EStockType.MX.getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
+            userAssetsServices.getAvailableBalance(EStockType.getDefault().getCode(),dbUser.getId() );
+            userAssetsServices.availablebalanceChange(EStockType.getDefault().getCode(),dbUser.getId(),EUserAssets.TOP_UP,new BigDecimal(amt),"","");
             if (insertCount > 0) {
                 return ServerResponse.createBySuccessMsg("Success");
             }
@@ -843,7 +862,7 @@
             ServerResponse money = iUserService.getMoney(user.getId());
             List<RUserAssets> rUserAssetsList = (List<RUserAssets>) money.getData();
             RUserAssets rUserAssets = rUserAssetsList.stream()
-                    .filter(stock -> EStockType.MX.getCode().equals(stock.getAccectType()))
+                    .filter(stock -> EStockType.getDefault().getCode().equals(stock.getAccectType()))
                     .findFirst()
                     .orElse(null);
 
@@ -1122,6 +1141,7 @@
         userInfoVO.setNickName(user.getNickName());
         userInfoVO.setRealName(user.getRealName());
         userInfoVO.setIdCard(user.getIdCard());
+        userInfoVO.setRealType(user.getRealType());
         userInfoVO.setAccountType(user.getAccountType());
         userInfoVO.setRecomPhone(user.getRecomPhone());
         userInfoVO.setIsLock(user.getIsLock());
@@ -1183,5 +1203,12 @@
         return  ServerResponse.createBySuccess(mapper.selectList(queryWrapper));
     }
 
+    @Override
+    public int countPendingAuth() {
+        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_active", 1);
+        return this.userMapper.selectCount(queryWrapper).intValue();
+    }
+
 }
 

--
Gitblit v1.9.3