From 1987ea534891b534bc950f3222f8248cf88cb06d Mon Sep 17 00:00:00 2001 From: hyeonda02 Date: Fri, 29 Nov 2024 14:43:31 +0900 Subject: [PATCH] =?UTF-8?q?Feat=20:=20=EC=9D=B4=EB=A0=A5=EC=84=9C=20?= =?UTF-8?q?=EB=82=B4=EB=B3=B4=EB=82=B4=EA=B8=B0=20API=20=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20-=20=EC=9D=B4=EB=A0=A5=EC=84=9C=20=EB=82=B4=EB=B3=B4?= =?UTF-8?q?=EB=82=B4=EA=B8=B0=20=EA=B8=B0=EB=8A=A5=EC=9D=84=20=EC=9C=84?= =?UTF-8?q?=ED=95=9C=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EC=A1=B0=ED=9A=8C=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/response/ActivityResponse.java | 5 ++ .../server/career/dto/ActivityReqDto.java | 2 + .../server/career/dto/CircleReqDto.java | 2 + .../server/career/dto/CompetitionReqDto.java | 2 + .../server/career/dto/EduCareerReqDto.java | 2 + .../server/career/dto/EmploymentReqDto.java | 2 + .../server/career/dto/ProjectReqDto.java | 2 + .../record/controller/RecordController.java | 18 ++++- .../response/RecordDownResponse.java | 63 ++++++++++++++++ .../response/RecordListResponse.java | 43 ----------- .../controller/response/RecordResponse.java | 30 -------- .../controller/response/ResumeResponse.java | 21 ++++++ .../kkijuk/server/record/dto/AwardReqDto.java | 2 + .../server/record/dto/EducationReqDto.java | 3 + .../kkijuk/server/record/dto/FileReqDto.java | 2 + .../server/record/dto/LicenseReqDto.java | 2 + .../server/record/dto/RecordReqDto.java | 2 + .../kkijuk/server/record/dto/SkillReqDto.java | 2 + .../kkijuk/server/record/dto/UrlReqDto.java | 2 + .../server/record/service/RecordService.java | 1 + .../record/service/RecordServiceImpl.java | 73 +++++++++++++++++++ 21 files changed, 207 insertions(+), 74 deletions(-) create mode 100644 src/main/java/umc/kkijuk/server/record/controller/response/RecordDownResponse.java delete mode 100644 src/main/java/umc/kkijuk/server/record/controller/response/RecordListResponse.java create mode 100644 src/main/java/umc/kkijuk/server/record/controller/response/ResumeResponse.java diff --git a/src/main/java/umc/kkijuk/server/career/controller/response/ActivityResponse.java b/src/main/java/umc/kkijuk/server/career/controller/response/ActivityResponse.java index f2045c01..494f77d3 100644 --- a/src/main/java/umc/kkijuk/server/career/controller/response/ActivityResponse.java +++ b/src/main/java/umc/kkijuk/server/career/controller/response/ActivityResponse.java @@ -1,5 +1,6 @@ package umc.kkijuk.server.career.controller.response; +import com.fasterxml.jackson.annotation.JsonFormat; import lombok.*; import umc.kkijuk.server.career.domain.Activity; import umc.kkijuk.server.detail.controller.response.BaseCareerDetailResponse; @@ -22,8 +23,12 @@ public class ActivityResponse implements BaseCareerResponse{ private String alias; private Boolean unknown; private String summary; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private LocalDate startdate; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private LocalDate enddate; + private String organizer; private String role; private int teamSize; diff --git a/src/main/java/umc/kkijuk/server/career/dto/ActivityReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/ActivityReqDto.java index 0fd76ffc..80a74ebf 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/ActivityReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/ActivityReqDto.java @@ -8,12 +8,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import java.time.LocalDate; @Getter @Builder @AllArgsConstructor +@NoArgsConstructor public class ActivityReqDto { @NotBlank(message = "활동명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/career/dto/CircleReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/CircleReqDto.java index d3b3b3c5..88b1fd5b 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/CircleReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/CircleReqDto.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import java.time.LocalDate; @@ -15,6 +16,7 @@ @Builder @Getter @AllArgsConstructor +@NoArgsConstructor public class CircleReqDto { @NotBlank(message = "활동명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/career/dto/CompetitionReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/CompetitionReqDto.java index b8c151d7..3b9ddd59 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/CompetitionReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/CompetitionReqDto.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import java.time.LocalDate; @@ -15,6 +16,7 @@ @Builder @Getter @AllArgsConstructor +@NoArgsConstructor public class CompetitionReqDto { @NotBlank(message = "대회명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/career/dto/EduCareerReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/EduCareerReqDto.java index 3cf010f7..2bf30d6d 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/EduCareerReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/EduCareerReqDto.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import java.time.LocalDate; @@ -16,6 +17,7 @@ @Getter @Builder @AllArgsConstructor +@NoArgsConstructor public class EduCareerReqDto { @NotBlank(message = "교육명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/career/dto/EmploymentReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/EmploymentReqDto.java index 9910e617..faed423a 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/EmploymentReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/EmploymentReqDto.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import umc.kkijuk.server.career.domain.JobType; import java.time.LocalDate; @@ -15,6 +16,7 @@ @Builder @Getter @AllArgsConstructor +@NoArgsConstructor public class EmploymentReqDto { @NotBlank(message = "활동명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/career/dto/ProjectReqDto.java b/src/main/java/umc/kkijuk/server/career/dto/ProjectReqDto.java index e4b28381..0a4b40a1 100644 --- a/src/main/java/umc/kkijuk/server/career/dto/ProjectReqDto.java +++ b/src/main/java/umc/kkijuk/server/career/dto/ProjectReqDto.java @@ -8,6 +8,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import umc.kkijuk.server.career.domain.ProjectType; import java.time.LocalDate; @@ -15,6 +16,7 @@ @Builder @Getter @AllArgsConstructor +@NoArgsConstructor public class ProjectReqDto { @NotBlank(message = "활동명은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/record/controller/RecordController.java b/src/main/java/umc/kkijuk/server/record/controller/RecordController.java index 54a5facb..afc9fa23 100644 --- a/src/main/java/umc/kkijuk/server/record/controller/RecordController.java +++ b/src/main/java/umc/kkijuk/server/record/controller/RecordController.java @@ -3,6 +3,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; +import lombok.extern.java.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; @@ -19,7 +20,7 @@ @Tag(name = "record", description = "이력서 API") @RestController @RequiredArgsConstructor -@RequestMapping("/history/resume/") +@RequestMapping("/history/resume") public class RecordController { private final RecordService recordService; private final MemberService memberService; @@ -61,6 +62,21 @@ public ResponseEntity update( .body(new BaseResponse<>(HttpStatus.OK.value(), "이력서 수정 완료", recordResponse)); } + @GetMapping("/download") + @Operation( + summary = "이력서 내보내기", + description = "이력서 내보내기에 필요한 정보들을 조회합니다." + ) + public ResponseEntity downloadResume( + @Login LoginInfo loginInfo ){ + Long memberId = loginInfo.getMemberId(); + RecordDownResponse response = recordService.downloadResume(recordService.findByMemberId(memberId).getId(),memberId); + return ResponseEntity.status(HttpStatus.OK) + .body(new BaseResponse<>(HttpStatus.OK.value(),"이력서 내보내기 정보 조회 완료",response)); + + } + + @PostMapping("/education") @Operation(summary = "학력 생성") public ResponseEntity saveEducation( diff --git a/src/main/java/umc/kkijuk/server/record/controller/response/RecordDownResponse.java b/src/main/java/umc/kkijuk/server/record/controller/response/RecordDownResponse.java new file mode 100644 index 00000000..eeaedc25 --- /dev/null +++ b/src/main/java/umc/kkijuk/server/record/controller/response/RecordDownResponse.java @@ -0,0 +1,63 @@ +package umc.kkijuk.server.record.controller.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.Getter; +import umc.kkijuk.server.member.domain.Member; +import umc.kkijuk.server.record.domain.Record; + +import java.time.LocalDate; +import java.util.List; + +@Data +@Getter +@Builder +@AllArgsConstructor +public class RecordDownResponse { + private String address; + private String profileImageUrl; + + private List educationList; + + private List activitiesAndExperiences; + private List employments; + private List projects; + private List eduCareers; + + private List awards; + private List licenses; + private List skills; + private List files; + + private String name; + private LocalDate birthday; + private String phone; + private String email; + + public RecordDownResponse(Record record, Member member, + List educationList, List employments, List activitiesAndExperiences, + List projectsAndComp, List eduCareers, List awards, + List licenses, List skills, List files) { + + this.address = record.getAddress(); + this.profileImageUrl=record.getProfileImageUrl(); + + this.educationList=educationList; + this.employments = employments; + this.activitiesAndExperiences = activitiesAndExperiences; + this.projects = projectsAndComp; + this.eduCareers = eduCareers; + + this.awards = awards; + this.licenses = licenses; + this.skills = skills; + this.files = files; + + this.name = member.getName(); + this.birthday=member.getBirthDate(); + this.phone=member.getPhoneNumber(); + this.email=member.getEmail(); + + } +} diff --git a/src/main/java/umc/kkijuk/server/record/controller/response/RecordListResponse.java b/src/main/java/umc/kkijuk/server/record/controller/response/RecordListResponse.java deleted file mode 100644 index 1f78a4b1..00000000 --- a/src/main/java/umc/kkijuk/server/record/controller/response/RecordListResponse.java +++ /dev/null @@ -1,43 +0,0 @@ -package umc.kkijuk.server.record.controller.response; - -import lombok.*; - -import java.time.LocalDate; -import java.time.Period; - -@Data -@Getter -@NoArgsConstructor -@AllArgsConstructor -public class RecordListResponse { - private Long careerId; - private String careerName; - private String alias; - private String category; - private LocalDate startDate; - private LocalDate endDate; - private int period; - private String summary; - private Boolean isCurrent; - -// @Builder -// public RecordListResponse(Career career) { -// this.careerId = career.getId(); -// this.careerName=career.getName(); -// this.alias=career.getAlias(); -// this.category=career.getCategory().getName(); -// this.startDate=career.getStartdate(); -// this.endDate = career.getEnddate(); -// this.period=calculatePeriodInMonths(startDate, endDate); -// this.summary=career.getSummary(); -// this.isCurrent=determineIsCurrent(endDate); -// } - - private static int calculatePeriodInMonths(LocalDate startDate, LocalDate endDate) { - return Period.between(startDate, endDate).getMonths(); - } - - private static Boolean determineIsCurrent(LocalDate endDate) { - return endDate.isAfter(LocalDate.now()); - } -} diff --git a/src/main/java/umc/kkijuk/server/record/controller/response/RecordResponse.java b/src/main/java/umc/kkijuk/server/record/controller/response/RecordResponse.java index 5a81f390..d4b3009c 100644 --- a/src/main/java/umc/kkijuk/server/record/controller/response/RecordResponse.java +++ b/src/main/java/umc/kkijuk/server/record/controller/response/RecordResponse.java @@ -36,36 +36,6 @@ public class RecordResponse { private String phone; private String email; - // 이력서 없을 때 -// @Builder -// public RecordResponse(Member member, -// List activitiesAndExperiences, -// List jobs) { -// this.activitiesAndExperiences=activitiesAndExperiences; -// this.jobs=jobs; -// this.name = member.getName(); -// this.birthday=member.getBirthDate(); -// this.phone=member.getPhoneNumber(); -// this.email=member.getEmail(); -// } - - // 이력서 있을 때 -// @Builder -// public RecordResponse(Record record, Member member, List educationList, -// List activitiesAndExperiences, -// List jobs) { -// this.record_id=record.getId(); -// this.address = record.getAddress(); -// this.profileImageUrl=record.getProfileImageUrl(); -// this.educationList=educationList; -// this.activitiesAndExperiences=activitiesAndExperiences; -// this.jobs=jobs; -// this.name = member.getName(); -// this.birthday=member.getBirthDate(); -// this.phone=member.getPhoneNumber(); -// this.email=member.getEmail(); -// this.updatedAt = formatUpdatedAt(record.getUpdatedAt()); -// } // 이력서 있을 때 @Builder diff --git a/src/main/java/umc/kkijuk/server/record/controller/response/ResumeResponse.java b/src/main/java/umc/kkijuk/server/record/controller/response/ResumeResponse.java new file mode 100644 index 00000000..01aca98f --- /dev/null +++ b/src/main/java/umc/kkijuk/server/record/controller/response/ResumeResponse.java @@ -0,0 +1,21 @@ +package umc.kkijuk.server.record.controller.response; + +import lombok.*; + +import java.time.LocalDate; + +@Data +@Getter +@Setter +@Builder +@AllArgsConstructor +public class ResumeResponse { + private Long id; + private String category; + private String name; + private String alias; + private String summary; + private LocalDate startdate; + private LocalDate enddate; + +} diff --git a/src/main/java/umc/kkijuk/server/record/dto/AwardReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/AwardReqDto.java index b17c55e2..d3fcce19 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/AwardReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/AwardReqDto.java @@ -4,12 +4,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import java.time.YearMonth; @Getter @Builder @AllArgsConstructor +@NoArgsConstructor public class AwardReqDto { private String competitionName; private String administer; diff --git a/src/main/java/umc/kkijuk/server/record/dto/EducationReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/EducationReqDto.java index e5e03839..9108fad6 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/EducationReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/EducationReqDto.java @@ -4,10 +4,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; + import java.time.YearMonth; @Builder @AllArgsConstructor +@NoArgsConstructor @Getter public class EducationReqDto { private String category; diff --git a/src/main/java/umc/kkijuk/server/record/dto/FileReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/FileReqDto.java index e60e0c6c..7f5a2e89 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/FileReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/FileReqDto.java @@ -6,10 +6,12 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter @Builder @AllArgsConstructor +@NoArgsConstructor public class FileReqDto { @NotBlank(message = "첨부파일 제목은 필수 입력 항목입니다. 최대 20자 까지 입력 가능") @Size(max = 20) diff --git a/src/main/java/umc/kkijuk/server/record/dto/LicenseReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/LicenseReqDto.java index fc23f17a..f5f26d8e 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/LicenseReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/LicenseReqDto.java @@ -3,12 +3,14 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import umc.kkijuk.server.record.domain.LicenseTag; import java.time.YearMonth; @Builder @AllArgsConstructor +@NoArgsConstructor @Getter public class LicenseReqDto { private LicenseTag licenseTag; diff --git a/src/main/java/umc/kkijuk/server/record/dto/RecordReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/RecordReqDto.java index 8709c52c..bf87ce3d 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/RecordReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/RecordReqDto.java @@ -3,9 +3,11 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; @Builder @AllArgsConstructor +@NoArgsConstructor @Getter public class RecordReqDto { private String address; diff --git a/src/main/java/umc/kkijuk/server/record/dto/SkillReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/SkillReqDto.java index 5e3982c2..93105583 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/SkillReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/SkillReqDto.java @@ -3,11 +3,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; import umc.kkijuk.server.record.domain.SkillTag; import umc.kkijuk.server.record.domain.Workmanship; @Builder @AllArgsConstructor +@NoArgsConstructor @Getter public class SkillReqDto { private SkillTag skillTag; diff --git a/src/main/java/umc/kkijuk/server/record/dto/UrlReqDto.java b/src/main/java/umc/kkijuk/server/record/dto/UrlReqDto.java index e187dd6d..102eadf2 100644 --- a/src/main/java/umc/kkijuk/server/record/dto/UrlReqDto.java +++ b/src/main/java/umc/kkijuk/server/record/dto/UrlReqDto.java @@ -4,9 +4,11 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; @Builder @AllArgsConstructor +@NoArgsConstructor @Getter public class UrlReqDto { @NotNull diff --git a/src/main/java/umc/kkijuk/server/record/service/RecordService.java b/src/main/java/umc/kkijuk/server/record/service/RecordService.java index 6ff95372..a949fd28 100644 --- a/src/main/java/umc/kkijuk/server/record/service/RecordService.java +++ b/src/main/java/umc/kkijuk/server/record/service/RecordService.java @@ -25,4 +25,5 @@ public interface RecordService { SkillResponse saveSkill(Member requestMember, Long recordId, SkillReqDto skillReqDto); SkillResponse updateSkill(Member requestMember, Long skillId, SkillReqDto skillReqDto); Long deleteSkill(Member requestMember, Long skillId); + RecordDownResponse downloadResume(Long recordId, Long memberId); } diff --git a/src/main/java/umc/kkijuk/server/record/service/RecordServiceImpl.java b/src/main/java/umc/kkijuk/server/record/service/RecordServiceImpl.java index e31d6685..fdef1918 100644 --- a/src/main/java/umc/kkijuk/server/record/service/RecordServiceImpl.java +++ b/src/main/java/umc/kkijuk/server/record/service/RecordServiceImpl.java @@ -213,6 +213,79 @@ public RecordResponse updateRecord(Long memberId, Long recordId, RecordReqDto re activitiesAndExperiences, projectsAndComp,eduCareers , awards, licenses, skills, files); } + @Override + public RecordDownResponse downloadResume(Long recordId, Long memberId) { + + Member member = memberRepository.findById(memberId) + .orElseThrow(() -> new ResourceNotFoundException("member ", memberId)); + Record record = recordRepository.findByMemberId(memberId); + + List employments = employmentRepository.findByMemberId(memberId).stream() + .map(employment -> new ResumeResponse(employment.getId(),"경력",employment.getName(), + employment.getAlias(),employment.getSummary(),employment.getStartdate(), + employment.getEnddate())).collect(Collectors.toList()); + + List activitiesAndExperiences = activityRepository.findByMemberId(memberId).stream() + .map(activity -> new ResumeResponse(activity.getId(), "대외활동",activity.getName(), + activity.getAlias(),activity.getSummary(),activity.getStartdate(), + activity.getEnddate())).collect(Collectors.toList()); + + activitiesAndExperiences.addAll(circleRepository.findByMemberId(memberId).stream() + .map(circle->new ResumeResponse(circle.getId(),"동아리",circle.getName(), + circle.getAlias(),circle.getSummary(),circle.getStartdate(), + circle.getEnddate())).collect(Collectors.toList())); + + //프로젝트 ( 프로젝트, 공모전/대회) + List projectsAndComp = projectRepository.findByMemberId(memberId).stream() + .map(project->new ResumeResponse(project.getId(),"프로젝트",project.getName(), + project.getAlias(),project.getSummary(),project.getStartdate(), + project.getEnddate())).collect(Collectors.toList()); + + projectsAndComp.addAll(competitionRepository.findByMemberId(memberId).stream() + .map(comp -> new ResumeResponse(comp.getId(),"공모전/대회", comp.getName(), + comp.getAlias(),comp.getSummary(),comp.getStartdate(), + comp.getEnddate())).collect(Collectors.toList())); + + List eduCareers = eduCareerRepository.findByMemberId(memberId).stream() + .map(edu-> new ResumeResponse(edu.getId(),"교육",edu.getName(), + edu.getAlias(),edu.getSummary(),edu.getStartdate(), + edu.getEnddate())).collect(Collectors.toList()); + + + + List educationList = record.getEducations() + .stream() + .map(EducationResponse::new) + .collect(Collectors.toList()); + + // 수상 + List awards = awardRepository.findByRecordId(record.getId()).stream() + .map(AwardResponse::new) + .sorted(Comparator.comparing(AwardResponse::getAcquireDate).reversed()) + .toList(); + + // 자격증 + List licenses = licenseRepository.findByRecordId(record.getId()).stream() + .map(LicenseResponse::new) + .sorted(Comparator.comparing(LicenseResponse::getAcquireDate).reversed()) + .toList(); + + // 스킬 + List skills = skillRepository.findByRecordId(record.getId()).stream() + .map(SkillResponse::new) + .collect(Collectors.toList()); + + // 파일 + List files = fileRepository.findByRecordId(record.getId()).stream() + .map(FileResponse::new) + .collect(Collectors.toList()); + + + return new RecordDownResponse(record, member, educationList, employments, + activitiesAndExperiences, projectsAndComp, eduCareers, awards, licenses, skills, files); + + } +