From d042128a6842417ec75a3799b1e44ee1105f58a2 Mon Sep 17 00:00:00 2001 From: HyominAn0401 Date: Sat, 28 Dec 2024 19:59:38 +0900 Subject: [PATCH] =?UTF-8?q?Fix:=20choice=20=EC=A0=80=EC=9E=A5=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/choice/service/ChoiceService.java | 68 +++++++++++++------ 1 file changed, 47 insertions(+), 21 deletions(-) diff --git a/src/main/java/site/examready2025/quiz/domain/choice/service/ChoiceService.java b/src/main/java/site/examready2025/quiz/domain/choice/service/ChoiceService.java index 2788987..32b1d1b 100644 --- a/src/main/java/site/examready2025/quiz/domain/choice/service/ChoiceService.java +++ b/src/main/java/site/examready2025/quiz/domain/choice/service/ChoiceService.java @@ -14,6 +14,8 @@ import site.examready2025.quiz.domain.quiz.entity.Quiz; import site.examready2025.quiz.domain.quiz.repository.QuizRepository; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @@ -33,36 +35,60 @@ public List getChoicesByQuiz(Long quizId){ } public void addChoices(Long quizId, List choiceRequestDtos){ + Quiz quiz = quizRepository.findById(quizId).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈를 찾을 수 없습니다. 퀴즈id : "+quizId)); - Quiz quiz = quizRepository.findById(quizId).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈를 찾을 수 없습니다. 퀴즈 id : "+quizId)); for(ChoiceRequestDto dto : choiceRequestDtos){ - //Quiz quiz = quizRepository.findById(dto.getQuizId()).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈를 찾을 수 없습니다. 퀴즈 id: "+dto.getQuizId())); + Question question = questionRepository.findById(dto.getQuestionId()).orElseThrow(()-> new IllegalArgumentException("해당 질문을 찾을 수 없습니다. questionId: "+dto.getQuestionId())); - Question question = questionRepository.findById(dto.getQuestionId()) - .orElseThrow(()-> new IllegalArgumentException("해당 질문을 찾을 수 없습니다. 질문 Id : "+dto.getQuestionId())); + List choices = new ArrayList<>(); - // 정답 - Choice correct = Choice.builder() - .question(question) - .quiz(quiz) - .answer(dto.getCorrectAnswer()) - .isCorrect(true) - .build(); - choiceRepository.save(correct); + choices.add(Choice.builder().question(question) + .quiz(quiz).answer(dto.getCorrectAnswer()).isCorrect(true).build()); - // 오답 - for(String wrongAnswers : dto.getWrongAnswers()){ - Choice wrong = Choice.builder() - .quiz(quiz) - .question(question) - .answer(wrongAnswers) - .isCorrect(false) - .build(); - choiceRepository.save(wrong); + for(String wrongAnswer : dto.getWrongAnswers()){ + choices.add(Choice.builder().quiz(quiz).question(question).answer(wrongAnswer).isCorrect(false).build()); + } + + Collections.shuffle(choices); + + for(Choice choice : choices){ + choiceRepository.save(choice); } } } + // 선택지 저장 및 DB 저장 +// public void addChoices(Long quizId, List choiceRequestDtos){ +// +// Quiz quiz = quizRepository.findById(quizId).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈를 찾을 수 없습니다. 퀴즈 id : "+quizId)); +// for(ChoiceRequestDto dto : choiceRequestDtos){ +// //Quiz quiz = quizRepository.findById(dto.getQuizId()).orElseThrow(()-> new IllegalArgumentException("해당 퀴즈를 찾을 수 없습니다. 퀴즈 id: "+dto.getQuizId())); +// +// Question question = questionRepository.findById(dto.getQuestionId()) +// .orElseThrow(()-> new IllegalArgumentException("해당 질문을 찾을 수 없습니다. 질문 Id : "+dto.getQuestionId())); +// +// // 정답 +// Choice correct = Choice.builder() +// .question(question) +// .quiz(quiz) +// .answer(dto.getCorrectAnswer()) +// .isCorrect(true) +// .build(); +// choiceRepository.save(correct); +// +// // 오답 +// for(String wrongAnswers : dto.getWrongAnswers()){ +// Choice wrong = Choice.builder() +// .quiz(quiz) +// .question(question) +// .answer(wrongAnswers) +// .isCorrect(false) +// .build(); +// choiceRepository.save(wrong); +// } +// } +// } + // 보기 데이터 반환 public List getChoicesWithQuestion(Long quizId){ List choices = choiceRepository.findByQuizId(quizId);