query()->select(['id', 'title', 'module', 'url', 'icon', 'type', 'pid'])->get()->toArray(); // 树形 $list = array_sort(list_to_tree($menu), 'module', SORT_ASC); // 返回结果 return json_send(['code' => 'success', 'msg' => '成功', 'data' => $list]); } /** * 新增 * @author 唐远望 * @version 1.0 * @date 2025-12-05 */ public function add(Request $request, MenuModel $MenuModel) { // 进行验证 $request->scene('add')->validate(); // 接收参数 $data['url'] = request('url', ''); $data['title'] = request('title', ''); $data['module'] = request('module', ''); $data['icon'] = request('icon', ''); $data['type'] = request('type', ''); $data['pid'] = request('pid', 0); $data['sort_order'] = request('sort_order', 0); // 新增 $data['id'] = $MenuModel->add($data); // 提示 if (!$data['id']) return json_send(['code' => 'error', 'msg' => '新增失败']); // 成功 return json_send(['code' => 'success', 'msg' => '新增成功', 'data' => $data]); } /** 编辑 * @author 唐远望 * @version 1.0 * @date 2025-12-05 */ public function edit(Request $request, MenuModel $MenuModel) { // 进行验证 $request->scene('edit')->validate(); // 接收参数 $id = request('id', 0); $data['url'] = request('url', ''); $data['title'] = request('title', ''); $data['module'] = request('module', ''); $data['icon'] = request('icon', ''); $data['type'] = request('type', ''); $data['pid'] = request('pid', 0); $data['sort_order'] = request('sort_order', 0); // 查询数据 $oldData = $MenuModel->query()->find($id); // 提示 if (!$oldData) return json_send(['code' => 'error', 'msg' => '数据不存在']); // 错误 if ($data['pid'] == $id) return json_send(['code' => 'error', 'msg' => '上级菜单不能为当前菜单']); // 新增 $data['id'] = $MenuModel->edit($id, $data); // 提示 if (!$data['id']) return json_send(['code' => 'error', 'msg' => '编辑失败']); // 成功 return json_send(['code' => 'success', 'msg' => '编辑成功', 'data' => $data]); } /** 删除 * @author 唐远望 * @version 1.0 * @date 2025-12-05 */ public function delete(Request $request, MenuModel $MenuModel) { // 进行验证 $request->scene('delete')->validate(); // 接收参数 $id = request('id', 0); // 查询数据 $oldData = $MenuModel->query()->find($id); // 提示 if (!$oldData) return json_send(['code' => 'error', 'msg' => '数据不存在']); // 如果有数据 if ($MenuModel->where([['pid', '=', $id]])->value('id')) return json_send(['code' => 'error', 'msg' => '请先删除子节点']); // 删除节点 $result = $MenuModel->query()->where([['id', '=', $id]])->delete(); // 删除失败 if (!$result) return json_send(['code' => 'error', 'msg' => '删除失败']); // 更新缓存 $MenuModel->getList($oldData['module'], true); // 删除成功 return json_send(['code' => 'success', 'msg' => '删除成功', 'data' => ['id' => $id]]); } }