diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php
index 674408f..35b3a3f 100644
--- a/app/Http/Controllers/ChatController.php
+++ b/app/Http/Controllers/ChatController.php
@@ -116,6 +116,7 @@ class ChatController extends Controller
// 3. 广播和初始化欢迎(仅限初次进入)
$newbieEffect = null;
$initialPresenceTheme = null;
+ $initialWelcomeMessage = null;
if (! $isAlreadyInRoom) {
// 广播 UserJoined 事件,通知房间内的其他人
@@ -174,14 +175,17 @@ class ChatController extends Controller
];
// 当会员等级带有专属主题时,把横幅与特效字段并入系统消息,供前端展示豪华进场效果。
- if (! empty($vipPresencePayload)) {
- $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload);
- $initialPresenceTheme = $vipPresencePayload;
- }
+ if (! empty($vipPresencePayload)) {
+ $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload);
+ $initialPresenceTheme = $vipPresencePayload;
+ }
- $this->chatState->pushMessage($id, $generalWelcomeMsg);
- // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示
- broadcast(new MessageSent($id, $generalWelcomeMsg));
+ // 把当前这次进房生成的欢迎消息带回前端,确保用户自己也一定能看到。
+ $initialWelcomeMessage = $generalWelcomeMsg;
+
+ $this->chatState->pushMessage($id, $generalWelcomeMsg);
+ // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示
+ broadcast(new MessageSent($id, $generalWelcomeMsg));
// 会员专属特效需要单独广播给其他在线成员,自己则在页面初始化后本地补播。
if (! empty($vipPresencePayload['presence_effect'])) {
@@ -273,6 +277,7 @@ class ChatController extends Controller
'weekEffect' => $this->shopService->getActiveWeekEffect($user),
'newbieEffect' => $newbieEffect,
'initialPresenceTheme' => $initialPresenceTheme,
+ 'initialWelcomeMessage' => $initialWelcomeMessage,
'historyMessages' => $historyMessages,
'pendingProposal' => $pendingProposalData,
'pendingDivorce' => $pendingDivorceData,
diff --git a/resources/views/chat/frame.blade.php b/resources/views/chat/frame.blade.php
index 73f274e..acca144 100644
--- a/resources/views/chat/frame.blade.php
+++ b/resources/views/chat/frame.blade.php
@@ -232,6 +232,17 @@
});
@endif
+ @if (!empty($initialWelcomeMessage))
+
+ @endif
@if (!empty($newbieEffect) || !empty($weekEffect) || !empty($initialPresenceTheme['presence_effect']))