# 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.name 为 g2rain-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 25、Maven 3.9+
- 运行期:MySQL、Nacos;可选 Redis(如同步
g2rain-syncer消息通道)
git clone https://github.com/g2rain/g2rain-department.git
cd g2rain-department
mvn clean package -DskipTests
# 数据权限与业务服务协作(概要)
- 在本服务中配置
data_permission_model(module_code+table_name)及data_permission_meta策略。 - 通过
data_permission_group/data_permission_group_user_relation将用户纳入分组,策略中的 groupRead / groupWrite 等开关生效。 - 业务服务引入
g2rain-starter-mybatis-extensions+g2rain-starter-department-principal,Mapper 使用@DataIsolation(permissionTableName = "...")。 - 业务服务
spring.application.name须与权限模型中的module_code一致。
策略解析请求携带:organId、userId、deptPath、moduleCode、tableName(详见 Starter 文档)。
# 配置要点
| 变量 / 配置 | 说明 |
|---|---|
SERVER_PORT | HTTP 端口(默认示例 8085) |
NACOS_SERVER_ADDR | Nacos 地址 |
spring.application.name | 注册名 g2rain-department |
Nacos g2rain-department.yml | 数据源等敏感配置 |
# 相关文档
- g2rain-common(Principal 中的
deptPath/X-DEPT-PATH) - g2rain-spring-boot-starter(
department-principal、mybatis-extensions数据隔离) - g2rain-department-app
- g2rain-deploy