fillInitialData(); DB::table('admin_menus')->truncate(); DB::table('admin_permissions')->truncate(); DB::table('admin_permission_menu')->truncate(); DB::table('admin_role_permissions')->truncate(); // icon: https://icones.js.org/collection/mdi $list = [ ['name' => '首页', 'icon' => 'mdi:home', 'slug' => 'dashboard', 'url' => '/dashboard', 'is_home' => 1], ['name' => '系统管理', 'icon' => 'mdi:cog-outline', 'slug' => 'system', 'url' => '/system', 'children' => [ ['name' => '管理员', 'icon' => 'mdi:account-cog-outline', 'slug' => 'admin_users', 'url' => '/system/admin_users'], ['name' => '角色', 'icon' => 'mdi:account-box-outline', 'slug' => 'roles', 'url' => '/system/admin_roles'], ['name' => '权限', 'icon' => 'mdi:key-variant', 'slug' => 'permissions', 'url' => '/system/admin_permissions'], ['name' => '菜单', 'icon' => 'mdi:menu-open', 'slug' => 'menus', 'url' => '/system/admin_menus'], ['name' => '设置', 'icon' => 'mdi:application-cog-outline', 'slug' => 'settings', 'url' => '/system/settings'], ]], ]; $this->createByTree($list); } protected function createByTree($list, $parent = null) { foreach($list as $item) { $parent_permission_id = data_get($parent, 'permission', 0); $parent_menu_id = data_get($parent, 'menu', 0); $permission = $this->createPermission($item, $parent_permission_id); $menu = $this->createMenu($item, $parent_menu_id); $menu_has_permissions = [ ['permission_id' => $permission->id, 'menu_id' => $menu->id] ]; if ($parent_menu_id) { array_push($menu_has_permissions, ['permission_id' => $permission->id,'menu_id' => $parent_menu_id]); } DB::table('admin_permission_menu')->insert($menu_has_permissions); if (isset($item['children'])) { $this->createByTree($item['children'], ['permission' => $permission->id, 'menu' => $menu->id]); } } } protected function createMenu($item, $pid = 0) { return AdminMenu::create([ 'parent_id' => $pid, 'custom_order' => data_get($item, 'custom_order', 0), 'title' => data_get($item, 'name'), 'icon' => data_get($item, 'icon'), 'url' => data_get($item, 'url'), 'is_home' => data_get($item, 'is_home', 0), ]); } protected function createPermission($item, $pid = 0) { $url = data_get($item, 'url'); return AdminPermission::create([ 'parent_id' => $pid, 'custom_order' => data_get($item, 'custom_order', 0), 'name' => data_get($item, 'name'), 'slug' => data_get($item, 'slug'), 'http_path' => $url ? [$url] : null, ]); } }