1.优化开奖逻辑
2.优化后台开奖派彩 3.优化接口规范
This commit is contained in:
@@ -54,7 +54,7 @@ class Game extends MobileBase
|
||||
'open_at' => $openAt,
|
||||
],
|
||||
'bet_config' => [
|
||||
'max_select_count' => $this->intValue($this->getConfigValue('max_select_count', '5')),
|
||||
'pick_max_number_count' => $this->getPickMaxNumberCount(),
|
||||
'chips' => ['1.0000', '5.0000', '10.0000', '25.0000', '50.0000', '100.0000'],
|
||||
'single_number_max_bet' => $this->getConfigValue('single_number_max_bet', '500.0000'),
|
||||
],
|
||||
@@ -140,13 +140,18 @@ class Game extends MobileBase
|
||||
return $response;
|
||||
}
|
||||
$periodNo = trim((string) $request->post('period_no', ''));
|
||||
$numbers = $request->post('numbers', []);
|
||||
$numbersRaw = $request->post('numbers', '');
|
||||
$betAmount = (string) $request->post('bet_amount', '');
|
||||
$idempotencyKey = trim((string) $request->post('idempotency_key', ''));
|
||||
if ($periodNo === '' || !is_array($numbers) || $betAmount === '' || $idempotencyKey === '') {
|
||||
if ($periodNo === '' || $betAmount === '' || $idempotencyKey === '') {
|
||||
return $this->mobileError(1001, 'Missing parameters');
|
||||
}
|
||||
if (count($numbers) < 1) {
|
||||
$numbers = $this->parseBetNumbersFromRequest($numbersRaw);
|
||||
if ($numbers === []) {
|
||||
return $this->mobileError(1003, 'Invalid parameter value');
|
||||
}
|
||||
$maxSelect = $this->getPickMaxNumberCount();
|
||||
if (count($numbers) > $maxSelect) {
|
||||
return $this->mobileError(1003, 'Invalid parameter value');
|
||||
}
|
||||
|
||||
@@ -285,6 +290,49 @@ class Game extends MobileBase
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 下注号码:`numbers` 为逗号分隔字符串(如 `1,8,16`);兼容旧版 JSON 数组。
|
||||
*
|
||||
* @return list<int>
|
||||
*/
|
||||
private function parseBetNumbersFromRequest($numbersRaw): array
|
||||
{
|
||||
if (is_array($numbersRaw)) {
|
||||
$out = [];
|
||||
foreach ($numbersRaw as $v) {
|
||||
$n = filter_var($v, FILTER_VALIDATE_INT);
|
||||
if ($n === false || $n < 1 || $n > 36) {
|
||||
return [];
|
||||
}
|
||||
$out[] = $n;
|
||||
}
|
||||
$out = array_values(array_unique($out));
|
||||
sort($out);
|
||||
|
||||
return $out;
|
||||
}
|
||||
$raw = trim((string) $numbersRaw);
|
||||
if ($raw === '') {
|
||||
return [];
|
||||
}
|
||||
$parts = preg_split('/\s*,\s*/', $raw);
|
||||
$out = [];
|
||||
foreach ($parts as $p) {
|
||||
if ($p === '') {
|
||||
continue;
|
||||
}
|
||||
$n = filter_var($p, FILTER_VALIDATE_INT);
|
||||
if ($n === false || $n < 1 || $n > 36) {
|
||||
return [];
|
||||
}
|
||||
$out[] = $n;
|
||||
}
|
||||
$out = array_values(array_unique($out));
|
||||
sort($out);
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
private function mapPeriodStatus($status): string
|
||||
{
|
||||
if ($this->intValue($status) === 0) {
|
||||
@@ -299,6 +347,22 @@ class Game extends MobileBase
|
||||
return 'finished';
|
||||
}
|
||||
|
||||
/**
|
||||
* 单注最多可选号码个数:`game_config.config_key = pick_max_number_count`
|
||||
*/
|
||||
private function getPickMaxNumberCount(): int
|
||||
{
|
||||
$v = $this->intValue($this->getConfigValue('pick_max_number_count', '10'));
|
||||
if ($v < 1) {
|
||||
return 1;
|
||||
}
|
||||
if ($v > 36) {
|
||||
return 36;
|
||||
}
|
||||
|
||||
return $v;
|
||||
}
|
||||
|
||||
private function getConfigValue(string $key, string $default): string
|
||||
{
|
||||
$value = GameConfig::where('config_key', $key)->value('config_value');
|
||||
|
||||
Reference in New Issue
Block a user