$legacySlugs */ private function syncRolePermissions(AdminRole $role, array $legacySlugs): void { $role->syncLegacyPermissionSlugs($legacySlugs); } /** @return list */ 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(), ], ]); } }