# 会议管理接口文档 ## 接口列表 ### 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(已取消)的会议对用户端不可见