From a1240dd7dc42228ac931b243af9aad53d40788fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B2=A8=EB=9D=BC?= Date: Mon, 12 May 2025 15:57:51 +0900 Subject: [PATCH 1/4] =?UTF-8?q?=EC=83=81=EC=84=B8=EC=A0=95=EB=B3=B4=20dto?= =?UTF-8?q?=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dto/BookmarkDTO/BookmarkResponseDTO.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java index 03a76af..a70a473 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java @@ -23,6 +23,20 @@ public static class BookmarkListDTO { private String registrationDate; } + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class BookmarkDetailInfoDTO { + private Long id; + private Long jobId; + private String jobTitle; + private String pay; + private String time; + private String location; + + } + @Getter @Builder @NoArgsConstructor From c3a21648195299a30f2cd92052489ef4d61c4971 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B2=A8=EB=9D=BC?= Date: Mon, 12 May 2025 18:21:54 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[#36]=20Feat,=20Refactor:=20=EB=B6=81?= =?UTF-8?q?=EB=A7=88=ED=81=AC=20=EC=83=81=EC=84=B8=EC=A0=95=EB=B3=B4=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/converter/BookmarkConverter.java | 17 +++++++++++++++-- .../bookmarkService/BookmarkCommandService.java | 2 +- .../BookmarkCommandServiceImpl.java | 4 ++-- .../bookmarkService/BookmarkQueryService.java | 2 +- .../BookmarkQueryServiceImpl.java | 2 +- .../web/controller/BookmarkController.java | 8 ++++---- .../specification/BookmarkSpecification.java | 4 ++-- .../web/dto/BookmarkDTO/BookmarkRequestDTO.java | 2 +- .../dto/BookmarkDTO/BookmarkResponseDTO.java | 2 ++ 9 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java index a9b4a90..7f48eff 100644 --- a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java +++ b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java @@ -9,8 +9,8 @@ public class BookmarkConverter { - public static BookmarkRequestDTO.BookmarkDetailDTO toDetailDTO(Bookmark bookmark) { - return BookmarkRequestDTO.BookmarkDetailDTO.builder() + public static BookmarkRequestDTO.SaveBookmarkDTO toSaveBookmarkDTO(Bookmark bookmark) { + return BookmarkRequestDTO.SaveBookmarkDTO.builder() .id(bookmark.getId()) .jobId(bookmark.getJobId()) .companyName(bookmark.getCompanyName()) @@ -23,6 +23,19 @@ public static BookmarkRequestDTO.BookmarkDetailDTO toDetailDTO(Bookmark bookmark .build(); } + public static BookmarkResponseDTO.BookmarkDetailInfoDTO toDetailDTO(Bookmark bookmark) { + return BookmarkResponseDTO.BookmarkDetailInfoDTO.builder() + .id(bookmark.getId()) + .jobId(bookmark.getJobId()) + .jobTitle(bookmark.getJobTitle()) + .pay(bookmark.getPay()) + .time(bookmark.getTime()) + .location(bookmark.getLocation()) + .deadline(bookmark.getDeadline()) + .registrationDate(bookmark.getRegistrationDate()) + .build(); + } + public static List getBookmarkListDTO(List bookmarks) { return bookmarks.stream() diff --git a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandService.java b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandService.java index 9c60bb2..09c4cea 100644 --- a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandService.java +++ b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandService.java @@ -4,7 +4,7 @@ import com.parentsgowork.server.web.dto.BookmarkDTO.BookmarkResponseDTO; public interface BookmarkCommandService { - BookmarkRequestDTO.BookmarkDetailDTO bookmarkJob(Long userId, Long jobId, int page); + BookmarkRequestDTO.SaveBookmarkDTO bookmarkJob(Long userId, Long jobId, int page); BookmarkResponseDTO.DeleteBookmarkDTO delete(Long userId, Long bookmarkId); } diff --git a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java index 79830c3..ae27727 100644 --- a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java +++ b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java @@ -26,7 +26,7 @@ public class BookmarkCommandServiceImpl implements BookmarkCommandService { private final UserRepository userRepository; @Override - public BookmarkRequestDTO.BookmarkDetailDTO bookmarkJob(Long userId, Long jobId, int page) { + public BookmarkRequestDTO.SaveBookmarkDTO bookmarkJob(Long userId, Long jobId, int page) { // 해당 페이지의 크롤링 결과 불러오기 List crawledJobs = crawlingService.getSeniorJobs(page); @@ -53,7 +53,7 @@ public BookmarkRequestDTO.BookmarkDetailDTO bookmarkJob(Long userId, Long jobId, .build(); Bookmark savedBookmark = bookmarkRepository.save(bookmark); - return BookmarkConverter.toDetailDTO(savedBookmark); + return BookmarkConverter.toSaveBookmarkDTO(savedBookmark); } @Override diff --git a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryService.java b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryService.java index b3ea718..d601c64 100644 --- a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryService.java +++ b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryService.java @@ -8,5 +8,5 @@ public interface BookmarkQueryService { List getBookmarkList(Long userId); - BookmarkRequestDTO.BookmarkDetailDTO getBookmarkDetails(Long userId, Long bookmarkId); + BookmarkResponseDTO.BookmarkDetailInfoDTO getBookmarkDetails(Long userId, Long bookmarkId); } diff --git a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryServiceImpl.java b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryServiceImpl.java index fbead9c..0d39790 100644 --- a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryServiceImpl.java +++ b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkQueryServiceImpl.java @@ -27,7 +27,7 @@ public List getBookmarkList(Long userId) { } @Override - public BookmarkRequestDTO.BookmarkDetailDTO getBookmarkDetails(Long userId, Long bookmarkId) { + public BookmarkResponseDTO.BookmarkDetailInfoDTO getBookmarkDetails(Long userId, Long bookmarkId) { Bookmark bookmark = bookmarkRepository.findByIdAndUserId(bookmarkId, userId) .orElseThrow(() -> new BookmarkHandler(ErrorStatus.BOOKMARK_NOT_FOUND)); diff --git a/src/main/java/com/parentsgowork/server/web/controller/BookmarkController.java b/src/main/java/com/parentsgowork/server/web/controller/BookmarkController.java index 2cff30a..5427e45 100644 --- a/src/main/java/com/parentsgowork/server/web/controller/BookmarkController.java +++ b/src/main/java/com/parentsgowork/server/web/controller/BookmarkController.java @@ -24,11 +24,11 @@ public class BookmarkController implements BookmarkSpecification { private final BookmarkQueryService bookmarkQueryService; @PostMapping("") - public ApiResponse bookmarkJob(@RequestBody BookmarkRequestDTO.jobInfoBookmarkDTO request) { + public ApiResponse bookmarkJob(@RequestBody BookmarkRequestDTO.jobInfoBookmarkDTO request) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Long userId = (Long) authentication.getPrincipal(); - BookmarkRequestDTO.BookmarkDetailDTO response = bookmarkCommandService.bookmarkJob(userId, request.getJobId(), request.getPage()); + BookmarkRequestDTO.SaveBookmarkDTO response = bookmarkCommandService.bookmarkJob(userId, request.getJobId(), request.getPage()); return ApiResponse.onSuccess(response); } @@ -42,11 +42,11 @@ public ApiResponse> getBookmarkList() } @GetMapping("{bookmarkId}") - public ApiResponse getBookmarkDetails(@PathVariable Long bookmarkId) { + public ApiResponse getBookmarkDetails(@PathVariable Long bookmarkId) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Long userId = (Long) authentication.getPrincipal(); - BookmarkRequestDTO.BookmarkDetailDTO response = bookmarkQueryService.getBookmarkDetails(userId, bookmarkId); + BookmarkResponseDTO.BookmarkDetailInfoDTO response = bookmarkQueryService.getBookmarkDetails(userId, bookmarkId); return ApiResponse.onSuccess(response); } diff --git a/src/main/java/com/parentsgowork/server/web/controller/specification/BookmarkSpecification.java b/src/main/java/com/parentsgowork/server/web/controller/specification/BookmarkSpecification.java index af7d88c..e5bc7fc 100644 --- a/src/main/java/com/parentsgowork/server/web/controller/specification/BookmarkSpecification.java +++ b/src/main/java/com/parentsgowork/server/web/controller/specification/BookmarkSpecification.java @@ -20,7 +20,7 @@ public interface BookmarkSpecification { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "⭕ SUCCESS, 성공"), @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON400", description = "❌ BAD, 잘못된 요청", content = @Content(schema = @Schema(implementation = ApiResponse.class))) }) - ApiResponse bookmarkJob(@RequestBody BookmarkRequestDTO.jobInfoBookmarkDTO request); + ApiResponse bookmarkJob(@RequestBody BookmarkRequestDTO.jobInfoBookmarkDTO request); @GetMapping("/") @Operation(summary = "내가 저장한 북마크 리스트 조회", description = "내가 저장한 북마크 리스트를 조회합니다.") @@ -36,7 +36,7 @@ public interface BookmarkSpecification { @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON200", description = "⭕ SUCCESS, 성공"), @io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "COMMON400", description = "❌ BAD, 잘못된 요청", content = @Content(schema = @Schema(implementation = ApiResponse.class))) }) - ApiResponse getBookmarkDetails(@PathVariable Long bookmarkId); + ApiResponse getBookmarkDetails(@PathVariable Long bookmarkId); @DeleteMapping("{bookmarkId}") @Operation(summary = "내가 저장한 북마크 삭제", description = "내가 저장한 북마크 리스트를 삭제합니다.") diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java index d0f6fc1..426ad4a 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java @@ -19,7 +19,7 @@ public static class jobInfoBookmarkDTO { @Builder @NoArgsConstructor @AllArgsConstructor - public static class BookmarkDetailDTO { + public static class SaveBookmarkDTO { private Long id; private Long jobId; private String companyName; diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java index a70a473..397106c 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java @@ -34,6 +34,8 @@ public static class BookmarkDetailInfoDTO { private String pay; private String time; private String location; + private String deadline; + private String registrationDate; } From 8a43fb83970b0dfdcfad36fd388654b4647ff1bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B2=A8=EB=9D=BC?= Date: Mon, 12 May 2025 18:28:47 +0900 Subject: [PATCH 3/4] =?UTF-8?q?dto=EC=97=90=20=ED=9A=8C=EC=82=AC=EB=AA=85?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/parentsgowork/server/converter/BookmarkConverter.java | 2 +- .../server/web/dto/BookmarkDTO/BookmarkResponseDTO.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java index 7f48eff..5b6ef18 100644 --- a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java +++ b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java @@ -26,8 +26,8 @@ public static BookmarkRequestDTO.SaveBookmarkDTO toSaveBookmarkDTO(Bookmark book public static BookmarkResponseDTO.BookmarkDetailInfoDTO toDetailDTO(Bookmark bookmark) { return BookmarkResponseDTO.BookmarkDetailInfoDTO.builder() .id(bookmark.getId()) - .jobId(bookmark.getJobId()) .jobTitle(bookmark.getJobTitle()) + .companyName(bookmark.getCompanyName()) .pay(bookmark.getPay()) .time(bookmark.getTime()) .location(bookmark.getLocation()) diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java index 397106c..469e723 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java @@ -29,8 +29,8 @@ public static class BookmarkListDTO { @AllArgsConstructor public static class BookmarkDetailInfoDTO { private Long id; - private Long jobId; private String jobTitle; + private String companyName; private String pay; private String time; private String location; From 7fabb11f5a857076e2267b06003cb471c422ff6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B2=A8=EB=9D=BC?= Date: Mon, 12 May 2025 18:46:33 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=ED=81=AC=EB=A1=A4=EB=A7=81=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=EC=97=90=20=EC=83=81=EC=84=B8=EC=A0=95=EB=B3=B4url=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../parentsgowork/server/converter/BookmarkConverter.java | 3 +++ .../com/parentsgowork/server/crawling/JobInfoCrawling.java | 7 ++++--- .../java/com/parentsgowork/server/domain/Bookmark.java | 3 +++ .../bookmarkService/BookmarkCommandServiceImpl.java | 1 + .../server/web/dto/BookmarkDTO/BookmarkRequestDTO.java | 1 + .../server/web/dto/BookmarkDTO/BookmarkResponseDTO.java | 3 ++- .../server/web/dto/JobCrawlingDTO/JobCrawlingDTO.java | 1 + 7 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java index 5b6ef18..33a48b8 100644 --- a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java +++ b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java @@ -20,6 +20,7 @@ public static BookmarkRequestDTO.SaveBookmarkDTO toSaveBookmarkDTO(Bookmark book .location(bookmark.getLocation()) .deadline(bookmark.getDeadline()) .registrationDate(bookmark.getRegistrationDate()) + .detailUrl(bookmark.getDetailUrl()) .build(); } @@ -33,6 +34,7 @@ public static BookmarkResponseDTO.BookmarkDetailInfoDTO toDetailDTO(Bookmark boo .location(bookmark.getLocation()) .deadline(bookmark.getDeadline()) .registrationDate(bookmark.getRegistrationDate()) + .detailUrl(bookmark.getDetailUrl()) .build(); } @@ -49,6 +51,7 @@ public static List getBookmarkListDTO(List< .location(bookmark.getLocation()) .deadline(bookmark.getDeadline()) .registrationDate(bookmark.getRegistrationDate()) + .detailUrl(bookmark.getDetailUrl()) .build()) .collect(Collectors.toList()); } diff --git a/src/main/java/com/parentsgowork/server/crawling/JobInfoCrawling.java b/src/main/java/com/parentsgowork/server/crawling/JobInfoCrawling.java index ef359e9..b5bf38d 100644 --- a/src/main/java/com/parentsgowork/server/crawling/JobInfoCrawling.java +++ b/src/main/java/com/parentsgowork/server/crawling/JobInfoCrawling.java @@ -40,8 +40,10 @@ public List crawlJobs(int page) { List jobCards = driver.findElements(By.cssSelector("tr[id^='list']")); for (WebElement card : jobCards) { + WebElement titleElement = card.findElement(By.cssSelector("a.t3_sb")); + String title = titleElement.getText(); + String detailUrl = titleElement.getAttribute("href"); String company = card.findElement(By.cssSelector("a.cp_name")).getText(); - String title = card.findElement(By.cssSelector("a.t3_sb")).getText(); String pay = card.findElement(By.cssSelector("li.dollar span.item")).getText(); String time = card.findElement(By.cssSelector("li.time span.item.sm:nth-of-type(1)")).getText(); String location = card.findElement(By.cssSelector("li.site p")).getText(); @@ -54,8 +56,6 @@ public List crawlJobs(int page) { registrationDate = dateElements.get(1).getText(); } - System.out.println(company + " / " + title + " / " + pay + " / " + time + " / " + location + " / " + deadline + " / " + registrationDate); - jobs.add( JobCrawlingDTO.JobInfoDTO.builder() .companyName(company) @@ -65,6 +65,7 @@ public List crawlJobs(int page) { .location(location) .deadline(deadline) .registrationDate(registrationDate) + .detailUrl(detailUrl) .build() ); } diff --git a/src/main/java/com/parentsgowork/server/domain/Bookmark.java b/src/main/java/com/parentsgowork/server/domain/Bookmark.java index af7b350..b9156be 100644 --- a/src/main/java/com/parentsgowork/server/domain/Bookmark.java +++ b/src/main/java/com/parentsgowork/server/domain/Bookmark.java @@ -46,4 +46,7 @@ public class Bookmark extends BaseEntity { @Column private String registrationDate; + @Column(columnDefinition = "TEXT") + private String detailUrl; + } diff --git a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java index ae27727..d024fa3 100644 --- a/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java +++ b/src/main/java/com/parentsgowork/server/service/bookmarkService/BookmarkCommandServiceImpl.java @@ -50,6 +50,7 @@ public BookmarkRequestDTO.SaveBookmarkDTO bookmarkJob(Long userId, Long jobId, i .location(job.getLocation()) .deadline(job.getDeadline()) .registrationDate(job.getRegistrationDate()) + .detailUrl(job.getDetailUrl()) .build(); Bookmark savedBookmark = bookmarkRepository.save(bookmark); diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java index 426ad4a..1ab0724 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkRequestDTO.java @@ -29,6 +29,7 @@ public static class SaveBookmarkDTO { private String location; private String deadline; private String registrationDate; + private String detailUrl; } } diff --git a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java index 469e723..c45bd27 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/BookmarkDTO/BookmarkResponseDTO.java @@ -21,6 +21,7 @@ public static class BookmarkListDTO { private String location; private String deadline; private String registrationDate; + private String detailUrl; } @Getter @@ -36,7 +37,7 @@ public static class BookmarkDetailInfoDTO { private String location; private String deadline; private String registrationDate; - + private String detailUrl; } @Getter diff --git a/src/main/java/com/parentsgowork/server/web/dto/JobCrawlingDTO/JobCrawlingDTO.java b/src/main/java/com/parentsgowork/server/web/dto/JobCrawlingDTO/JobCrawlingDTO.java index b1d9e80..8d07c99 100644 --- a/src/main/java/com/parentsgowork/server/web/dto/JobCrawlingDTO/JobCrawlingDTO.java +++ b/src/main/java/com/parentsgowork/server/web/dto/JobCrawlingDTO/JobCrawlingDTO.java @@ -18,6 +18,7 @@ public static class JobInfoDTO { private String location; private String deadline; private String registrationDate; + private String detailUrl; } }