Sfoglia il codice sorgente

登录功能重构

lipf 4 mesi fa
parent
commit
e066652b52

+ 45 - 26
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -1,6 +1,5 @@
 package com.jzg.config;
 
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.json.JSONUtil;
 import com.alipay.api.AlipayApiException;
@@ -133,33 +132,19 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
             if(Objects.isNull(weblogUser)){
                 throw new SystemException("用户名不存在");
             }
-            // 同一个业务可能存在于多个租户,因此这里可能查询出多个
-            List<SysUserJzgInfo> sysUserJzgInfos = sysUserJzgInfoMapper.queryJzgInfoByUserId(weblogUser.getId());
-            if(CollectionUtil.isEmpty(sysUserJzgInfos)){
-                log.info("登录异常:用户不存在。 userId=[{}]",weblogUser.getId());
-                throw new SystemException("业务员不存在");
-            }
-            SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfos.get(0);
-            // 租户系统才会校验这个, 后台管理系统,没有租户的概念
-            if(this.isTenantLogin(system)){
-                if (sysUserJzgInfo.cannotLogin()) {
-                    log.info("用户被禁用/离职,不能登录。sysUserJzgInfo=[{}]", JSONUtil.toJsonStr(sysUserJzgInfo));
-                    throw new SystemException("用户已被禁用/离职,无法登录");
-                }
-            }
+            // 校验用户的有效性
+            this.validateUser(weblogUser.getId(), system);
             salt = weblogUser.getSalt();
         }
-        if(this.isTenantLogin(system)){
-            // modify by lipf, 用户所属租户如果被禁用,不能登录
-            HttpResult<List<SysTennatVo>> tenants = organizationClient.getTenantList(username);
-            log.info("用户[{}]有[{}]个租户,分别是tenants=[{}]",username, CollUtil.size(tenants.getData()), JSONUtil.toJsonStr(tenants));
-            if(CollectionUtil.isEmpty(tenants.getData())){
-                log.info("用户[{}]所属的租户已经被禁用,无法登录",username);
-                throw new SystemException("用户所属的租户已经被禁用,无法登录");
-            }
-        }
-
-
+//        if(this.isTenantLogin(system)){
+//            // modify by lipf, 用户所属租户如果被禁用,不能登录
+//            HttpResult<List<SysTennatVo>> tenants = organizationClient.getTenantList(username);
+//            log.info("用户[{}]有[{}]个租户,分别是tenants=[{}]",username, CollUtil.size(tenants.getData()), JSONUtil.toJsonStr(tenants));
+//            if(CollectionUtil.isEmpty(tenants.getData())){
+//                log.info("用户[{}]所属的租户已经被禁用,无法登录",username);
+//                throw new SystemException("用户所属的租户已经被禁用,无法登录");
+//            }
+//        }
         //检验短信验证码
         if(Objects.nonNull(code)){
             String systemSmsCode = redissonClient.getBucket(RedisKeyConstants.SMS_CODE + username).get().toString();
@@ -378,6 +363,40 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
         }};
     }
 
+    /**
+     * 校验用户的有效性(不同的登录平台对应不同的表)
+     *
+     * @param userId sus_user表的序号
+     * @author lipf
+     * @date 2026/5/7 15:46
+     */
+    private void validateUser(String userId, String system) {
+        if("APP".equals(system)) {
+            // 手机APP登录
+
+        }else if("PLATFORM".equals(system)) {
+            // 平台登录
+
+
+        }else{
+            //租户登录
+            // 同一个业务可能存在于多个租户,因此这里可能查询出多个
+            List<SysUserJzgInfo> sysUserJzgInfos = sysUserJzgInfoMapper.queryJzgInfoByUserId(userId);
+            if(CollectionUtil.isEmpty(sysUserJzgInfos)){
+                log.info("租户登录异常:用户不存在。 userId=[{}]",userId);
+                throw new SystemException("业务员不存在");
+            }
+            SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfos.get(0);
+            // 租户系统才会校验这个, 后台管理系统,没有租户的概念
+            if(this.isTenantLogin(system)){
+                if (sysUserJzgInfo.cannotLogin()) {
+                    log.info("用户被禁用/离职,不能登录。sysUserJzgInfo=[{}]", JSONUtil.toJsonStr(sysUserJzgInfo));
+                    throw new SystemException("用户已被禁用/离职,无法登录");
+                }
+            }
+        }
+    }
+
     /**
      * 判断是否是租户登录
      *