feat: 更新玩法配置管理,简化字段并增强功能

- 将玩法相关的显示名称字段统一为 `display_name`,移除多语言字段。
- 在 `PlayTypePatchController` 中新增即时切换玩法开关的功能,并推送大厅更新。
- 优化多个控制器和服务中的权限检查与数据处理逻辑,提升代码可读性与维护性。
This commit is contained in:
2026-05-25 14:34:24 +08:00
parent 270d2e9af1
commit e27a00f260
74 changed files with 4469 additions and 280 deletions

View File

@@ -80,9 +80,7 @@ test('§12.6 published play limits are visible on public effective catalog witho
'category' => $t->category,
'dimension' => $t->dimension,
'bet_mode' => $t->bet_mode,
'display_name_zh' => $t->display_name_zh ?? $t->play_code,
'display_name_en' => $t->display_name_en,
'display_name_ne' => $t->display_name_ne,
'display_name' => $t->display_name ?? $t->play_code,
'is_enabled' => true,
'min_bet_amount' => 777,
'max_bet_amount' => 400_000_000,
@@ -271,9 +269,7 @@ test('§12.6 published play config controls master_enabled on public catalog wit
'category' => $r['category'],
'dimension' => $r['dimension'],
'bet_mode' => $r['bet_mode'],
'display_name_zh' => $r['display_name_zh'],
'display_name_en' => $r['display_name_en'],
'display_name_ne' => $r['display_name_ne'],
'display_name' => $r['display_name'],
'is_enabled' => $r['is_enabled'],
'min_bet_amount' => (int) $r['min_bet_amount'],
'max_bet_amount' => (int) $r['max_bet_amount'],
@@ -381,9 +377,7 @@ test('§5 play_config publish is audited', function (): void {
'category' => $t->category,
'dimension' => $t->dimension,
'bet_mode' => $t->bet_mode,
'display_name_zh' => $t->display_name_zh ?? $t->play_code,
'display_name_en' => $t->display_name_en,
'display_name_ne' => $t->display_name_ne,
'display_name' => $t->display_name ?? $t->play_code,
'is_enabled' => true,
'min_bet_amount' => 100,
'max_bet_amount' => 500_000_000,
@@ -404,6 +398,35 @@ test('§5 play_config publish is audited', function (): void {
)->toBeTrue();
});
test('play type patch toggles active config and broadcasts instantly', function (): void {
Event::fake([PlayToggleBroadcast::class]);
config([
'broadcasting.default' => 'reverb',
'broadcasting.connections.reverb.driver' => 'reverb',
]);
$token = acceptanceMintAdminToken();
$auth = ['Authorization' => 'Bearer '.$token];
$this->patchJson('/api/v1/admin/play-types/big', ['is_enabled' => false], $auth)
->assertOk()
->assertJsonPath('data.play_code', 'big')
->assertJsonPath('data.is_enabled', false);
Event::assertDispatched(
PlayToggleBroadcast::class,
fn (PlayToggleBroadcast $event): bool => $event->playCode === 'big' && $event->enabled === false,
);
expect(
AuditLog::query()
->where('module_code', 'play_config')
->where('action_code', 'toggle_active')
->where('target_id', 'big')
->exists(),
)->toBeTrue();
});
test('§9 play_config publish broadcasts changed play toggles', function (): void {
Event::fake([PlayToggleBroadcast::class]);
config([