Menu.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace app\controller\common;
  3. use app\extra\tools\DataExtend;
  4. use app\model\system\SystemMenu;
  5. use app\service\system\MenuService;
  6. use support\Request;
  7. use support\Response;
  8. class Menu
  9. {
  10. public function getMenuList(Request $request): Response
  11. {
  12. try {
  13. $param = v_valid([
  14. "form.default" => $request->user['type'],
  15. "type.default" => 1
  16. ]);
  17. $hide = 0;
  18. $menu = (new MenuService)->getMenuList($request->user['is_super'],$hide,$param['form']);
  19. $permissionsData = [];
  20. foreach ($menu as $val) {
  21. if ($val['type'] == 'button') {
  22. $permissionsData[] = $val['name'];
  23. }
  24. }
  25. $menu = $this->filterMenu(DataExtend::arr2tree($menu),$param['type']);
  26. if($param['type'] == 1) {
  27. $permissions = $permissionsData;
  28. $dashboardGrid = [];
  29. return successTrans("success.data",compact('menu','permissions','dashboardGrid'));
  30. }
  31. return successTrans("success.data",$menu);
  32. } catch (\Throwable $throwable) {
  33. echo getDateFull()."===获取菜单报错\n";
  34. echo $throwable->getMessage()."===".$throwable->getFile()."【".$throwable->getLine()."】===\n";
  35. return error($throwable->getMessage());
  36. }
  37. }
  38. public function saveMenuData(Request $request): Response
  39. {
  40. try {
  41. $state = (new SystemMenu)->setAutoData($request->post());
  42. if(!$state) return errorTrans("error.data");
  43. return successTrans("success.data");
  44. } catch (\Throwable $throwable) {
  45. return error($throwable->getMessage());
  46. }
  47. }
  48. /**
  49. * 菜单信息格式化
  50. * @param array $menus
  51. * @param int $type
  52. * @param int $mch
  53. * @return array
  54. */
  55. protected function filterMenu(array $menus,int $type,int $mch = 0): array
  56. {
  57. foreach ($menus as &$menu) {
  58. $menu['meta'] = [
  59. "title" => $menu['title'],
  60. "icon" => $menu['icon']??'',
  61. "type" => $menu['type'],
  62. "hidden" => !($menu['hide'] == 1),
  63. ];
  64. if (!empty($menu['children'])) {
  65. $menu['children'] = $this->filterMenu($menu['children'],$type,$mch);
  66. }
  67. if ($mch > 0) {
  68. $menu['component'] = ($mch==1?'merchant/':'store/').$menu['name'];
  69. } else {
  70. $menu['component'] = $menu['name'];
  71. }
  72. $menu['isMenu'] = $menu['status'];
  73. if($type == 1) unset($menu['title'],$menu['icon'],$menu['type'],$menu['pid'],$menu['id']);
  74. }
  75. return $menus;
  76. }
  77. }