'主页', '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); } } } }