jack
2024-04-02 4046f94a57f0c10e9509a49ad0d37d701aeb8186
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));
    }
}