미니프로젝트로 우리 조는 퀴즈문제를 내고 맞추는 형식의 사이트를 만들기로 했다.
BE 4 + FE 2으로 구성된 조였는데 BE을 2인 1조로 하여 진행하였다.
나와 팀원은 CRUD 구성하고 퀴즈 문제를 해결하는 로직을 짰다.
기본 퀴즈 문제 구성은 1. 객관식 2. 단답형 3. OX 문제로 구성되어서 문제 제출자가 답안을 1~4개까지 추가할 수 있도록 구성하였다.
그래서 정답과 오답3개로 나누었고 오답을 적지 않으면 null 값으로 나오게했다.
@Transactional(readOnly = true)
public SolvingQuizResponseDto findById(Long id) {
Quiz quiz = quizRepository.findById(id).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈가 없습니다."));
List<String> answerList = new ArrayList<>();
answerList.add(quiz.getCorrect());
answerList.add(quiz.getIncorrect1());
answerList.add(quiz.getIncorrect2());
answerList.add(quiz.getIncorrect3());
Collections.shuffle(answerList);
return new SolvingQuizResponseDto(quiz.getId(),quiz.getContent(), quiz.getTitle(), answerList, quiz.getUserId());
}
그랬더니 null 값이 그대로 나와버림 ㅠㅠㅠㅠㅠ
그래서 if문으로 null값을 걸러주는 작업을 했따.
@Transactional(readOnly = true)
public SolvingQuizResponseDto findById(Long id) {
Quiz quiz = quizRepository.findById(id).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈가 없습니다."));
List<String> answerList = new ArrayList<>();
answerList.add(quiz.getCorrect());
if (quiz.getIncorrect1()!=null) {answerList.add(quiz.getIncorrect1());}
if (quiz.getIncorrect2()!=null) {answerList.add(quiz.getIncorrect2());}
if (quiz.getIncorrect3()!=null) {answerList.add(quiz.getIncorrect3());}
Collections.shuffle(answerList);
return new SolvingQuizResponseDto(quiz.getId(),quiz.getContent(), quiz.getTitle(), answerList, quiz.getUserId());
}
꺄아~ 해결했따!
여기서 중요한 점은 shuffle로 정답1과 오답3을 섞어준다는 것이고 (그래야 객관식일때 섞여서 제출되어지니까!!)
null값을 나타나게 하지않기 위해 if문으로 걸러서 save 시킨다는 것!
'코딩 공부' 카테고리의 다른 글
미니프로젝트_트러블슈팅(답안 중복 나옴) (0) | 2023.05.07 |
---|---|
미니프로젝트_BasicResponseDto 활용하기 (0) | 2023.05.07 |
Security 회원가입 오류 (0) | 2023.05.04 |
게시물 좋아요 삭제 오류 (1) | 2023.05.04 |
WebSecurityConfig 에서 authorizeRequests 오류 (0) | 2023.05.01 |