feat(百家乐): AI小班长下注后在聊天室发送普通聊天消息
- 下注成功后调用 broadcastBetMessage() 向聊天室广播 - 消息格式:「🤖 AI分析 小班长投了 N 金币,压【大/小/豹子】,大家加油!🎲」 - 发送者 AI小班长,发送对象 大家,action=说(普通聊天) - AI 预测时显示「🤖 AI分析」标签,本地兜底时显示「📊路单统计」
This commit is contained in:
@@ -17,12 +17,14 @@
|
|||||||
namespace App\Jobs;
|
namespace App\Jobs;
|
||||||
|
|
||||||
use App\Enums\CurrencySource;
|
use App\Enums\CurrencySource;
|
||||||
|
use App\Events\MessageSent;
|
||||||
use App\Models\BaccaratBet;
|
use App\Models\BaccaratBet;
|
||||||
use App\Models\BaccaratRound;
|
use App\Models\BaccaratRound;
|
||||||
use App\Models\GameConfig;
|
use App\Models\GameConfig;
|
||||||
use App\Models\Sysparam;
|
use App\Models\Sysparam;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\BaccaratPredictionService;
|
use App\Services\BaccaratPredictionService;
|
||||||
|
use App\Services\ChatStateService;
|
||||||
use App\Services\UserCurrencyService;
|
use App\Services\UserCurrencyService;
|
||||||
use Illuminate\Bus\Queueable;
|
use Illuminate\Bus\Queueable;
|
||||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||||
@@ -171,5 +173,51 @@ class AiBaccaratBetJob implements ShouldQueue
|
|||||||
// 广播各选项的最新押注人数(让前台看到 AI 下注的人数增长)
|
// 广播各选项的最新押注人数(让前台看到 AI 下注的人数增长)
|
||||||
event(new \App\Events\BaccaratPoolUpdated($round));
|
event(new \App\Events\BaccaratPoolUpdated($round));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// 下注成功后,在聊天室发送一条普通聊天消息告知大家
|
||||||
|
$this->broadcastBetMessage($user, $round->room_id ?? 1, $betType, $amount, $decisionSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 广播 AI小班长本次下注情况到聊天室
|
||||||
|
*
|
||||||
|
* 以普通聊天消息形式发送,发送对象为大家。
|
||||||
|
*
|
||||||
|
* @param User $user AI小班长用户对象
|
||||||
|
* @param int $roomId 目标房间 ID
|
||||||
|
* @param string $betType 下注方向:big|small|triple
|
||||||
|
* @param int $amount 下注金额
|
||||||
|
* @param string $decisionSource 决策来源:ai | local
|
||||||
|
*/
|
||||||
|
private function broadcastBetMessage(
|
||||||
|
User $user,
|
||||||
|
int $roomId,
|
||||||
|
string $betType,
|
||||||
|
int $amount,
|
||||||
|
string $decisionSource,
|
||||||
|
): void {
|
||||||
|
$chatState = app(ChatStateService::class);
|
||||||
|
|
||||||
|
$labelMap = ['big' => '大【骰子点数 11~17】', 'small' => '小【骰子点数 4~10】', 'triple' => '豹子【三骰同点】'];
|
||||||
|
$betLabel = $labelMap[$betType] ?? $betType;
|
||||||
|
$sourceTag = $decisionSource === 'ai' ? '🤖 AI分析' : '📊路单统计';
|
||||||
|
|
||||||
|
$content = "{$sourceTag} 小班长投了 {$amount} 金币,压【{$betLabel}】,大家加油!🎲";
|
||||||
|
|
||||||
|
$msg = [
|
||||||
|
'id' => $chatState->nextMessageId($roomId),
|
||||||
|
'room_id' => $roomId,
|
||||||
|
'from_user' => $user->username,
|
||||||
|
'to_user' => '大家',
|
||||||
|
'content' => $content,
|
||||||
|
'is_secret' => false,
|
||||||
|
'font_color' => null,
|
||||||
|
'action' => '说',
|
||||||
|
'sent_at' => now()->toDateTimeString(),
|
||||||
|
];
|
||||||
|
|
||||||
|
$chatState->pushMessage($roomId, $msg);
|
||||||
|
broadcast(new MessageSent($roomId, $msg));
|
||||||
|
SaveMessageJob::dispatch($msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user