menuRepository = $menuRepositoryEloquent; } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleList(Request $request) { $this->menuRepository->pushCriteria(new MenuCriteria($request)); $this->menuRepository->setPresenter(MenuPresenter::class); return $this->menuRepository->searchMenus(); } /** * @param $id * * @return \Illuminate\Database\Eloquent\Model */ public function handleProfile($id) { $this->menuRepository->setPresenter(MenuPresenter::class); return $this->menuRepository->searchMenuBy($id); } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleStore(Request $request) { $menu = $this->menuRepository->create($request->all()); return $menu; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleUpdate(Request $request) { $menu = $this->menuRepository->update($request->all(), $request->get('id')); return $menu; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleDelete($id) { return $this->menuRepository->delete($id); } /** * 获取当前用户的菜单及按钮权限 * @return array */ public function handleMyMenusLists() { $admin = login_admin(); $roles = $admin->roles()->get(); if ($admin->isSuperAdmin()) { $menus = $this->menuRepository->where('type', Menu::TYPE_MENU)->where('status', ModelStatusEnum::OK)->select(['id', 'name', 'path', 'parent_id', 'component', 'redirect', 'meta'])->orderByDesc('sort')->orderBy('id')->get()->toArray(); $buttonPermission = $this->menuRepository->where('type', Menu::TYPE_BTN)->where('status', ModelStatusEnum::OK)->select(['title', 'path'])->get(); $menus = toTree($menus); return compact('menus', 'buttonPermission'); } if ($roles->count() == 1) { $role = $roles->first(); $menus = $role->menus()->where('type', Menu::TYPE_MENU)->where('status', ModelStatusEnum::OK)->select(['id', 'name', 'path', 'parent_id', 'component', 'redirect', 'meta'])->orderByDesc('sort')->get()->toArray(); $buttonPermission = $role->menus()->where('type', Menu::TYPE_BTN)->where('status', ModelStatusEnum::OK)->select(['title', 'path'])->get(); $menus = toTree($menus); return compact('menus', 'buttonPermission'); } $menus_ids = []; $button_permission_ids = []; foreach ($roles as $role) { $ids = $role->menus()->where('type', Menu::TYPE_MENU)->where('status', ModelStatusEnum::OK)->pluck('id')->toArray(); $permission_ids = $role->menus()->where('type', Menu::TYPE_BTN)->where('status', ModelStatusEnum::OK)->pluck('id')->toArray(); $menus_ids = array_merge($menus_ids, $ids); $button_permission_ids = array_merge($button_permission_ids, $permission_ids); } $menus = $this->menuRepository->whereIn('id', $menus_ids)->where('type', Menu::TYPE_MENU)->where('status', ModelStatusEnum::OK)->select(['id', 'name', 'path', 'parent_id', 'component', 'redirect', 'meta'])->orderByDesc('sort')->orderBy('id')->get()->toArray(); $buttonPermission = $this->menuRepository->whereIn('id', $button_permission_ids)->where('type', Menu::TYPE_BTN)->where('status', ModelStatusEnum::OK)->select(['title', 'path'])->get(); $menus = toTree($menus); return compact('menus', 'buttonPermission'); } }