复制项目

This commit is contained in:
kim.dev.6789
2026-01-14 22:16:44 +08:00
parent e2577b8cee
commit e50142a3b9
691 changed files with 97009 additions and 1 deletions

415
docs/meeting-api.md Normal file
View File

@@ -0,0 +1,415 @@
# 会议管理接口文档
## 接口列表
### 1. 创建会议
**接口地址:** `POST /meeting/create_meeting`
**请求参数:**
```json
{
"meetingID": "string", // 会议ID选填不填则自动生成
"subject": "string", // 会议主题(必填)
"coverURL": "string", // 封面URL选填
"scheduledTime": 1234567890000, // 预约时间戳(毫秒,必填)
"description": "string", // 会议描述(选填)
"duration": 60, // 会议时长(分钟,选填)
"estimatedCount": 100, // 会议预估人数(选填)
"enableMic": true, // 是否开启连麦选填默认false
"enableComment": true, // 是否开启评论选填默认false
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选选填
"ex": "string" // 扩展字段(选填)
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
},
"groupID": "string" // 创建的群聊ID
}
}
```
**说明:**
- 创建会议时会自动创建一个群聊,群聊名称为"群聊-[会议主题]"
- 会议封面会作为群聊头像
- 如果有主播列表,第一个主播自动成为群主,其他主播成为管理员
- 如果没有主播列表,创建者自动成为群主
---
### 2. 更新会议
**接口地址:** `POST /meeting/update_meeting`
**请求参数:**
```json
{
"meetingID": "string", // 会议ID必填
"subject": "string", // 会议主题(选填)
"coverURL": "string", // 封面URL选填
"scheduledTime": 1234567890000, // 预约时间戳(毫秒,选填)
"status": 2, // 会议状态1-已预约2-进行中3-已结束4-已取消(选填)
"description": "string", // 会议描述(选填)
"duration": 60, // 会议时长(分钟,选填)
"estimatedCount": 100, // 会议预估人数(选填)
"enableMic": true, // 是否开启连麦(选填,使用指针以区分是否设置)
"enableComment": true, // 是否开启评论(选填,使用指针以区分是否设置)
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选选填
"ex": "string" // 扩展字段(选填)
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 2, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
}
}
}
```
**说明:**
- 可以单独更新任意字段,只传需要更新的字段即可
- 更新主题时会同步更新群聊名称
- 更新封面时会同步更新群聊头像
- 更新主播列表时,第一个主播会成为群主,其他主播会成为管理员
- 只有创建者可以更新会议
---
### 3. 获取会议列表
**接口地址:** `POST /meeting/get_meetings`
**请求参数:**
```json
{
"creatorUserID": "string", // 创建者用户ID选填
"status": 1, // 会议状态选填1-已预约2-进行中3-已结束4-已取消
"keyword": "string", // 搜索关键词(选填,搜索主题和描述)
"startTime": 1234567890000, // 开始时间戳(毫秒,选填)
"endTime": 1234567890000, // 结束时间戳(毫秒,选填)
"pagination": {
"pageNumber": 1, // 页码从1开始选填默认1
"showNumber": 20 // 每页数量选填默认20
}
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"total": 100, // 总数
"meetings": [
{
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中3-已结束4-已取消
"creatorUserID": "string", // 创建者用户ID
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"estimatedCount": 100, // 会议预估人数
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUserIDs": ["user1", "user2"], // 主播用户ID列表多选
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"createTime": 1234567890000, // 创建时间戳(毫秒)
"updateTime": 1234567890000, // 更新时间戳(毫秒)
"ex": "string", // 扩展字段
"groupID": "string" // 关联的群聊ID
}
]
}
}
```
**说明:**
- 支持多种查询条件,可以组合使用
- 查询优先级creatorUserID > status > keyword > startTime/endTime > 全部
- 支持分页查询
- 返回的会议信息中包含主播的完整用户信息用户ID、昵称、头像等
---
### 4. 删除会议
**接口地址:** `POST /meeting/delete_meeting`
**请求参数:**
```json
{
"meetingID": "string" // 会议ID必填
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {}
}
```
**说明:**
- 只有创建者可以删除会议
- 删除会议不会删除关联的群聊
---
## 会议状态说明
- `1` - 已预约:会议已创建,等待开始
- `2` - 进行中:会议正在进行
- `3` - 已结束:会议已结束(用户端不可见)
- `4` - 已取消:会议已取消(用户端不可见)
**注意:** 用户端接口只能查看状态1已预约和2进行中的会议状态3已结束和4已取消的会议对用户端不可见。
---
## 通用响应格式
所有接口都遵循统一的响应格式:
```json
{
"errCode": 0, // 错误码0表示成功
"errMsg": "", // 错误消息
"errDlt": "", // 错误详情
"data": {} // 响应数据
}
```
---
## 用户端接口
### 5. 获取会议信息(用户端)
**接口地址:** `POST /meeting/get_meeting`
**请求参数:**
```json
{
"meetingID": "string" // 会议ID必填
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"meetingInfo": {
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"groupID": "string" // 关联的群聊ID
}
}
}
```
**说明:**
- 用户端接口只显示状态为1已预约和2进行中的会议
- 如果会议状态为3已结束或4已取消将返回错误
- 用户端接口不返回管理字段创建者ID、扩展字段、创建时间、更新时间等
- 返回的主播信息包含用户ID、昵称、头像等完整用户信息
---
### 6. 获取会议列表(用户端)
**接口地址:** `POST /meeting/get_meetings_public`
**请求参数:**
```json
{
"status": 1, // 会议状态选填1-已预约2-进行中(只能查询这两个状态)
"keyword": "string", // 搜索关键词(选填,搜索主题和描述)
"startTime": 1234567890000, // 开始时间戳(毫秒,选填)
"endTime": 1234567890000, // 结束时间戳(毫秒,选填)
"pagination": {
"pageNumber": 1, // 页码从1开始选填默认1
"showNumber": 20 // 每页数量选填默认20
}
}
```
**响应参数:**
```json
{
"errCode": 0,
"errMsg": "",
"errDlt": "",
"data": {
"total": 100, // 总数只包含状态1和2的会议
"meetings": [
{
"meetingID": "string", // 会议ID
"subject": "string", // 会议主题
"coverURL": "string", // 封面URL
"scheduledTime": 1234567890000, // 预约时间戳(毫秒)
"status": 1, // 会议状态1-已预约2-进行中
"description": "string", // 会议描述
"duration": 60, // 会议时长(分钟)
"enableMic": true, // 是否开启连麦
"enableComment": true, // 是否开启评论
"anchorUsers": [ // 主播用户信息列表
{
"userID": "user1",
"nickname": "主播1",
"faceURL": "https://example.com/avatar1.jpg"
},
{
"userID": "user2",
"nickname": "主播2",
"faceURL": "https://example.com/avatar2.jpg"
}
],
"groupID": "string" // 关联的群聊ID
}
]
}
}
```
**说明:**
- 用户端接口只显示状态为1已预约和2进行中的会议
- 如果指定status参数只能传入1或2传入其他值将返回错误
- 如果不指定status查询结果会自动过滤只返回状态1和2的会议
- 用户端接口不支持按创建者查询
- 用户端接口不返回管理字段创建者ID、扩展字段、创建时间、更新时间等
- 返回的主播信息包含用户ID、昵称、头像等完整用户信息
---
## 注意事项
1. 所有接口都需要在请求头中携带 `token` 进行身份验证
2. 创建和更新会议时,预约时间不能早于当前时间
3. 创建会议时会自动创建关联的群聊,群聊名称为"群聊-[会议主题]"
4. 更新会议主题或封面时,会同步更新关联群聊的名称或头像
5. 只有会议创建者可以更新和删除会议
6. 用户端接口只提供查看功能,不包含创建、更新、删除等管理功能
7. 用户端接口返回的数据已过滤管理字段创建者ID、扩展字段、创建时间、更新时间等
8. 用户端接口只显示状态为1已预约和2进行中的会议状态3已结束和4已取消的会议对用户端不可见