diff --git a/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java b/src/main/java/com/parentsgowork/server/converter/BookmarkConverter.java index a9b4a90..33a48b8 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()) @@ -20,6 +20,21 @@ public static BookmarkRequestDTO.BookmarkDetailDTO toDetailDTO(Bookmark bookmark .location(bookmark.getLocation()) .deadline(bookmark.getDeadline()) .registrationDate(bookmark.getRegistrationDate()) + .detailUrl(bookmark.getDetailUrl()) + .build(); + } + + public static BookmarkResponseDTO.BookmarkDetailInfoDTO toDetailDTO(Bookmark bookmark) { + return BookmarkResponseDTO.BookmarkDetailInfoDTO.builder() + .id(bookmark.getId()) + .jobTitle(bookmark.getJobTitle()) + .companyName(bookmark.getCompanyName()) + .pay(bookmark.getPay()) + .time(bookmark.getTime()) + .location(bookmark.getLocation()) + .deadline(bookmark.getDeadline()) + .registrationDate(bookmark.getRegistrationDate()) + .detailUrl(bookmark.getDetailUrl()) .build(); } @@ -36,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/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..d024fa3 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); @@ -50,10 +50,11 @@ public BookmarkRequestDTO.BookmarkDetailDTO bookmarkJob(Long userId, Long jobId, .location(job.getLocation()) .deadline(job.getDeadline()) .registrationDate(job.getRegistrationDate()) + .detailUrl(job.getDetailUrl()) .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..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 @@ -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; @@ -29,6 +29,7 @@ public static class BookmarkDetailDTO { 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 03a76af..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,23 @@ public static class BookmarkListDTO { private String location; private String deadline; private String registrationDate; + private String detailUrl; + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class BookmarkDetailInfoDTO { + private Long id; + private String jobTitle; + private String companyName; + private String pay; + private String time; + 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; } }