insertMenu($menu, 0); } } /** * 递归插入菜单 */ private function insertMenu(array $menu, int|string $pid): void { $menuModel = new Menu(); $menuModel->id = Snowflake::generate(); $menuModel->pid = $pid; $menuModel->app = $menu['app'] ?? 'web'; $menuModel->category = $menu['category'] ?? 1; $menuModel->source = $menu['source'] ?? 'system'; $menuModel->code = $menu['code'] ?? ''; $menuModel->name = $menu['name'] ?? ''; $menuModel->url = $menu['url'] ?? ''; $menuModel->icon = $menu['icon'] ?? ''; $menuModel->level = $menu['level'] ?? 1; $menuModel->type = $menu['type'] ?? 1; $menuModel->sort = $menu['sort'] ?? 0; $menuModel->target = $menu['target'] ?? 1; $menuModel->is_show = $menu['is_show'] ?? 1; $menuModel->enabled = $menu['enabled'] ?? 1; $menuModel->created_at = $menu['created_at'] ?? time(); $menuModel->updated_at = $menu['updated_at'] ?? time(); $menuModel->deleted_at = $menu['deleted_at'] ?? null; $menuModel->save(); // 递归插入子菜单 if (!empty($menu['children'])) { foreach ($menu['children'] as $child) { $this->insertMenu($child, $menuModel->id); } } } }