feat: 更新玩家信息和统计功能
- 在多个控制器中更新玩家相关数据的查询,新增 'nickname' 字段以增强玩家信息的完整性。 - 在 AdminDashboardSnapshotBuilder 中引入平台风险统计,提供锁定金额和使用百分比的概览。 - 更新 AdminReportQueryService 以返回更详细的统计数据,包括总投注、总中奖和总派彩金额。 - 增强测试用例以验证新增字段和统计功能的准确性。
This commit is contained in:
48
app/Support/PlayerAutoRegistrationDefaults.php
Normal file
48
app/Support/PlayerAutoRegistrationDefaults.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user