1.优化开奖逻辑
2.优化后台开奖派彩 3.优化接口规范
This commit is contained in:
@@ -17,6 +17,9 @@ final class GameLiveService
|
||||
private const KEY_BET_SECONDS = 'bet_seconds';
|
||||
private const KEY_PICK_MAX_NUMBER_COUNT = 'pick_max_number_count';
|
||||
|
||||
/** 开奖结果号码池:1 至此上限(与单注可选号码个数配置无关) */
|
||||
private const DRAW_NUMBER_MAX = 36;
|
||||
|
||||
public static function buildSnapshot(?int $recordId = null): array
|
||||
{
|
||||
$record = self::resolveRecord($recordId);
|
||||
@@ -30,6 +33,7 @@ final class GameLiveService
|
||||
'period_seconds' => self::getConfigInt(self::KEY_PERIOD_SECONDS, 30),
|
||||
'bet_seconds' => self::getConfigInt(self::KEY_BET_SECONDS, 20),
|
||||
'pick_max_number_count' => self::getPickMaxNumberCount(),
|
||||
'draw_number_max' => self::DRAW_NUMBER_MAX,
|
||||
'remaining_seconds' => 0,
|
||||
'bet_remaining_seconds' => 0,
|
||||
'can_calculate' => false,
|
||||
@@ -59,7 +63,7 @@ final class GameLiveService
|
||||
$status = (int) $record['status'];
|
||||
$canCalculate = $elapsed >= $betSeconds && ($status === 0 || $status === 1);
|
||||
if ($canCalculate) {
|
||||
for ($n = 1; $n <= $pickMax; $n++) {
|
||||
for ($n = 1; $n <= self::DRAW_NUMBER_MAX; $n++) {
|
||||
$loss = self::estimateLossForNumber($bets, $n);
|
||||
$candidates[] = [
|
||||
'number' => $n,
|
||||
@@ -97,6 +101,7 @@ final class GameLiveService
|
||||
'period_seconds' => $periodSeconds,
|
||||
'bet_seconds' => $betSeconds,
|
||||
'pick_max_number_count' => $pickMax,
|
||||
'draw_number_max' => self::DRAW_NUMBER_MAX,
|
||||
'remaining_seconds' => $remaining,
|
||||
'bet_remaining_seconds' => $betRemaining,
|
||||
'can_calculate' => $canCalculate,
|
||||
@@ -129,7 +134,7 @@ final class GameLiveService
|
||||
}
|
||||
|
||||
$pickMax = self::getPickMaxNumberCount();
|
||||
if ($manualNumber !== null && ($manualNumber < 1 || $manualNumber > $pickMax)) {
|
||||
if ($manualNumber !== null && ($manualNumber < 1 || $manualNumber > self::DRAW_NUMBER_MAX)) {
|
||||
return ['ok' => false, 'msg' => '手动开奖号码超出允许范围'];
|
||||
}
|
||||
|
||||
@@ -138,7 +143,7 @@ final class GameLiveService
|
||||
$bestNumber = null;
|
||||
$bestLoss = null;
|
||||
$bestNumbers = [];
|
||||
for ($n = 1; $n <= $pickMax; $n++) {
|
||||
for ($n = 1; $n <= self::DRAW_NUMBER_MAX; $n++) {
|
||||
$loss = self::estimateLossForNumber($bets, $n);
|
||||
$candidates[] = ['number' => $n, 'estimated_loss' => $loss];
|
||||
if ($bestLoss === null || bccomp((string) $loss, (string) $bestLoss, 4) < 0) {
|
||||
@@ -165,6 +170,7 @@ final class GameLiveService
|
||||
'period_seconds' => $periodSeconds,
|
||||
'bet_seconds' => $betSeconds,
|
||||
'pick_max_number_count' => $pickMax,
|
||||
'draw_number_max' => self::DRAW_NUMBER_MAX,
|
||||
'candidate_numbers' => $candidates,
|
||||
'ai_default_number' => $bestNumber,
|
||||
'final_number' => $finalNumber,
|
||||
@@ -189,8 +195,10 @@ final class GameLiveService
|
||||
'draw_mode' => $manualNumber === null ? 0 : 1,
|
||||
'update_time' => $now,
|
||||
]);
|
||||
GameBetSettleService::settleBetsForDraw((int) $record['id'], $finalNumber);
|
||||
GameRecordService::createNextRecordAfterDraw();
|
||||
Db::commit();
|
||||
GameRecordStatService::refreshForRecordId((int) $record['id']);
|
||||
} catch (Throwable $e) {
|
||||
Db::rollback();
|
||||
return ['ok' => false, 'msg' => $e->getMessage()];
|
||||
|
||||
Reference in New Issue
Block a user