Some checks failed
CI / init (pull_request) Has been cancelled
CI / Frontend node 18.16.0 (pull_request) Has been cancelled
CI / Backend go (1.22) (pull_request) Has been cancelled
CI / release-pr (pull_request) Has been cancelled
CI / devops-test (1.22, 18.16.0) (pull_request) Has been cancelled
CI / release-please (pull_request) Has been cancelled
CI / devops-prod (1.22, 18.x) (pull_request) Has been cancelled
CI / docker (pull_request) Has been cancelled
45 lines
2.0 KiB
Markdown
45 lines
2.0 KiB
Markdown
# API 管理批量分配角色方案归档
|
||
|
||
## 背景
|
||
|
||
- 页面:`/layout/admin/api`
|
||
- 源码:`src/view/superAdmin/api/api.vue`
|
||
- 需求:在 API 管理列表中勾选多个 API 后,支持一次性分配角色。
|
||
|
||
## 方案
|
||
|
||
- 在 API 表格顶部按钮区新增 `批量分配角色` 按钮。
|
||
- 按钮复用表格已有 `selection-change` 选中数据,未勾选 API 时禁用。
|
||
- 批量分配复用原单条 `分配角色` 抽屉,不新增独立页面或公共组件。
|
||
- 批量模式下抽屉标题显示 `批量分配角色 - 已选 N 个API`。
|
||
- 批量模式下角色树默认不预勾选角色,避免多个 API 当前角色不一致时产生误导。
|
||
- 点击确定后,对所选 API 逐个调用现有 `setApiRoles` 接口。
|
||
- 保存语义与单条分配保持一致:对每个 API 都是全量覆盖角色关联关系,并由后端接口刷新 Casbin 缓存。
|
||
|
||
## 取舍
|
||
|
||
- 当前采用前端批量调用现有接口,不新增后端批量接口。
|
||
- 优点:改动边界小,复用既有 `getAuthorityList`、`setApiRoles` 和页面抽屉逻辑。
|
||
- 限制:多个 API 会产生多次请求;如果后续需要事务一致性或大量 API 批量处理,应新增后端批量接口。
|
||
|
||
## 涉及文件
|
||
|
||
- `src/view/superAdmin/api/api.vue`
|
||
- 新增批量分配入口。
|
||
- 新增批量模式状态、标题和提示文案。
|
||
- 单条与批量共用提交函数。
|
||
- `src/view/superAdmin/api/assignRole.js`
|
||
- 新增 `buildApiRoleAssignRequests`,统一构造角色分配请求参数。
|
||
- `src/view/superAdmin/api/assignRole.test.mjs`
|
||
- 覆盖批量 API 到 `setApiRoles` payload 的转换逻辑。
|
||
|
||
## 验证
|
||
|
||
- `node .\src\view\superAdmin\api\assignRole.test.mjs`:通过。
|
||
- `npm run build`:通过。
|
||
- 构建存在 Vite 大 chunk warning,属于现有构建体积提示,不影响本次功能编译。
|
||
|
||
## 后续建议
|
||
|
||
- 若批量选择数量可能很大,建议后端补充批量接口,例如一次提交 `apis + authorityIds`,由后端统一处理事务、错误聚合和缓存刷新。
|