feat: 实现 AI 钓鱼与百家乐游戏的参与逻辑,并支持后台面板配置开关
This commit is contained in:
@@ -25,6 +25,7 @@ use App\Services\UserCurrencyService;
|
||||
use Illuminate\Contracts\Queue\ShouldQueue;
|
||||
use Illuminate\Foundation\Queue\Queueable;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Redis;
|
||||
|
||||
class CloseBaccaratRoundJob implements ShouldQueue
|
||||
{
|
||||
@@ -103,6 +104,10 @@ class CloseBaccaratRoundJob implements ShouldQueue
|
||||
$bet->update(['status' => 'lost', 'payout' => 0]);
|
||||
$losers[] = "{$username}-{$bet->amount}";
|
||||
|
||||
if ($username === 'AI小班长') {
|
||||
$this->handleAiLoseStreak();
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -121,9 +126,17 @@ class CloseBaccaratRoundJob implements ShouldQueue
|
||||
);
|
||||
$totalPayout += $payout;
|
||||
$winners[] = "{$username}+".number_format($payout);
|
||||
|
||||
if ($username === 'AI小班长') {
|
||||
Redis::del('ai_baccarat_lose_streak'); // 赢了清空连输
|
||||
}
|
||||
} else {
|
||||
$bet->update(['status' => 'lost', 'payout' => 0]);
|
||||
$losers[] = "{$username}-".number_format($bet->amount);
|
||||
|
||||
if ($username === 'AI小班长') {
|
||||
$this->handleAiLoseStreak();
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -149,6 +162,18 @@ class CloseBaccaratRoundJob implements ShouldQueue
|
||||
$this->pushResultMessage($round, $chatState, $winners, $losers);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理 AI 小班长连输逻辑
|
||||
*/
|
||||
private function handleAiLoseStreak(): void
|
||||
{
|
||||
$streak = Redis::incr('ai_baccarat_lose_streak');
|
||||
if ($streak >= 3) {
|
||||
Redis::setex('ai_baccarat_timeout', 3600, 'timeout'); // 连输三次,停赛1小时
|
||||
Redis::del('ai_baccarat_lose_streak');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 向公屏发送开奖结果系统消息(含各用户输赢情况)。
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user