diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php
index 656a1f7..674408f 100644
--- a/app/Http/Controllers/ChatController.php
+++ b/app/Http/Controllers/ChatController.php
@@ -156,59 +156,36 @@ class ChatController extends Controller
// 每次进入先清理掉历史中旧的欢迎消息,保证同一个人只保留最后一条
$this->chatState->removeOldWelcomeMessages($id, $user->username);
- if ($user->user_level >= $superLevel) {
- // 管理员专属:全房间烟花
- broadcast(new \App\Events\EffectBroadcast($id, 'fireworks', $user->username));
+ // 统一走通用进场播报逻辑,管理员不再发送单独的特殊登录提示。
+ [$text, $color] = $this->broadcast->buildEntryBroadcast($user);
+ $vipPresencePayload = $this->broadcast->buildVipPresencePayload($user, 'join');
- // 传给前端,让管理员自己屏幕上也按规矩加载燃放烟花
- $newbieEffect = 'fireworks';
+ $generalWelcomeMsg = [
+ 'id' => $this->chatState->nextMessageId($id),
+ 'room_id' => $id,
+ 'from_user' => '进出播报',
+ 'to_user' => '大家',
+ 'content' => "{$text}",
+ 'is_secret' => false,
+ 'font_color' => $color,
+ 'action' => empty($vipPresencePayload) ? 'system_welcome' : 'vip_presence',
+ 'welcome_user' => $user->username,
+ 'sent_at' => now()->toDateTimeString(),
+ ];
- $welcomeMsg = [
- 'id' => $this->chatState->nextMessageId($id),
- 'room_id' => $id,
- 'from_user' => '系统公告',
- 'to_user' => '大家',
- 'content' => "🎉 欢迎管理员 【{$user->username}】 驾临本聊天室!请各位文明聊天!",
- 'is_secret' => false,
- 'font_color' => '#b91c1c',
- 'action' => 'admin_welcome',
- 'welcome_user' => $user->username,
- 'sent_at' => now()->toDateTimeString(),
- ];
- $this->chatState->pushMessage($id, $welcomeMsg);
- broadcast(new MessageSent($id, $welcomeMsg));
- } else {
- // 非站长:生成通用播报(有职务 > 有VIP > 普通随机词)
- [$text, $color] = $this->broadcast->buildEntryBroadcast($user);
- $vipPresencePayload = $this->broadcast->buildVipPresencePayload($user, 'join');
+ // 当会员等级带有专属主题时,把横幅与特效字段并入系统消息,供前端展示豪华进场效果。
+ if (! empty($vipPresencePayload)) {
+ $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload);
+ $initialPresenceTheme = $vipPresencePayload;
+ }
- $generalWelcomeMsg = [
- 'id' => $this->chatState->nextMessageId($id),
- 'room_id' => $id,
- 'from_user' => '进出播报',
- 'to_user' => '大家',
- 'content' => "{$text}",
- 'is_secret' => false,
- 'font_color' => $color,
- 'action' => empty($vipPresencePayload) ? 'system_welcome' : 'vip_presence',
- 'welcome_user' => $user->username,
- 'sent_at' => now()->toDateTimeString(),
- ];
+ $this->chatState->pushMessage($id, $generalWelcomeMsg);
+ // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示
+ broadcast(new MessageSent($id, $generalWelcomeMsg));
- // 当会员等级带有专属主题时,把横幅与特效字段并入系统消息,供前端展示豪华进场效果。
- if (! empty($vipPresencePayload)) {
- $generalWelcomeMsg = array_merge($generalWelcomeMsg, $vipPresencePayload);
- $initialPresenceTheme = $vipPresencePayload;
- }
-
- $this->chatState->pushMessage($id, $generalWelcomeMsg);
- // 修复:之前使用了 ->toOthers() 导致自己看不到自己的进场提示
- broadcast(new MessageSent($id, $generalWelcomeMsg));
-
- // 会员专属特效需要单独广播给其他在线成员,自己则在页面初始化后本地补播。
- if (! empty($vipPresencePayload['presence_effect'])) {
- broadcast(new \App\Events\EffectBroadcast($id, $vipPresencePayload['presence_effect'], $user->username))->toOthers();
- }
+ // 会员专属特效需要单独广播给其他在线成员,自己则在页面初始化后本地补播。
+ if (! empty($vipPresencePayload['presence_effect'])) {
+ broadcast(new \App\Events\EffectBroadcast($id, $vipPresencePayload['presence_effect'], $user->username))->toOthers();
}
}