docs: add admin subscription tier query api

This commit is contained in:
qingfeng 2026-04-13 22:02:18 +08:00
parent 880dea1616
commit b568032177
2 changed files with 106 additions and 4 deletions

View File

@ -332,7 +332,56 @@
---
#### POST-A06 后台设置创作者订阅档位
#### POST-A06 后台查询创作者订阅档位
| 项目 | 说明 |
|------|------|
| 接口路径 | GET /admin/api/v1/creators/:creatorId/subscription/tiers |
| 接口用途 | 后台查询创作者当前完整订阅档位配置,供前端进入编辑页时回填 |
| 权限要求 | 超级管理员 / 运营专员permission_key: `creator:subscription:manage`;当前实现建议额外限制为超级管理员) |
| 涉及表 | user, creator_profile, subscription_tier, user_subscription |
**接口逻辑:**
1. 校验权限permission_key: `creator:subscription:manage`
2. 校验 `creatorId` 存在且角色为创作者,同时 `creator_profile` 处于有效状态
3. 查询 `subscription_tier` 的完整档位列表(含未启用档位)
4. 若历史数据缺失 `free` 档,则按当前互斥规则补一个内存态 `free` 返回:
- 任一付费档启用时,`free.enabled=false`
- 全部付费档关闭时,`free.enabled=true`
5. 统计各档位订阅人数(`user_subscription` 有效状态)
6. 返回完整档位列表,结构与设置接口保持一致
**路径参数:**
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| creatorId | string | 是 | 创作者 userId |
**响应数据:**
| 字段 | 类型 | 说明 |
|------|------|------|
| creatorId | string | 创作者ID |
| tiers | array | 当前完整档位配置 |
| tiers[].tierId | string | 档位ID若为内存补位 free 则可能为空字符串 |
| tiers[].tierLevel | number | 档位等级0~4 |
| tiers[].tierKey | string | free/junior/basic/senior/supreme |
| tiers[].name | string | 档位名称 |
| tiers[].price | number | 档位价格(分) |
| tiers[].description | string | 档位说明 |
| tiers[].enabled | boolean | 是否启用 |
| tiers[].permissions | string[] | 权益配置 |
| tiers[].subscriberCount | number | 当前订阅人数 |
| updatedAt | timestamp | 最近更新时间 |
**校验返回码:**
- 403权限不足
- 404创作者不存在
- 409目标用户不是创作者 / 创作者资料不可用
---
#### POST-A07 后台设置创作者订阅档位
| 项目 | 说明 |
|------|------|
@ -408,7 +457,7 @@
| `post` | 主表。需补字段:`takedown_reason VARCHAR(200)`、`takedown_by UUID`、`takedown_at TIMESTAMPTZ` |
| `content_boost` | LEFT JOIN 取注水值;`is_active=1` 时外显值叠加 |
| `subscription_tier` | 读取/配置创作者订阅档位;`visibility=subscriber` 时用于回填档位名称与价格 |
| `admin_operation_log` | 写入 takedown 审计POST-A02 详情读取该帖的全部历史 |
| `admin_operation_log` | 写入 takedown / 订阅档位配置审计POST-A02 详情读取该帖的全部历史 |
| `report` | POST-A02 详情读取该帖举报概要 |
| `notification` | POST-A04 通知创作者 |

View File

@ -1,11 +1,11 @@
# ADMIN-API-12 创作者代运营
> 当前共 5 个接口OPS-01 ~ OPS-05
> 当前共 6 个接口OPS-01 ~ OPS-06
> 本文档用于定义“后台直建创作者”“后台为创作者上传媒体”“后台为创作者代发动态”的正式后台能力。
> 本模块不再复用客户端申请/发布接口,不依赖目标用户或创作者 token。
>
> **2026-04-11 联调结论:**
> 1. `OPS-01 ~ OPS-05` 已完成本地真实 HTTP 冒烟验证;
> 1. `OPS-01 ~ OPS-06` 已完成本地真实 HTTP 冒烟验证;
> 2. 视频上传链路在测试环境实测 `mp4` 可正常上传并完成转码;
> 3. `webm` 是否可用取决于第三方媒体库实际支持,测试环境曾返回“不支持的文件类型”,联调阶段建议优先使用 `mp4`
@ -344,6 +344,59 @@
---
## OPS-06 后台查询创作者订阅档位
| 项目 | 说明 |
|------|------|
| 接口路径 | `GET /admin/api/v1/creators/:creatorId/subscription/tiers` |
| 接口用途 | 后台查询创作者当前完整订阅档位配置,供前端回填编辑页 |
| 权限要求 | `creator:subscription:manage`(当前实现建议额外限制为超级管理员) |
| 涉及表 | `user`, `creator_profile`, `subscription_tier`, `user_subscription` |
### 接口逻辑
1. 校验管理员权限
2. 校验 `creatorId` 存在且角色为创作者
3. 查询创作者完整订阅档位列表(含未启用档位)
4. 若历史数据缺失 `free` 档,则按当前互斥规则补一个内存态 `free` 返回:
- 任一付费档启用时,`free.enabled=false`
- 全部付费档关闭时,`free.enabled=true`
5. 统计各档位当前订阅人数
6. 返回完整档位列表;结构与 `PUT /admin/api/v1/creators/:creatorId/subscription/tiers` 保持一致
### 路径参数
| 字段 | 类型 | 必选 | 说明 |
|------|------|------|------|
| creatorId | string | 是 | 目标创作者 ID |
### 响应数据
| 字段 | 类型 | 说明 |
|------|------|------|
| creatorId | string | 创作者 userId |
| tiers | array | 当前完整档位配置 |
| tiers[].tierId | string | 档位 ID若为内存补位 free 可为空 |
| tiers[].tierLevel | number | 档位等级 0~4 |
| tiers[].tierKey | string | `free/junior/basic/senior/supreme` |
| tiers[].name | string | 档位名称 |
| tiers[].price | number | 月价格(分) |
| tiers[].description | string | 档位说明 |
| tiers[].enabled | boolean | 是否启用 |
| tiers[].permissions | string[] | 权益枚举 |
| tiers[].subscriberCount | number | 当前订阅人数 |
| updatedAt | timestamp | 最近更新时间 |
### 错误场景
| code | 场景 |
|------|------|
| 40001 | `creatorId` 非法 |
| 40401 | 创作者不存在 |
| 40901 | 目标用户不是创作者 / 创作者资料不可用 |
---
## 验收标准
### 1. 创建创作者