63 lines
2.3 KiB
C#
63 lines
2.3 KiB
C#
sequenceDiagram
|
||
participant User as 用户
|
||
participant StageView as StageView
|
||
participant RoomVC as XPRoomViewController
|
||
participant NIM as NIM SDK
|
||
participant API as Api服务
|
||
participant MenuView as XPRoomMenuContainerView
|
||
|
||
Note over User,MenuView: 用户上mic完整流程
|
||
|
||
%% 触发阶段
|
||
User->>StageView: 点击麦位
|
||
StageView->>StageView: microViewTapped(调用didSelectAtIndex)
|
||
|
||
%% 权限检查阶段
|
||
StageView->>StageView: 检查麦位状态(空闲/占用/锁定)
|
||
alt 麦位被占用
|
||
StageView->>StageView: displayUserCard(显示用户信息)
|
||
else 麦位空闲且未锁定
|
||
StageView->>RoomVC: 获取聊天室成员信息
|
||
|
||
%% 用户身份判断
|
||
alt 超级管理员/管理员
|
||
StageView->>StageView: 显示操作菜单(上麦/锁麦/静音/邀请)
|
||
User->>StageView: 选择"上麦"操作
|
||
else 普通用户
|
||
alt 用户已在其他麦位
|
||
StageView->>NIM: nimDownQueue(下麦)
|
||
NIM->>NIM: 更新聊天室队列
|
||
end
|
||
end
|
||
|
||
%% 特殊房间类型处理
|
||
alt 特定房间类型(RoomType_19Mic)且位置为6
|
||
StageView->>API: requestBossMicUp(老板上麦)
|
||
API-->>StageView: 返回结果
|
||
end
|
||
|
||
%% 上麦核心流程
|
||
StageView->>NIM: nimUpQueue(上麦请求)
|
||
NIM->>NIM: 构建队列扩展信息(userInfoToQueueExt)
|
||
NIM->>API: 更新聊天室队列
|
||
API-->>NIM: 确认队列更新
|
||
|
||
%% 状态同步阶段
|
||
NIM->>RoomVC: onMicroQueueUpdate回调
|
||
RoomVC->>MenuView: 分发队列更新事件
|
||
MenuView->>MenuView: 更新micButton状态
|
||
MenuView->>MenuView: recheckMicState(状态同步检查)
|
||
|
||
%% UI更新阶段
|
||
StageView->>StageView: 更新麦位UI显示
|
||
StageView->>StageView: 显示用户头像和信息
|
||
|
||
%% 消息广播
|
||
NIM->>NIM: 发送自定义消息(CustomMessageType_Hall_Super_Admin)
|
||
NIM->>RoomVC: 广播给房间内所有用户
|
||
|
||
else 麦位被锁定
|
||
StageView->>User: 显示"麦位已锁定"提示
|
||
end
|
||
|
||
Note over User,MenuView: 流程完成,用户成功上麦 |