cursor-init/tasks/权限模块开发计划.md

136 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 权限模块开发计划
## 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 修改权限接口
- [x] 3.0 创建修改权限接口 (PUT /api/permission/:id)
- [x] 3.1 更新 `permission.docs.md` - 添加修改权限业务逻辑文档
- [x] 3.2 更新 `permission.schema.ts` - 定义修改权限Schema
- [x] 3.3 更新 `permission.response.ts` - 定义修改权限响应格式
- [x] 3.4 更新 `permission.service.ts` - 实现修改权限业务逻辑
- [x] 3.5 更新 `permission.controller.ts` - 实现修改权限路由
### 3.4 查看权限完整树接口
- [x] 4.0 创建查看权限完整树接口 (GET /api/permission/tree)
- [x] 4.1 更新 `permission.docs.md` - 添加查看权限完整树业务逻辑文档
- [x] 4.2 更新 `permission.schema.ts` - 定义查看权限完整树Schema
- [x] 4.3 更新 `permission.response.ts` - 定义查看权限完整树响应格式
- [x] 4.4 更新 `permission.service.ts` - 实现查看权限完整树业务逻辑
- [x] 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 权限排序接口
- [x] 6.0 创建权限排序接口 (PUT /api/permission/sort)
- [x] 6.1 更新 `permission.docs.md` - 添加权限排序业务逻辑文档
- [x] 6.2 更新 `permission.schema.ts` - 定义权限排序Schema
- [x] 6.3 更新 `permission.response.ts` - 定义权限排序响应格式
- [x] 6.4 更新 `permission.service.ts` - 实现权限排序业务逻辑
- [x] 6.5 更新 `permission.controller.ts` - 实现权限排序路由
### 3.7 获取权限详情接口
- [x] 7.0 创建获取权限详情接口 (GET /api/permission/:id)
- [x] 7.1 更新 `permission.docs.md` - 添加获取权限详情业务逻辑文档
- [x] 7.2 更新 `permission.schema.ts` - 定义获取权限详情Schema
- [x] 7.3 更新 `permission.response.ts` - 定义获取权限详情响应格式
- [x] 7.4 更新 `permission.service.ts` - 实现获取权限详情业务逻辑
- [x] 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值