updateOrCreate( ['code' => 'grid_member'], [ 'name' => '网格员', 'remark' => '仅可编辑与跟进已配置高校及研究方向范围内的老师', 'sort' => 100, 'status' => 1, ] ); $systemRoot = Menu::query()->where('path', '/system')->whereNull('parent_id')->first(); if (! $systemRoot) { return; } $directionMenu = Menu::query()->firstOrCreate( ['path' => '/system/research-directions', 'parent_id' => $systemRoot->id], [ 'name' => 'SystemResearchDirections', 'title' => '研究方向', 'component' => 'system/research-directions/index', 'icon' => 'Collection', 'sort' => 45, 'visible' => 1, 'keep_alive' => 0, 'permission_code' => null, 'status' => 1, ] ); $gridMenu = Menu::query()->firstOrCreate( ['path' => '/system/grid-members', 'parent_id' => $systemRoot->id], [ 'name' => 'SystemGridMembers', 'title' => '网格员管理', 'component' => 'system/grid-members/index', 'icon' => 'UserFilled', 'sort' => 46, 'visible' => 1, 'keep_alive' => 0, 'permission_code' => null, 'status' => 1, ] ); $superAdmin = Role::query()->where('code', 'super_admin')->first(); if ($superAdmin) { $superAdmin->menus()->syncWithoutDetaching([ $directionMenu->id, $gridMenu->id, ]); } $talentMenus = Menu::query() ->whereIn('path', ['/talent', '/teachers', '/demands']) ->pluck('id') ->all(); $gridRole->menus()->syncWithoutDetaching($talentMenus); $gridRole->menus()->detach($directionMenu->id); $this->seedResearchDirectionsFromTeachers(); } protected function seedResearchDirectionsFromTeachers(): void { $names = \Illuminate\Support\Facades\DB::table('research_directions') ->orderBy('name') ->pluck('name'); $sort = 0; foreach ($names as $name) { ResearchDirection::query()->firstOrCreate( ['name' => $name], ['sort' => $sort++, 'status' => 1] ); } } }