You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
2.8 KiB
94 lines
2.8 KiB
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Menu;
|
|
use App\Models\ResearchDirection;
|
|
use App\Models\Role;
|
|
use App\Models\Teacher;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class SystemExtensionSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$gridRole = Role::query()->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]
|
|
);
|
|
}
|
|
}
|
|
}
|