From 834c2aecd9f4598fda891334601f5dad30803374 Mon Sep 17 00:00:00 2001 From: minyeong <106754293+miinyeong@users.noreply.github.com> Date: Tue, 14 Nov 2023 20:17:37 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[#79]Feat:=20=ED=80=B4=EC=A6=88=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EA=B0=80=EB=8A=A5=20=EC=97=AC=EB=B6=80API=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/controller/quiz/QuizController.java | 12 ++++++------ .../server/repository/IQuizRepository.java | 11 +++++++++++ .../server/service/quiz/QuizService.java | 18 ++++++++++++++++++ 3 files changed, 35 insertions(+), 6 deletions(-) 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 cfe9961..6b0bc08 100644 --- a/src/main/java/com/onestep/server/controller/quiz/QuizController.java +++ b/src/main/java/com/onestep/server/controller/quiz/QuizController.java @@ -4,9 +4,7 @@ import com.onestep.server.service.quiz.QuizService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController @RequiredArgsConstructor @@ -22,7 +20,9 @@ public String writeQuiz(@RequestBody QuizRequestDTO quizRequestDTO){ return quizRequestDTO.getUser_id()+"님이 작성한 퀴즈가 등록되었습니다."; } - //퀴즈 답변 - // @PostMapping(value = "/quiz/answer") - // public String answerQuiz(@RequestBody ) + //퀴즈 등록 가능상태 확인 + @GetMapping(value = "/quiz/canQuiz/{family_id}") + public Boolean canQuiz(@PathVariable String family_id){ + return quizService.canQuiz(family_id); + } } diff --git a/src/main/java/com/onestep/server/repository/IQuizRepository.java b/src/main/java/com/onestep/server/repository/IQuizRepository.java index 2e85941..1e7dc7a 100644 --- a/src/main/java/com/onestep/server/repository/IQuizRepository.java +++ b/src/main/java/com/onestep/server/repository/IQuizRepository.java @@ -1,8 +1,19 @@ package com.onestep.server.repository; +import com.onestep.server.entity.Family; +import com.onestep.server.entity.Letter; import com.onestep.server.entity.Quiz; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import java.util.Date; +import java.util.List; +import java.util.Optional; 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 b3ea581..df8e3d5 100644 --- a/src/main/java/com/onestep/server/service/quiz/QuizService.java +++ b/src/main/java/com/onestep/server/service/quiz/QuizService.java @@ -27,6 +27,7 @@ public class QuizService { private final IQuizRepository iQuizRepository; private final IQuizAnswerRepository iQuizAnswerRepository; private final IUserRepository iUserRepository; + public Quiz writeQuiz(QuizRequestDTO quizRequestDTO){ Optional optionalUser = iUserRepository.findById(quizRequestDTO.getUser_id()); User user = optionalUser.get(); @@ -65,4 +66,21 @@ public Quiz writeQuiz(QuizRequestDTO quizRequestDTO){ return addQuiz; } + + public Boolean canQuiz(String family_id){ + Boolean canQuiz = true; + Date writeDate = new Date(); + LocalTime now = LocalTime.now(); + + if(now.getHour()<6){ + Date dDate = new Date(); + writeDate = new Date(dDate.getTime()+(1000*60*60*24*-1)); + } + Optional optionalQuiz = iQuizRepository.findQuizByWriteDate(family_id,writeDate); + if(optionalQuiz.isPresent()){ + canQuiz = false; + } + + return canQuiz; + } } From 9d6ec031a38db38cbed9d7aa9b4fc0615a996af4 Mon Sep 17 00:00:00 2001 From: minyeong <106754293+miinyeong@users.noreply.github.com> Date: Tue, 14 Nov 2023 22:18:12 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[#80]Feat:=20=ED=80=B4=EC=A6=88=20=EB=8B=B5?= =?UTF-8?q?=EB=B3=80=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 | 11 +++++++- .../repository/IQuizAnswerRepository.java | 7 ++++++ .../server/service/quiz/QuizService.java | 25 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) 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 6b0bc08..8083743 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,6 @@ package com.onestep.server.controller.quiz; +import com.onestep.server.entity.quiz.QuizAnswerRequestDTO; import com.onestep.server.entity.quiz.QuizRequestDTO; import com.onestep.server.service.quiz.QuizService; import lombok.RequiredArgsConstructor; @@ -16,7 +17,7 @@ public class QuizController { //퀴즈 생성 @PostMapping(value = "/quiz/create") public String writeQuiz(@RequestBody QuizRequestDTO quizRequestDTO){ - quizService.writeQuiz(quizRequestDTO); + quizService.writeQuiz(quizRequestDTO); return quizRequestDTO.getUser_id()+"님이 작성한 퀴즈가 등록되었습니다."; } @@ -25,4 +26,12 @@ public String writeQuiz(@RequestBody QuizRequestDTO quizRequestDTO){ public Boolean canQuiz(@PathVariable String family_id){ return quizService.canQuiz(family_id); } + + //퀴즈 답변 + //0 오답, 1 정답 + @PostMapping(value = "/quiz/answer") + public String answerQuiz(@RequestBody QuizAnswerRequestDTO quizAnswerRequestDTO){ + quizService.answerQuiz(quizAnswerRequestDTO); + return quizAnswerRequestDTO.getUser_id()+"님이 작성한 퀴즈 답변이 등록되었습니다."; + } } diff --git a/src/main/java/com/onestep/server/repository/IQuizAnswerRepository.java b/src/main/java/com/onestep/server/repository/IQuizAnswerRepository.java index e50853f..26dac84 100644 --- a/src/main/java/com/onestep/server/repository/IQuizAnswerRepository.java +++ b/src/main/java/com/onestep/server/repository/IQuizAnswerRepository.java @@ -2,6 +2,13 @@ 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; + +import java.util.Date; +import java.util.Optional; public interface IQuizAnswerRepository extends JpaRepository { + @Query("SELECT q FROM QuizAnswer q WHERE q.quiz.quiz_id =:quiz_id and q.user.user_id =:user_id") + Optional findQuizByUser(@Param("quiz_id") Long quiz_id, @Param("user_id") String user_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 df8e3d5..8148d19 100644 --- a/src/main/java/com/onestep/server/service/quiz/QuizService.java +++ b/src/main/java/com/onestep/server/service/quiz/QuizService.java @@ -2,8 +2,10 @@ import com.onestep.server.entity.Family; 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.repository.IQuizAnswerRepository; @@ -67,6 +69,7 @@ public Quiz writeQuiz(QuizRequestDTO quizRequestDTO){ return addQuiz; } + //퀴즈 생성 가능 여부 public Boolean canQuiz(String family_id){ Boolean canQuiz = true; Date writeDate = new Date(); @@ -77,10 +80,32 @@ public Boolean canQuiz(String family_id){ writeDate = new Date(dDate.getTime()+(1000*60*60*24*-1)); } Optional optionalQuiz = iQuizRepository.findQuizByWriteDate(family_id,writeDate); + // 같은 날에 퀴즈를 생성 했을 시 if(optionalQuiz.isPresent()){ canQuiz = false; } return canQuiz; } + + //퀴즈 답변 + public QuizAnswer answerQuiz(QuizAnswerRequestDTO quizAnswerRequestDTO){ + Optional optionalQuizAnswer = iQuizAnswerRepository.findQuizByUser(quizAnswerRequestDTO.getQuiz_id(),quizAnswerRequestDTO.getUser_id()); + Optional quiz = iQuizRepository.findById(quizAnswerRequestDTO.getQuiz_id()); + Integer answer = quiz.get().getQuiz_ans(); + + QuizAnswer quizAnswer = new QuizAnswer(); + quizAnswer.setQuizAnswer_id(optionalQuizAnswer.get().getQuizAnswer_id()); + quizAnswer.setQuiz(optionalQuizAnswer.get().getQuiz()); + quizAnswer.setUser(optionalQuizAnswer.get().getUser()); + quizAnswer.setQuiz_ans(quizAnswerRequestDTO.getQuiz_ans()); + + if(quizAnswerRequestDTO.getQuiz_ans().equals(answer)){ + quizAnswer.setQuiz_state(1); + }else{ + quizAnswer.setQuiz_state(0); + } + + return iQuizAnswerRepository.save(quizAnswer); + } }