1
zj
2026-06-03 d8d3b097d7c41b460df91d1285e32a38e5c1bbf5
src/main/java/com/nq/service/impl/UserServiceImpl.java
@@ -118,10 +118,10 @@
        }
        String keys = "AliyunSmsCode:" + phone;
        String redis_yzm = RedisShardedPoolUtils.get(keys);
        log.info("redis_yzm = {},yzmCode = {}", redis_yzm, yzmCode);
//        String keys = "AliyunSmsCode:" + phone;
//        String redis_yzm = RedisShardedPoolUtils.get(keys);
//
//        log.info("redis_yzm = {},yzmCode = {}", redis_yzm, yzmCode);
//        if (!yzmCode.equals(redis_yzm) && !"6666".equals(yzmCode)) {
//            return ServerResponse.createByErrorMsg("注册失败, 验证码错误");
//        }
@@ -154,10 +154,19 @@
        user.setIsActive(Integer.valueOf(0));
        user.setRegTime(new Date());
        String uip = IpUtils.getIp(request);
        user.setRegIp(uip);
        String uadd = JuheIpApi.ip2Add(uip);
//        user.setRegAddress(uadd);
//        String uip = IpUtils.getIp(request);
//        user.setRegIp(uip);
//        // IP地址查询改为异步处理,避免阻塞注册接口
//        final String finalUip = uip;
//        final String finalPhone = phone;
//        new Thread(() -> {
//            try {
//                String uadd = JuheIpApi.ip2Add(finalUip);
//                log.info("用户注册IP地址查询完成 手机 {} , ip = {} 地址 = {}", finalPhone, finalUip, uadd);
//            } catch (Exception e) {
//                log.error("IP地址查询异常", e);
//            }
//        }).start();
        user.setIsLogin(Integer.valueOf(0));
@@ -183,7 +192,7 @@
            String newAgentCode = generateUniqueAgentCode();
            agentUser.setAgentCode(newAgentCode);
            iAgentUserService.updateAgentCode(agentUser);
            log.info("用户注册成功 手机 {} , ip = {} 地址 = {}", new Object[] { phone, uip, uadd });
            log.info("用户注册成功 手机 {} , ip = {}", phone, "123123");
            return ServerResponse.createBySuccessMsg("注册成功.请登录");
        }
        return ServerResponse.createBySuccessMsg("注册出错, 请重试");
@@ -301,18 +310,11 @@
                stock.setStockName(stockFutures.getFuturesName());
                stock.setIsLock(0);
            }
        } else if(code.contains("sh") || code.contains("sz")){
         return ServerResponse.createByErrorMsg("添加失败,指数不支持自选");
//            StockIndex stockIndex = this.stockIndexMapper.selectIndexByCode(stockcode);
//            if(stockIndex != null){
//                stock.setId(stockIndex.getId());
//                stock.setStockCode(stockIndex.getIndexCode());
//                stock.setStockGid(stockIndex.getIndexGid()+"zs");
//                stock.setStockName(stockIndex.getIndexName());
//                stock.setIsLock(0);
//            }
        } else {
            stock = this.stockMapper.findStockByCode(code);
            stock = this.stockMapper.findStockByCode(stockcode);
            if (stock == null && !code.equals(stockcode)) {
                stock = this.stockMapper.findStockByCode(code);
            }
        }
        if (stock == null) {
            return ServerResponse.createByErrorMsg("添加失败,股票不存在");
@@ -385,11 +387,32 @@
        String userJson = RedisShardedPoolUtils.get(loginToken);
        User user = (User)JsonUtil.string2Obj(userJson, User.class);
        User dbuser = this.userMapper.selectByPrimaryKey(user.getId());
        RedisShardedPoolUtils.setEx(loginToken, JsonUtil.obj2String(dbuser), 9999);
        UserInfoVO userInfoVO = assembleUserInfoVO(dbuser);
        return ServerResponse.createBySuccess(userInfoVO);
    }
    @Override
    public void syncUserCache(HttpServletRequest request) {
        if (request == null) {
            return;
        }
        String cookieName = PropertiesUtil.getProperty("user.cookie.name");
        String loginToken = request.getHeader(cookieName);
        if (StringUtils.isBlank(loginToken)) {
            return;
        }
        String userJson = RedisShardedPoolUtils.get(loginToken);
        User cached = (User) JsonUtil.string2Obj(userJson, User.class);
        if (cached == null || cached.getId() == null) {
            return;
        }
        User dbUser = this.userMapper.selectByPrimaryKey(cached.getId());
        if (dbUser != null) {
            RedisShardedPoolUtils.setEx(loginToken, JsonUtil.obj2String(dbUser), 9999);
        }
    }
    public ServerResponse updatePwd(String oldPwd, String newPwd, HttpServletRequest request) {
        if (StringUtils.isBlank(oldPwd) || StringUtils.isBlank(newPwd)) {
@@ -1864,10 +1887,20 @@
        BigDecimal allProfitAndLose = positionVO.getAllProfitAndLose();
        userInfoVO.setAllProfitAndLose(allProfitAndLose);
//        BigDecimal userAllAmt = user.getUserAmt();
        BigDecimal userAllAmt = user.getEnableAmt();
        userAllAmt = userAllAmt.add(allProfitAndLose);
        // 账户总资产 = 两融可用 + 冻结保证金 + 浮动盈亏
        // 浮动盈亏里已扣过买入手续费,而买入手续费下单时已从 enableAmt 扣除,此处加回 openBuyFees 避免总资产「少扣手续费」
        BigDecimal allFreezAmt = positionVO.getAllFreezAmt() == null ? BigDecimal.ZERO : positionVO.getAllFreezAmt();
        BigDecimal enableAmt = user.getEnableAmt() == null ? BigDecimal.ZERO : user.getEnableAmt();
        BigDecimal openBuyFees = BigDecimal.ZERO;
        List<UserPosition> openPositions = this.iUserPositionService.findPositionByUserIdAndSellIdIsNull(user.getId());
        if (openPositions != null) {
            for (UserPosition position : openPositions) {
                if (position.getOrderFee() != null) {
                    openBuyFees = openBuyFees.add(position.getOrderFee());
                }
            }
        }
        BigDecimal userAllAmt = enableAmt.add(allFreezAmt).add(allProfitAndLose).add(openBuyFees);
        userInfoVO.setEnableIndexAmt(user.getEnableIndexAmt());
        userInfoVO.setEnaleWithdrawAmt(user.getEnaleWithdrawAmt());
@@ -1887,8 +1920,7 @@
            }
        }
        userInfoVO.setBuyAmtAutual(buyAmtAutual);
        userAllAmt = userAllAmt.add(buyAmtAutual);
        userInfoVO.setUserAmt(userAllAmt);
        userInfoVO.setUserAmt(userAllAmt.setScale(2, RoundingMode.HALF_UP));
        List<UserPosition> userPositions = this.userPositionMapper.findMyPositionByCodeAndSpell(user.getId(), "", "", 2);