From 7efc883f4923edf3dc48e0ec93501b425e512013 Mon Sep 17 00:00:00 2001 From: hanseounggyun Date: Wed, 18 Dec 2024 17:11:35 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=EC=83=88=20=EA=B8=B0=EB=8A=A5=20:?= =?UTF-8?q?=20=EC=9D=B4=EB=A0=A5=EC=84=9C=20=EC=82=AD=EC=A0=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20SwaggerUI=20=ED=98=95=EC=8B=9D=EC=97=90?= =?UTF-8?q?=20=EB=A7=9E=EA=B2=8C=20=EC=97=90=EB=9F=AC=20=EC=96=B4=EB=85=B8?= =?UTF-8?q?=ED=85=8C=EC=9D=B4=EC=85=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resume/controller/ResumeController.java | 20 +++++++++++++++++-- .../resume/ResumeRepositoryImpl.java | 6 ++---- .../resume/service/resume/ResumeService.java | 1 + .../service/resume/ResumeServiceImpl.java | 19 +++++++++++++++--- .../resume/port/resume/ResumeRepository.java | 3 ++- 5 files changed, 39 insertions(+), 10 deletions(-) diff --git a/src/main/java/darkoverload/itzip/feature/resume/controller/ResumeController.java b/src/main/java/darkoverload/itzip/feature/resume/controller/ResumeController.java index 2a329ae6..ae52c9a4 100644 --- a/src/main/java/darkoverload/itzip/feature/resume/controller/ResumeController.java +++ b/src/main/java/darkoverload/itzip/feature/resume/controller/ResumeController.java @@ -46,7 +46,7 @@ public class ResumeController { description = "이력서 생성 시 객체 리스트에 존재하는 값만 validation check" ) @ResponseCodeAnnotation(CommonResponseCode.SUCCESS) - @ExceptionCodeAnnotations(CommonExceptionCode.BAD_REQUEST) + @ExceptionCodeAnnotations(CommonExceptionCode.NOT_FOUND_USER) @PostMapping(value = "") public CreateResumeResponse createResume(@Valid @RequestBody CreateResumeRequest request, @AuthenticationPrincipal CustomUserDetails user) { @@ -58,7 +58,7 @@ public CreateResumeResponse createResume(@Valid @RequestBody CreateResumeRequest description = "이력서 수정 시 객체 리스트에 존재하는 값 체크" ) @ResponseCodeAnnotation(CommonResponseCode.SUCCESS) - @ExceptionCodeAnnotations(CommonExceptionCode.BAD_REQUEST) + @ExceptionCodeAnnotations({CommonExceptionCode.NOT_FOUND_USER, CommonExceptionCode.NOT_MATCH_RESUME_USERID, CommonExceptionCode.FILE_NOT_FOUND_ERROR}) @PatchMapping("") public UpdateResumeResponse updateResume(@SwaggerRequestBody(description = "이력서 수정 정보", content = @Content( schema = @Schema(implementation = UpdateResumeRequest.class) @@ -71,6 +71,8 @@ public UpdateResumeResponse updateResume(@SwaggerRequestBody(description = "이 summary = "이력서 전체 조회", description = "사용자 이력서 전체 조회" ) + @ResponseCodeAnnotation(CommonResponseCode.SUCCESS) + @ExceptionCodeAnnotations(CommonExceptionCode.JOB_INFO_NOT_FOUND) @GetMapping("/search") public Page searchResume(@Parameter(description = "검색어") @RequestParam(value = "search", required = false) String search, @Parameter(description = "Size : 페이지당 출력할 항목의 개수 (기본값: 10) \n sort`: 정렬 기준 필드 (기본값: `modifyDate`) \n direction`: 정렬 순서 (기본값: 내림차순 `DESC`)") @PageableDefault(size = 10, sort = "modifyDate", direction = Sort.Direction.DESC) Pageable pageable) { List searchResumeResponses = resumeReadService.searchResumeInfos(search, pageable); @@ -82,9 +84,23 @@ public Page searchResume(@Parameter(description = "검색 summary = "이력서 상세 조화", description = "사용자 상세 조회" ) + @ResponseCodeAnnotation(CommonResponseCode.SUCCESS) + @ExceptionCodeAnnotations({CommonExceptionCode.NOT_MATCH_RESUME_USERID, CommonExceptionCode.NOT_FOUND_RESUME}) @GetMapping("/details/{id}") public GetResumeDetailsResponse getResumeDetails(@Parameter(description = "이력서 아이디", example = "1") @PathVariable Long id, @AuthenticationPrincipal CustomUserDetails user) { return resumeReadService.getResumeDetails(id, user); } + @Operation( + summary = "이력서 삭제", + description = "해당 사용자 이력서를 삭제한다." + ) + @ResponseCodeAnnotation(CommonResponseCode.SUCCESS) + @ExceptionCodeAnnotations({CommonExceptionCode.NOT_FOUND_USER, CommonExceptionCode.NOT_MATCH_RESUME_USERID}) + @DeleteMapping("{id}") + public String deleteResume(@Parameter(description = "이력서 아이디", example = "1") @PathVariable Long id, @AuthenticationPrincipal CustomUserDetails user) { + service.delete(id, user); + return "성공"; + } + } diff --git a/src/main/java/darkoverload/itzip/feature/resume/repository/resume/ResumeRepositoryImpl.java b/src/main/java/darkoverload/itzip/feature/resume/repository/resume/ResumeRepositoryImpl.java index 73278235..1e904a52 100644 --- a/src/main/java/darkoverload/itzip/feature/resume/repository/resume/ResumeRepositoryImpl.java +++ b/src/main/java/darkoverload/itzip/feature/resume/repository/resume/ResumeRepositoryImpl.java @@ -2,8 +2,6 @@ import darkoverload.itzip.feature.resume.domain.resume.Resume; import darkoverload.itzip.feature.resume.service.resume.port.resume.ResumeRepository; -import darkoverload.itzip.global.config.response.code.CommonExceptionCode; -import darkoverload.itzip.global.config.response.exception.RestApiException; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Repository; @@ -24,8 +22,8 @@ public Resume update(Resume resume) { } @Override - public Resume findById(long id) { - return repository.findById(id).orElseThrow(() -> new RestApiException(CommonExceptionCode.NOT_FOUND_RESUME)).convertToDomain(); + public void delete(Resume resume) { + repository.delete(resume.toEntity()); } } diff --git a/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeService.java b/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeService.java index 1ad140e0..d56b330e 100644 --- a/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeService.java +++ b/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeService.java @@ -14,4 +14,5 @@ public interface ResumeService { UpdateResumeResponse update(UpdateResumeRequest request, CustomUserDetails user); + void delete(Long id, CustomUserDetails user); } diff --git a/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeServiceImpl.java b/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeServiceImpl.java index 0c36dccc..a70743be 100644 --- a/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeServiceImpl.java +++ b/src/main/java/darkoverload/itzip/feature/resume/service/resume/ResumeServiceImpl.java @@ -35,7 +35,9 @@ import darkoverload.itzip.feature.resume.service.resume.port.myskill.MySkillCommandRepository; import darkoverload.itzip.feature.resume.service.resume.port.qualification.QualificationReadRepository; import darkoverload.itzip.feature.resume.service.resume.port.qualification.QualificationCommandRepository; +import darkoverload.itzip.feature.resume.service.resume.port.resume.ResumeReadRepository; import darkoverload.itzip.feature.resume.service.resume.port.resume.ResumeRepository; +import darkoverload.itzip.feature.user.entity.UserEntity; import darkoverload.itzip.feature.user.repository.UserRepository; import darkoverload.itzip.global.config.response.code.CommonExceptionCode; import darkoverload.itzip.global.config.response.exception.RestApiException; @@ -59,6 +61,7 @@ public class ResumeServiceImpl implements ResumeService { private final UserRepository userRepository; private final ResumeRepository resumeRepository; + private final ResumeReadRepository resumeReadRepository; private final EducationCommandRepository educationCommandRepository; private final EducationReadRepository educationReadRepository; @@ -159,19 +162,29 @@ private ResumeDetails create(CreateResumeRequest request, Resume resume) { @Override - public UpdateResumeResponse update(UpdateResumeRequest request, CustomUserDetails customUserDetails) { - long dataUserId = userRepository.findByEmail(customUserDetails.getEmail()).orElseThrow(() -> new RestApiException(CommonExceptionCode.NOT_FOUND_USER)).getId(); + public UpdateResumeResponse update(UpdateResumeRequest request, CustomUserDetails user) { + long dataUserId = userRepository.findByEmail(user.getEmail()).orElseThrow(() -> new RestApiException(CommonExceptionCode.NOT_FOUND_USER)).getId(); Resume.checkUserIdEquals(request.getUserId(), dataUserId); Resume updateResume = Resume.update(request.getResume(), request.getResumeId(), request.getUserId()); - Resume databaseResume = resumeRepository.findById(request.getResumeId()); + Resume databaseResume = resumeReadRepository.getReferenceById(request.getResumeId()); awsService.deleteDocumentFiles(updateResume.notExistFileUrls(databaseResume.getFileUrls()), Resume.FEATURE_DIR); return UpdateResumeResponse.from(update(request, resumeRepository.update(updateResume))); } + @Override + public void delete(Long id, CustomUserDetails user) { + long dataUserId = userRepository.findByEmail(user.getEmail()).orElseThrow(() -> new RestApiException(CommonExceptionCode.NOT_FOUND_USER)).getId(); + + Resume resume = resumeReadRepository.getReferenceById(id).checkIdNull(); + Resume.checkUserIdEquals(resume.getUserId(), dataUserId); + + resumeRepository.delete(resume); + } + /** * 제공된 업데이트 요청을 기반으로 이력서 세부 정보를 업데이트합니다. * diff --git a/src/main/java/darkoverload/itzip/feature/resume/service/resume/port/resume/ResumeRepository.java b/src/main/java/darkoverload/itzip/feature/resume/service/resume/port/resume/ResumeRepository.java index 124d1711..d1f0f49b 100644 --- a/src/main/java/darkoverload/itzip/feature/resume/service/resume/port/resume/ResumeRepository.java +++ b/src/main/java/darkoverload/itzip/feature/resume/service/resume/port/resume/ResumeRepository.java @@ -7,5 +7,6 @@ public interface ResumeRepository { Resume update(Resume resume); - Resume findById(long id); + void delete(Resume resume); + }