diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php
index 9e08efa..8067f58 100644
--- a/app/Http/Controllers/ChatController.php
+++ b/app/Http/Controllers/ChatController.php
@@ -72,36 +72,65 @@ class ChatController extends Controller
// 2. 广播 UserJoined 事件,通知房间内的其他人
broadcast(new UserJoined($id, $user->username, $userData))->toOthers();
- // 3. 管理员(superlevel)进入时:触发全房间烟花特效 + 公屏欢迎公告
- if ($user->user_level >= $superLevel) {
- // 广播烟花特效给所有在线用户
- broadcast(new \App\Events\EffectBroadcast($id, 'fireworks', $user->username));
+ // 3. 新人首次进入:赠送 6666 金币、播放满场烟花、发送全场欢迎通告
+ $newbieEffect = null;
+ if (! $user->has_received_new_gift) {
+ $user->increment('jjb', 6666);
+ $user->update(['has_received_new_gift' => true]);
- // 发送欢迎公告消息(使用系统公告样式)
- $welcomeMsg = [
- 'id' => $this->chatState->nextMessageId($id),
- 'room_id' => $id,
- 'from_user' => '系统公告',
- 'to_user' => '大家',
- 'content' => "🎉 欢迎管理员 {$user->username} 驾临本聊天室!请各位文明聊天!",
- 'is_secret' => false,
- 'font_color' => '#b91c1c',
- 'action' => '',
- 'sent_at' => now()->toDateTimeString(),
- ];
- $this->chatState->pushMessage($id, $welcomeMsg);
- broadcast(new MessageSent($id, $welcomeMsg));
- }
+ // 发送新人专属欢迎公告
+ $newbieMsg = [
+ 'id' => $this->chatState->nextMessageId($id),
+ 'room_id' => $id,
+ 'from_user' => '系统公告',
+ 'to_user' => '大家',
+ 'content' => "🎉 缤纷礼花满天飞,热烈欢迎新朋友 {$user->username} 首次驾临本聊天室!系统已自动赠送 6666 金币新人大礼包!",
+ 'is_secret' => false,
+ 'font_color' => '#b91c1c',
+ 'action' => '',
+ 'sent_at' => now()->toDateTimeString(),
+ ];
+ $this->chatState->pushMessage($id, $newbieMsg);
+ broadcast(new MessageSent($id, $newbieMsg));
- // 4. 获取历史消息用于初次渲染
- // TODO: 可在前端通过请求另外的接口拉取历史记录,或者直接在这里 attach
+ // 广播烟花特效给此时已在房间的其他用户
+ broadcast(new \App\Events\EffectBroadcast($id, 'fireworks', $user->username))->toOthers();
- // 渲染主聊天框架视图
- return view('chat.frame', [
- 'room' => $room,
- 'user' => $user,
- 'weekEffect' => $this->shopService->getActiveWeekEffect($user), // 周卡特效(登录自动播放)
- ]);
+ // 传给前端,让新人自己的屏幕上也燃放烟花
+ $newbieEffect = 'fireworks';
+ }
+
+ // 4. 管理员(superlevel)进入时:触发全房间烟花特效 + 公屏欢迎公告
+ if ($user->user_level >= $superLevel) {
+ // 广播烟花特效给所有在线用户
+ broadcast(new \App\Events\EffectBroadcast($id, 'fireworks', $user->username));
+
+ // 发送欢迎公告消息(使用系统公告样式)
+ $welcomeMsg = [
+ 'id' => $this->chatState->nextMessageId($id),
+ 'room_id' => $id,
+ 'from_user' => '系统公告',
+ 'to_user' => '大家',
+ 'content' => "🎉 欢迎管理员 {$user->username} 驾临本聊天室!请各位文明聊天!",
+ 'is_secret' => false,
+ 'font_color' => '#b91c1c',
+ 'action' => '',
+ 'sent_at' => now()->toDateTimeString(),
+ ];
+ $this->chatState->pushMessage($id, $welcomeMsg);
+ broadcast(new MessageSent($id, $welcomeMsg));
+ }
+
+ // 5. 获取历史消息用于初次渲染
+ // TODO: 可在前端通过请求另外的接口拉取历史记录,或者直接在这里 attach
+
+ // 渲染主聊天框架视图
+ return view('chat.frame', [
+ 'room' => $room,
+ 'user' => $user,
+ 'weekEffect' => $this->shopService->getActiveWeekEffect($user), // 周卡特效(登录自动播放)
+ 'newbieEffect' => $newbieEffect, // 新人入场专属特效
+ ]);
}
/**
diff --git a/app/Models/User.php b/app/Models/User.php
index c1911b1..84e2465 100644
--- a/app/Models/User.php
+++ b/app/Models/User.php
@@ -42,6 +42,7 @@ class User extends Authenticatable
'hy_time',
'question',
'answer',
+ 'has_received_new_gift',
];
/**
@@ -75,6 +76,7 @@ class User extends Authenticatable
'yx_time' => 'datetime',
'sj' => 'datetime',
'q3_time' => 'datetime',
+ 'has_received_new_gift' => 'boolean',
];
}
diff --git a/database/migrations/2026_02_27_091852_add_has_received_new_gift_to_users_table.php b/database/migrations/2026_02_27_091852_add_has_received_new_gift_to_users_table.php
new file mode 100644
index 0000000..b3db8a9
--- /dev/null
+++ b/database/migrations/2026_02_27_091852_add_has_received_new_gift_to_users_table.php
@@ -0,0 +1,28 @@
+boolean('has_received_new_gift')->default(false)->after('id')->comment('是否已领取新人礼包');
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ */
+ public function down(): void
+ {
+ Schema::table('users', function (Blueprint $table) {
+ $table->dropColumn('has_received_new_gift');
+ });
+ }
+};
diff --git a/resources/views/chat/frame.blade.php b/resources/views/chat/frame.blade.php
index ad46620..414700e 100644
--- a/resources/views/chat/frame.blade.php
+++ b/resources/views/chat/frame.blade.php
@@ -103,13 +103,20 @@
@include('chat.partials.scripts')
- {{-- 周卡特效:登录时自动播放(仅持卡用户可见) --}}
- @if (!empty($weekEffect))
+ {{-- 进房特效自动播放:新人烟花礼包 / 周卡特效 --}}
+ @if (!empty($newbieEffect) || !empty($weekEffect))