From 48a7fcc6999832fa8021cbce89ca41bb86eed9d7 Mon Sep 17 00:00:00 2001 From: minyeong <106754293+miinyeong@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:03:29 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[#84]Feat:=20=ED=80=B4=EC=A6=88=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20Read=20API=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/quiz/QuizController.java | 10 +++++++ .../com/onestep/server/entity/QuizAnswer.java | 2 ++ .../entity/quiz/QuizAnswerCheckDTO.java | 17 ++++++++++++ .../server/repository/IQuizRepository.java | 2 ++ .../server/service/quiz/QuizService.java | 26 ++++++++++++++++--- 5 files changed, 53 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/onestep/server/entity/quiz/QuizAnswerCheckDTO.java 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..e582463 100644 --- a/src/main/java/com/onestep/server/controller/quiz/QuizController.java +++ b/src/main/java/com/onestep/server/controller/quiz/QuizController.java @@ -1,5 +1,7 @@ package com.onestep.server.controller.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.QuizRequestDTO; import com.onestep.server.service.quiz.QuizService; @@ -7,6 +9,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; +import java.util.List; + @RestController @RequiredArgsConstructor @Slf4j @@ -34,4 +38,10 @@ 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); + } } 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/repository/IQuizRepository.java b/src/main/java/com/onestep/server/repository/IQuizRepository.java index 1e7dc7a..b617375 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,5 @@ 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); + } 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..8c7dc35 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,24 @@ 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; + } } From 173993c3684e92977e88c39ee7a22e2cb0afd7e7 Mon Sep 17 00:00:00 2001 From: minyeong <106754293+miinyeong@users.noreply.github.com> Date: Tue, 14 Nov 2023 23:35:11 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[#86]Feat:=20=ED=80=B4=EC=A6=88=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=ED=99=95=EC=9D=B8=20API=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/quiz/QuizController.java | 6 ++++ .../server/entity/quiz/QuizListDTO.java | 27 ++++++++++++++ .../server/repository/IQuizRepository.java | 2 ++ .../server/service/quiz/QuizService.java | 35 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 src/main/java/com/onestep/server/entity/quiz/QuizListDTO.java 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 e582463..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,8 +1,10 @@ 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; @@ -44,4 +46,8 @@ public String answerQuiz(@RequestBody QuizAnswerRequestDTO quizAnswerRequestDTO) 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/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 b617375..29236ca 100644 --- a/src/main/java/com/onestep/server/repository/IQuizRepository.java +++ b/src/main/java/com/onestep/server/repository/IQuizRepository.java @@ -18,4 +18,6 @@ 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 8c7dc35..6d0f723 100644 --- a/src/main/java/com/onestep/server/service/quiz/QuizService.java +++ b/src/main/java/com/onestep/server/service/quiz/QuizService.java @@ -126,4 +126,39 @@ public List checkAnswer(Long quiz_id){ } 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; + } }