85 lines
2.9 KiB
PHP
85 lines
2.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use Dcat\Admin\Models\Menu;
|
|
use Dcat\Admin\Models\Permission;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Str;
|
|
use Throwable;
|
|
|
|
class AdminMenuSeeder extends Seeder
|
|
{
|
|
/**
|
|
* Run the database seeds.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function run()
|
|
{
|
|
//
|
|
$menus = [
|
|
['title' => '主页', 'icon' => 'feather icon-bar-chart-2', 'uri' => '/'],
|
|
['title' => '系统管理', 'icon' => 'feather icon-settings', 'uri' => '',
|
|
'permission' => ['administrators', 'roles', 'keywords', 'settings'],
|
|
'children' => [
|
|
['title' => '用户管理', 'icon' => '', 'uri' => '/auth/users', 'permission' => 'administrators'],
|
|
['title' => '角色管理', 'icon' => '', 'uri' => '/auth/roles', 'permission' => 'roles'],
|
|
['title' => '字典管理', 'icon' => '', 'uri' => '/keywords', 'permission' => 'keywords'],
|
|
['title' => '配置管理', 'icon' => '', 'uri' => '/settings', 'permission' => 'settings'],
|
|
], ],
|
|
];
|
|
DB::table('admin_menu')->truncate();
|
|
DB::table('admin_permission_menu')->truncate();
|
|
try {
|
|
DB::begintransaction();
|
|
$this->createMenus($menus);
|
|
DB::commit();
|
|
} catch (Throwable $th) {
|
|
DB::rollBack();
|
|
report($th);
|
|
}
|
|
}
|
|
|
|
public function createMenus(array $menus, $pid = 0)
|
|
{
|
|
$prefix = 'dcat.admin.';
|
|
foreach ($menus as $menu) {
|
|
$mm = Menu::create([
|
|
'title' => $menu['title'],
|
|
'icon' => $menu['icon'],
|
|
'uri' => $menu['uri'],
|
|
'parent_id' => $pid,
|
|
]);
|
|
|
|
if (isset($menu['permission'])) {
|
|
if (! is_array($menu['permission'])) {
|
|
$permissions = [$menu['permission']];
|
|
} else {
|
|
$permissions = $menu['permission'];
|
|
}
|
|
foreach ($permissions as $item) {
|
|
if (Str::contains($item, '.')) {
|
|
$permission = Permission::where('slug', $prefix.$item)->first();
|
|
} else {
|
|
$permission = Permission::where('slug', $prefix.$item.'.index')->first();
|
|
}
|
|
if ($permission) {
|
|
DB::table('admin_permission_menu')->insert([
|
|
'permission_id' => $permission->id,
|
|
'menu_id' => $mm->id,
|
|
'created_at' => now(),
|
|
'updated_at' => now(),
|
|
]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (isset($menu['children'])) {
|
|
$this->createMenus($menu['children'], $mm->id);
|
|
}
|
|
}
|
|
}
|
|
}
|