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) { // $data['company_id'] = 0; // $admin = login_admin(); // if ($admin && $admin['company_id']) $data['company_id'] = $admin['company_id']; $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 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) { // case Role::DATA_TYPE_DEPARTMENT: case Role::DATA_TYPE_CUSTOM: return [ 'type' => $role->data_permission_type, 'departments' => $role->departments()->pluck('id'), // 'shops' => $role->shops()->pluck('id'), // 'factory' => $role->factory()->pluck('id') ]; break; case Role::DATA_TYPE_ALL: case Role::DATA_TYPE_SELF: return [ 'type' => $role->data_permission_type, 'data' => [] ]; break; } } 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']); } }