136 lines
6.1 KiB
Markdown
136 lines
6.1 KiB
Markdown
# 权限模块开发计划
|
||
|
||
## 1. 权限表设计
|
||
|
||
```sql
|
||
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 新增权限接口
|
||
|
||
- [x] 1.0 创建新增权限接口 (POST /api/permission)
|
||
- [x] 1.1 生成当前接口业务逻辑文档,写入 `permission.docs.md`
|
||
- [x] 1.2 创建 `permission.schema.ts` - 定义新增权限Schema
|
||
- [x] 1.3 创建 `permission.response.ts` - 定义新增权限响应格式
|
||
- [x] 1.4 创建 `permission.service.ts` - 实现新增权限业务逻辑
|
||
- [x] 1.5 创建 `permission.controller.ts` - 实现新增权限路由
|
||
|
||
### 3.2 删除权限接口
|
||
|
||
- [x] 2.0 创建删除权限接口 (DELETE /api/permission/:id)
|
||
- [x] 2.1 更新 `permission.docs.md` - 添加删除权限业务逻辑文档
|
||
- [x] 2.2 更新 `permission.schema.ts` - 定义删除权限Schema
|
||
- [x] 2.3 更新 `permission.response.ts` - 定义删除权限响应格式
|
||
- [x] 2.4 更新 `permission.service.ts` - 实现删除权限业务逻辑
|
||
- [x] 2.5 更新 `permission.controller.ts` - 实现删除权限路由
|
||
|
||
### 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.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` - 实现查看权限完整树路由
|
||
|
||
### 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` - 实现查看指定权限树路由
|
||
|
||
### 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` - 实现权限排序路由
|
||
|
||
### 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` - 实现获取权限详情路由
|
||
|
||
|
||
## 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值 |