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

6.1 KiB
Raw Blame History

权限模块开发计划

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 - 实现新增权限路由

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 - 实现删除权限路由

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值