# g2rain-department(部门与数据权限微服务)

g2rain-department 是面向多租户 SaaS 的 部门管理 后端微服务:支持租户内维护 部门树用户与部门关系,并提供 数据权限模型 / 策略 / 分组授权 等元数据与解析能力,供业务微服务在 MyBatis 层做 机构 + 部门 维度的行级数据过滤。

能力会持续迭代,接口与表结构以仓库代码及 OpenAPI 为准。

源码仓库github.com/g2rain/g2rain-department (opens new window)

# 与平台能力的衔接

  • 多租户:在租户机构(organ_id)范围内维护部门与权限配置,与平台机构模型(g2rain-basis)配合。
  • 登录态增强department_user_relation 提供 /principal_enrichment,供 g2rain-starter-department-principal 在登录后向 Principal 写入 deptPath(部门路径,可逗号分隔多部门)。
  • 数据隔离执行g2rain-starter-mybatis-extensions 在 Mapper 标注 @DataIsolation 且配置 permissionTableName 时,调用本服务 /data_permission_meta/policy_resolve 解析 分组读/写、Other 规则 等策略,自动改写 SQL。
  • 前端配套:控制台部门与数据权限配置由子应用 g2rain-department-app 承载。

# 功能域概览

领域 HTTP 前缀(示例) 说明
部门 /department 部门 CRUD、树形查询、状态变更
部门—用户 /department_user_relation 用户归属部门、批量加人、principal_enrichment
权限模型 /data_permission_model 业务表与 module_code(常对齐 spring.application.name)的权限模型元数据
权限字段 /data_permission_field 权限模型关联字段定义
权限策略 /data_permission_meta 策略配置、状态、policy_resolve 策略解析
权限分组 /data_permission_group 数据权限「小组」及状态
分组—用户 /data_permission_group_user_relation 用户加入权限分组(分组授权)
Other 规则 /data_permission_other 补充型 Other 读写规则

文档与调试spring.application.nameg2rain-department;默认 HTTP 端口见 startup 模块 application.yml(常见 8085);集成 springdoc-openapi(描述为「部门管理接口文档」)。

# 模块结构

g2rain-department/
├── g2rain-department-api/       # 对外契约:DTO、API 接口
├── g2rain-department-biz/     # Controller、Service、DAO、MyBatis XML
├── g2rain-department-startup/ # 可执行应用入口
└── scripts/                   # 建库建表示例(若有)

# 环境要求与构建

  • JDK 25Maven 3.9+
  • 运行期:MySQLNacos;可选 Redis(如同步 g2rain-syncer 消息通道)
git clone https://github.com/g2rain/g2rain-department.git
cd g2rain-department
mvn clean package -DskipTests

# 数据权限与业务服务协作(概要)

  1. 在本服务中配置 data_permission_modelmodule_code + table_name)及 data_permission_meta 策略。
  2. 通过 data_permission_group / data_permission_group_user_relation 将用户纳入分组,策略中的 groupRead / groupWrite 等开关生效。
  3. 业务服务引入 g2rain-starter-mybatis-extensions + g2rain-starter-department-principal,Mapper 使用 @DataIsolation(permissionTableName = "...")
  4. 业务服务 spring.application.name 须与权限模型中的 module_code 一致。

策略解析请求携带:organIduserIddeptPathmoduleCodetableName(详见 Starter 文档)。

# 配置要点

变量 / 配置 说明
SERVER_PORT HTTP 端口(默认示例 8085
NACOS_SERVER_ADDR Nacos 地址
spring.application.name 注册名 g2rain-department
Nacos g2rain-department.yml 数据源等敏感配置

# 相关文档