MenusController.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 2021-04-15
  6. * Time: 11:24
  7. */
  8. namespace Modules\Admin\Http\Controllers;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Log;
  11. use Illuminate\Support\Facades\Storage;
  12. use Modules\Admin\Auxiliary\View\FromAuxiliary;
  13. use Modules\Admin\Auxiliary\View\TreeAuxiliary;
  14. use Modules\Admin\Http\Requests\MenusRequest;
  15. use Modules\Admin\Services\MenusService;
  16. use Spatie\Permission\Models\Permission;
  17. class MenusController extends BaseController
  18. {
  19. public function __construct()
  20. {
  21. parent::__construct();
  22. $this->menusActive[0] = 'adminSetting';
  23. $this->menusActive[1] = 'adminSettingMenus';
  24. }
  25. /**
  26. * 菜单列表
  27. * @return mixed
  28. */
  29. public function index()
  30. {
  31. $menusService = new MenusService();
  32. $menusAll = $menusService->getMenusList();
  33. $treeObj = new TreeAuxiliary('menus', $menusAll);
  34. $treeObj->column('title', '菜单名')
  35. ->column('slug', '标识')
  36. ->column('path', '路由')
  37. ->column('sort', '排序')
  38. ->column('show', '是否可见')->display(
  39. function ($show) {
  40. $value = ['否', '是'];
  41. return $value[$show];
  42. }
  43. );
  44. return $this->tree($treeObj);
  45. }
  46. /**
  47. * 添加菜单页面
  48. * @return mixed
  49. */
  50. public function add()
  51. {
  52. $menusService = new MenusService();
  53. $menusAll = $menusService->getMenusList();
  54. $fromObj = new FromAuxiliary('menus/add');
  55. $fromObj->title = '添加菜单';
  56. $fromObj->tree_select('parent_id', '父级菜单', $menusAll)
  57. ->icon('icon', '图标')
  58. ->input('title', '菜单名称')
  59. // ->input('slug', '菜单标识')
  60. ->input('path', '访问路由')
  61. ->input('sort', '排序', 10)
  62. ->radio('show', '是否显示', [1 => '是', 0 => '否'], 1);
  63. return $this->from($fromObj);
  64. }
  65. /**
  66. * 菜单添加请求
  67. * @param MenusRequest $request
  68. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  69. */
  70. public function addPost(Request $request)
  71. {
  72. $menus = new MenusService();
  73. $result = $menus->addMenu($request->all());
  74. if ($result == 'has') {
  75. return $this->error(1, '菜单标识重复,请修改后重新提交');
  76. }
  77. return $this->redirect('admin/menus/list');
  78. }
  79. /**
  80. * 修改菜单页面
  81. * @param Request $request
  82. * @return mixed
  83. */
  84. public function edit(Request $request)
  85. {
  86. $menuId = $request->input('id');
  87. if (!$menuId) {
  88. return false;
  89. }
  90. $menusService = new MenusService();
  91. $menusAll = $menusService->getMenusList();
  92. $currentMenu = $menusService->getMenuInfo($menuId);
  93. $fromObj = new FromAuxiliary('menus/edit', $currentMenu);
  94. $fromObj->title = '修改菜单';
  95. $fromObj->tree_select('parent_id', '父级菜单', $menusAll, $currentMenu['parent_id'])
  96. ->icon('icon', '图标')
  97. ->input('title', '菜单名称')
  98. // ->input('slug', '菜单标识')
  99. ->input('path', '访问路由')
  100. ->input('sort', '排序')
  101. ->radio('show', '是否显示', [1 => '是', 0 => '否']);
  102. return $this->from($fromObj);
  103. }
  104. /**
  105. * 修改菜单请求
  106. * @param MenusRequest $request
  107. * @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
  108. */
  109. public function editPost(MenusRequest $request)
  110. {
  111. if ($request->input('id') == $request->input('parent_id')) {
  112. return $this->error(1, '父级不能选择自己');
  113. }
  114. $menus = new MenusService();
  115. $menus->editMenu($request->all());
  116. return $this->redirect('admin/menus/list');
  117. }
  118. public function delPost(Request $request)
  119. {
  120. $menuId = $request->input('id');
  121. if (!$menuId) {
  122. return false;
  123. }
  124. $menus = new MenusService();
  125. $menus->delMenu($menuId);
  126. return $this->redirect('admin/menus/list');
  127. }
  128. /**
  129. * 菜单导出文件
  130. * @return string
  131. */
  132. public function makeMenuToFile()
  133. {
  134. $menusService = new MenusService();
  135. $menusAll = $menusService->getMenusList();
  136. $menus = $this->menuFilter($menusAll);
  137. // $apiMenusAll = $menusService->getMenusList('', 'api');
  138. // $apiMenus = $this->menuFilter($apiMenusAll);
  139. Storage::put('menulist.php', var_export($menus, true));
  140. // Storage::put('apimenulist.php', var_export($apiMenus, true));
  141. return 'ok';
  142. }
  143. protected function menuFilter($menuList)
  144. {
  145. $menus = [];
  146. foreach ($menuList as $menu) {
  147. $_menu = [
  148. "icon" => $menu['icon'],
  149. "title" => $menu['title'],
  150. "slug" => $menu['slug'],
  151. "path" => $menu['path'],
  152. "sort" => $menu['sort'],
  153. "show" => $menu['show'],
  154. "child" => $menu['child'],
  155. ];
  156. if (count($menu['child']) > 0) {
  157. $_menu['child'] = $this->menuFilter($menu['child']);
  158. }
  159. $menus[] = $_menu;
  160. }
  161. return $menus;
  162. }
  163. }