From 9e3d47a16aa7b4ed4edbcc1a09ac5949aa8f8ff6 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期五, 14 六月 2024 10:50:52 +0800
Subject: [PATCH] 定时保存临时试卷

---
 src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java |   19 ++++++++++++++++++-
 src/main/java/com/ycl/jxkg/service/ExamService.java                      |   10 +++++++++-
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java             |   25 +++++++++++++++++++++++--
 3 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamController.java b/src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java
similarity index 68%
rename from src/main/java/com/ycl/jxkg/controller/student/ExamController.java
rename to src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java
index 22dab9b..9cc7334 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/ExamController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java
@@ -17,13 +17,30 @@
 @RestController
 @RequiredArgsConstructor
 @RequestMapping(value = "/api/student/exampaper/answer")
-public class ExamController {
+public class StudentExamController {
 
     private final ExamService examService;
 
+    /**
+     * 涓诲姩鎻愪氦璇曞嵎
+     *
+     * @param submitData
+     * @return
+     */
     @PostMapping("/exam/submit")
     public Result examSubmit(@RequestBody @Validated ExamSubmitVO submitData) {
         return examService.examSubmit(submitData);
     }
 
+    /**
+     * 瀹氭椂涓存椂淇濆瓨璇曞嵎
+     *
+     * @param submitData
+     * @return
+     */
+    @PostMapping("/exam/timing")
+    public Result timingExamSubmit(@RequestBody @Validated ExamSubmitVO submitData) {
+        return examService.timingSubmit(submitData);
+    }
+
 }
diff --git a/src/main/java/com/ycl/jxkg/service/ExamService.java b/src/main/java/com/ycl/jxkg/service/ExamService.java
index f368c7f..a8e154b 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamService.java
+++ b/src/main/java/com/ycl/jxkg/service/ExamService.java
@@ -66,10 +66,18 @@
     Result all();
 
     /**
-     * 鑰冭瘯鎻愪氦
+     * 涓诲姩鎻愪氦璇曞嵎
      *
      * @param submitData
      * @return
      */
     Result examSubmit(ExamSubmitVO submitData);
+
+    /**
+     * 瀹氭椂淇濆瓨璇曞嵎锛岄槻姝㈣�冭瘯宕╂簝
+     *
+     * @param submitData
+     * @return
+     */
+    Result timingSubmit(ExamSubmitVO submitData);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
index 2d6b213..921cff5 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -174,24 +174,45 @@
         });
         // 闃呭嵎鍚庢墠寰�exam_paper_answer淇濆瓨鑰冭瘯鎴愮哗銆佷互鍙婁繚瀛樺埌exam_paper_customer_answer
         // 鐜板湪鍙渶瑕佷繚瀛樺埌涓�寮犱复鏃惰〃
+        // 璇ユ帴鍙f槸涓诲姩鎻愪氦锛屾墍浠ョ姸鎬侀兘璁剧疆涓哄畬鎴愶紝浠ヤ究鍚庣画鑰佸笀闃呭嵎
+        saveTempExam(submitData, ExamSubmitTempStatusEnum.FINISH);
+        return Result.ok();
+    }
+
+    @Override
+    public Result timingSubmit(ExamSubmitVO submitData) {
+        saveTempExam(submitData, ExamSubmitTempStatusEnum.TEMP);
+        return Result.ok();
+    }
+
+    /**
+     * 淇濆瓨涓存椂璇曞嵎
+     *
+     * @param submitData  鍓嶇浼犻�掔殑璇曞嵎鏁版嵁
+     * @param status  璇曞嵎鐨勭姸鎬�
+     */
+    public void saveTempExam(ExamSubmitVO submitData, ExamSubmitTempStatusEnum status) {
         ExamSubmitTemp one = new LambdaQueryChainWrapper<>(examSubmitTempMapper)
                 .eq(ExamSubmitTemp::getExamId, submitData.getExamId())
                 .eq(ExamSubmitTemp::getUserId, webContext.getCurrentUser().getId())
                 .one();
         if (Objects.nonNull(one)) {
+            if (ExamSubmitTempStatusEnum.FINISH.equals(one.getStatus())) {
+                return;
+            }
             one.setDoTime(submitData.getDoTime());
             one.setExamSubmit(JSON.toJSONString(submitData.getQuestionList()));
             one.setCreateTime(new Date());
+            one.setStatus(status);
             examSubmitTempMapper.updateById(one);
         } else {
             ExamSubmitTemp examSubmitTemp = new ExamSubmitTemp();
             examSubmitTemp.setExamId(submitData.getExamId());
             examSubmitTemp.setDoTime(submitData.getDoTime());
-            examSubmitTemp.setStatus(ExamSubmitTempStatusEnum.FINISH);
+            examSubmitTemp.setStatus(status);
             examSubmitTemp.setUserId(webContext.getCurrentUser().getId());
             examSubmitTemp.setExamSubmit(JSON.toJSONString(submitData.getQuestionList()));
             examSubmitTempMapper.insert(examSubmitTemp);
         }
-        return Result.ok();
     }
 }

--
Gitblit v1.8.0