공hannah부
E-day 프로젝트 - 퀴즈 정답 확인 API(3) 본문
해야할 것!
- 어제 했던 MemberTitle뿐만 아니라 MemberQuiz도 정답을 맞출시 isCorrect를 true로 바꿔주어야 한다
MemberQuiz Entity 만들어 주기
1. MemberQuiz 엔티티
@Setter
@Entity
public class MemberQuiz {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "member_quiz_id")
private Integer id;
@Column(nullable = false)
private Boolean isCorrect;
@ManyToOne
@JoinColumn(name = "member_id", nullable = false)
private Member member;
@ManyToOne
@JoinColumn(name = "quiz_id", nullable = false)
private Quiz quiz;
@Builder
public MemberQuiz(boolean isCorrect, Member member, Quiz quiz){
this.isCorrect = isCorrect;
this.member = member;
this.quiz = quiz;
}
}
MemberQuiz의 isCorrect 값 true로 변경하기
1. MemberQuizRepository
- 특정 회원과 퀴즈에 해당하는 MemberQuiz 엔티티 조회
@Repository
public interface MemberQuizRepository extends JpaRepository <MemberQuiz, Long> {
Optional<MemberQuiz> findByMemberAndQuiz(Member member, Quiz quiz);
}
2. QuizService
- 퀴즈 정답 확인 메소드
- 회원과 퀴즈로 MemberQuiz 엔티티 조회 후 MemberQuiz의 isCorrect 값 true로 변경
public boolean checkAnswer(int d_day, int optionNumber, Long memberId) {
Quiz quiz = findQuiz(d_day);
boolean isCorrect = quiz.isAnswerOption(optionNumber);
if (isCorrect) {
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new IllegalArgumentException("해당 멤버를 찾을 수 없습니다."));
Integer subjectId = quiz.getSubject().getId();
Title title = titleRepository.findBySubjectId(subjectId)
.orElseThrow(() -> new IllegalArgumentException("해당 subject_id에 대한 타이틀을 찾을 수 없습니다."));
MemberTitle memberTitle = memberTitleRepository.findByMemberAndTitle(member, title)
.orElseThrow(() -> new IllegalArgumentException("해당 멤버 타이틀을 찾을 수 없습니다."));
// 회원과 퀴즈로 MemberQuiz 엔티티 조회
MemberQuiz memberQuiz = memberQuizRepository.findByMemberAndQuiz(member, quiz)
.orElseThrow(() -> new IllegalArgumentException("해당 멤버 퀴즈를 찾을 수 없습니다."));
if (!memberTitle.getGetTitle()) {
member.setLevel(member.getLevel() + 1);
}
memberTitle.setGetTitle(true);
//MemberQuiz의 isCorrect 값 true로 변경
memberQuiz.setIsCorrect(true);
}
return isCorrect;
}
'프로젝트 > EFUB Eday' 카테고리의 다른 글
E-day 프로젝트 - 퀴즈 예외처리 (1) | 2023.07.24 |
---|---|
E-day 프로젝트 - 퀴즈 정답 확인 API(4) (0) | 2023.07.24 |
E-day 프로젝트 - 퀴즈 정답 확인 API(2) (0) | 2023.07.22 |
E-day 프로젝트 - 퀴즈 정답 확인 API(1) (0) | 2023.07.20 |
E-day 프로젝트 - 퀴즈 내용 보기 API (0) | 2023.07.20 |