Menu.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. <?php
  2. namespace App\Http\Controllers\Manager;
  3. use App\Http\Requests\Manager\Menu as Request;
  4. use App\Models\Manager\Menu as MenuModel;
  5. /**
  6. * 菜单管理
  7. * @author 唐远望
  8. * @version 1.0
  9. * @date 2025-12-05
  10. *
  11. */
  12. class Menu extends Manager
  13. {
  14. /**
  15. * 列表
  16. * @author 唐远望
  17. * @version 1.0
  18. * @date 2025-12-05
  19. */
  20. public function list(MenuModel $MenuModel)
  21. {
  22. $is_admin = request('access_token.is_admin', '0'); //是否管理员操作 0=是1=否
  23. $MenuModel = $MenuModel->query()->where([['is_open', '=', 0]]);
  24. // 查询数据
  25. $menu = $MenuModel->select(['id', 'title', 'module', 'url', 'icon', 'type', 'pid'])->get()->toArray();
  26. // 树形
  27. $list = array_sort(list_to_tree($menu), 'module', SORT_ASC);
  28. // 返回结果
  29. return json_send(['code' => 'success', 'msg' => '成功', 'data' => $list]);
  30. }
  31. /**
  32. * 新增
  33. * @author 唐远望
  34. * @version 1.0
  35. * @date 2025-12-05
  36. */
  37. public function add(Request $request, MenuModel $MenuModel)
  38. {
  39. // 进行验证
  40. $request->scene('add')->validate();
  41. // 接收参数
  42. $data['url'] = request('url', '');
  43. $data['title'] = request('title', '');
  44. $data['module'] = request('module', '');
  45. $data['icon'] = request('icon', '');
  46. $data['type'] = request('type', '');
  47. $data['pid'] = request('pid', 0);
  48. $data['sort_order'] = request('sort_order', 0);
  49. // 新增
  50. $data['id'] = $MenuModel->add($data);
  51. // 提示
  52. if (!$data['id']) return json_send(['code' => 'error', 'msg' => '新增失败']);
  53. // 成功
  54. return json_send(['code' => 'success', 'msg' => '新增成功', 'data' => $data]);
  55. }
  56. /** 编辑
  57. * @author 唐远望
  58. * @version 1.0
  59. * @date 2025-12-05
  60. */
  61. public function edit(Request $request, MenuModel $MenuModel)
  62. {
  63. // 进行验证
  64. $request->scene('edit')->validate();
  65. // 接收参数
  66. $id = request('id', 0);
  67. $data['url'] = request('url', '');
  68. $data['title'] = request('title', '');
  69. $data['module'] = request('module', '');
  70. $data['icon'] = request('icon', '');
  71. $data['type'] = request('type', '');
  72. $data['pid'] = request('pid', 0);
  73. $data['sort_order'] = request('sort_order', 0);
  74. // 查询数据
  75. $oldData = $MenuModel->query()->find($id);
  76. // 提示
  77. if (!$oldData) return json_send(['code' => 'error', 'msg' => '数据不存在']);
  78. // 错误
  79. if ($data['pid'] == $id) return json_send(['code' => 'error', 'msg' => '上级菜单不能为当前菜单']);
  80. // 新增
  81. $data['id'] = $MenuModel->edit($id, $data);
  82. // 提示
  83. if (!$data['id']) return json_send(['code' => 'error', 'msg' => '编辑失败']);
  84. // 成功
  85. return json_send(['code' => 'success', 'msg' => '编辑成功', 'data' => $data]);
  86. }
  87. /** 删除
  88. * @author 唐远望
  89. * @version 1.0
  90. * @date 2025-12-05
  91. */
  92. public function delete(Request $request, MenuModel $MenuModel)
  93. {
  94. // 进行验证
  95. $request->scene('delete')->validate();
  96. // 接收参数
  97. $id = request('id', 0);
  98. // 查询数据
  99. $oldData = $MenuModel->query()->find($id);
  100. // 提示
  101. if (!$oldData) return json_send(['code' => 'error', 'msg' => '数据不存在']);
  102. // 如果有数据
  103. if ($MenuModel->where([['pid', '=', $id]])->value('id')) return json_send(['code' => 'error', 'msg' => '请先删除子节点']);
  104. // 删除节点
  105. $result = $MenuModel->query()->where([['id', '=', $id]])->delete();
  106. // 删除失败
  107. if (!$result) return json_send(['code' => 'error', 'msg' => '删除失败']);
  108. // 更新缓存
  109. $MenuModel->getList($oldData['module'], true);
  110. // 删除成功
  111. return json_send(['code' => 'success', 'msg' => '删除成功', 'data' => ['id' => $id]]);
  112. }
  113. }