系统管理
系统管理
系统管理模块是整个低代码平台的「基础设施层」,负责组织架构、账号权限、字典参数与安全审计。它对应后端 backend/src/main/java/com/lowcode/controller/system/ 下的各 Sys*Controller,前端对应 frontend/src/views/system/。本模块的设计大量参考了 RuoYi(若依)的权限模型,并在其基础上扩展了权限设计器(按钮权限、字段权限、数据权限规则)与 SSO 单点登录能力。
阅读顺序
建议先读 与 ,理解「用户-角色-菜单」三级模型;再读 ;随后按需阅读 、、;最后进阶阅读 、、。
模块一览
| 文档 | 说明 | 后端控制器 |
|---|---|---|
| 📌 | 账号增删改查、重置密码、状态切换、导入导出 | SysUserController |
| 🛡️ | 角色 CRUD、分配菜单、数据范围设置 | SysRoleController |
| 🗂️ | 树形菜单 CRUD,目录/菜单/按钮三种类型 | SysMenuController |
| 🏢 | 树形部门 CRUD,祖先链 ancestors | SysDeptController |
| 💼 | 岗位 CRUD,岗位编码 | SysPostController |
| 📚 | 字典类型 + 字典数据,缓存机制 | SysDictController |
| ⚙️ | 按钮权限、字段权限、数据权限规则 | PermissionDesignerController |
| 📝 | @AuditLog 注解 + AOP 切面自动记录 | SysAuditLogController |
| 🔑 | 第三方身份提供方接入、自动开户、回调 | SsoAuthController |
权限模型总览
平台采用经典的 RBAC(基于角色的访问控制) 模型,核心实体关系如下:
┌──────────┐ N:N ┌──────────┐ N:N ┌──────────┐
│ SysUser │◄──────────►│ SysRole │◄──────────►│ SysMenu │
└──────────┘ sys_user_ └──────────┘ sys_role_ └──────────┘
│ role menu │
│ N:N (sys_user_post) N:N │
▼ │
┌──────────┐ 权限设计器扩展: │
│ SysPost │ • SysRoleButtonPermission (按钮权限) ◄┘
└──────────┘ • SysRoleFieldPermission (字段权限)
• SysRoleDataPermission (数据权限规则)- 用户:登录主体,通过
sys_user_role关联多个角色,通过sys_user_post关联多个岗位,归属某个部门。 - 角色:权限的载体,通过
sys_role_menu关联多个菜单,同时拥有数据范围(dataScope)。 - 菜单:三种类型——目录(M)、菜单(C)、按钮(F),按钮挂载在菜单下,是细粒度权限的最小单位。
为什么不用「用户直接绑菜单」?
直接绑会让权限维护爆炸(用户多、菜单多)。引入「角色」作为中间层后,管理员只需维护「角色-菜单」关系,用户变动只需调整其角色,符合企业实际组织管理方式。
端口约定
| 服务 | 端口 | 说明 |
|---|---|---|
| 后端 Spring Boot | 52856 | 所有 /api/** 接口 |
| 前端 Vue3 + Vite | 3000 | Vite dev server,通过 proxy 透传 /api 到后端 |
约定
- 所有系统管理接口基础路径为
/api/system(权限设计器为/api/permission,SSO 为/api/sso)。 - 实体统一使用 MyBatis-Plus 注解(
@TableName、@TableId、@TableField),逻辑删除字段一般为del_flag。 - 字典、配置等读多写少的数据使用 Spring Cache(
@Cacheable/@CacheEvict)缓存。 - 审计日志由 AOP 切面
AuditLogAspect自动写入,业务代码只需打@AuditLog注解。
接下来从 开始逐个讲解。
