优化新人欢迎信息
This commit is contained in:
@@ -123,9 +123,19 @@ class ChatController extends Controller
|
||||
// 广播 UserJoined 事件,通知房间内的其他人
|
||||
broadcast(new UserJoined($id, $user->username, $userData))->toOthers();
|
||||
|
||||
// 每次进入先清理掉历史中旧的欢迎消息,保证同一个人只保留最后一条
|
||||
// 必须在推送新消息之前执行,否则可能误删刚刚创建的欢迎播报
|
||||
$this->chatState->removeOldWelcomeMessages($id, $user->username);
|
||||
|
||||
// 新人首次进入:赠送 6666 金币、播放满场烟花、发送全场欢迎通告
|
||||
// 双重校验:优先以 has_received_new_gift 标记为准,若标记异常则用 created_at 时间兜底
|
||||
$user->refresh();
|
||||
if (! $user->has_received_new_gift) {
|
||||
$isNewbie = ! $user->has_received_new_gift;
|
||||
// 兜底:如果用户创建时间在 2 分钟内,即使标记异常也按新人处理
|
||||
if (! $isNewbie && $user->created_at && $user->created_at->diffInSeconds(now()) < 120) {
|
||||
$isNewbie = true;
|
||||
}
|
||||
if ($isNewbie) {
|
||||
// 通过统一积分服务发放新人礼包 6666 金币并记录流水
|
||||
$this->currencyService->change(
|
||||
$user, 'gold', 6666, CurrencySource::NEWBIE_BONUS, '新人首次入场婿赠的 6666 金币大礼包', $id,
|
||||
@@ -147,6 +157,7 @@ class ChatController extends Controller
|
||||
];
|
||||
$this->chatState->pushMessage($id, $newbieMsg);
|
||||
broadcast(new MessageSent($id, $newbieMsg));
|
||||
SaveMessageJob::dispatch($newbieMsg);
|
||||
|
||||
// 广播烟花特效给此时已在房间的其他用户
|
||||
broadcast(new \App\Events\EffectBroadcast($id, 'fireworks', $user->username))->toOthers();
|
||||
@@ -179,10 +190,6 @@ class ChatController extends Controller
|
||||
SaveMessageJob::dispatch($aiWelcomeMsg);
|
||||
}
|
||||
|
||||
// superlevel 管理员进入:触发全房间烟花 + 系统公告,其他人走通用播报
|
||||
// 每次进入先清理掉历史中旧的欢迎消息,保证同一个人只保留最后一条
|
||||
$this->chatState->removeOldWelcomeMessages($id, $user->username);
|
||||
|
||||
// 统一走通用进场播报逻辑,管理员不再发送单独的特殊登录提示。
|
||||
[$text, $color] = $this->broadcast->buildEntryBroadcast($user);
|
||||
$vipPresencePayload = $this->broadcast->buildVipPresencePayload($user, 'join');
|
||||
|
||||
Reference in New Issue
Block a user