From cbe231196e44fbe72c64330d72c00ae7f6308f30 Mon Sep 17 00:00:00 2001 From: l-wanderer01 Date: Tue, 20 May 2025 17:53:28 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix]=20=EA=B3=BC=EC=A0=9C=20=EA=B2=B0?= =?UTF-8?q?=EA=B3=BC=20=EC=83=9D=EC=84=B1=20=EB=A1=9C=EC=A7=81=20=EC=97=90?= =?UTF-8?q?=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pirocheck/Assignment/service/AssignmentService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java index f1ef8ef..398e662 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java @@ -14,6 +14,7 @@ import backend.pirocheck.User.entity.User; import backend.pirocheck.User.repository.UserRepository; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,6 +23,7 @@ import java.util.Map; import java.util.stream.Collectors; +@Slf4j // 로그를 찍기위해 사용 @Service @Transactional @RequiredArgsConstructor @@ -118,7 +120,9 @@ public String updateAssignment(Long assignmentId, AssignmentUpdateReq req) { } // 과제 채점 결과 저장 - public AssignmentStatus createAssignmentItem(Long assignmentId, Long userId, AssignmentItemCreateReq req) { + public AssignmentStatus createAssignmentItem(Long userId, Long assignmentId, AssignmentItemCreateReq req) { + log.info("userId 요청 값: {}", userId); + User user = userRepository.findById(userId) .orElseThrow(() -> new IllegalArgumentException("조회된 사용자가 없습니다.")); From a53a7221f36b1b55dc89a076db411732a83f19c7 Mon Sep 17 00:00:00 2001 From: l-wanderer01 Date: Tue, 20 May 2025 18:28:39 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[feat]=20=EA=B4=80=EB=A6=AC=EC=9E=90=20?= =?UTF-8?q?=EA=B3=BC=EC=A0=9C=20=EC=B1=84=EC=A0=90=20=EA=B2=B0=EA=B3=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AssignmentController.java | 8 +++++--- .../dto/request/AssignmentItemUpdateReq.java | 16 ++++++++++++++++ .../Assignment/entity/AssignmentItem.java | 6 ++++++ .../repository/AssignmentItemRepository.java | 5 +++++ .../Assignment/service/AssignmentService.java | 19 +++++++++++++++++++ 5 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 backend/pirocheck/src/main/java/backend/pirocheck/Assignment/dto/request/AssignmentItemUpdateReq.java diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/controller/AssignmentController.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/controller/AssignmentController.java index 2759f31..042c94d 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/controller/AssignmentController.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/controller/AssignmentController.java @@ -2,6 +2,7 @@ import backend.pirocheck.Assignment.dto.request.AssignmentCreateReq; import backend.pirocheck.Assignment.dto.request.AssignmentItemCreateReq; +import backend.pirocheck.Assignment.dto.request.AssignmentItemUpdateReq; import backend.pirocheck.Assignment.dto.request.AssignmentUpdateReq; import backend.pirocheck.Assignment.dto.response.AssignmentWeekRes; import backend.pirocheck.Assignment.entity.AssignmentStatus; @@ -119,13 +120,14 @@ public AssignmentStatus submissionAssignment( } ) @PutMapping("/admin/users/{userId}/assignments/{assignmentId}/submission") - public String updateSubmission( + public AssignmentStatus updateSubmission( @Parameter(description = "사용자 ID", example = "1") @PathVariable Long userId, @Parameter(description = "과제 ID", example = "1") - @PathVariable Long assignmentId + @PathVariable Long assignmentId, + @RequestBody AssignmentItemUpdateReq req ) { - return null; + return assignmentService.updateAssignmentItem(userId, assignmentId, req); } } diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/dto/request/AssignmentItemUpdateReq.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/dto/request/AssignmentItemUpdateReq.java new file mode 100644 index 0000000..b917d54 --- /dev/null +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/dto/request/AssignmentItemUpdateReq.java @@ -0,0 +1,16 @@ +package backend.pirocheck.Assignment.dto.request; + +import backend.pirocheck.Assignment.entity.AssignmentStatus; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Pattern; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Getter +@NoArgsConstructor +public class AssignmentItemUpdateReq { + + @Pattern(regexp = "SUCCESS/INSUFFICIENT/FAILURE", message = "status는 SUCCESS, INSUFFICIENT 혹은 FAILURE 여야 합니다.") + @Schema(description = "과제 결과", example = "SUCCESS") + private AssignmentStatus status; +} diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/entity/AssignmentItem.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/entity/AssignmentItem.java index 74719c7..6a9dddf 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/entity/AssignmentItem.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/entity/AssignmentItem.java @@ -35,4 +35,10 @@ public static AssignmentItem create(User user, Assignment assignment, Assignment .submitted(submitted) .build(); } + + public void update(AssignmentStatus submitted) { + + this.submitted = submitted; + + } } diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/repository/AssignmentItemRepository.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/repository/AssignmentItemRepository.java index 1a39eec..f07c351 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/repository/AssignmentItemRepository.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/repository/AssignmentItemRepository.java @@ -1,5 +1,6 @@ package backend.pirocheck.Assignment.repository; +import backend.pirocheck.Assignment.entity.Assignment; import backend.pirocheck.Assignment.entity.AssignmentItem; import backend.pirocheck.Assignment.entity.AssignmentStatus; import backend.pirocheck.User.entity.User; @@ -7,6 +8,7 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface AssignmentItemRepository extends JpaRepository { @@ -17,4 +19,7 @@ public interface AssignmentItemRepository extends JpaRepository findByUserAndAssignment(User user, Assignment assignment); + // Optional 처리로 오류 발생 check + } diff --git a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java index 398e662..e589e2c 100644 --- a/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java +++ b/backend/pirocheck/src/main/java/backend/pirocheck/Assignment/service/AssignmentService.java @@ -2,6 +2,7 @@ import backend.pirocheck.Assignment.dto.request.AssignmentCreateReq; import backend.pirocheck.Assignment.dto.request.AssignmentItemCreateReq; +import backend.pirocheck.Assignment.dto.request.AssignmentItemUpdateReq; import backend.pirocheck.Assignment.dto.request.AssignmentUpdateReq; import backend.pirocheck.Assignment.dto.response.AssignmentDayRes; import backend.pirocheck.Assignment.dto.response.AssignmentDetailRes; @@ -139,4 +140,22 @@ public AssignmentStatus createAssignmentItem(Long userId, Long assignmentId, Ass return assignmentItem.getSubmitted(); } + + // 과제 채점 결과 수정 + public AssignmentStatus updateAssignmentItem(Long userId, Long assignmentId, AssignmentItemUpdateReq req) { + User user = userRepository.findById(userId) + .orElseThrow(() -> new IllegalArgumentException("조회된 사용자가 없습니다.")); + + Assignment assignment = assignmentRepository.findById(assignmentId) + .orElseThrow(() -> new IllegalArgumentException("조회된 과제가 없습니다.")); + + AssignmentItem assignmentItem = assignmentItemRepository.findByUserAndAssignment(user, assignment) + .orElseThrow(() -> new IllegalArgumentException("해당 유저의 과제 채점 결과가 없습니다.")); + + assignmentItem.update(req.getStatus()); // 상태 업데이트 + + assignmentItemRepository.save(assignmentItem); // 상태 저장 + + return assignmentItem.getSubmitted(); + } }