From 4046f94a57f0c10e9509a49ad0d37d701aeb8186 Mon Sep 17 00:00:00 2001
From: jack <zengjieli93@163.com>
Date: Tue, 02 Apr 2024 23:47:51 +0800
Subject: [PATCH] 修复自选bug 和 增加流水日志

---
 src/main/java/com/nq/service/impl/UserServiceImpl.java |  154 +++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 136 insertions(+), 18 deletions(-)

diff --git a/src/main/java/com/nq/service/impl/UserServiceImpl.java b/src/main/java/com/nq/service/impl/UserServiceImpl.java
index 9dfc106..4668440 100644
--- a/src/main/java/com/nq/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
 package com.nq.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
@@ -97,6 +98,9 @@
 
 
     @Resource
+    MoneyLogMapper mapper;
+
+    @Resource
     UserPositionMapper userPositionMapper;
     @Resource
     SiteAmtTransLogMapper siteAmtTransLogMapper;
@@ -137,7 +141,7 @@
         }
 
 
-        User dbuser = this.userMapper.findByPhone(phone);
+        User dbuser = this.userMapper.selectOne(new LambdaQueryWrapper<User>().eq(User::getPhone,phone).last( " limit 1"));
         if (dbuser != null) {
             return ServerResponse.createByErrorMsg("Registration failed, the mobile phone number has been registered");
         }
@@ -185,7 +189,8 @@
 
             log.info("用户{}登陆成功, 登陆状态{} ,交易状态{}", new Object[]{user.getId(), user.getIsLogin(), user.getIsLock()});
 
-            userAssetsServices.assetsByTypeAndUserId(EStockType.HG.getCode(),user.getId());
+            userAssetsServices.assetsByTypeAndUserId(EStockType.MAS.getCode(),user.getId());
+            userAssetsServices.assetsByTypeAndUserId(EStockType.US.getCode(),user.getId());
             this.iSiteLoginLogService.saveLog(user, request);
             return ServerResponse.createBySuccess(user);
         }
@@ -452,11 +457,9 @@
 
     @Override
     public ServerResponse getMoney(HttpServletRequest request) {
-
         BigDecimal exchangeRate =  iSiteSettingService.getSiteSetting().getExchangeRate();
       List<UserAssets>  userAssetsList =   userAssetsServices.assetsByUserId(getCurrentUser(request).getId());
       List<RUserAssets>  rUserAssetsList = new ArrayList<>();
-
       /**
        *  浮动盈亏
        * */
@@ -560,6 +563,112 @@
     }
 
     @Override
