6.1 KiB
6.1 KiB
权限模块开发计划
1. 权限表设计
CREATE TABLE sys_permission (
id BIGINT PRIMARY KEY COMMENT '主键ID',
pid BIGINT DEFAULT 0 COMMENT '父权限ID',
level TINYINT NOT NULL DEFAULT 1 COMMENT '权限层级',
permission_key VARCHAR(100) NOT NULL COMMENT '权限标识',
name VARCHAR(50) NOT NULL COMMENT '权限名称',
description VARCHAR(255) DEFAULT '' COMMENT '权限描述',
type TINYINT NOT NULL DEFAULT 1 COMMENT '权限类型(1=菜单 2=按钮 3=接口 4=数据)',
api_path_key VARCHAR(200) DEFAULT NULL COMMENT '接口路径标识',
page_path_key VARCHAR(200) DEFAULT NULL COMMENT '前端路由标识',
module VARCHAR(30) NOT NULL COMMENT '所属模块',
sort BIGINT DEFAULT 0 COMMENT '排序值',
icon VARCHAR(100) DEFAULT NULL COMMENT '图标标识',
status TINYINT DEFAULT 1 COMMENT '状态(1=启用, 0禁用)',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
/* 唯一约束 */
UNIQUE KEY uniq_permission_key (permission_key),
/* 单列索引 */
KEY idx_pid (pid),
KEY idx_level (level),
KEY idx_type (type),
KEY idx_module (module),
KEY idx_time (created_at),
/* 复合索引 */
KEY idx_parent_sort (pid, sort)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='RBAC权限表';
2. 接口功能描述
2.1 新增权限 - 沿用父模块的module 2.2 删除权限 2.3 修改权限 - 存在父权限时,module必须一致 - 同级允许重名 2.4 查看权限完整树 - 模块、状态、类型筛选 2.4 查看指定权限树 - 根据id查其下级树 2.5 排序
3. 接口开发计划
3.1 新增权限接口
- 1.0 创建新增权限接口 (POST /api/permission)
- 1.1 生成当前接口业务逻辑文档,写入
permission.docs.md
- 1.2 创建
permission.schema.ts
- 定义新增权限Schema - 1.3 创建
permission.response.ts
- 定义新增权限响应格式 - 1.4 创建
permission.service.ts
- 实现新增权限业务逻辑 - 1.5 创建
permission.controller.ts
- 实现新增权限路由
- 1.1 生成当前接口业务逻辑文档,写入
3.2 删除权限接口
- 2.0 创建删除权限接口 (DELETE /api/permission/:id)
- 2.1 更新
permission.docs.md
- 添加删除权限业务逻辑文档 - 2.2 更新
permission.schema.ts
- 定义删除权限Schema - 2.3 更新
permission.response.ts
- 定义删除权限响应格式 - 2.4 更新
permission.service.ts
- 实现删除权限业务逻辑 - 2.5 更新
permission.controller.ts
- 实现删除权限路由
- 2.1 更新
3.3 修改权限接口
- 3.0 创建修改权限接口 (PUT /api/permission/:id)
- 3.1 更新
permission.docs.md
- 添加修改权限业务逻辑文档 - 3.2 更新
permission.schema.ts
- 定义修改权限Schema - 3.3 更新
permission.response.ts
- 定义修改权限响应格式 - 3.4 更新
permission.service.ts
- 实现修改权限业务逻辑 - 3.5 更新
permission.controller.ts
- 实现修改权限路由
- 3.1 更新
3.4 查看权限完整树接口
- 4.0 创建查看权限完整树接口 (GET /api/permission/tree)
- 4.1 更新
permission.docs.md
- 添加查看权限完整树业务逻辑文档 - 4.2 更新
permission.schema.ts
- 定义查看权限完整树Schema - 4.3 更新
permission.response.ts
- 定义查看权限完整树响应格式 - 4.4 更新
permission.service.ts
- 实现查看权限完整树业务逻辑 - 4.5 更新
permission.controller.ts
- 实现查看权限完整树路由
- 4.1 更新
3.5 查看指定权限树接口
- 5.0 创建查看指定权限树接口 (GET /api/permission/:id/tree)
- 5.1 更新
permission.docs.md
- 添加查看指定权限树业务逻辑文档 - 5.2 更新
permission.schema.ts
- 定义查看指定权限树Schema - 5.3 更新
permission.response.ts
- 定义查看指定权限树响应格式 - 5.4 更新
permission.service.ts
- 实现查看指定权限树业务逻辑 - 5.5 更新
permission.controller.ts
- 实现查看指定权限树路由
- 5.1 更新
3.6 权限排序接口
- 6.0 创建权限排序接口 (PUT /api/permission/sort)
- 6.1 更新
permission.docs.md
- 添加权限排序业务逻辑文档 - 6.2 更新
permission.schema.ts
- 定义权限排序Schema - 6.3 更新
permission.response.ts
- 定义权限排序响应格式 - 6.4 更新
permission.service.ts
- 实现权限排序业务逻辑 - 6.5 更新
permission.controller.ts
- 实现权限排序路由
- 6.1 更新
3.7 获取权限详情接口
- 7.0 创建获取权限详情接口 (GET /api/permission/:id)
- 7.1 更新
permission.docs.md
- 添加获取权限详情业务逻辑文档 - 7.2 更新
permission.schema.ts
- 定义获取权限详情Schema - 7.3 更新
permission.response.ts
- 定义获取权限详情响应格式 - 7.4 更新
permission.service.ts
- 实现获取权限详情业务逻辑 - 7.5 更新
permission.controller.ts
- 实现获取权限详情路由
- 7.1 更新
4. 相关文件
src/modules/permission/permission.docs.md
- 权限模块业务逻辑文档src/modules/permission/permission.schema.ts
- 权限模块Schema定义src/modules/permission/permission.response.ts
- 权限模块响应格式定义src/modules/permission/permission.service.ts
- 权限模块业务逻辑实现src/modules/permission/permission.controller.ts
- 权限模块路由控制器src/modules/permission/permission.test.md
- 权限模块测试用例文档src/eneities/sysPermission.ts
- 权限表实体定义src/eneities/index.ts
- 实体导出文件更新
备注
- 权限模块需要支持树形结构,注意父子关系的处理
- 权限key必须唯一,需要做好唯一性验证
- 删除权限时需要检查是否有子权限,有则不允许删除
- 修改权限时,如果存在父权限,module必须与父权限一致
- 同级权限允许重名,但权限key必须唯一
- 排序功能需要支持拖拽排序,更新多个权限的sort_order值