roleRepository = $roleRepositoryEloquent; } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleList(Request $request) { $this->roleRepository->pushCriteria(new RoleCriteria($request)); $this->roleRepository->setPresenter(RolePresenter::class); return $this->roleRepository->searchRolesByPage(); } /** * @param $id * * @return \Illuminate\Database\Eloquent\Model */ public function handleProfile($id) { $this->roleRepository->setPresenter(RolePresenter::class); return $this->roleRepository->searchRoleBy($id); } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleStore($data) { $role = $this->roleRepository->create($data); return $role; } /** * @param array $data * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleUpdate($data) { $role = $this->roleRepository->update($data, $data['id']); return $role; } /** * @param Request $request * * @return mixed * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleDelete($id) { return $this->roleRepository->delete($id); } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleAll(Request $request) { $this->roleRepository->pushCriteria(new RoleCriteria($request)); $this->roleRepository->setPresenter(RolePresenter::class); return $this->roleRepository->get(); } /** * @param Request $request * * @return mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleIds(Request $request) { $this->roleRepository->pushCriteria(new RoleCriteria($request)); return $this->roleRepository->pluck('id'); } /** * 批量删除 * @param $ids * @return mixed */ public function handleBatchDelete($ids) { return $this->roleRepository->whereIn('id', $ids)->delete(); } /** * 保存菜单权限 * @param Request $request * @return bool|void */ public function handleSaveMenus(Request $request) { $data = $request->all(); $role = $this->roleRepository->find($request->get('id')); $role->menus()->sync($data['menus']); return true; } /** * 保存Apis * @param Request $request * @return bool */ public function handleSaveApis(Request $request) { $data = $request->all(); $role = $this->roleRepository->find($request->get('id')); $role->givePermissionTo($data['apis']); return true; } /** * 保存数据权限 * @param Request $request * @return bool * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function handleSaveDataPermissions(Request $request) { // $data = $request->all(); // $role = $this->roleRepository->update([ // 'data_permission_type' => $data['data_permission_type'] // ], $request->get('id')); // // if (array_key_exists('departments', $data) && is_array($data['departments'])) $role->departments()->sync($data['departments']); // if (array_key_exists('shops', $data) && is_array($data['shops'])) $role->shops()->sync($data['shops']); // if (array_key_exists('factory', $data) && is_array($data['factory'])) $role->factory()->sync($data['factory']); return true; } /** * 获取角色菜单id * @param Request $request * @return array */ public function handleMenusLists(Request $request) { $role = $this->roleRepository->find($request->get('id')); if ($role) return $role->menus()->pluck('id'); return []; } /** * 获取角色数据id * @param Request $request * @return array */ public function handleDataLists(Request $request) { // $role = $this->roleRepository->find($request->get('id')); // if ($role) { // switch ($role->data_permission_type) { // } // } return []; } /** * 获取角色APIid * @param Request $request * @return array */ public function handleApisLists(Request $request) { $role = $this->roleRepository->find($request->get('id')); if ($role) return $role->permissions()->pluck('id'); return []; } /** * 选项数据 * @param Request $request * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator|\Illuminate\Support\Collection|mixed * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function handleSelectOptions(Request $request) { $this->roleRepository->pushCriteria(new RoleCriteria($request)); return $this->roleRepository->all(['id', 'name', 'nickname', 'guard_name', 'sort']); } }