auth->getAdmin(); $return = SysMenu::getMenuList($this->auth->getUserMenus($admin['user_id'])); $this->n_success([ 'menuList' => convertToCamelCase($return['menuList']), 'permissions' => $return['permissions'], ]); } public function list() { $menuList = Db::name('sys_menu')->order('order_num', 'asc')->select()->toArray(); // 收集所有 parent_id $parentIds = array_column($menuList, 'parent_id'); $parentIds = array_unique(array_filter($parentIds)); // 批量查询父级菜单 $parentMap = []; if (!empty($parentIds)) { $parents = Db::name('sys_menu')->whereIn('menu_id', $parentIds)->column('name', 'menu_id'); $parentMap = $parents; } // 设置 parentName foreach ($menuList as &$menu) { $menu['menu_id'] = (string) $menu['menu_id']; $menu['parent_id'] = (string) $menu['parent_id']; $menu['parent_name'] = $parentMap[$menu['parent_id']] ?? ''; } unset($menu); return $this->ApiDataReturn(convertToCamelCase($menuList)); } public function info() { $data = Db::name('sys_menu')->where([ 'menu_id' => $this->request->param('id') ])->find(); $data['menu_id'] = (string) $data['menu_id']; $data['parent_id'] = (string) $data['parent_id']; $data = convertToCamelCase($data); $this->n_success(['menu' => $data]); } public function save() { $menu = $this->request->post(); SysMenu::verifyForm($menu); $menu = convertKeysCamelToSnakeRecursive($menu); Db::connect(get_master_connect_name())->name('sys_menu')->insert($menu); $this->success(); } public function selectInfo() { $list = Db::name('sys_menu')->where([ 'type' => ['!=', 2] ])->order('order_num')->select()->toArray(); $list[] = [ 'menu_id' => 0, 'name' => '一级菜单', 'parent_id' => -1, 'open' => true, ]; $list = convertToCamelCase($list); $this->n_success(['menuList' => $list]); // $this->successWithData([ // 'menuList' => $list // ]); } public function update() { $params = $this->request->post(); $params = convertKeysCamelToSnakeRecursive($params); Db::name('sys_menu')->where([ 'menu_id' => $params['menu_id'] ])->update($params); $this->success(); } public function delete() { $post = $this->request->post(); if(empty($post['menuId'])) { $this->error('参数错误'); } $menuId = $post['menuId']; if($menuId <= 31) { $this->error('系统菜单,不能删除'); } // 判断是否有子菜单或按钮 $menuList = Db::connect(get_slave_connect_name())->name('sys_menu')->where(['parent_id' => $menuId])->order('order_num', 'asc')->select()->toArray(); if($menuList) { $this->error('请先删除子菜单或按钮'); } if(Db::name('sys_menu')->where(['menu_id' => $menuId])->delete()) { $this->success('删除成功'); } $this->error('操作失败'); } }