Files
lotteryLaravel/app/Support/PlayerAutoRegistrationDefaults.php
kang d5232c756f feat: 更新玩家信息和统计功能
- 在多个控制器中更新玩家相关数据的查询,新增 'nickname' 字段以增强玩家信息的完整性。
- 在 AdminDashboardSnapshotBuilder 中引入平台风险统计,提供锁定金额和使用百分比的概览。
- 更新 AdminReportQueryService 以返回更详细的统计数据,包括总投注、总中奖和总派彩金额。
- 增强测试用例以验证新增字段和统计功能的准确性。
2026-06-01 16:53:08 +08:00

49 lines
1.2 KiB
PHP
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
namespace App\Support;
use App\Models\Player;
/**
* 玩家 SSO 首登自动建档时的默认展示名username / nickname
*/
final class PlayerAutoRegistrationDefaults
{
public const DISPLAY_NAME_PREFIX = 'nlotto';
private const RANDOM_SUFFIX_DIGITS = 6;
private const MAX_UNIQUE_ATTEMPTS = 10;
public static function displayName(): string
{
for ($attempt = 0; $attempt < self::MAX_UNIQUE_ATTEMPTS; $attempt++) {
$candidate = self::DISPLAY_NAME_PREFIX.self::randomSuffix();
if (! Player::query()->where('username', $candidate)->exists()) {
return $candidate;
}
}
return self::DISPLAY_NAME_PREFIX.self::randomSuffix();
}
/**
* @return array{username: string, nickname: string}
*/
public static function profileFields(): array
{
$name = self::displayName();
return [
'username' => $name,
'nickname' => $name,
];
}
private static function randomSuffix(): string
{
return str_pad((string) random_int(0, 999_999), self::RANDOM_SUFFIX_DIGITS, '0', STR_PAD_LEFT);
}
}