diff --git a/src/main/java/com/onestep/server/controller/quiz/QuizController.java b/src/main/java/com/onestep/server/controller/quiz/QuizController.java index 8083743..1919297 100644 --- a/src/main/java/com/onestep/server/controller/quiz/QuizController.java +++ b/src/main/java/com/onestep/server/controller/quiz/QuizController.java @@ -1,12 +1,18 @@ package com.onestep.server.controller.quiz; +import com.onestep.server.entity.Quiz; +import com.onestep.server.entity.QuizAnswer; +import com.onestep.server.entity.quiz.QuizAnswerCheckDTO; import com.onestep.server.entity.quiz.QuizAnswerRequestDTO; +import com.onestep.server.entity.quiz.QuizListDTO; import com.onestep.server.entity.quiz.QuizRequestDTO; import com.onestep.server.service.quiz.QuizService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @Slf4j @@ -34,4 +40,14 @@ public String answerQuiz(@RequestBody QuizAnswerRequestDTO quizAnswerRequestDTO) quizService.answerQuiz(quizAnswerRequestDTO); return quizAnswerRequestDTO.getUser_id()+"님이 작성한 퀴즈 답변이 등록되었습니다."; } + + //퀴즈 결과 확인 + @GetMapping(value = "/quiz/checkAnswer/{quiz_id}") + public List checkAnswer(@PathVariable Long quiz_id){ + return quizService.checkAnswer(quiz_id); + } + + //퀴즈 목록 확인 + @GetMapping(value = "/quiz/quizList/{family_id}") + public List quizList(@PathVariable String family_id){return quizService.quizList(family_id);} } diff --git a/src/main/java/com/onestep/server/entity/QuizAnswer.java b/src/main/java/com/onestep/server/entity/QuizAnswer.java index a9f3239..39a3fb8 100644 --- a/src/main/java/com/onestep/server/entity/QuizAnswer.java +++ b/src/main/java/com/onestep/server/entity/QuizAnswer.java @@ -1,5 +1,6 @@ package com.onestep.server.entity; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.*; import org.hibernate.annotations.ColumnDefault; import org.hibernate.annotations.DynamicInsert; @@ -22,6 +23,7 @@ public class QuizAnswer { private Long quizAnswer_id; @ManyToOne + @JsonIgnore @JoinColumn(name="quiz_id") private Quiz quiz; diff --git a/src/main/java/com/onestep/server/entity/quiz/QuizAnswerCheckDTO.java b/src/main/java/com/onestep/server/entity/quiz/QuizAnswerCheckDTO.java new file mode 100644 index 0000000..63292d3 --- /dev/null +++ b/src/main/java/com/onestep/server/entity/quiz/QuizAnswerCheckDTO.java @@ -0,0 +1,17 @@ +package com.onestep.server.entity.quiz; + + +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Setter +@Getter +@NoArgsConstructor +public class QuizAnswerCheckDTO { + + private Long quizAnswer_id; + private String user_id; + private Integer quiz_ans; + private Integer quiz_state; +} diff --git a/src/main/java/com/onestep/server/entity/quiz/QuizListDTO.java b/src/main/java/com/onestep/server/entity/quiz/QuizListDTO.java new file mode 100644 index 0000000..e620c64 --- /dev/null +++ b/src/main/java/com/onestep/server/entity/quiz/QuizListDTO.java @@ -0,0 +1,27 @@ +package com.onestep.server.entity.quiz; + +import com.onestep.server.entity.QuizAnswer; +import com.onestep.server.entity.User; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.Date; +import java.util.List; + + +@Setter +@Getter +@NoArgsConstructor +public class QuizListDTO { + private Long quiz_id; + private String writer_id; + private String quiz_txt; + private String answer1; + private String answer2; + private String answer3; + private String answer4; + private Integer quiz_ans; + private Date write_date; + private List quizAnswers; +} diff --git a/src/main/java/com/onestep/server/repository/IQuizRepository.java b/src/main/java/com/onestep/server/repository/IQuizRepository.java index 1e7dc7a..29236ca 100644 --- a/src/main/java/com/onestep/server/repository/IQuizRepository.java +++ b/src/main/java/com/onestep/server/repository/IQuizRepository.java @@ -3,6 +3,7 @@ import com.onestep.server.entity.Family; import com.onestep.server.entity.Letter; import com.onestep.server.entity.Quiz; +import com.onestep.server.entity.QuizAnswer; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; @@ -16,4 +17,7 @@ public interface IQuizRepository extends JpaRepository { // 날짜로 퀴즈 등록 여부 찾기 @Query("SELECT q FROM Quiz q WHERE q.user.family.fam_id =:family_id and q.write_date =:date") Optional findQuizByWriteDate(@Param("family_id") String family_id,@Param("date") Date date); + + @Query("select q from Quiz q where q.user.family.fam_id =:family_id") + List findQuizByFamily(@Param("family_id") String family_id); } diff --git a/src/main/java/com/onestep/server/service/quiz/QuizService.java b/src/main/java/com/onestep/server/service/quiz/QuizService.java index 8148d19..6d0f723 100644 --- a/src/main/java/com/onestep/server/service/quiz/QuizService.java +++ b/src/main/java/com/onestep/server/service/quiz/QuizService.java @@ -4,10 +4,7 @@ import com.onestep.server.entity.Quiz; import com.onestep.server.entity.QuizAnswer; import com.onestep.server.entity.User; -import com.onestep.server.entity.quiz.QuizAnswerDTO; -import com.onestep.server.entity.quiz.QuizAnswerRequestDTO; -import com.onestep.server.entity.quiz.QuizDTO; -import com.onestep.server.entity.quiz.QuizRequestDTO; +import com.onestep.server.entity.quiz.*; import com.onestep.server.repository.IQuizAnswerRepository; import com.onestep.server.repository.IQuizRepository; import com.onestep.server.repository.IUserRepository; @@ -17,6 +14,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalTime; +import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Optional; @@ -108,4 +106,59 @@ public QuizAnswer answerQuiz(QuizAnswerRequestDTO quizAnswerRequestDTO){ return iQuizAnswerRepository.save(quizAnswer); } + + //퀴즈 확인 + public List checkAnswer(Long quiz_id){ + Optional optionalQuiz = iQuizRepository.findById(quiz_id); + List quizAnswers = optionalQuiz.get().getQuizAnswers(); + List quizAnswerCheck = new ArrayList<>(); + for(QuizAnswer q : quizAnswers){ + QuizAnswerCheckDTO quizAnswerCheckDTO = new QuizAnswerCheckDTO(); + + User answer = q.getUser(); + quizAnswerCheckDTO.setQuizAnswer_id(q.getQuizAnswer_id()); + quizAnswerCheckDTO.setUser_id(answer.getUser_id()); + quizAnswerCheckDTO.setQuiz_ans(q.getQuiz_ans()); + quizAnswerCheckDTO.setQuiz_state(q.getQuiz_state()); + + quizAnswerCheck.add(quizAnswerCheckDTO); + + } + return quizAnswerCheck; + } + + // 퀴즈 목록 확인 + public List quizList(String family_id){ + List quizList = iQuizRepository.findQuizByFamily(family_id); + List quizLists = new ArrayList<>(); + + for(Quiz q : quizList){ + QuizListDTO quizListDTO = new QuizListDTO(); + quizListDTO.setQuiz_id(q.getQuiz_id()); + quizListDTO.setWriter_id(q.getUser().getUser_id()); + quizListDTO.setQuiz_txt(q.getQuiz_txt()); + quizListDTO.setAnswer1(q.getAnswer1()); + quizListDTO.setAnswer2(q.getAnswer2()); + quizListDTO.setAnswer3(q.getAnswer3()); + quizListDTO.setAnswer4(q.getAnswer4()); + quizListDTO.setQuiz_ans(q.getQuiz_ans()); + quizListDTO.setWrite_date(q.getWrite_date()); + + List quizAnswers = q.getQuizAnswers(); + List quizAnswerCheck = new ArrayList<>(); + for (QuizAnswer qa : quizAnswers) { + QuizAnswerCheckDTO quizAnswerCheckDTO = new QuizAnswerCheckDTO(); + User answer = qa.getUser(); + quizAnswerCheckDTO.setQuizAnswer_id(qa.getQuizAnswer_id()); + quizAnswerCheckDTO.setUser_id(answer.getUser_id()); + quizAnswerCheckDTO.setQuiz_ans(qa.getQuiz_ans()); + quizAnswerCheckDTO.setQuiz_state(qa.getQuiz_state()); + + quizAnswerCheck.add(quizAnswerCheckDTO); + } + quizListDTO.setQuizAnswers(quizAnswerCheck); + quizLists.add(quizListDTO); + } + return quizLists; + } }