فهرست منبع

feat(system): 添加平台标识字段以支持多平台数据隔离

- 在登录日志和操作日志相关实体类中增加 platformCode 字段
- 更新 MyBatis 拦截器配置,移除对 sys_login_log 和 sys_oper_log 表的忽略
- 修改租户处理器,同步调整不受平台隔离限制的表集合
- 扩展角色部门关联逻辑,加入平台标识条件确保数据权限正确性
- 为用户视图对象添加 platformCode 属性,完善前端展示所需信息
- 调整远程调用接口参数结构,传递平台编码实现上下文一致性
hurx 1 روز پیش
والد
کامیت
7efdf7282d

+ 3 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteLogininforBo.java

@@ -31,6 +31,9 @@ public class RemoteLogininforBo implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 用户账号
      */

+ 3 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/bo/RemoteOperLogBo.java

@@ -31,6 +31,9 @@ public class RemoteOperLogBo implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 模块标题
      */

+ 1 - 0
ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogEventListener.java

@@ -74,6 +74,7 @@ public class LogEventListener {
         // 封装对象
         RemoteLogininforBo logininfor = new RemoteLogininforBo();
         logininfor.setTenantId(logininforEvent.getTenantId());
+        logininfor.setPlatformCode(logininforEvent.getPlatformCode());
         logininfor.setUserName(logininforEvent.getUsername());
         if (ObjectUtil.isNotNull(clientVo)) {
             logininfor.setClientKey(clientVo.getClientKey());

+ 0 - 2
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/interceptor/PlatformDataScopeInterceptor.java

@@ -36,8 +36,6 @@ public class PlatformDataScopeInterceptor implements Interceptor {
 
     // ✅ 直接写死忽略表(不参与 platform_code 隔离)
     private static final Set<String> IGNORE_TABLES = new HashSet<>(Arrays.asList(
-        "sys_login_log",
-        "sys_oper_log",
         "sys_sms_log",
         "sys_email_log",
         "sys_post",

+ 0 - 2
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/PlatformTenantLineHandler.java

@@ -23,8 +23,6 @@ public class PlatformTenantLineHandler implements TenantLineHandler {
 
     // 直接写死:不需要平台隔离的表(即不自动添加 platform_code 条件)
     private static final Set<String> PLATFORM_EXCLUDES = new HashSet<>(Arrays.asList(
-        "sys_login_log",
-        "sys_oper_log",
         "sys_sms_log",
         "sys_email_log",
         "sys_post",

+ 4 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysLogininfor.java

@@ -3,6 +3,7 @@ package org.dromara.system.domain;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+import org.dromara.common.tenant.core.PlatformEntity;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -32,6 +33,9 @@ public class SysLogininfor implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 用户账号
      */

+ 4 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysOperLog.java

@@ -16,7 +16,7 @@ import java.util.Date;
 
 @Data
 @TableName("sys_oper_log")
-public class SysOperLog implements Serializable {
+public class SysOperLog  implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 1L;
@@ -32,6 +32,9 @@ public class SysOperLog implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 操作模块
      */

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysLogininforBo.java

@@ -28,6 +28,9 @@ public class SysLogininforBo {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 用户账号
      */

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/bo/SysOperLogBo.java

@@ -34,6 +34,9 @@ public class SysOperLogBo {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 模块标题
      */

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysLogininforVo.java

@@ -39,6 +39,9 @@ public class SysLogininforVo implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 用户账号
      */

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysOperLogVo.java

@@ -38,6 +38,9 @@ public class SysOperLogVo implements Serializable {
      */
     private String tenantId;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 模块标题
      */

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysUserVo.java

@@ -139,4 +139,7 @@ public class SysUserVo implements Serializable {
      */
     private Long roleId;
 
+    /*平台标识*/
+    private String platformCode;
+
 }

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java

@@ -341,7 +341,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
         // 修改角色信息
         baseMapper.updateById(role);
         // 删除角色与部门关联
-        roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, role.getRoleId()));
+        roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, role.getRoleId()).eq(SysRoleDept::getPlatformCode, role.getPlatformCode()));
         // 新增角色和部门信息(数据权限)
         return insertRoleDept(bo);
     }
@@ -381,6 +381,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
             SysRoleDept rd = new SysRoleDept();
             rd.setRoleId(role.getRoleId());
             rd.setDeptId(deptId);
+            rd.setPlatformCode(role.getPlatformCode());
             list.add(rd);
         }
         if (list.size() > 0) {