一、项目背景
本系统用于律所内部管理,包含多分所、多部门、多角色的协同管理体系,同时支持:
- 多级组织结构(总管理 / 分所 / 部门 / 员工)
- 接口级权限控制(API级)
- 数据权限控制(分所 / 部门 / 下级 / 自己)
- 权限申请与审批流(支持超时流转)
- 岗位体系(律师 / 人事 / 财务等)
二、整体设计思想
系统采用:
组织层级 + RBAC权限模型 + 数据权限 + 工作流审批系统
核心拆分:
组织体系(谁属于谁)
+ 权限体系(能做什么)
+ 数据范围(能看什么)
+ 审批流(能否临时授权)
+ 权限体系(能做什么)
+ 数据范围(能看什么)
+ 审批流(能否临时授权)
三、组织与用户体系设计
1️⃣ 用户表(user)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 用户ID |
| username | VARCHAR(50) | 用户名 |
| password | VARCHAR(100) | 密码(加密) |
| status | TINYINT | 状态 |
| role_type | VARCHAR(30) | 角色类型(核心) |
| parent_id | BIGINT | 上级用户ID(强组织关系) |
| law_firm_id | BIGINT | 所属分所 |
| dept_id | BIGINT | 所属部门 |
| created_at | DATETIME | 创建时间 |
role_type 枚举
| 值 | 说明 |
|---|---|
| SUPER_ADMIN | 总管理(唯一) |
| FIRM_ADMIN | 分所管理员 |
| DEPT_ADMIN | 部门管理员 |
| EMPLOYEE | 普通员工 |
2️⃣ 分所表(law_firm)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 分所ID |
| name | VARCHAR(100) | 分所名称 |
| created_by | BIGINT | 创建人(总管理) |
| created_at | DATETIME | 创建时间 |
3️⃣ 部门表(department)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 部门ID |
| name | VARCHAR(100) | 部门名称 |
| law_firm_id | BIGINT | 所属分所 |
| created_by | BIGINT | 创建人(分所管理员) |
| created_at | DATETIME | 创建时间 |
四、权限体系(接口级 RBAC)
4️⃣ 权限表(permission)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 权限ID |
| name | VARCHAR(100) | 权限名称 |
| code | VARCHAR(100) | 权限标识(如 user:delete) |
| path | VARCHAR(200) | 接口路径 |
| method | VARCHAR(10) | 请求方式 |
| created_at | DATETIME | 创建时间 |
5️⃣ 角色权限表(role_permission)
👉 角色直接使用 role_type(不单独建角色表)
| 字段名 | 类型 | 说明 |
|---|---|---|
| role_type | VARCHAR(30) | 角色类型 |
| permission_id | BIGINT | 权限ID |
五、岗位体系(业务身份)
6️⃣ 岗位表(position)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 岗位ID |
| name | VARCHAR(50) | 岗位名称 |
| code | VARCHAR(50) | 标识 |
7️⃣ 用户岗位表(user_position)
| 字段名 | 类型 | 说明 |
|---|---|---|
| user_id | BIGINT | 用户ID |
| position_id | BIGINT | 岗位ID |
六、权限申请与审批流系统
8️⃣ 权限申请表(permission_apply)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 申请ID |
| user_id | BIGINT | 申请人 |
| permission_id | BIGINT | 申请权限 |
| status | VARCHAR(20) | 状态 |
| current_approver_id | BIGINT | 当前审批人 |
| created_at | DATETIME | 创建时间 |
| finished_at | DATETIME | 完成时间 |
status
| 值 | 说明 |
|---|---|
| PENDING | 审批中 |
| APPROVED | 已通过 |
| REJECTED | 已拒绝 |
| CLOSED | 结束 |
9️⃣ 审批流转记录表(apply_flow_log)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | 主键 |
| apply_id | BIGINT | 申请ID |
| from_user_id | BIGINT | 上级 |
| to_user_id | BIGINT | 当前审批人 |
| action | VARCHAR(20) | 操作类型 |
| action_time | DATETIME | 时间 |
| remark | VARCHAR(255) | 备注 |
action
| 值 | 说明 |
|---|---|
| SUBMIT | 提交 |
| APPROVE | 同意 |
| REJECT | 拒绝 |
| TRANSFER | 转交 |
| TIMEOUT_TRANSFER | 超时转交 |
🔟 审批策略表(apply_strategy)
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | BIGINT | ID |
| role_type | VARCHAR(30) | 当前审批角色 |
| timeout_minutes | INT | 超时时间 |
| next_type | VARCHAR(30) | 流转规则 |
| created_at | DATETIME | 创建时间 |
next_type
| 值 | 说明 |
|---|---|
| SUPERIOR | 上级 |
| OTHER_MANAGER | 同级主管 |
| FIRM_ADMIN | 分所管理员 |
| NONE | 停止流转 |
七、系统核心规则
1️⃣ 组织关系(强约束)
| 角色 | 上级 |
|---|---|
| 总管理 | 无 |
| 分所管理员 | 总管理 |
| 部门管理员 | 分所管理员 |
| 员工 | 部门管理员 |
👉 通过:
parent_id 强制绑定
2️⃣ 权限控制(接口级)
流程:
用户 → role_type → role_permission → permission → API
3️⃣ 数据权限控制
| role_type | 数据范围 |
|---|---|
| SUPER_ADMIN | 全部 |
| FIRM_ADMIN | 本分所 |
| DEPT_ADMIN | 本部门 |
| EMPLOYEE | 自己 |
4️⃣ 审批流规则
- 默认向上级审批
- 超时自动流转
- 单次只允许一个接收人
- 最终停留在分所管理员或最后处理人
八、系统架构总结
用户体系(组织关系)
↓
RBAC权限(接口控制)
↓
数据权限(查询范围)
↓
审批流系统(临时授权)
↓
RBAC权限(接口控制)
↓
数据权限(查询范围)
↓
审批流系统(临时授权)
九、性能设计说明
✔ 权限缓存(登录加载)
✔ 接口权限内存判断
✔ 数据权限SQL索引优化
✔ 审批流异步处理
十、总结
该系统本质是:
一个“强组织约束 + 接口级权限 + 数据权限 + 审批流”的企业级权限平台
适用于:
- 律所系统
- 物业系统
- OA系统
- SaaS后台系统
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END






暂无评论内容