diff --git a/src/main/java/UMC/career_mate/domain/recruit/converter/RecruitConverter.java b/src/main/java/UMC/career_mate/domain/recruit/converter/RecruitConverter.java index 4ad43b0..2a54b93 100644 --- a/src/main/java/UMC/career_mate/domain/recruit/converter/RecruitConverter.java +++ b/src/main/java/UMC/career_mate/domain/recruit/converter/RecruitConverter.java @@ -60,13 +60,13 @@ public static RecommendRecruitsDTO toRecommendRecruitsDTO(Member member, List createPageResponseDTO(Page findRecruitPage, Member member) { - Set scrapedRecruitIds = recruitScrapRepository.findRecruitIdsByMember(member); + Set scrappedRecruitIds = recruitScrapRepository.findRecruitIdsByMember(member); RecommendRecruitsDTO recommendRecruitsDTO = RecruitConverter.toRecommendRecruitsDTO(member, findRecruitPage.stream() .map(recruit -> RecruitConverter.toRecruitThumbNailInfoDTO(recruit, - scrapedRecruitIds.contains(recruit.getId()))) + scrappedRecruitIds.contains(recruit.getId()))) .toList()); return PageResponseDTO.builder() diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/RecruitScrap.java b/src/main/java/UMC/career_mate/domain/recruitScrap/RecruitScrap.java index e85664f..668f704 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/RecruitScrap.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/RecruitScrap.java @@ -28,4 +28,6 @@ public class RecruitScrap extends BaseEntity { @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "recruit_id") private Recruit recruit; + + private String jobName; } diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/controller/RecruitScrapController.java b/src/main/java/UMC/career_mate/domain/recruitScrap/controller/RecruitScrapController.java index 5c0279c..c5ecdcf 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/controller/RecruitScrapController.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/controller/RecruitScrapController.java @@ -7,8 +7,6 @@ import UMC.career_mate.global.annotation.LoginMember; import UMC.career_mate.global.response.ApiResponse; import io.swagger.v3.oas.annotations.Operation; -import java.util.List; - import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.DeleteMapping; @@ -60,9 +58,7 @@ public ApiResponse deleteRecruitScrap(@LoginMember Member member, 로그인 인증만을 요구합니다. """) @GetMapping - public ApiResponse> getRecruitScrapList( - @LoginMember Member member) { + public ApiResponse getRecruitScrapList(@LoginMember Member member) { return ApiResponse.onSuccess(recruitScrapQueryService.findRecruitScrapList(member)); } - } diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/converter/RecruitScrapConverter.java b/src/main/java/UMC/career_mate/domain/recruitScrap/converter/RecruitScrapConverter.java index b301537..683c46c 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/converter/RecruitScrapConverter.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/converter/RecruitScrapConverter.java @@ -1,11 +1,14 @@ package UMC.career_mate.domain.recruitScrap.converter; +import UMC.career_mate.domain.job.Job; import UMC.career_mate.domain.member.Member; import UMC.career_mate.domain.recruit.Recruit; import UMC.career_mate.domain.recruitScrap.RecruitScrap; import UMC.career_mate.domain.recruitScrap.dto.response.RecruitScrapResponseDTO; +import UMC.career_mate.domain.recruitScrap.dto.response.RecruitScrapResponseDTO.RecruitScrapThumbNailInfoDTO; import java.time.LocalDate; import java.time.temporal.ChronoUnit; +import java.util.List; public class RecruitScrapConverter { @@ -13,19 +16,32 @@ public static RecruitScrap toEntity(Member member, Recruit recruit) { return RecruitScrap.builder() .member(member) .recruit(recruit) + .jobName(member.getJob().getName()) .build(); } - public static RecruitScrapResponseDTO toRecruitScrapResponseDTO(Recruit recruit, String jobName) { + public static RecruitScrapResponseDTO toRecruitScrapResponseDTO(Job job, + List recruitScrapThumbNailInfoDTOList) { return RecruitScrapResponseDTO.builder() - .recruitId(recruit.getId()) - .companyName(recruit.getCompanyName()) - .title(recruit.getTitle()) - .deadLine(formatDeadLine(recruit)) - .isScraped(true) - .companyInfoUrl(recruit.getCompanyInfoUrl()) - .recruitUrl(recruit.getRecruitUrl()) - .jobName(jobName) + .jobName(job.getName()) + .recruitScrapThumbNailInfoDTOList(recruitScrapThumbNailInfoDTOList) + .build(); + } + + public static RecruitScrapThumbNailInfoDTO toRecruitScrapThumbNailInfoDTO(RecruitScrap recruitScrap) { + return RecruitScrapThumbNailInfoDTO.builder() + .recruitId(recruitScrap.getRecruit().getId()) + .companyName(recruitScrap.getRecruit().getCompanyName()) + .title(recruitScrap.getRecruit().getTitle()) + .deadLine(formatDeadLine(recruitScrap.getRecruit())) + .isScrapped(true) + .build(); + } + + public static RecruitScrapResponseDTO toEmptyRecruitScrapResponseDTO(Job job) { + return RecruitScrapResponseDTO.builder() + .jobName(job.getName()) + .recruitScrapThumbNailInfoDTOList(List.of()) .build(); } diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/dto/response/RecruitScrapResponseDTO.java b/src/main/java/UMC/career_mate/domain/recruitScrap/dto/response/RecruitScrapResponseDTO.java index 201d7a0..00c11a6 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/dto/response/RecruitScrapResponseDTO.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/dto/response/RecruitScrapResponseDTO.java @@ -1,18 +1,21 @@ package UMC.career_mate.domain.recruitScrap.dto.response; -import java.time.LocalDateTime; +import java.util.List; import lombok.Builder; @Builder public record RecruitScrapResponseDTO( - Long recruitId, - String companyName, - String title, - String deadLine, - boolean isScraped, - String companyInfoUrl, - String recruitUrl, - String jobName + String jobName, + List recruitScrapThumbNailInfoDTOList ) { + @Builder + public record RecruitScrapThumbNailInfoDTO( + Long recruitId, + String companyName, + String title, + String deadLine, + boolean isScrapped + ){ + } } diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/repository/RecruitScrapRepository.java b/src/main/java/UMC/career_mate/domain/recruitScrap/repository/RecruitScrapRepository.java index eb44108..367ba2e 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/repository/RecruitScrapRepository.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/repository/RecruitScrapRepository.java @@ -16,8 +16,8 @@ public interface RecruitScrapRepository extends JpaRepository findByMemberAndRecruitId(Member member, Long recruitId); - @Query("select rs from RecruitScrap rs join fetch rs.recruit where rs.member = :member") - List findByMember(@Param("member") Member member); + @Query("select rs from RecruitScrap rs join fetch rs.recruit where rs.member = :member and rs.jobName = :jobName") + List findByMemberAndJobName(@Param("member") Member member, @Param("jobName") String jobName); @Query("select rs.recruit.id from RecruitScrap rs where rs.member = :member") Set findRecruitIdsByMember(@Param("member") Member member); diff --git a/src/main/java/UMC/career_mate/domain/recruitScrap/service/RecruitScrapQueryService.java b/src/main/java/UMC/career_mate/domain/recruitScrap/service/RecruitScrapQueryService.java index 7dbc416..d255f28 100644 --- a/src/main/java/UMC/career_mate/domain/recruitScrap/service/RecruitScrapQueryService.java +++ b/src/main/java/UMC/career_mate/domain/recruitScrap/service/RecruitScrapQueryService.java @@ -1,9 +1,11 @@ package UMC.career_mate.domain.recruitScrap.service; +import UMC.career_mate.domain.job.Job; import UMC.career_mate.domain.member.Member; import UMC.career_mate.domain.recruitScrap.RecruitScrap; import UMC.career_mate.domain.recruitScrap.converter.RecruitScrapConverter; import UMC.career_mate.domain.recruitScrap.dto.response.RecruitScrapResponseDTO; +import UMC.career_mate.domain.recruitScrap.dto.response.RecruitScrapResponseDTO.RecruitScrapThumbNailInfoDTO; import UMC.career_mate.domain.recruitScrap.repository.RecruitScrapRepository; import java.util.List; import lombok.RequiredArgsConstructor; @@ -17,17 +19,20 @@ public class RecruitScrapQueryService { private final RecruitScrapRepository recruitScrapRepository; - public List findRecruitScrapList(Member member) { - List recruitScrapList = recruitScrapRepository.findByMember(member); + public RecruitScrapResponseDTO findRecruitScrapList(Member member) { + Job job = member.getJob(); + List recruitScrapList = recruitScrapRepository.findByMemberAndJobName(member, + job.getName()); if (recruitScrapList.isEmpty()) { - return List.of(); + return RecruitScrapConverter.toEmptyRecruitScrapResponseDTO(job); } - return recruitScrapList.stream() - .map(RecruitScrap::getRecruit) - .map(recruit -> RecruitScrapConverter.toRecruitScrapResponseDTO(recruit, - member.getJob().getName())) + List recruitScrapThumbNailInfoDTOList = recruitScrapList.stream() + .map(RecruitScrapConverter::toRecruitScrapThumbNailInfoDTO) .toList(); + + return RecruitScrapConverter.toRecruitScrapResponseDTO(job, + recruitScrapThumbNailInfoDTOList); } }