Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -128,9 +128,9 @@ public ApiResponse<CommonResultCode> saveAnswerList(@LoginMember Member member,
4. 보유 기술 (TECHNICAL_SKILLS)\s
5. 최종 정리 (SUMMARY)
""")
public ApiResponse<List<AnswerInfoListDTO>> getAnswerList(@RequestParam Long memberId,
public ApiResponse<List<AnswerInfoListDTO>> 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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,33 +15,38 @@
public interface AnswerRepository extends JpaRepository<Answer, Long> {

@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<Answer> findByMemberAndTemplateType(@Param("member") Member member,
@Param("templateType") TemplateType templateType);
@Param("job") Job job,
@Param("templateType") TemplateType templateType);

Optional<Answer> findByMemberAndQuestionAndSequence(Member member, Question question,
Long sequence);
Optional<Answer> 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<Answer> findByMemberAndTemplateTypesAndOrderAndJob(@Param("member") Member member,
@Param("templateTypes") List<TemplateType> templateTypes, @Param("order") int order,
@Param("sequence") int sequence, @Param("job") Job job);
@Param("templateTypes") List<TemplateType> 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<Answer> 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<Answer> findByMemberAndTemplateTypesAndJob(@Param("member") Member member,
@Param("templateTypes") List<TemplateType> templateTypes, @Param("job") Job job);
@Param("templateTypes") List<TemplateType> templateTypes, @Param("job") Job job);
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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) {
Expand All @@ -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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -24,14 +21,10 @@
@RequiredArgsConstructor
public class AnswerQueryService {
private final AnswerRepository answerRepository;
private final MemberRepository memberRepository;

@Transactional(readOnly = true)
public List<AnswerInfoListDTO> getAnswersByTemplateType(Long memberId, TemplateType templateType) {
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new GeneralException(CommonErrorCode.BAD_REQUEST));

List<Answer> answerList = answerRepository.findByMemberAndTemplateType(member, templateType);
public List<AnswerInfoListDTO> getAnswersByTemplateType(Member member, TemplateType templateType) {
List<Answer> answerList = answerRepository.findByMemberAndTemplateType(member, member.getJob(), templateType);

// sequence 기준으로 그룹화
Map<Long, List<Answer>> groupedAnswers = answerList.stream()
Expand All @@ -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
Expand Down