+    public ServerResponse getMoney(Integer userId) {
+        BigDecimal exchangeRate =  iSiteSettingService.getSiteSetting().getExchangeRate();
+        List<UserAssets>  userAssetsList =   userAssetsServices.assetsByUserId(userId);
+        List<RUserAssets>  rUserAssetsList = new ArrayList<>();
+        /**
+         *  浮动盈亏
+         * */
+        BigDecimal AllProfitAndLose = BigDecimal.ZERO;
+        /**
+         *  总资产
+         * */
+        BigDecimal allTotalAssets = BigDecimal.ZERO;
+        /**
+         *  总可用余额
+         * */
+        BigDecimal allAmt = BigDecimal.ZERO;
+        /**
+         *  累计盈亏
+         * */
+        BigDecimal AllHProfitAndLose = BigDecimal.ZERO;
+        /**
+         *  总冻结资产
+         * */
+        BigDecimal allFreeMoney = BigDecimal.ZERO;
+        /**
+         *  总手续费
+         * */
+        BigDecimal allHMoney = BigDecimal.ZERO;
+        for (int i = 0; i <userAssetsList.size() ; i++) {
+            RUserAssets rUserAssets  = new RUserAssets();
+            UserAssets userAssets = userAssetsList.get(i);
+            // 浮动盈亏
+            BigDecimal profitAndLose = userAssets.getProfitAndLoss();
+            BigDecimal amt = userAssets.getAvailableBalance();
+            BigDecimal totalAssets = userAssets.getAvailableBalance().add(userAssets.getFreezeMoney());
+            BigDecimal freeMoney = userAssets.getFreezeMoney();
+            BigDecimal hMoney = userAssets.getHandlingCharge();
+            BigDecimal hProfitAndLose = userAssets.getCumulativeProfitAndLoss();
+            rUserAssets.setId(userAssets.getId());
+            rUserAssets.setTotalMoney((totalAssets.setScale(2).toString()));
+            rUserAssets.setAccectType(userAssets.getAccectType());
+            rUserAssets.setAvailableBalance(amt.setScale(2).toString());
+            rUserAssets.setFreezeMoney(freeMoney.setScale(2).toString());
+            rUserAssets.setCumulativeProfitAndLoss(hProfitAndLose.setScale(2).toString());
+            rUserAssets.setHandlingCharge(hMoney.setScale(2).toString());
+            rUserAssets.setProfitAndLoss(profitAndLose.setScale(2).toString());
+            if(userAssets.getAccectType().equals("US")){
+                rUserAssets.setSymbol("$");
+                rUserAssets.setSymbolCode("USD");
+                AllProfitAndLose = AllProfitAndLose.add(profitAndLose);
+                allTotalAssets = allTotalAssets.add(totalAssets);
+                allAmt = allAmt.add(amt);
+                AllHProfitAndLose = AllHProfitAndLose.add(hProfitAndLose);
+                allFreeMoney = allFreeMoney.add(freeMoney);
+                allHMoney = allHMoney.add(hMoney);
+                rUserAssets.setAvailableBalanceUSD(rUserAssets.getAvailableBalance());
+                rUserAssets.setFreezeMoneyUSD(rUserAssets.getFreezeMoney());
+                rUserAssets.setTotalMoneyUSD(rUserAssets.getTotalMoney());
+                rUserAssets.setCumulativeProfitAndLossUSD(hProfitAndLose.setScale(2).toString());
+                rUserAssets.setHandlingChargeUSD(hMoney.setScale(2).toString());
+                rUserAssets.setProfitAndLossUSD(hProfitAndLose.setScale(2).toString());
+
+            }else{
+                rUserAssets.setAvailableBalanceUSD(userAssets.getAvailableBalance().divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+                rUserAssets.setFreezeMoneyUSD(userAssets.getFreezeMoney().divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+                rUserAssets.setTotalMoneyUSD(userAssets.getTotleAssets().divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+                rUserAssets.setSymbol("RM");
+                rUserAssets.setSymbolCode("MYR");
+                rUserAssets.setCumulativeProfitAndLossUSD(hProfitAndLose.divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+                rUserAssets.setHandlingChargeUSD(hMoney.divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+                rUserAssets.setProfitAndLossUSD(hProfitAndLose.divide(exchangeRate,BigDecimal.ROUND_CEILING).toString());
+
+                AllProfitAndLose = AllProfitAndLose.add(profitAndLose.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+                allTotalAssets = allTotalAssets.add(totalAssets.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+                allAmt = allAmt.add(amt.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+                AllHProfitAndLose = AllHProfitAndLose.add(hProfitAndLose.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+                allFreeMoney = allFreeMoney.add(freeMoney.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+                allHMoney = allHMoney.add(hMoney.divide(exchangeRate,BigDecimal.ROUND_CEILING));
+            }
+            rUserAssetsList.add(rUserAssets);
+        }
+
+
+
+        RUserAssets rUserAssets  = new RUserAssets();
+        rUserAssets.setAccectType("ALL");
+        rUserAssets.setProfitAndLoss(AllProfitAndLose.setScale(2).toString());
+        rUserAssets.setProfitAndLossUSD(AllProfitAndLose.setScale(2).toString());
+        rUserAssets.setHandlingCharge(allHMoney.setScale(2).toString());
+        rUserAssets.setHandlingChargeUSD(allHMoney.setScale(2).toString());
+        rUserAssets.setCumulativeProfitAndLoss(AllHProfitAndLose.setScale(2).toString());
+        rUserAssets.setCumulativeProfitAndLossUSD(AllHProfitAndLose.setScale(2).toString());
+        rUserAssets.setTotalMoney(allTotalAssets.setScale(2).toString());
+        rUserAssets.setTotalMoneyUSD(allTotalAssets.setScale(2).toString());
+        rUserAssets.setAvailableBalance(allAmt.setScale(2).toString());
+        rUserAssets.setAvailableBalanceUSD(allAmt.setScale(2).toString());
+        rUserAssets.setFreezeMoney(allFreeMoney.setScale(2).toString());
+        rUserAssets.setFreezeMoneyUSD(allFreeMoney.setScale(2).toString());
+        rUserAssets.setSymbol("$");
+        rUserAssets.setSymbolCode("USD");
+        rUserAssetsList.add(rUserAssets);
+
+        return ServerResponse.createBySuccess(rUserAssetsList);
+    }
+
+    @Override
     public ServerResponse transfer(String fromType, String toType, String amt,HttpServletRequest paramHttpServletRequest) {
 
         User user =  userService.getCurrentUser(paramHttpServletRequest);
@@ -568,7 +677,14 @@
         if(formAssets.getAvailableBalance().compareTo(amtBig)<0){
             return ServerResponse.createByErrorMsg("Insufficient amount");
         }
+        SiteSetting siteSetting = iSiteSettingService.getSiteSetting();
         userAssetsServices.availablebalanceChange(fromType,user.getId(), EUserAssets.TRANSFER,amtBig.negate(),"","");
+
+        if(fromType.equals(EStockType.MAS.getCode())){
+            amtBig = amtBig.divide(siteSetting.getExchangeRate(), BigDecimal.ROUND_CEILING);
+        }else{
+            amtBig = amtBig.multiply(siteSetting.getExchangeRate());
+        }
         userAssetsServices.availablebalanceChange(toType,user.getId(),EUserAssets.TRANSFER,amtBig,"","");
         return ServerResponse.createBySuccess();
     }
@@ -1055,20 +1171,22 @@
         userMapper.updateUserAmt(amt, user_id);
     }
 
-//    @Override
-//    public ServerResponse queryMyOption(String code, HttpServletRequest request) {
-//        User user = getCurrentUser(request);
-//
-//        if (user == null) {
-//            return ServerResponse.createBySuccessMsg("請先登錄");
-//        }
-//        String stockcode = code;
-//        if(code.contains("hf")){
-//            stockcode = code.split("_")[1].toString();
-//        }
-//        stockcode = stockcode.replace("sh","").replace("sz","").replace("bj","");
-//        return this.iStockOptionService.isOption(user.getId(), stockcode);
-//    }
+
+    @Override
+    public ServerResponse queryMyOption(String code, HttpServletRequest request) {
+        User user = getCurrentUser(request);
+
+        return this.iStockOptionService.isOption(user.getId(), code);
+    }
+
+    @Override
+    public ServerResponse getMoenyLog(String type,HttpServletRequest request) {
+        User user = getCurrentUser(request);
+        QueryWrapper<MoneyLog>  queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("type",type);
+        queryWrapper.eq("user_id",user.getId());
+        return  ServerResponse.createBySuccess(mapper.selectList(queryWrapper));
+    }
 
 }
 

--
Gitblit v1.9.3