Procházet zdrojové kódy

修复公众号使用验证码登录无部门名称问题

ZJY před 6 měsíci
rodič
revize
2e491dae05

+ 25 - 10
base-modules/service-system/service-system-biz/src/main/java/com/usky/system/service/SysLoginService.java

@@ -180,6 +180,17 @@ public class SysLoginService {
                 throw new BusinessException("用户名或手机号不能为空");
             }
             loginUser = sysUserService.getAppUserInfo(null, tenantId, phone);
+            // 获取部门ID
+            LambdaQueryWrapper<SysUser> deptQueryWrapper = Wrappers.lambdaQuery();
+            deptQueryWrapper.select(SysUser::getDeptId)
+                    .eq(SysUser::getDelFlag, 0)
+                    .eq(SysUser::getTenantId, tenantId)
+                    .and(w -> w.eq(SysUser::getUserName, username).or().eq(SysUser::getPhonenumber, username));
+            SysUser sysUser = sysUserService.getOne(deptQueryWrapper);
+            Integer deptId = 0; // 默认值为0,假设0表示没有部门ID
+            if (sysUser != null) {
+                deptId = sysUser.getDeptId().intValue(); // 将Long转换为Integer
+            }
         } else if(!StringUtils.isBlank(username) && !StringUtils.isBlank(verify)) {
             LOGGER.info("二维码验证码登录");
             if (StringUtils.isBlank(username)) {
@@ -191,16 +202,6 @@ public class SysLoginService {
             }
             loginUser = sysUserService.getAppUserInfo(username, tenantId, null);
         }
-
-        if (UserStatus.DELETED.getCode().equals(loginUser.getDelFlag())) {
-            asyncManager.insertLog(tenantId,loginUser.getUserName(), Constants.LOGIN_FAIL, "对不起,您的账号已被删除", null);
-            throw new BusinessException("对不起,您的账号:" + username + " 已被删除");
-        }
-        if (UserStatus.DISABLE.getCode().equals(loginUser.getStatus())) {
-            asyncManager.insertLog(tenantId,loginUser.getUserName(), Constants.LOGIN_FAIL, "用户已停用,请联系管理员", null);
-            throw new BusinessException("对不起,您的账号:" + loginUser.getUserName() + " 已停用");
-        }
-
         // 获取部门ID
         LambdaQueryWrapper<SysUser> deptQueryWrapper = Wrappers.lambdaQuery();
         deptQueryWrapper.select(SysUser::getDeptId)
@@ -212,6 +213,20 @@ public class SysLoginService {
         if (sysUser != null) {
             deptId = sysUser.getDeptId().intValue(); // 将Long转换为Integer
         }
+        if (UserStatus.DELETED.getCode().equals(loginUser.getDelFlag())) {
+            asyncManager.insertLog(tenantId,loginUser.getUserName(), Constants.LOGIN_FAIL, "对不起,您的账号已被删除", null);
+            throw new BusinessException("对不起,您的账号:" + username + " 已被删除");
+        }
+        if (UserStatus.DISABLE.getCode().equals(loginUser.getStatus())) {
+            asyncManager.insertLog(tenantId,loginUser.getUserName(), Constants.LOGIN_FAIL, "用户已停用,请联系管理员", null);
+            throw new BusinessException("对不起,您的账号:" + loginUser.getUserName() + " 已停用");
+        }
+
+//        Integer deptId = 0; // 默认值为0,假设0表示没有部门ID
+        // 确保在所有登录成功的路径中都获取部门ID
+        if (loginUser != null && loginUser.getDeptId() != null) {
+            deptId = loginUser.getDeptId().intValue();
+        }
         asyncManager.insertLog(tenantId,loginUser.getUserName(), Constants.LOGIN_SUCCESS, "登录成功", deptId);
         return loginUser;
     }