#16 补交作业

Fusionado
BaiQi fusionados 3 commits de FanYanPeng/feat/XuanKe en FanYanPeng/refactor hace 1 año

+ 9 - 3
src/main/java/com/njuzr/eaibackend/controller/AssignmentController.java

@@ -191,11 +191,17 @@ public class AssignmentController {
     @PutMapping("/engage/submit")
     @PutMapping("/engage/submit")
     public MyResponse engagementSubmit(
     public MyResponse engagementSubmit(
             @RequestParam Long studentId,
             @RequestParam Long studentId,
-            @RequestParam Long assignmentId
+            @RequestParam Long assignmentId,
+            @RequestParam Boolean supplementarySubmission
 
 
     ) {
     ) {
-        assignmentService.engagementSubmit(studentId, assignmentId);
-        return MyResponse.success("作业提交成功");
+        if (supplementarySubmission) {
+            assignmentService.engagementLateSubmit(studentId, assignmentId);
+            return MyResponse.success("作业补交成功");
+        } else {
+            assignmentService.engagementSubmit(studentId, assignmentId);
+            return MyResponse.success("作业提交成功");
+        }
     }
     }
 
 
     /**
     /**

+ 3 - 1
src/main/java/com/njuzr/eaibackend/enums/AssignmentCompletionStatus.java

@@ -18,7 +18,9 @@ public enum AssignmentCompletionStatus {
     NOT_DONE(3, "NOT_DONE"), // 未完成,到了DDL,仍然没有提交的
     NOT_DONE(3, "NOT_DONE"), // 未完成,到了DDL,仍然没有提交的
     PUBLISHED(4, "PUBLISHED"), // 老师已批改并发布
     PUBLISHED(4, "PUBLISHED"), // 老师已批改并发布
     NOT_CORRECTED(5, "NOT_CORRECTED"), //未批改(状态仅老师可见)
     NOT_CORRECTED(5, "NOT_CORRECTED"), //未批改(状态仅老师可见)
-    CORRECTED(6, "CORRECTED") //已批改、但还未发布(状态仅老师可见)
+    CORRECTED(6, "CORRECTED"), //已批改、但还未发布(状态仅老师可见)
+    LATE_SUBMITTED(7, "LATE_SUBMITTED"), //已补交,超过DDL后提交的作业
+    LATE_SUBMITTED_CORRECTED(8, "LATE_SUBMITTED_CORRECTED") //补交后已批改
     ;
     ;
 
 
 
 

+ 7 - 0
src/main/java/com/njuzr/eaibackend/service/AssignmentService.java

@@ -42,6 +42,13 @@ public interface AssignmentService {
 
 
     void engagementSubmit(Long studentId, Long assignmentId);
     void engagementSubmit(Long studentId, Long assignmentId);
 
 
+    /**
+     * 补交作业
+     * @param studentId 学生ID
+     * @param assignmentId 作业ID
+     */
+    void engagementLateSubmit(Long studentId, Long assignmentId);
+
 //    void engagementStage(Long studentId, Long assignmentId);
 //    void engagementStage(Long studentId, Long assignmentId);
 
 
     void engagementStage(Long studentId, Long assignmentId, JSONObject jsonObject);
     void engagementStage(Long studentId, Long assignmentId, JSONObject jsonObject);

+ 30 - 2
src/main/java/com/njuzr/eaibackend/service/impl/AssignmentServiceImpl.java

@@ -332,6 +332,30 @@ public class AssignmentServiceImpl implements AssignmentService {
         }
         }
     }
     }
 
 
+    /**
+     * 补交作业,更新文件版本和作业状态为已补交
+     *
+     * @param studentId
+     * @param assignmentId
+     */
+    @Override
+    public void engagementLateSubmit(Long studentId, Long assignmentId) {
+        Engagement engagement = studentAssignmentMapper.findEngagementByStudentIdAndAssignmentId(studentId, assignmentId);
+        if (engagement == null)
+            throw MyException.create(HttpStatus.BAD_REQUEST, "参与作业情况不存在");
+        int originalVersion = engagement.getVersion();
+        engagement.setVersion(originalVersion + 1);
+        engagement.setStatus(AssignmentCompletionStatus.LATE_SUBMITTED);
+        try {
+            int code = studentAssignmentMapper.updateById(engagement);
+            if (code == 0)
+                throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
+        } catch (Exception e) {
+            log.error(e.getMessage());
+            throw MyException.create(HttpStatus.INTERNAL_SERVER_ERROR, "更新文件版本失败");
+        }
+    }
+
 
 
     /**
     /**
      * 作业暂存,更新文件版本,不修改作业状态
      * 作业暂存,更新文件版本,不修改作业状态
@@ -384,9 +408,13 @@ public class AssignmentServiceImpl implements AssignmentService {
         if (!Objects.equals(assignment.getTeacherId(), teacherId))
         if (!Objects.equals(assignment.getTeacherId(), teacherId))
             throw MyException.create(HttpStatus.BAD_REQUEST, "无权限批改");
             throw MyException.create(HttpStatus.BAD_REQUEST, "无权限批改");
 
 
-        if(engagement.getStatus() != AssignmentCompletionStatus.CORRECTED){
+        if(engagement.getStatus() != AssignmentCompletionStatus.CORRECTED && engagement.getStatus() != AssignmentCompletionStatus.LATE_SUBMITTED_CORRECTED){
             assignment.setCorrectNumber(assignment.getCorrectNumber() + 1);
             assignment.setCorrectNumber(assignment.getCorrectNumber() + 1);
-            engagement.setStatus(AssignmentCompletionStatus.CORRECTED);
+            if(engagement.getStatus() == AssignmentCompletionStatus.SUBMITTED){
+                engagement.setStatus(AssignmentCompletionStatus.CORRECTED);
+            } else if(engagement.getStatus() == AssignmentCompletionStatus.LATE_SUBMITTED){
+                engagement.setStatus(AssignmentCompletionStatus.LATE_SUBMITTED_CORRECTED);
+            }
         }
         }
         engagement.setScore(correctDTO.getScore());
         engagement.setScore(correctDTO.getScore());
         engagement.setRemark(correctDTO.getRemark());
         engagement.setRemark(correctDTO.getRemark());