request->param('only_enabled', 1); $useCache = $this->request->param('use_cache', 1); // 调用模型获取菜单树 $menuTree = MenuModel::getMenuTree($onlyEnabled, $useCache); return json([ 'code' => 200, 'msg' => '获取成功', 'data' => $menuTree ]); } /** * 获取所有菜单(平铺结构,便于后台管理) * @return \think\response\Json */ public function getMenuList() { // 查询条件 $where = []; $status = $this->request->param('status'); if ($status !== null && $status !== '') { $where[] = ['status', '=', intval($status)]; } // 获取所有菜单 $menus = MenuModel::where($where) ->order('sort', 'asc') ->select(); return json([ 'code' => 200, 'msg' => '获取成功', 'data' => $menus ]); } /** * 添加或更新菜单 * @return \think\response\Json */ public function saveMenu() { if (!$this->request->isPost()) { return json(['code' => 405, 'msg' => '请求方法不允许']); } // 获取参数 $data = $this->request->post(); // 验证参数 $validate = $this->validate($data, [ 'title|菜单名称' => 'require|max:50', 'path|路由路径' => 'require|max:100', 'parent_id|父菜单ID' => 'require|number', 'status|状态' => 'require|in:0,1', 'sort|排序' => 'require|number', ]); if ($validate !== true) { return json(['code' => 400, 'msg' => $validate]); } // 保存菜单 $result = MenuModel::saveMenu($data); if ($result) { return json(['code' => 200, 'msg' => '保存成功']); } else { return json(['code' => 500, 'msg' => '保存失败']); } } /** * 删除菜单 * @param int $id 菜单ID * @return \think\response\Json */ public function deleteMenu($id) { if (!$this->request->isDelete()) { return json(['code' => 405, 'msg' => '请求方法不允许']); } if (empty($id) || !is_numeric($id)) { return json(['code' => 400, 'msg' => '参数错误']); } $result = MenuModel::deleteMenu($id); if ($result) { return json(['code' => 200, 'msg' => '删除成功']); } else { return json(['code' => 500, 'msg' => '删除失败,可能存在子菜单']); } } /** * 更新菜单状态 * @return \think\response\Json */ public function updateStatus() { if (!$this->request->isPost()) { return json(['code' => 405, 'msg' => '请求方法不允许']); } $id = $this->request->post('id'); $status = $this->request->post('status'); if (empty($id) || !is_numeric($id) || !in_array($status, [0, 1])) { return json(['code' => 400, 'msg' => '参数错误']); } $menu = MenuModel::find($id); if (!$menu) { return json(['code' => 404, 'msg' => '菜单不存在']); } $menu->status = $status; $result = $menu->save(); // 清除缓存 MenuModel::clearMenuCache(); if ($result) { return json(['code' => 200, 'msg' => '状态更新成功']); } else { return json(['code' => 500, 'msg' => '状态更新失败']); } } }