- 将玩法相关的显示名称字段统一为 `display_name`,移除多语言字段。 - 在 `PlayTypePatchController` 中新增即时切换玩法开关的功能,并推送大厅更新。 - 优化多个控制器和服务中的权限检查与数据处理逻辑,提升代码可读性与维护性。
116 lines
3.4 KiB
PHP
116 lines
3.4 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\AdminRole;
|
||
use App\Models\AdminUser;
|
||
use Illuminate\Database\Seeder;
|
||
use App\Support\AdminPermissionBridge;
|
||
|
||
/**
|
||
* 后台 RBAC:与 {@see AdminUser::ROLE_SUPER_ADMIN} 及 `config/admin_permissions.php` 对齐。
|
||
*
|
||
* 演示账号 **admin** / **123456**(仅限非 production)。
|
||
*/
|
||
final class AdminRbacAndUserSeeder extends Seeder
|
||
{
|
||
/** @param list<string> $legacySlugs */
|
||
private function syncRolePermissions(AdminRole $role, array $legacySlugs): void
|
||
{
|
||
$role->syncLegacyPermissionSlugs($legacySlugs);
|
||
}
|
||
|
||
/** @return list<string> */
|
||
private function allCatalogSlugs(): array
|
||
{
|
||
return AdminPermissionBridge::allLegacySlugs();
|
||
}
|
||
|
||
public function run(): void
|
||
{
|
||
$super = AdminRole::query()->updateOrCreate(
|
||
['slug' => AdminUser::ROLE_SUPER_ADMIN],
|
||
['name' => '超级管理员'],
|
||
);
|
||
$this->syncRolePermissions($super, $this->allCatalogSlugs());
|
||
|
||
$risk = AdminRole::query()->updateOrCreate(
|
||
['slug' => 'risk_operator'],
|
||
['name' => '风控运营员'],
|
||
);
|
||
$this->syncRolePermissions($risk, [
|
||
'prd.dashboard.view',
|
||
'prd.play_switch.manage',
|
||
'prd.odds.manage',
|
||
'prd.risk_cap.manage',
|
||
'prd.rebate.manage',
|
||
'prd.jackpot.manage',
|
||
'prd.draw_result.manage',
|
||
'prd.risk.view',
|
||
'prd.risk.manage',
|
||
'prd.payout.review',
|
||
'prd.tickets.view',
|
||
'prd.wallet_reconcile.view',
|
||
'prd.audit.view',
|
||
'prd.player_freeze.manage',
|
||
'prd.report.view',
|
||
'prd.report.export',
|
||
]);
|
||
|
||
$finance = AdminRole::query()->updateOrCreate(
|
||
['slug' => 'finance'],
|
||
['name' => '财务/对账员'],
|
||
);
|
||
$this->syncRolePermissions($finance, [
|
||
'prd.dashboard.view',
|
||
'prd.users.view_finance',
|
||
'prd.risk_cap.view',
|
||
'prd.rebate.view',
|
||
'prd.jackpot.view',
|
||
'prd.draw_result.view',
|
||
'prd.payout.view',
|
||
'prd.tickets.view',
|
||
'prd.wallet_reconcile.manage',
|
||
'prd.wallet_adjust.manage',
|
||
'prd.audit.view',
|
||
'prd.report.view',
|
||
'prd.report.export',
|
||
]);
|
||
|
||
$cs = AdminRole::query()->updateOrCreate(
|
||
['slug' => 'customer_service'],
|
||
['name' => '客服人员'],
|
||
);
|
||
$this->syncRolePermissions($cs, [
|
||
'prd.dashboard.view',
|
||
'prd.users.view_cs',
|
||
'prd.tickets.view',
|
||
'prd.draw_result.view',
|
||
'prd.wallet_reconcile.view_cs',
|
||
'prd.report.view',
|
||
]);
|
||
|
||
$username = 'admin';
|
||
AdminUser::query()->updateOrCreate(
|
||
['username' => $username],
|
||
[
|
||
'name' => '超级管理员',
|
||
'email' => null,
|
||
'password' => '123456',
|
||
'status' => 0,
|
||
],
|
||
);
|
||
|
||
/** @var AdminUser $admin */
|
||
$admin = AdminUser::query()->where('username', $username)->firstOrFail();
|
||
$siteId = AdminUser::defaultAdminSiteId();
|
||
$superId = (int) $super->getKey();
|
||
$admin->roles()->sync([
|
||
$superId => [
|
||
'site_id' => $siteId,
|
||
'granted_at' => now(),
|
||
],
|
||
]);
|
||
}
|
||
}
|