Browse Source

微信登陆

LIVE_YE 7 tháng trước cách đây
mục cha
commit
95da7e5365

+ 22 - 3
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -151,17 +151,36 @@ public class AuthController {
             log.info("客户端id: {} 认证类型:{} 异常!.", clientId, grantType);
             return R.fail(MessageUtils.message("auth.grant.type.error"));
         }
-        LoginVo loginVo = IAuthStrategy.weChatLogin(form, loginBody, client);
         //去redis中查询当前账号登录租户id = loginBody.get
         Object tenantId = RedisUtils.getCacheObject(loginBody.getUsername() + ":login");
         if (ObjectUtil.isEmpty(tenantId)) {
+            tenantId = "000000";
             //如果是空,则去查询
-            SysUserVo sysUserVo = sysUserMapper.selectUserByUserName(loginBody.getUsername());
-            tenantId = sysUserVo.getTenantId();
+            List<SysUserVo> sysUserVo = sysUserMapper.selectUserByUserNameList(loginBody.getUsername());
+            if (sysUserVo != null && sysUserVo.size() > 0) {
+                boolean flag = true;
+                for (SysUserVo userVo : sysUserVo) {
+                    if (!"000000".equals(userVo.getTenantId()) && flag){
+                        tenantId = userVo.getTenantId();
+                    }
+                    Long userId = userVo.getUserId();
+                    List<SysRoleVo> sysRoleVo = sysRoleMapper.selectRolePermissionByUserId(userId);
+                    for (SysRoleVo roleVo : sysRoleVo) {
+                        if ("teacher".equals(roleVo.getRoleKey())) {
+                            tenantId = userVo.getTenantId();
+                            flag = false;
+                            break;
+                        }
+                    }
+                }
+            }
         }
         loginBody.setTenantId(tenantId.toString());
+        LoginVo loginVo = IAuthStrategy.weChatLogin(form, loginBody, client);
         // 校验租户
         loginService.checkTenant(loginBody.getTenantId());
+        //把tenantId存在redis
+        RedisUtils.setCacheObject(loginBody.getUsername() + ":login",tenantId);
         return R.ok(loginVo);
     }