Files
xuanzhi-service/web/.ai-transition/sys-change/2026-04-25-api-batch-assign-role.md
wdh-home 392fbea7eb
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
基础项目
2026-04-26 15:32:46 +08:00

2.0 KiB
Raw Blame History

API 管理批量分配角色方案归档

背景

  • 页面:/layout/admin/api
  • 源码:src/view/superAdmin/api/api.vue
  • 需求:在 API 管理列表中勾选多个 API 后,支持一次性分配角色。

方案

  • 在 API 表格顶部按钮区新增 批量分配角色 按钮。
  • 按钮复用表格已有 selection-change 选中数据,未勾选 API 时禁用。
  • 批量分配复用原单条 分配角色 抽屉,不新增独立页面或公共组件。
  • 批量模式下抽屉标题显示 批量分配角色 - 已选 N 个API
  • 批量模式下角色树默认不预勾选角色,避免多个 API 当前角色不一致时产生误导。
  • 点击确定后,对所选 API 逐个调用现有 setApiRoles 接口。
  • 保存语义与单条分配保持一致:对每个 API 都是全量覆盖角色关联关系,并由后端接口刷新 Casbin 缓存。

取舍

  • 当前采用前端批量调用现有接口,不新增后端批量接口。
  • 优点:改动边界小,复用既有 getAuthorityListsetApiRoles 和页面抽屉逻辑。
  • 限制:多个 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,由后端统一处理事务、错误聚合和缓存刷新。