1
luodangjia
2025-01-22 3eb56cab8a5a453ac5e70b6e36618dde32431326
ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -161,9 +161,15 @@
            String verifyKey = CacheConstants.PHONE_CODE_KEY + StringUtils.nvl(registerUser.getPhone(), "");
            String captcha = redisService.getCacheObject(verifyKey);
            if (captcha == null) {
                throw new ServiceException("验证码错误");
            }
            String[] split = captcha.split(":");
            long l = Long.parseLong(split[2]);
            long l1 = System.currentTimeMillis();
            // 判断是否大于两分钟
            if (l1 - l > 2 * 60 * 1000) {
                throw new CaptchaException("验证码已失效");
            }
            redisService.deleteObject(verifyKey);
            if (!smsCode.equalsIgnoreCase(captcha)) {
                throw new CaptchaException("验证码错误");
            }
@@ -176,77 +182,72 @@
    public User companyLogin(RegisterUser registerUser) {
        // 输入验证
        if (registerUser == null || registerUser.getAccountName() == null || registerUser.getPassword() == null) {
            throw new ServiceException("无效的输入");
        }
        String accountName = registerUser.getAccountName();
        String password = registerUser.getPassword();
        R<User> userByPhoneR = remoteCompanyUserService.getUserByPhone(accountName, SecurityConstants.INNER);
        if (R.isError(userByPhoneR)) {
            throw new ServiceException(userByPhoneR.getMsg());
        }
        R<User> userByAccountNameR = remoteCompanyUserService.getUserByAccountName(accountName, SecurityConstants.INNER);
        User user = null;
        if (userByPhoneR.getData() != null) {
            if (SecurityUtils.matchesPassword(password, userByPhoneR.getData().getPassword())) {
                return userByPhoneR.getData();
            }
            user = userByPhoneR.getData();
        } else if (userByAccountNameR.getData() != null) {
            user = userByAccountNameR.getData();
        }
        R<User> r = remoteCompanyUserService.getUserByAccountName(accountName, SecurityConstants.INNER);
        if (R.isError(r)) {
            throw new ServiceException(r.getMsg());
        }
        if (r.getData() == null) {
        if (user == null) {
            throw new ServiceException("账号不存在");
        }
        if (!SecurityUtils.matchesPassword(password, r.getData().getPassword())) {
            throw new ServiceException("密码错误");
        if (!SecurityUtils.matchesPassword(password, user.getPassword())) {
            throw new ServiceException("账号或密码错误");
        }
        return r.getData();
        return user;
    }
    public void resetPwd(RegisterUser registerUser) {
        String accountName = registerUser.getAccountName();
        R<User> userR = remoteCompanyUserService.getUserByPhone(accountName, SecurityConstants.INNER);
        R<User> userR2 = remoteCompanyUserService.getUserByAccountName(accountName, SecurityConstants.INNER);
        User user = userR.getData();
        Boolean flag = check(user, registerUser.getCompanyName(), registerUser.getIdCardNumber());
        User user1 = userR2.getData();
        Boolean flag1 = check(user1, registerUser.getCompanyName(), registerUser.getIdCardNumber());
        if (!flag1 && !flag){
            throw new ServiceException("账号不存在");
        }
        User user2;
        if (flag){
            user2 = user;
        }else {
            user2 = user1;
        }
        User user = check(registerUser);
        String password = SecurityUtils.encryptPassword(registerUser.getPassword());
        user2.setPassword(password);
        R<Void> r = remoteCompanyUserService.updateUser(user2);
        user.setPassword(password);
        R<Void> r = remoteCompanyUserService.updateUser(user, SecurityConstants.INNER);
        if (R.isError(r)) {
            throw new ServiceException(userR.getMsg());
            throw new ServiceException(r.getMsg());
        }
    }
    public Boolean check(User user, String companyName, String idCardNumber) {
        boolean flag = true;
        if (user != null){
    public User check(RegisterUser registerUser) {
        String accountName = registerUser.getAccountName();
        R<User> userByPhoneR = remoteCompanyUserService.getUserByPhone(accountName, SecurityConstants.INNER);
        R<User> userByAccountNameR= remoteCompanyUserService.getUserByAccountName(accountName, SecurityConstants.INNER);
        User user;
        if (userByPhoneR.getData() != null) {
            user = userByPhoneR.getData();
        } else if (userByAccountNameR.getData() != null) {
            user = userByAccountNameR.getData();
        }else {
            throw new ServiceException("账号不存在");
        }
            R<List<Company>> companyListR = remoteCompanyService.getCompanyByUserId(user.getUserId(), SecurityConstants.INNER);
            List<Company> companyList = companyListR.getData();
            long count = companyList.stream().filter(company -> company.getCompanyName()
                    .equals(companyName) && company.getIdCardNumber().equals(idCardNumber)).count();
                .equals(registerUser.getCompanyName()) &&
                company.getIdCardNumber().equals(registerUser.getIdCardNumber())).count();
            if (count == 0) {
                flag = false;
            return null;
            }
        }else {
            flag = false;
        }
        return flag;
        return user;
    }