9.0 KiB
9.0 KiB
QuyUn 平台超级管理员(frontend/superadmin)页面与功能规划
基于 backend/docs/swagger.json 中平台侧接口 /super/v1/*,规划 frontend/superadmin/ 的信息架构、页面路由与核心交互。
frontend/superadmin/src/router/index.js的路由基座为/super/;API base 由VITE_API_BASE_URL控制(见frontend/superadmin/src/service/apiClient.js),本文中的 API 路径均为绝对路径(例如/super/v1/users)。
0. 全局约定(前端通用能力)
- 鉴权:登录成功后保存
token(建议保存到localStorage.super_token),所有请求带Authorization: Bearer <token>(项目已在frontend/superadmin/src/service/apiClient.js实现)。 - 路由守卫:
- 未登录访问受保护页面 → 跳转
/auth/login。 - 可选:启动时调用
GET /super/v1/auth/token校验 token 是否有效(401 则清理 token 并回到登录页)。
- 未登录访问受保护页面 → 跳转
- 分页/排序:列表接口使用
page/limit,并支持asc/desc(字段名逗号分隔)。统一封装分页表格组件与 URL query 同步。 - 枚举来源:优先使用
GET /super/v1/tenants/statuses、GET /super/v1/users/statuses返回的requests.KV[]作为下拉选项(swagger 中dto.*StatusUpdateForm的 enum 与consts.*Status存在不一致,见“风险点”)。
1. 路由与菜单(与现有路由保持一致)
业务页面统一放在 /superadmin/*。
/auth/login:登录/:概览 Dashboard/superadmin/tenants:租户管理/superadmin/tenants/:tenantID:租户详情/superadmin/users:用户管理/superadmin/users/:userID:用户详情/superadmin/orders:订单管理/superadmin/orders/:orderID:订单详情/superadmin/contents:内容管理(跨租户汇总)/superadmin/creators:创作者/成员审核(待补超管接口)/superadmin/coupons:优惠券(待补超管接口)/superadmin/finance:财务与提现(待补超管接口)/superadmin/reports:报表与导出(待补超管接口)/superadmin/assets:资产与上传(待补超管接口)/superadmin/notifications:通知与消息(待补超管接口)
1.1 迭代路线(按接口可用性)
- P0(已有接口可落地):登录、概览、租户管理/详情、用户管理/详情、订单列表/详情/退款、内容治理。
- P1(需补超管接口):创作者审核、优惠券、财务/提现、报表导出。
- P2(扩展增强):资产/上传治理、通知中心、审计日志。
2. 页面规格(页面 → 功能 → API)
2.1 登录 /auth/login
目标:完成超级管理员登录并写入 token。
- 登录表单:
username、password(对应dto.LoginForm) - API:
- 登录:
POST /super/v1/auth/login→dto.LoginResponse.token - 校验/续期:
GET /super/v1/auth/token(返回同结构dto.LoginResponse)
- 登录:
- 交互:
- 失败提示:展示后端错误信息
- 成功:保存 token → 跳转到
/superadmin/tenants或上次访问页面
2.2 概览 /(Dashboard)
目标:提供“关键指标 + 快捷入口”。
- 指标:
- 用户状态统计:
GET /super/v1/users/statistics(dto.UserStatistics[]) - 可选:租户总数(利用租户列表响应中的
total):GET /super/v1/tenants?limit=10&page=1
- 用户状态统计:
- 快捷入口:租户管理、用户管理
2.3 租户管理 /superadmin/tenants
核心对象:dto.TenantItem
- 创建租户并关联租户管理员(新增)
- 表单字段:
code、name、admin_user_id、duration(7/30/90/180/365 天) - API:
POST /super/v1/tenants(dto.TenantCreateForm) - 行为:创建
tenants记录,并创建tenant_users关系,角色为tenant_admin
- 表单字段:
- 租户列表(筛选/分页/排序)
- 过滤:
name、status - 排序:
asc/desc - API:
GET /super/v1/tenants
- 过滤:
- 状态更新
- 选项:
GET /super/v1/tenants/statuses(requests.KV[]) - API:
PATCH /super/v1/tenants/{tenantID}/status(dto.TenantStatusUpdateForm) - 交互:点击状态 tag 打开弹窗选择新状态并提交
- 选项:
- 续期/更新过期时间
- 方案:提供固定档位(7/30/90/180/365 天)或日期选择器(二选一;swagger 当前为 duration 档位)
- API:
PATCH /super/v1/tenants/{tenantID}(dto.TenantExpireUpdateForm.duration)
2.4 租户详情 /superadmin/tenants/:tenantID
- 基本信息、管理员/成员列表、内容与订单列表。
- API:
GET /super/v1/tenants/{tenantID}GET /super/v1/tenants/{tenantID}/usersGET /super/v1/tenants/{tenantID}/contentsGET /super/v1/orders(按tenant_id过滤)
2.5 用户管理 /superadmin/users
核心对象:dto.UserItem
- 用户列表(筛选/分页/排序)
- 过滤:
username、tenantID、status - 排序:
asc/desc - API:
GET /super/v1/users
- 过滤:
- 用户状态统计(页头统计条)
- API:
GET /super/v1/users/statistics
- API:
- 更新用户状态
- 选项:
GET /super/v1/users/statuses(requests.KV[]) - API:
PATCH /super/v1/users/{userID}/status(dto.UserStatusUpdateForm) - 交互:点击状态 tag 打开弹窗
- 选项:
2.6 用户详情 /superadmin/users/:userID
- 资料展示、状态/角色变更、拥有/加入的租户列表。
- API:
GET /super/v1/users/{userID}PATCH /super/v1/users/{userID}/statusPATCH /super/v1/users/{userID}/rolesGET /super/v1/tenants(按user_id过滤)GET /super/v1/users/{userID}/tenants
2.7 订单管理 /superadmin/orders
- 订单列表(跨租户筛选/分页/排序)、平台退款、跳转详情页。
- API:
GET /super/v1/ordersPOST /super/v1/orders/{orderID}/refund
2.8 订单详情 /superadmin/orders/:orderID
- 订单详情、支付信息、退款入口。
- API:
GET /super/v1/orders/{orderID}
2.9 内容治理 /superadmin/contents
- 内容列表(跨租户筛选/排序)、审核、状态变更。
- API:
GET /super/v1/contentsPOST /super/v1/contents/{contentID}/reviewPATCH /super/v1/tenants/{tenantID}/contents/{contentID}/status
2.10 创作者与成员审核 /superadmin/creators
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/creatorsGET /super/v1/creator-applicationsPOST /super/v1/creator-applications/{id}/reviewGET /super/v1/creator-membersPOST /super/v1/creator-members/{id}/review
2.11 优惠券 /superadmin/coupons
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/couponsPATCH /super/v1/coupons/{id}/statusGET /super/v1/coupon-grants
2.12 财务与提现 /superadmin/finance
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/withdrawalsPOST /super/v1/withdrawals/{id}/approvePOST /super/v1/withdrawals/{id}/rejectGET /super/v1/wallet-ledgers
2.13 报表与导出 /superadmin/reports
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/reports/overviewGET /super/v1/reports/seriesPOST /super/v1/reports/export
2.14 资产与上传 /superadmin/assets
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/assetsDELETE /super/v1/assets/{id}GET /super/v1/assets/usage
2.15 通知与消息 /superadmin/notifications
- 现状:页面已提供占位提示,等待超管侧跨租户接口。
- 建议接口:
GET /super/v1/notificationsPOST /super/v1/notifications/broadcastGET /super/v1/notifications/templatesPOST /super/v1/notifications/templates
3. 枚举与数据结构(UI 需要)
- 租户状态:
consts.TenantStatus(pending_verify/verified/banned),推荐用GET /super/v1/tenants/statuses驱动展示 label - 用户状态:
consts.UserStatus(pending_verify/verified/banned),推荐用GET /super/v1/users/statuses驱动展示 label - KV 结构:
requests.KV(key为机器值,value为展示文案)
4. 风险点 / 待补能力(从 swagger 反推)
- swagger 不一致:
dto.TenantStatusUpdateForm.status/dto.UserStatusUpdateForm.status在 swagger 里额外出现normal/disabledenum,但consts.*Status与列表筛选 enum 为pending_verify/verified/banned;前端应以/statuses接口返回为准,并推动后端修正 swagger。 - 分页 items 结构疑似不完整:列表接口 swagger 中
items被标成单个 object($ref dto.TenantItem/dto.UserItem),实际应为数组;当前前端服务层已做兼容(normalizeItems),但建议后端修正 swagger。 - 跨租户超管接口缺口:创作者审核、优惠券、提现/钱包、报表、资产、通知等仍依赖租户侧接口,需要补齐
/super/v1/*聚合能力后才能落地。