diff --git a/src/main/java/com/example/koschool/domain/quiz/QuizController.java b/src/main/java/com/example/koschool/domain/quiz/QuizController.java index 5082030..f323d2d 100644 --- a/src/main/java/com/example/koschool/domain/quiz/QuizController.java +++ b/src/main/java/com/example/koschool/domain/quiz/QuizController.java @@ -1,6 +1,6 @@ package com.example.koschool.domain.quiz; -import com.example.koschool.domain.quiz.dto.response.LevelQuizResponseDto; +import com.example.koschool.domain.quiz.dto.response.QuizResponseDto; import com.example.koschool.domain.quiz.service.QuizService; import com.example.koschool.global.ApiResponse; import java.util.List; @@ -24,7 +24,17 @@ public class QuizController { * @return */ @GetMapping("/level") - public ApiResponse> levelQuiz(@RequestParam("level") String level) { + public ApiResponse> levelQuiz(@RequestParam("level") String level) { return ApiResponse.of(HttpStatus.OK, quizService.levelQuiz(level)); } + + /** + * newsletter id에 해당하는 모든 문제 추출 + * @param newsletter + * @return + */ + @GetMapping("/newsletter") + public ApiResponse> newsletterQuiz(@RequestParam("newsletter") String newsletter) { + return ApiResponse.of(HttpStatus.OK, quizService.newsletterQuiz(newsletter)); + } } diff --git a/src/main/java/com/example/koschool/domain/quiz/dto/response/LevelQuizResponseDto.java b/src/main/java/com/example/koschool/domain/quiz/dto/response/QuizResponseDto.java similarity index 76% rename from src/main/java/com/example/koschool/domain/quiz/dto/response/LevelQuizResponseDto.java rename to src/main/java/com/example/koschool/domain/quiz/dto/response/QuizResponseDto.java index d1e487e..f52a3d5 100644 --- a/src/main/java/com/example/koschool/domain/quiz/dto/response/LevelQuizResponseDto.java +++ b/src/main/java/com/example/koschool/domain/quiz/dto/response/QuizResponseDto.java @@ -5,7 +5,7 @@ import lombok.Getter; @Getter -public class LevelQuizResponseDto { +public class QuizResponseDto { private Long id; private String question; @@ -16,7 +16,7 @@ public class LevelQuizResponseDto { private String wrongAnswer3; @Builder - private LevelQuizResponseDto(Long id, String question, String answer, String explanation, String wrongAnswer1, String wrongAnswer2, String wrongAnswer3) { + private QuizResponseDto(Long id, String question, String answer, String explanation, String wrongAnswer1, String wrongAnswer2, String wrongAnswer3) { this.id = id; this.question = question; this.answer = answer; @@ -26,8 +26,8 @@ private LevelQuizResponseDto(Long id, String question, String answer, String exp this.wrongAnswer3 = wrongAnswer3; } - public static LevelQuizResponseDto of(Quiz quiz) { - return LevelQuizResponseDto.builder() + public static QuizResponseDto of(Quiz quiz) { + return QuizResponseDto.builder() .id(quiz.getId()) .question(quiz.getQuestion()) .answer(quiz.getAnswer()) diff --git a/src/main/java/com/example/koschool/domain/quiz/repository/QuizRepository.java b/src/main/java/com/example/koschool/domain/quiz/repository/QuizRepository.java index 2052e5c..dafd56c 100644 --- a/src/main/java/com/example/koschool/domain/quiz/repository/QuizRepository.java +++ b/src/main/java/com/example/koschool/domain/quiz/repository/QuizRepository.java @@ -12,5 +12,7 @@ public interface QuizRepository extends JpaRepository { @Query("SELECT q FROM Quiz q WHERE q.newsletterId IS NULL AND q.level = :level ORDER BY FUNCTION('RAND')") List findRandomQuizzesByLevel(@Param("level") String level, Pageable pageable); + @Query("SELECT q FROM Quiz q WHERE q.newsletterId IN :newsletterIds") + List findQuizzesByNewsletterIds(@Param("newsletterIds") List newsletterIds); } diff --git a/src/main/java/com/example/koschool/domain/quiz/service/QuizService.java b/src/main/java/com/example/koschool/domain/quiz/service/QuizService.java index fc0b66a..d0b7b4f 100644 --- a/src/main/java/com/example/koschool/domain/quiz/service/QuizService.java +++ b/src/main/java/com/example/koschool/domain/quiz/service/QuizService.java @@ -1,8 +1,9 @@ package com.example.koschool.domain.quiz.service; -import com.example.koschool.domain.quiz.dto.response.LevelQuizResponseDto; +import com.example.koschool.domain.quiz.dto.response.QuizResponseDto; import com.example.koschool.domain.quiz.entity.Quiz; import com.example.koschool.domain.quiz.repository.QuizRepository; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; @@ -18,11 +19,23 @@ public class QuizService { private final QuizRepository quizRepository; - public List levelQuiz(String level) { + public List levelQuiz(String level) { Pageable pageable = PageRequest.of(0, 10); List quizList = quizRepository.findRandomQuizzesByLevel(level, pageable); return quizList.stream() - .map(LevelQuizResponseDto::of) + .map(QuizResponseDto::of) + .collect(Collectors.toList()); + } + + public List newsletterQuiz(String newsletter) { + List newsletterIdList = Arrays.stream(newsletter.split(",")) + .map(Long::parseLong) + .collect(Collectors.toList()); + + List quizList = quizRepository.findQuizzesByNewsletterIds(newsletterIdList); + + return quizList.stream() + .map(QuizResponseDto::of) .collect(Collectors.toList()); } }