diff --git a/app/Models/WebSocketDialogMsg.php b/app/Models/WebSocketDialogMsg.php index b35430c90..eeab397c6 100644 --- a/app/Models/WebSocketDialogMsg.php +++ b/app/Models/WebSocketDialogMsg.php @@ -957,6 +957,14 @@ class WebSocketDialogMsg extends AbstractModel $dialogMsg->key = $dialogMsg->generateMsgKey(); $dialogMsg->save(); // + if ($dialogMsg->type === 'meeting') { + MeetingMsg::createInstance([ + 'meetingid' => $dialogMsg->msg['meetingid'], + 'dialog_id' => $dialogMsg->dialog_id, + 'msg_id' => $dialogMsg->id, + ])->save(); + } + // WebSocketDialogUser::whereDialogId($dialogMsg->dialog_id)->change([ 'hide' => 0, // 有新消息时,显示会话(会话内所有会员) 'last_at' => Carbon::now(), diff --git a/app/Tasks/CloseMeetingRoomTask.php b/app/Tasks/CloseMeetingRoomTask.php index ea90b6543..ba22f1899 100644 --- a/app/Tasks/CloseMeetingRoomTask.php +++ b/app/Tasks/CloseMeetingRoomTask.php @@ -64,7 +64,8 @@ class CloseMeetingRoomTask extends AbstractTask ->chunk(100, function ($msgs) use ($newMsg, &$dialogIds) { /** @var WebSocketDialogMsg $msg */ foreach ($msgs as $msg) { - $msg->msg = Base::array2json($newMsg); + $msgData = Base::json2array($msg->getRawOriginal('msg')); + $msg->msg = Base::array2json(array_merge($msgData, $newMsg)); $msg->save(); // if (!isset($dialogIds[$msg->dialog_id])) { diff --git a/database/migrations/2024_04_04_082823_create_meeting_msgs_table.php b/database/migrations/2024_04_08_082823_create_meeting_msgs_table.php similarity index 100% rename from database/migrations/2024_04_04_082823_create_meeting_msgs_table.php rename to database/migrations/2024_04_08_082823_create_meeting_msgs_table.php diff --git a/resources/assets/js/pages/manage/components/MeetingManager.vue b/resources/assets/js/pages/manage/components/MeetingManager.vue index 78ece943d..4857171a9 100644 --- a/resources/assets/js/pages/manage/components/MeetingManager.vue +++ b/resources/assets/js/pages/manage/components/MeetingManager.vue @@ -401,7 +401,7 @@ export default { if (changedDevice.state === "ACTIVE") { this.localUser.audioTrack?.setDevice(changedDevice.device.deviceId); // Switch to an existing device when the current device is unplugged. - } else if (changedDevice.device.label === this.localUser.audioTrack.getTrackLabel()) { + } else if (changedDevice.device.label === this.localUser.audioTrack?.getTrackLabel()) { const oldMicrophones = await AgoraRTC.getMicrophones(); oldMicrophones[0] && this.localUser.audioTrack?.setDevice(oldMicrophones[0].deviceId); } @@ -412,7 +412,7 @@ export default { if (changedDevice.state === "ACTIVE") { this.localUser.videoTrack?.setDevice(changedDevice.device.deviceId); // Switch to an existing device when the current device is unplugged. - } else if (changedDevice.device.label === this.localUser.videoTrack.getTrackLabel()) { + } else if (changedDevice.device.label === this.localUser.videoTrack?.getTrackLabel()) { const oldCameras = await AgoraRTC.getCameras(); oldCameras[0] && this.localUser.videoTrack?.setDevice(oldCameras[0].deviceId); }