From 59e50c038cd2fd7686dfc04efc81f602fa1f87a8 Mon Sep 17 00:00:00 2001 From: sunohkim Date: Thu, 20 Feb 2025 17:07:08 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Fix:=20=EC=A7=88=EB=AC=B8=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C=20=EC=8B=9C=20=ED=95=B4=EA=B2=B0=EB=90=9C=20=EC=A7=88?= =?UTF-8?q?=EB=AC=B8=EA=B9=8C=EC=A7=80=20=EC=A1=B0=ED=9A=8C=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20#205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 질문 해결 여부를 추가로 검사 --- .../softeer/reacton/domain/question/QuestionRepository.java | 4 +++- .../reacton/domain/question/StudentQuestionService.java | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java index d89afbd..146fd8b 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java @@ -10,7 +10,9 @@ import java.util.List; public interface QuestionRepository extends JpaRepository { - List findByStudentIdAndCourse(String studentId, Course course); + @Query("SELECT q FROM Question q " + + "WHERE q.studentId = :studentId AND q.course = :course AND q.isComplete = false") + List findNotCompleteByStudentIdAndCourse(String studentId, Course course); @Modifying @Transactional diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java index ef4d302..7094048 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/StudentQuestionService.java @@ -33,7 +33,7 @@ public QuestionAllResponse getQuestionsByStudentId(String studentId, Long course log.debug("이전에 질문했던 목록을 조회합니다. : studentId = {}, courseId = {}", studentId, courseId); Course course = getCourse(courseId); - List questions = findQuestions(studentId, course); + List questions = findQuestionsNotComplete(studentId, course); return QuestionAllResponse.of(questions); } @@ -95,8 +95,8 @@ private Course getCourse(Long courseId) { .orElseThrow(() -> new BaseException(CourseErrorCode.COURSE_NOT_FOUND)); } - private List findQuestions(String studentId, Course course) { - List questions = questionRepository.findByStudentIdAndCourse(studentId, course); + private List findQuestionsNotComplete(String studentId, Course course) { + List questions = questionRepository.findNotCompleteByStudentIdAndCourse(studentId, course); return questions.stream() .map(question -> new CourseQuestionResponse( From 6ac42419dd1ff287f60c6cd5123b61869a14fa48 Mon Sep 17 00:00:00 2001 From: sunohkim Date: Thu, 20 Feb 2025 17:15:12 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Fix:=20=EC=A7=88=EB=AC=B8=20=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=84=B0=EA=B0=80=20=EC=82=AD=EC=A0=9C=EB=90=98?= =?UTF-8?q?=EB=8A=94=20=EA=B2=BD=EC=9A=B0=20=EC=B6=94=EA=B0=80=20#205?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 수업이 종료될 경우 해결된 질문 일괄 삭제 - 수업이 시작될 경우 이전 수업의 질문 전체 삭제 --- .../reacton/domain/course/ProfessorCourseService.java | 2 ++ .../softeer/reacton/domain/question/QuestionRepository.java | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java index 40ff3ed..05c5557 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/course/ProfessorCourseService.java @@ -159,6 +159,7 @@ public void startCourse(String oauthId, long courseId) { Course course = getCourseByProfessor(oauthId, courseId); course.activate(); + questionRepository.deleteAllByCourse(course); log.info("수업이 시작 상태로 변경되었습니다. courseId = {}", courseId); } @@ -169,6 +170,7 @@ public void closeCourse(String oauthId, long courseId) { Course course = getCourseByProfessor(oauthId, courseId); course.deactivate(); + questionRepository.deleteCompleteByCourse(course); log.debug("SSE 서버에 수업 종료 메시지 전송을 요청합니다."); SseMessage sseMessage = new SseMessage<>("COURSE_CLOSED", null); diff --git a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java index 146fd8b..50ece14 100644 --- a/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java +++ b/back-end/reacton/src/main/java/com/softeer/reacton/domain/question/QuestionRepository.java @@ -20,5 +20,11 @@ public interface QuestionRepository extends JpaRepository { "WHERE q.studentId = :studentId AND q.course = :course AND q.id = :questionId") int updateQuestion(@Param("studentId") String studentId, @Param("course") Course course, @Param("questionId") Long questionId); + @Modifying + @Transactional + @Query("DELETE FROM Question q " + + "WHERE q.course = :course AND q.isComplete = true") + void deleteCompleteByCourse(@Param("course") Course course); + void deleteAllByCourse(Course course); }