新增百家乐游戏:①数据库表+模型 ②OpenBaccaratRoundJob开局(广播+公屏) ③CloseBaccaratRoundJob结算(摇骰+赔付+CAS防并发) ④BaccaratController下注接口 ⑤前端弹窗(倒计时/骰子动画/历史趋势) ⑥调度器每分钟检查开局 ⑦GameConfig管控开关
This commit is contained in:
@@ -38,3 +38,26 @@ Schedule::call(function () {
|
||||
\App\Models\HolidayEvent::pendingToTrigger()
|
||||
->each(fn ($e) => \App\Jobs\TriggerHolidayEventJob::dispatch($e));
|
||||
})->everyMinute()->name('holiday-events:trigger')->withoutOverlapping();
|
||||
|
||||
// ──────────── 百家乐定时任务 ─────────────────────────────────────
|
||||
|
||||
// 每分钟:检查是否应开新一局(游戏开启 + 无正在进行的局)
|
||||
Schedule::call(function () {
|
||||
if (! \App\Models\GameConfig::isEnabled('baccarat')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$config = \App\Models\GameConfig::forGame('baccarat')?->params ?? [];
|
||||
$interval = (int) ($config['interval_minutes'] ?? 2);
|
||||
|
||||
// 检查距上一局触发时间是否已达到间隔
|
||||
$lastRound = \App\Models\BaccaratRound::latest()->first();
|
||||
if ($lastRound && $lastRound->created_at->diffInMinutes(now()) < $interval) {
|
||||
return; // 还没到开局时间
|
||||
}
|
||||
|
||||
// 无当前进行中的局才开新局
|
||||
if (! \App\Models\BaccaratRound::currentRound()) {
|
||||
\App\Jobs\OpenBaccaratRoundJob::dispatch();
|
||||
}
|
||||
})->everyMinute()->name('baccarat:open-round')->withoutOverlapping();
|
||||
|
||||
@@ -115,6 +115,16 @@ Route::middleware(['chat.auth'])->group(function () {
|
||||
Route::get('/{event}/status', [\App\Http\Controllers\HolidayController::class, 'status'])->name('status');
|
||||
});
|
||||
|
||||
// ── 百家乐(前台)────────────────────────────────────────────────
|
||||
Route::prefix('baccarat')->name('baccarat.')->group(function () {
|
||||
// 获取当前局次信息
|
||||
Route::get('/current', [\App\Http\Controllers\BaccaratController::class, 'currentRound'])->name('current');
|
||||
// 提交下注
|
||||
Route::post('/bet', [\App\Http\Controllers\BaccaratController::class, 'bet'])->name('bet');
|
||||
// 查询历史记录
|
||||
Route::get('/history', [\App\Http\Controllers\BaccaratController::class, 'history'])->name('history');
|
||||
});
|
||||
|
||||
// ---- 第五阶段:具体房间内部聊天核心 ----
|
||||
// 进入具体房间界面的初始化
|
||||
Route::get('/room/{id}', [ChatController::class, 'init'])->name('chat.room');
|
||||
|
||||
Reference in New Issue
Block a user