From 3eb56cab8a5a453ac5e70b6e36618dde32431326 Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 22 一月 2025 14:49:48 +0800
Subject: [PATCH] 1

---
 ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java |  103 ++++++++++++++++++++++++++-------------------------
 1 files changed, 52 insertions(+), 51 deletions(-)

diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
index 3450f8b..e83b91a 100644
--- a/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
+++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/service/SysLoginService.java
@@ -160,10 +160,16 @@
         if (!"999999".equals(smsCode)) {
             String verifyKey = CacheConstants.PHONE_CODE_KEY + StringUtils.nvl(registerUser.getPhone(), "");
             String captcha = redisService.getCacheObject(verifyKey);
-            if (captcha == null) {
+            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){
-            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();
-            if (count == 0) {
-                flag = false;
-            }
+
+    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 {
-            flag = false;
+            throw new ServiceException("账号不存在");
         }
-        return flag;
+
+        R<List<Company>> companyListR = remoteCompanyService.getCompanyByUserId(user.getUserId(), SecurityConstants.INNER);
+        List<Company> companyList = companyListR.getData();
+        long count = companyList.stream().filter(company -> company.getCompanyName()
+                .equals(registerUser.getCompanyName()) &&
+                company.getIdCardNumber().equals(registerUser.getIdCardNumber())).count();
+        if (count == 0) {
+            return null;
+        }
+
+        return user;
     }
 
 

--
Gitblit v1.7.1