Files
lotteryLaravel/database/seeders/AdminRbacAndUserSeeder.php
kang 6a8cdbe3b8 feat: 新增命令和迁移以优化抽奖数据管理
- 新增 `LotteryDevPruneDrawBacklogCommand` 命令,用于按营业日区间删除积压的抽奖期号,并支持干运行和级联删除相关数据。
- 添加多个迁移文件以同步数据库结构,包括重命名重复的迁移文件、添加用户名字段、迁移抽奖状态到领域字典、合并显示名称字段、扩展审计日志目标类型字段,以及细化后台权限管理。
- 更新 `AdminRbacAndUserSeeder` 以包含角色代码字段,确保一致性与可维护性。
2026-05-25 15:33:33 +08:00

116 lines
3.5 KiB
PHP
Raw 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 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],
['code' => AdminUser::ROLE_SUPER_ADMIN, 'name' => '超级管理员'],
);
$this->syncRolePermissions($super, $this->allCatalogSlugs());
$risk = AdminRole::query()->updateOrCreate(
['slug' => 'risk_operator'],
['code' => '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'],
['code' => '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'],
['code' => '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(),
],
]);
}
}