Эх сурвалжийг харах

feat(system): 添加部门和角色的平台标识支持

- 在 SysDeptServiceImpl 中增加 platformCode 字段的唯一性校验
- 插入部门数据时根据平台上下文设置 platformCode
- SysDeptVo 和 SysRoleVo 增加 platformCode 属性
- 更新 SysRoleMapper.xml 查询字段包含 platform_code
- 在 SysRoleServiceImpl 中增加角色名与角色键的平台级唯一校验
HuRongxin 5 өдөр өмнө
parent
commit
a533bf3497

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

@@ -101,6 +101,9 @@ public class SysDeptVo implements Serializable {
     @ExcelProperty(value = "创建时间")
     private Date createTime;
 
+    /*平台标识*/
+    private String platformCode;
+
     /**
      * 子菜单
      */

+ 2 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/vo/SysRoleVo.java

@@ -88,6 +88,8 @@ public class SysRoleVo implements Serializable {
     @ExcelProperty(value = "创建时间")
     private Date createTime;
 
+    private String platformCode;
+
     /**
      * 用户是否存在此角色标识 默认不存在
      */

+ 14 - 1
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

@@ -11,6 +11,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.RequiredArgsConstructor;
 import org.dromara.common.core.constant.CacheNames;
 import org.dromara.common.core.constant.SystemConstants;
+import org.dromara.common.core.context.PlatformContext;
+import org.dromara.common.core.enums.SysPlatformCode;
 import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.*;
 import org.dromara.common.mybatis.core.page.PageQuery;
@@ -252,6 +254,7 @@ public class SysDeptServiceImpl implements ISysDeptService {
         boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysDept>()
             .eq(SysDept::getDeptName, dept.getDeptName())
             .eq(SysDept::getParentId, dept.getParentId())
+            .eq(SysDept::getPlatformCode, dept.getPlatformCode())
             .ne(ObjectUtil.isNotNull(dept.getDeptId()), SysDept::getDeptId, dept.getDeptId()));
         return !exist;
     }
@@ -290,7 +293,17 @@ public class SysDeptServiceImpl implements ISysDeptService {
         }
         SysDept dept = MapstructUtils.convert(bo, SysDept.class);
         dept.setAncestors(info.getAncestors() + StringUtils.SEPARATOR + dept.getParentId());
-        return baseMapper.insert(dept);
+        // 1. 校验当前是否为总控平台(main),否则不能指定 platformCode
+        String currentPlatform = PlatformContext.getPlatform();
+        String targetPlatform = currentPlatform;
+        if (SysPlatformCode.MAIN.getCode().equals(currentPlatform)) {
+            targetPlatform = dept.getPlatformCode();
+        }
+        //在 "main" 平台上下文中执行插入,并获取返回值
+        Integer rows = PlatformContextUtil.executeWithPlatform(targetPlatform, () -> {
+            return baseMapper.insert(dept);
+        });
+        return rows;
     }
 
     /**

+ 3 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysRoleServiceImpl.java

@@ -19,6 +19,7 @@ import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.utils.MapstructUtils;
 import org.dromara.common.core.utils.StreamUtils;
 import org.dromara.common.core.utils.StringUtils;
+import org.dromara.common.mybatis.core.domain.BaseEntity;
 import org.dromara.common.mybatis.core.page.PageQuery;
 import org.dromara.common.mybatis.core.page.TableDataInfo;
 import org.dromara.common.satoken.utils.LoginHelper;
@@ -190,6 +191,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
     public boolean checkRoleNameUnique(SysRoleBo role) {
         boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysRole>()
             .eq(SysRole::getRoleName, role.getRoleName())
+            .eq(BaseEntity::getPlatformCode, role.getPlatformCode())
             .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId()));
         return !exist;
     }
@@ -204,6 +206,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
     public boolean checkRoleKeyUnique(SysRoleBo role) {
         boolean exist = baseMapper.exists(new LambdaQueryWrapper<SysRole>()
             .eq(SysRole::getRoleKey, role.getRoleKey())
+            .eq(BaseEntity::getPlatformCode, role.getPlatformCode())
             .ne(ObjectUtil.isNotNull(role.getRoleId()), SysRole::getRoleId, role.getRoleId()));
         return !exist;
     }

+ 2 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysRoleMapper.xml

@@ -18,7 +18,8 @@
                         r.status,
                         r.del_flag,
                         r.create_time,
-                        r.remark
+                        r.remark,
+                        r.platform_code
         from sys_role r
                  left join sys_user_role sur on sur.role_id = r.role_id
                  left join sys_user u on u.user_id = sur.user_id