|
|
@@ -0,0 +1,118 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers\Manager;
|
|
|
+
|
|
|
+use App\Http\Requests\Manager\Menu as Request;
|
|
|
+use App\Models\Manager\Menu as MenuModel;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 菜单管理
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2025-12-05
|
|
|
+ *
|
|
|
+ */
|
|
|
+class Menu extends Manager
|
|
|
+{
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 列表
|
|
|
+ * @author 唐远望
|
|
|
+ * @version 1.0
|
|
|
+ * @date 2025-12-05
|
|
|
+ */
|
|
|
+ public function list(MenuModel $MenuModel)
|
|
|
+ {
|
|
|
+ // 查询数据
|
|
|
+ $menu = $MenuModel->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]]);
|
|
|
+ }
|
|
|
+}
|