adminReturn->success( 'success', $this->adminRoleRepository->page( $this->getRequestData(), $this->getCurrentPage(), $this->getPageSize() ) ); } /** * @return array */ public function create(): array { if (!$this->adminRoleRepository->create( array_merge( $this->getRequestData(), ['created_by' => $this->adminId] ) )) throw new ErrException('添加失败'); return $this->adminReturn->success(); } /** * @param int $id * @return array */ public function update(int $id): array { if (!$this->adminRoleRepository->updateById( $id, array_merge( $this->getRequestData(), ['updated_by' => $this->adminId] ) )) throw new ErrException('更新失败'); return $this->adminReturn->success(); } /** * @return array */ public function delete(): array { if (!$this->adminRoleRepository->deleteById($this->getRequestData())) throw new ErrException('删除失败'); return $this->adminReturn->success(); } /** * @param int $id * @return array */ public function getRole(int $id): array { return $this->adminReturn->success( $this->adminRoleRepository ->findById($id) ->adminMenus() ->get() ->map(static fn (AdminMenu $adminMenu) => $adminMenu->only([ 'id' , 'name' ]))->toArray() ); } /** * @param int $id * @return array */ public function setRole(int $id): array { if (!$this->adminRoleRepository->existsById($id)) throw new ErrException('角色不存在'); $permissionsCode = Arr::get($this->getRequestData(), 'permissions', []); if (count($permissionsCode) === 0) { $this->adminRoleRepository->findById($id)->adminMenus()->detach(); return $this->adminReturn->success(); } if (!$this->adminRoleRepository ->findById($id) ->adminMenus() ->sync( $this->adminMenuRepository ->list([ 'code' => $permissionsCode ]) ->map(static fn ($item) => $item->id) ->toArray() )) throw new ErrException('更新失败'); return $this->adminReturn->success(); } }