- Implemented API endpoint for fetching content list with filtering, sorting, and pagination. - Added DTOs for content items and tenant information. - Created frontend components for content management, including search and data table functionalities. - Updated routing to include content management page. - Enhanced the superadmin menu to navigate to the new content management section. - Included necessary styles and scripts for the new content management interface.
6.2 KiB
6.2 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/users:用户管理/superadmin/orders:订单管理/superadmin/contents:内容管理(跨租户汇总)
1.1 迭代路线(按优先级依次实现)
- 安全与鉴权
/super/v1/*(除/auth/login)强制 JWT 校验与super_admin角色校验/super/v1/auth/token改为基于当前 token 的续期/校验(不再返回固定用户 token)
- 订单管理
- 订单列表(跨租户筛选/分页/排序)
- 订单详情(含 items / snapshot 展示)
- 平台侧退款(支持强制退款,记录操作人)
- 租户管理增强
- 租户详情页(基本信息、过期续期、状态变更、管理员/成员/内容管理)
- 内容管理
- 内容列表(跨租户查询/筛选/分页/排序、下架/封禁)
- 可选:内容详情页(资源/定价/审计)
- 用户管理增强
- 用户详情页(角色、状态、余额/冻结、加入/拥有的租户、操作记录)
- 角色授予/回收(
super_admin)
- 审计与运维
- 操作审计日志、关键行为告警
- 任务队列/退款处理监控、健康检查面板
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/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 打开弹窗
- 选项:
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。 - 租户/用户详情与更多运维能力缺失:目前没有用户详情、租户详情、角色管理、密码重置等超管常见能力;如需要可扩展接口与页面。