SystemMenuController.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | saiadmin [ saiadmin快速开发框架 ]
  4. // +----------------------------------------------------------------------
  5. // | Author: sai <1430792918@qq.com>
  6. // +----------------------------------------------------------------------
  7. namespace plugin\saiadmin\app\controller\system;
  8. use plugin\saiadmin\app\cache\UserMenuCache;
  9. use plugin\saiadmin\basic\BaseController;
  10. use plugin\saiadmin\app\logic\system\SystemMenuLogic;
  11. use plugin\saiadmin\app\validate\system\SystemMenuValidate;
  12. use plugin\saiadmin\service\Permission;
  13. use support\Request;
  14. use support\Response;
  15. /**
  16. * 菜单控制器
  17. */
  18. class SystemMenuController extends BaseController
  19. {
  20. /**
  21. * 构造
  22. */
  23. public function __construct()
  24. {
  25. $this->logic = new SystemMenuLogic();
  26. $this->validate = new SystemMenuValidate;
  27. parent::__construct();
  28. }
  29. /**
  30. * 数据列表
  31. * @param Request $request
  32. * @return Response
  33. */
  34. #[Permission('菜单数据列表', 'core:menu:index')]
  35. public function index(Request $request): Response
  36. {
  37. $where = $request->more([
  38. ['name', ''],
  39. ['path', ''],
  40. ['menu', ''],
  41. ['status', ''],
  42. ]);
  43. $data = $this->logic->tree($where);
  44. return $this->success($data);
  45. }
  46. /**
  47. * 读取数据
  48. * @param Request $request
  49. * @return Response
  50. */
  51. #[Permission('菜单数据读取', 'core:menu:read')]
  52. public function read(Request $request): Response
  53. {
  54. $id = $request->input('id', '');
  55. $model = $this->logic->read($id);
  56. if ($model) {
  57. $data = is_array($model) ? $model : $model->toArray();
  58. return $this->success($data);
  59. } else {
  60. return $this->fail('未查找到信息');
  61. }
  62. }
  63. /**
  64. * 保存数据
  65. * @param Request $request
  66. * @return Response
  67. */
  68. #[Permission('菜单数据添加', 'core:menu:save')]
  69. public function save(Request $request): Response
  70. {
  71. $data = $request->post();
  72. $this->validate('save', $data);
  73. $result = $this->logic->add($data);
  74. if ($result) {
  75. UserMenuCache::clearMenuCache();
  76. return $this->success('添加成功');
  77. } else {
  78. return $this->fail('添加失败');
  79. }
  80. }
  81. /**
  82. * 更新数据
  83. * @param Request $request
  84. * @return Response
  85. */
  86. #[Permission('菜单数据修改', 'core:menu:update')]
  87. public function update(Request $request): Response
  88. {
  89. $data = $request->post();
  90. $this->validate('update', $data);
  91. $result = $this->logic->edit($data['id'], $data);
  92. if ($result) {
  93. UserMenuCache::clearMenuCache();
  94. return $this->success('修改成功');
  95. } else {
  96. return $this->fail('修改失败');
  97. }
  98. }
  99. /**
  100. * 删除数据
  101. * @param Request $request
  102. * @return Response
  103. */
  104. #[Permission('菜单数据删除', 'core:menu:destroy')]
  105. public function destroy(Request $request): Response
  106. {
  107. $ids = $request->post('ids', '');
  108. if (empty($ids)) {
  109. return $this->fail('请选择要删除的数据');
  110. }
  111. $result = $this->logic->destroy($ids);
  112. if ($result) {
  113. UserMenuCache::clearMenuCache();
  114. return $this->success('删除成功');
  115. } else {
  116. return $this->fail('删除失败');
  117. }
  118. }
  119. /**
  120. * 可操作菜单
  121. * @param Request $request
  122. * @return Response
  123. */
  124. public function accessMenu(Request $request): Response
  125. {
  126. $where = [];
  127. if ($this->adminId > 1) {
  128. $data = $this->logic->auth();
  129. } else {
  130. $data = $this->logic->tree($where);
  131. }
  132. return $this->success($data);
  133. }
  134. }