From 45ac0f23e12ac2a45c6affe9e39d0897e4fad618 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期四, 16 二月 2023 17:06:10 +0800 Subject: [PATCH] !286 合并 多租户功能 * add 新增 ruoyi-common-tenant 多租户模块 全框架适配多租户改动 * update 优化 隐藏页面主键 * remove 移除 缓存列表功能(多租户缓存功能繁杂多样 没有办法在页面管理) * update 重构 全局缓存KEY 与 常用缓存KEY做区分 * update 重构 OssFactory 加载方式 改为每次比对配置做实例更新 * update 优化 SaTokenDao 改为 Bean 注入 便于扩展 * update 重构 项目初始化数据改为懒加载 不提供热加载 * update 重构 验证码开关使用配置文件(经调查少有动态开启需求) * update 优化 启用 sqlserver 高版本语法 简化sql脚本语法 * update 优化 DataPermissionHelper 增加 开启/关闭 忽略数据权限功能 * update 优化 连接池增加 keepaliveTime 探活参数 * update 优化 调整连接池最长生命周期 防止出现警告 * update 优化 代码生成页面模板 校验不必要的表单数据 * add 新增 StringUtils splitTo 与 splitList 方法 优化业务代码 --- ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/utils/LoginHelper.java | 57 +++++++++++++++++++++++++++++++++++++++++---------------- 1 files changed, 41 insertions(+), 16 deletions(-) diff --git a/ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/utils/LoginHelper.java b/ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/utils/LoginHelper.java index f7fefa3..3bff1f2 100644 --- a/ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/utils/LoginHelper.java +++ b/ruoyi-common/ruoyi-common-satoken/src/main/java/com/ruoyi/common/satoken/utils/LoginHelper.java @@ -1,8 +1,11 @@ package com.ruoyi.common.satoken.utils; import cn.dev33.satoken.context.SaHolder; +import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.json.JSONObject; +import com.ruoyi.common.core.constant.TenantConstants; import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.core.enums.DeviceType; @@ -11,6 +14,8 @@ import com.ruoyi.common.core.utils.StringUtils; import lombok.AccessLevel; import lombok.NoArgsConstructor; + +import java.util.Set; /** * 鐧诲綍閴存潈鍔╂墜 @@ -37,8 +42,7 @@ */ public static void login(LoginUser loginUser) { SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); - StpUtil.login(loginUser.getLoginId()); - setLoginUser(loginUser); + StpUtil.login(loginUser.getLoginId(), new SaLoginModel().setExtra(LOGIN_USER_KEY, loginUser)); } /** @@ -49,15 +53,9 @@ */ public static void loginByDevice(LoginUser loginUser, DeviceType deviceType) { SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); - StpUtil.login(loginUser.getLoginId(), deviceType.getDevice()); - setLoginUser(loginUser); - } - - /** - * 璁剧疆鐢ㄦ埛鏁版嵁(澶氱骇缂撳瓨) - */ - public static void setLoginUser(LoginUser loginUser) { - StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser); + StpUtil.login(loginUser.getLoginId(), new SaLoginModel() + .setDevice(deviceType.getDevice()) + .setExtra(LOGIN_USER_KEY, loginUser)); } /** @@ -68,7 +66,7 @@ if (loginUser != null) { return loginUser; } - loginUser = (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY); + loginUser = ((JSONObject) StpUtil.getExtra(LOGIN_USER_KEY)).toBean(LoginUser.class); SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser); return loginUser; } @@ -97,6 +95,19 @@ } /** + * 鑾峰彇绉熸埛ID + */ + public static String getTenantId() { + LoginUser loginUser; + try { + loginUser = getLoginUser(); + } catch (Exception e) { + return null; + } + return loginUser.getTenantId(); + } + + /** * 鑾峰彇閮ㄩ棬ID */ public static Long getDeptId() { @@ -119,17 +130,31 @@ } /** - * 鏄惁涓虹鐞嗗憳 + * 鏄惁涓鸿秴绾х鐞嗗憳 * * @param userId 鐢ㄦ埛ID * @return 缁撴灉 */ - public static boolean isAdmin(Long userId) { + public static boolean isSuperAdmin(Long userId) { return UserConstants.SUPER_ADMIN_ID.equals(userId); } - public static boolean isAdmin() { - return isAdmin(getUserId()); + public static boolean isSuperAdmin() { + return isSuperAdmin(getUserId()); + } + + /** + * 鏄惁涓鸿秴绾х鐞嗗憳 + * + * @param rolePermission 瑙掕壊鏉冮檺鏍囪瘑缁� + * @return 缁撴灉 + */ + public static boolean isTenantAdmin(Set<String> rolePermission) { + return rolePermission.contains(TenantConstants.TENANT_ADMIN_ROLE_KEY); + } + + public static boolean isTenantAdmin() { + return isTenantAdmin(getLoginUser().getRolePermission()); } } -- Gitblit v1.9.3