| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- <?php
- namespace app\controller\common;
- use app\extra\tools\DataExtend;
- use app\model\system\SystemMenu;
- use app\service\system\MenuService;
- use support\Request;
- use support\Response;
- class Menu
- {
- public function getMenuList(Request $request): Response
- {
- try {
- $param = v_valid([
- "form.default" => $request->user['type'],
- "type.default" => 1
- ]);
- $hide = 0;
- $menu = (new MenuService)->getMenuList($request->user['is_super'],$hide,$param['form']);
- $permissionsData = [];
- foreach ($menu as $val) {
- if ($val['type'] == 'button') {
- $permissionsData[] = $val['name'];
- }
- }
- $menu = $this->filterMenu(DataExtend::arr2tree($menu),$param['type']);
- if($param['type'] == 1) {
- $permissions = $permissionsData;
- $dashboardGrid = [];
- return successTrans("success.data",compact('menu','permissions','dashboardGrid'));
- }
- return successTrans("success.data",$menu);
- } catch (\Throwable $throwable) {
- echo getDateFull()."===获取菜单报错\n";
- echo $throwable->getMessage()."===".$throwable->getFile()."【".$throwable->getLine()."】===\n";
- return error($throwable->getMessage());
- }
- }
- public function saveMenuData(Request $request): Response
- {
- try {
- $state = (new SystemMenu)->setAutoData($request->post());
- if(!$state) return errorTrans("error.data");
- return successTrans("success.data");
- } catch (\Throwable $throwable) {
- return error($throwable->getMessage());
- }
- }
- /**
- * 菜单信息格式化
- * @param array $menus
- * @param int $type
- * @param int $mch
- * @return array
- */
- protected function filterMenu(array $menus,int $type,int $mch = 0): array
- {
- foreach ($menus as &$menu) {
- $menu['meta'] = [
- "title" => $menu['title'],
- "icon" => $menu['icon']??'',
- "type" => $menu['type'],
- "hidden" => !($menu['hide'] == 1),
- ];
- if (!empty($menu['children'])) {
- $menu['children'] = $this->filterMenu($menu['children'],$type,$mch);
- }
- if ($mch > 0) {
- $menu['component'] = ($mch==1?'merchant/':'store/').$menu['name'];
- } else {
- $menu['component'] = $menu['name'];
- }
- $menu['isMenu'] = $menu['status'];
- if($type == 1) unset($menu['title'],$menu['icon'],$menu['type'],$menu['pid'],$menu['id']);
- }
- return $menus;
- }
- }
|