diff --git a/src/main/java/UMC/career_mate/domain/answer/controller/AnswerController.java b/src/main/java/UMC/career_mate/domain/answer/controller/AnswerController.java index 960ff42..0baac82 100644 --- a/src/main/java/UMC/career_mate/domain/answer/controller/AnswerController.java +++ b/src/main/java/UMC/career_mate/domain/answer/controller/AnswerController.java @@ -128,9 +128,9 @@ public ApiResponse saveAnswerList(@LoginMember Member member, 4. 보유 기술 (TECHNICAL_SKILLS)\s 5. 최종 정리 (SUMMARY) """) - public ApiResponse> getAnswerList(@RequestParam Long memberId, + public ApiResponse> getAnswerList(@LoginMember Member member, @RequestParam("templateType") TemplateType templateType) { - return ApiResponse.onSuccess(GET_ANSWER_LIST, answerQueryService.getAnswersByTemplateType(memberId, templateType)); + return ApiResponse.onSuccess(GET_ANSWER_LIST, answerQueryService.getAnswersByTemplateType(member, templateType)); } @PatchMapping diff --git a/src/main/java/UMC/career_mate/domain/answer/repository/AnswerRepository.java b/src/main/java/UMC/career_mate/domain/answer/repository/AnswerRepository.java index fa385cc..2c1063d 100644 --- a/src/main/java/UMC/career_mate/domain/answer/repository/AnswerRepository.java +++ b/src/main/java/UMC/career_mate/domain/answer/repository/AnswerRepository.java @@ -15,33 +15,38 @@ public interface AnswerRepository extends JpaRepository { @Query(""" - SELECT a FROM Answer a - WHERE a.member = :member AND a.question.template.templateType = :templateType - """) + SELECT a FROM Answer a + WHERE a.member = :member + AND a.question.template.job = :job + AND a.question.template.templateType = :templateType + """) List findByMemberAndTemplateType(@Param("member") Member member, - @Param("templateType") TemplateType templateType); + @Param("job") Job job, + @Param("templateType") TemplateType templateType); - Optional findByMemberAndQuestionAndSequence(Member member, Question question, - Long sequence); + Optional findByMemberAndQuestionAndSequence(Member member, Question question, Long sequence); @Query(""" - SELECT COUNT(a) > 0 FROM Answer a - WHERE a.member = :member AND a.question.template.templateType = :templateType - """) + SELECT COUNT(a) > 0 FROM Answer a + WHERE a.member = :member + AND a.question.template.job = :job + AND a.question.template.templateType = :templateType + """) boolean existsByMemberAndTemplateType(@Param("member") Member member, - @Param("templateType") TemplateType templateType); + @Param("job") Job job, + @Param("templateType") TemplateType templateType); @Query("select a from Answer a where a.member = :member and a.question.template.templateType in :templateTypes and a.question.order = :order and a.sequence = :sequence and a.question.template.job = :job") List findByMemberAndTemplateTypesAndOrderAndJob(@Param("member") Member member, - @Param("templateTypes") List templateTypes, @Param("order") int order, - @Param("sequence") int sequence, @Param("job") Job job); + @Param("templateTypes") List templateTypes, @Param("order") int order, + @Param("sequence") int sequence, @Param("job") Job job); @Query("select a from Answer a where a.member = :member and a.question.content = :content and a.question.template.templateType = :templateType and a.question.template.job = :job") List findAnswersByMemberAndQuestionContentAndTemplateTypeAndJob( - @Param("member") Member member, @Param("content") String content, - @Param("templateType") TemplateType templateType, @Param("job") Job job); + @Param("member") Member member, @Param("content") String content, + @Param("templateType") TemplateType templateType, @Param("job") Job job); @Query("select a from Answer a where a.member = :member and a.question.template.templateType in :templateTypes and a.question.template.job = :job") List findByMemberAndTemplateTypesAndJob(@Param("member") Member member, - @Param("templateTypes") List templateTypes, @Param("job") Job job); + @Param("templateTypes") List templateTypes, @Param("job") Job job); } diff --git a/src/main/java/UMC/career_mate/domain/answer/service/AnswerCommandService.java b/src/main/java/UMC/career_mate/domain/answer/service/AnswerCommandService.java index 1c4d37a..f4d9626 100644 --- a/src/main/java/UMC/career_mate/domain/answer/service/AnswerCommandService.java +++ b/src/main/java/UMC/career_mate/domain/answer/service/AnswerCommandService.java @@ -7,7 +7,6 @@ import UMC.career_mate.domain.answer.dto.request.AnswerCreateOrUpdateDTO.AnswerList; import UMC.career_mate.domain.answer.repository.AnswerRepository; import UMC.career_mate.domain.member.Member; -import UMC.career_mate.domain.member.repository.MemberRepository; import UMC.career_mate.domain.question.Question; import UMC.career_mate.domain.question.repository.QuestionRepository; import UMC.career_mate.global.response.exception.GeneralException; @@ -21,7 +20,6 @@ public class AnswerCommandService { private final AnswerRepository answerRepository; private final QuestionRepository questionRepository; - private final MemberRepository memberRepository; @Transactional public void saveAnswerList(Member member, AnswerCreateOrUpdateDTO answerCreateOrUpdateDTO) { @@ -40,8 +38,8 @@ public void saveAnswerList(Member member, AnswerCreateOrUpdateDTO answerCreateOr } @Transactional - public void updateAnswerList(Member member, AnswerCreateOrUpdateDTO request) { - for (AnswerList answerList : request.answerList()) { + public void updateAnswerList(Member member, AnswerCreateOrUpdateDTO answerCreateOrUpdateDTO) { + for (AnswerList answerList : answerCreateOrUpdateDTO.answerList()) { for (AnswerInfo answerInfo : answerList.answerInfoList()) { Question question = questionRepository.findById(answerInfo.questionId()) .orElseThrow(() -> new GeneralException(CommonErrorCode.NOT_FOUND_QUESTION)); diff --git a/src/main/java/UMC/career_mate/domain/answer/service/AnswerQueryService.java b/src/main/java/UMC/career_mate/domain/answer/service/AnswerQueryService.java index e7f02c7..9d8985c 100644 --- a/src/main/java/UMC/career_mate/domain/answer/service/AnswerQueryService.java +++ b/src/main/java/UMC/career_mate/domain/answer/service/AnswerQueryService.java @@ -7,10 +7,7 @@ import UMC.career_mate.domain.answer.dto.response.AnswerInfoListDTO; import UMC.career_mate.domain.answer.repository.AnswerRepository; import UMC.career_mate.domain.member.Member; -import UMC.career_mate.domain.member.repository.MemberRepository; import UMC.career_mate.domain.template.enums.TemplateType; -import UMC.career_mate.global.response.exception.GeneralException; -import UMC.career_mate.global.response.exception.code.CommonErrorCode; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -24,14 +21,10 @@ @RequiredArgsConstructor public class AnswerQueryService { private final AnswerRepository answerRepository; - private final MemberRepository memberRepository; @Transactional(readOnly = true) - public List getAnswersByTemplateType(Long memberId, TemplateType templateType) { - Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new GeneralException(CommonErrorCode.BAD_REQUEST)); - - List answerList = answerRepository.findByMemberAndTemplateType(member, templateType); + public List getAnswersByTemplateType(Member member, TemplateType templateType) { + List answerList = answerRepository.findByMemberAndTemplateType(member, member.getJob(), templateType); // sequence 기준으로 그룹화 Map> groupedAnswers = answerList.stream() @@ -49,7 +42,7 @@ public AnswerCompletionStatusInfoListDTO getAnswerCompletionStatus(Member member // TemplateType 값들을 순회하면서 각 템플릿의 완료 여부를 확인 for (TemplateType templateType : TemplateType.values()) { - boolean isCompleted = answerRepository.existsByMemberAndTemplateType(member, templateType); + boolean isCompleted = answerRepository.existsByMemberAndTemplateType(member, member.getJob(), templateType); answerCompletionStatusInfoDTOList.add(AnswerConverter.toAnswerCompletionStatusInfoDTO(templateType, isCompleted)); // 하나라도 미완료 상태가 있으면 전체 진행 상태는 false