From b55933dc08b27a1e051115f8c58ce46291637f8c Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期四, 13 六月 2024 17:53:50 +0800
Subject: [PATCH] 手动、临时提交考试

---
 src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java                |    4 
 src/main/resources/mapper/ExamSubmitTempMapper.xml                           |   52 ++++++
 src/main/java/com/ycl/jxkg/controller/student/ExamController.java            |   29 +++
 src/main/resources/mapper/QuestionMapper.xml                                 |   20 +
 src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java                 |   46 +++++
 src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java                       |   14 -
 src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java                  |   25 +++
 src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitVO.java                       |   23 ++
 src/main/java/com/ycl/jxkg/domain/vo/QuestionItemVO.java                     |   13 +
 src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java                 |   73 +++++++++
 src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java                   |   48 ++++++
 pom.xml                                                                      |    8 +
 src/main/java/com/ycl/jxkg/enums/general/ExamSubmitTempStatusEnum.java       |   29 +++
 src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java                        |    8 +
 src/main/java/com/ycl/jxkg/service/ExamService.java                          |   10 +
 src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java                       |   34 ++++
 src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java |    3 
 src/main/resources/mapper/ClassesUserMapper.xml                              |    1 
 18 files changed, 424 insertions(+), 16 deletions(-)

diff --git a/pom.xml b/pom.xml
index f4960a2..7b227ea 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,14 @@
 
     <dependencies>
 
+        <!-- fastjson -->
+        <dependency>
+            <groupId>com.alibaba.fastjson2</groupId>
+            <artifactId>fastjson2</artifactId>
+            <version>2.0.41</version>
+        </dependency>
+
+
         <!-- swagger -->
         <dependency>
             <groupId>io.springfox</groupId>
diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamController.java b/src/main/java/com/ycl/jxkg/controller/student/ExamController.java
new file mode 100644
index 0000000..22dab9b
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/controller/student/ExamController.java
@@ -0,0 +1,29 @@
+package com.ycl.jxkg.controller.student;
+
+import com.ycl.jxkg.base.Result;
+import com.ycl.jxkg.domain.vo.ExamSubmitVO;
+import com.ycl.jxkg.service.ExamService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/6/13 15:45
+ */
+@RestController
+@RequiredArgsConstructor
+@RequestMapping(value = "/api/student/exampaper/answer")
+public class ExamController {
+
+    private final ExamService examService;
+
+    @PostMapping("/exam/submit")
+    public Result examSubmit(@RequestBody @Validated ExamSubmitVO submitData) {
+        return examService.examSubmit(submitData);
+    }
+
+}
diff --git a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
index 3cf880e..f9e0cae 100644
--- a/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
+++ b/src/main/java/com/ycl/jxkg/controller/student/ExamPaperAnswerController.java
@@ -7,6 +7,7 @@
 import com.ycl.jxkg.domain.entity.Subject;
 import com.ycl.jxkg.domain.entity.User;
 import com.ycl.jxkg.domain.entity.UserEventLog;
+import com.ycl.jxkg.domain.vo.ExamSubmitVO;
 import com.ycl.jxkg.enums.ExamPaperAnswerStatusEnum;
 import com.ycl.jxkg.event.CalculateExamPaperAnswerCompleteEvent;
 import com.ycl.jxkg.event.UserEvent;
@@ -25,6 +26,7 @@
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.BeanUtils;
 import org.springframework.context.ApplicationEventPublisher;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
@@ -80,7 +82,6 @@
         eventPublisher.publishEvent(new UserEvent(userEventLog));
         return Result.ok(scoreVm);
     }
-
 
     @RequestMapping(value = "/edit", method = RequestMethod.POST)
     public Result edit(@RequestBody @Valid ExamPaperSubmitVO examPaperSubmitVO) {
diff --git a/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java b/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java
new file mode 100644
index 0000000..8d2a018
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/entity/ExamSubmitTemp.java
@@ -0,0 +1,46 @@
+package com.ycl.jxkg.domain.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+
+import com.ycl.jxkg.domain.base.AbsEntity;
+import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum;
+import lombok.Data;
+
+/**
+ * 鎻愪氦璇曞嵎涓存椂淇濆瓨
+ *
+ * @author xp
+ * @since 2024-06-13
+ */
+@Data
+@TableName("t_exam_submit_temp")
+public class ExamSubmitTemp extends AbsEntity {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableField("exam_id")
+    /**  */
+    private Integer examId;
+
+    @TableField("user_id")
+    /**  */
+    private Integer userId;
+
+    @TableField("do_time")
+    /** 鍋氶鑰楁椂   绉� */
+    private Integer doTime;
+
+    @TableField("exam_submit")
+    /** 鎻愪氦鐨勮瘯鍗峰唴瀹� */
+    private String examSubmit;
+
+    @TableField("status")
+    /** 鐘舵�侊細涓存椂銆佷繚瀛� */
+    private ExamSubmitTempStatusEnum status;
+
+    @TableField("create_time")
+    private Date createTime;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java b/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java
index 8e7a398..776b5ed 100644
--- a/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java
+++ b/src/main/java/com/ycl/jxkg/domain/query/ClassesUserQuery.java
@@ -18,5 +18,9 @@
 @Data
 @ApiModel(value = "ClassesUser鏌ヨ", description = "鐝骇涓庣敤鎴峰叧鑱旇〃鏌ヨ")
 public class ClassesUserQuery extends AbsQuery {
+
+    /** 瀛﹀憳濮撳悕 */
+    private String studentName;
+
 }
 
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java b/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java
new file mode 100644
index 0000000..30604d8
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/DoQuestionVO.java
@@ -0,0 +1,34 @@
+package com.ycl.jxkg.domain.vo;
+
+import com.ycl.jxkg.domain.base.AbsVo;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/6/13 15:27
+ */
+@Data
+public class DoQuestionVO extends AbsVo {
+
+    /** 棰樼洰绫诲瀷 */
+    private Integer questionType;
+
+    /** 棰樺共 */
+    private String titleContent;
+
+    /** 瀛﹀憳绛旀 */
+    private String answer;
+    /** 瀛﹀憳澶氶�夐绛旀 */
+    private List<String> answerList;
+
+    /** 閫夐」json锛屽悗绔娇鐢� */
+    private String content;
+
+    /** 姝g‘涓庡惁锛屽悗绔垽鏂悗濉厖璇ュ�� */
+    private Boolean right;
+
+    /** 棰樼洰閫夐」 */
+    private List<QuestionItemVO> questionItemList;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java
new file mode 100644
index 0000000..d68348c
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java
@@ -0,0 +1,48 @@
+package com.ycl.jxkg.domain.vo;
+
+import com.ycl.jxkg.domain.base.AbsVo;
+import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
+import java.util.List;
+import org.springframework.lang.NonNull;
+import org.springframework.beans.BeanUtils;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import java.util.Date;
+
+/**
+ * 鎻愪氦璇曞嵎涓存椂淇濆瓨灞曠ず
+ *
+ * @author xp
+ * @since 2024-06-13
+ */
+@Data
+public class ExamSubmitTempVO extends AbsVo {
+
+    /**  */
+    private Integer examId;
+
+    /**  */
+    private Integer userId;
+
+    /** 鍋氶鑰楁椂   绉� */
+    private Integer doTime;
+
+    /** 鎻愪氦鐨勮瘯鍗峰唴瀹� */
+    private String examSubmit;
+
+    /**  */
+    private Date createTime;
+
+    /** 鐘舵�侊細涓存椂銆佷繚瀛� */
+    private String status;
+
+    public static ExamSubmitTempVO getVoByEntity(@NonNull ExamSubmitTemp entity, ExamSubmitTempVO vo) {
+        if(vo == null) {
+            vo = new ExamSubmitTempVO();
+        }
+        BeanUtils.copyProperties(entity, vo);
+        return vo;
+    }
+
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitVO.java b/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitVO.java
new file mode 100644
index 0000000..007f69b
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitVO.java
@@ -0,0 +1,23 @@
+package com.ycl.jxkg.domain.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 鎻愪氦璇曞嵎鏁版嵁
+ *
+ * @author锛歺p
+ * @date锛�2024/6/13 15:19
+ */
+@Data
+public class ExamSubmitVO {
+
+    private Integer examId;
+
+    /** 鍋氶娑堣�楁椂闂� */
+    private Integer doTime;
+
+    /** 棰樼洰 */
+    private List<DoQuestionVO> questionList;
+}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/QuestionItemVO.java b/src/main/java/com/ycl/jxkg/domain/vo/QuestionItemVO.java
new file mode 100644
index 0000000..9445ceb
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/QuestionItemVO.java
@@ -0,0 +1,13 @@
+package com.ycl.jxkg.domain.vo;
+
+import lombok.Data;
+
+/**
+ * @author锛歺p
+ * @date锛�2024/6/13 15:34
+ */
+@Data
+public class QuestionItemVO {
+
+
+}
diff --git a/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java b/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
index 6398b77..d7b9232 100644
--- a/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
+++ b/src/main/java/com/ycl/jxkg/enums/QuestionTypeEnum.java
@@ -11,10 +11,11 @@
     GapFilling(4, "濉┖棰�"),
     ShortAnswer(5, "绠�绛旈"),
     Calculation(6,"璁$畻棰�");
-    int code;
+
+    Integer code;
     String name;
 
-    QuestionTypeEnum(int code, String name) {
+    QuestionTypeEnum(Integer code, String name) {
         this.code = code;
         this.name = name;
     }
@@ -43,21 +44,14 @@
         }
     }
 
-    public int getCode() {
+    public Integer getCode() {
         return code;
-    }
-
-    public void setCode(int code) {
-        this.code = code;
     }
 
     public String getName() {
         return name;
     }
 
-    public void setName(String name) {
-        this.name = name;
-    }
 
 
 }
diff --git a/src/main/java/com/ycl/jxkg/enums/general/ExamSubmitTempStatusEnum.java b/src/main/java/com/ycl/jxkg/enums/general/ExamSubmitTempStatusEnum.java
new file mode 100644
index 0000000..ee109fe
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/enums/general/ExamSubmitTempStatusEnum.java
@@ -0,0 +1,29 @@
+package com.ycl.jxkg.enums.general;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import lombok.Getter;
+
+/**
+ * 涓存椂淇濆瓨鑰冭瘯璇曞嵎
+ *
+ * @author锛歺p
+ * @date锛�2024/6/13 17:37
+ */
+@Getter
+public enum ExamSubmitTempStatusEnum {
+
+    TEMP("temp", "涓存椂"),
+    FINISH("finish", "瀹屾垚"),
+    ;
+
+    @EnumValue
+    private final String value;
+
+    private final String desc;
+
+
+    ExamSubmitTempStatusEnum(String value, String desc) {
+        this.value = value;
+        this.desc = desc;
+    }
+}
diff --git a/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java b/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java
new file mode 100644
index 0000000..039ac76
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/mapper/ExamSubmitTempMapper.java
@@ -0,0 +1,25 @@
+package com.ycl.jxkg.mapper;
+
+import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ycl.jxkg.domain.vo.ExamSubmitTempVO;
+import java.util.List;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * 鎻愪氦璇曞嵎涓存椂淇濆瓨 Mapper 鎺ュ彛
+ *
+ * @author xp
+ * @since 2024-06-13
+ */
+@Mapper
+public interface ExamSubmitTempMapper extends BaseMapper<ExamSubmitTemp> {
+
+    /**
+     * id鏌ユ壘鎻愪氦璇曞嵎涓存椂淇濆瓨
+     * @param id
+     * @return
+     */
+    ExamSubmitTempVO getById(Integer id);
+
+}
diff --git a/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java b/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
index 3c93933..a63c165 100644
--- a/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
+++ b/src/main/java/com/ycl/jxkg/mapper/QuestionMapper.java
@@ -20,4 +20,12 @@
     Integer selectAllCount();
 
     List<KeyValue> selectCountByDate(@Param("startTime") Date startTime,@Param("endTime") Date endTime);
+
+    /**
+     * 鑾峰彇棰樼洰锛氶鍨嬨�佺瓟妗�
+     *
+     * @param questionIds
+     * @return
+     */
+    List<Question> getAnswerInfo(@Param("questionIds") List<Integer> questionIds);
 }
diff --git a/src/main/java/com/ycl/jxkg/service/ExamService.java b/src/main/java/com/ycl/jxkg/service/ExamService.java
index bf476cd..f368c7f 100644
--- a/src/main/java/com/ycl/jxkg/service/ExamService.java
+++ b/src/main/java/com/ycl/jxkg/service/ExamService.java
@@ -5,6 +5,8 @@
 import com.ycl.jxkg.base.Result;
 import com.ycl.jxkg.domain.form.ExamForm;
 import com.ycl.jxkg.domain.query.ExamQuery;
+import com.ycl.jxkg.domain.vo.ExamSubmitVO;
+
 import java.util.List;
 
 /**
@@ -62,4 +64,12 @@
      * @return
      */
     Result all();
+
+    /**
+     * 鑰冭瘯鎻愪氦
+     *
+     * @param submitData
+     * @return
+     */
+    Result examSubmit(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 afbca10..2d6b213 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/ExamServiceImpl.java
@@ -1,10 +1,20 @@
 package com.ycl.jxkg.service.impl;
 
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
 import com.ycl.jxkg.context.WebContext;
 import com.ycl.jxkg.domain.entity.Exam;
+import com.ycl.jxkg.domain.entity.ExamSubmitTemp;
+import com.ycl.jxkg.domain.entity.Question;
+import com.ycl.jxkg.domain.vo.DoQuestionVO;
+import com.ycl.jxkg.domain.vo.ExamSubmitVO;
+import com.ycl.jxkg.enums.QuestionTypeEnum;
 import com.ycl.jxkg.enums.general.ExamStatusEnum;
+import com.ycl.jxkg.enums.general.ExamSubmitTempStatusEnum;
 import com.ycl.jxkg.mapper.ExamMapper;
+import com.ycl.jxkg.mapper.ExamSubmitTempMapper;
+import com.ycl.jxkg.mapper.QuestionMapper;
 import com.ycl.jxkg.service.ExamService;
 import com.ycl.jxkg.base.Result;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -17,7 +27,10 @@
 import org.springframework.beans.BeanUtils;
 import org.springframework.util.Assert;
 
+import java.util.Date;
 import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 /**
@@ -32,9 +45,12 @@
 
     private final ExamMapper examMapper;
     private final WebContext webContext;
+    private final QuestionMapper questionMapper;
+    private final ExamSubmitTempMapper examSubmitTempMapper;
 
     /**
      * 娣诲姞
+     *
      * @param form
      * @return
      */
@@ -49,6 +65,7 @@
 
     /**
      * 淇敼
+     *
      * @param form
      * @return
      */
@@ -65,6 +82,7 @@
 
     /**
      * 鎵归噺鍒犻櫎
+     *
      * @param ids
      * @return
      */
@@ -76,6 +94,7 @@
 
     /**
      * id鍒犻櫎
+     *
      * @param id
      * @return
      */
@@ -87,6 +106,7 @@
 
     /**
      * 鍒嗛〉鏌ヨ
+     *
      * @param query
      * @return
      */
@@ -99,6 +119,7 @@
 
     /**
      * 鏍规嵁id鏌ユ壘
+     *
      * @param id
      * @return
      */
@@ -111,6 +132,7 @@
 
     /**
      * 鍒楄〃
+     *
      * @return
      */
     @Override
@@ -121,4 +143,55 @@
                 .collect(Collectors.toList());
         return Result.ok().data(vos);
     }
+
+    @Override
+    public Result examSubmit(ExamSubmitVO submitData) {
+        // 鏍¢獙
+        Exam exam = examMapper.selectById(submitData.getExamId());
+        if (Objects.isNull(exam)) {
+            throw new RuntimeException("璇ヨ�冭瘯涓嶅瓨鍦�");
+        }
+        // 鍒ゆ柇鍗曢�夈�佸閫夈�佸垽鏂瀵归敊
+        List<Integer> questionIds = submitData.getQuestionList().stream().map(DoQuestionVO::getId).collect(Collectors.toList());
+        List<Question> questionList = questionMapper.getAnswerInfo(questionIds);
+        Map<Integer, Question> answerMap = questionList.stream().collect(Collectors.toMap(Question::getId, entity -> entity));
+        submitData.getQuestionList().stream().forEach(item -> {
+            Question question = answerMap.get(item.getId());
+            if (Objects.nonNull(question)
+                    && (QuestionTypeEnum.SingleChoice.getCode().equals(question.getQuestionType())
+                    || QuestionTypeEnum.MultipleChoice.getCode().equals(question.getQuestionType())
+                    || QuestionTypeEnum.TrueFalse.getCode().equals(question.getQuestionType())
+            )) {
+                String correct = question.getCorrect();
+                if (QuestionTypeEnum.MultipleChoice.getCode().equals(question.getQuestionType())) {
+                    // 濡傛灉鏄�夋嫨棰橈紝閭d箞灏嗙瓟妗堣浆涓簂ist
+                    List<String> answerList = JSON.parseArray(correct, String.class);
+                    item.setRight(answerList.containsAll(item.getAnswerList()));
+                } else {
+                    item.setRight(question.getCorrect().equals(item.getAnswer()));
+                }
+            }
+        });
+        // 闃呭嵎鍚庢墠寰�exam_paper_answer淇濆瓨鑰冭瘯鎴愮哗銆佷互鍙婁繚瀛樺埌exam_paper_customer_answer
+        // 鐜板湪鍙渶瑕佷繚瀛樺埌涓�寮犱复鏃惰〃
+        ExamSubmitTemp one = new LambdaQueryChainWrapper<>(examSubmitTempMapper)
+                .eq(ExamSubmitTemp::getExamId, submitData.getExamId())
+                .eq(ExamSubmitTemp::getUserId, webContext.getCurrentUser().getId())
+                .one();
+        if (Objects.nonNull(one)) {
+            one.setDoTime(submitData.getDoTime());
+            one.setExamSubmit(JSON.toJSONString(submitData.getQuestionList()));
+            one.setCreateTime(new Date());
+            examSubmitTempMapper.updateById(one);
+        } else {
+            ExamSubmitTemp examSubmitTemp = new ExamSubmitTemp();
+            examSubmitTemp.setExamId(submitData.getExamId());
+            examSubmitTemp.setDoTime(submitData.getDoTime());
+            examSubmitTemp.setStatus(ExamSubmitTempStatusEnum.FINISH);
+            examSubmitTemp.setUserId(webContext.getCurrentUser().getId());
+            examSubmitTemp.setExamSubmit(JSON.toJSONString(submitData.getQuestionList()));
+            examSubmitTempMapper.insert(examSubmitTemp);
+        }
+        return Result.ok();
+    }
 }
diff --git a/src/main/resources/mapper/ClassesUserMapper.xml b/src/main/resources/mapper/ClassesUserMapper.xml
index ab42074..9fc5347 100644
--- a/src/main/resources/mapper/ClassesUserMapper.xml
+++ b/src/main/resources/mapper/ClassesUserMapper.xml
@@ -35,6 +35,7 @@
         FROM t_classes_user TCU
                  LEFT JOIN t_user TU ON TU.id = TCU.user_id
         WHERE TCU.deleted = 0
+            <if test="query.studentName != null and query.studentName != ''">AND TU.real_name like concat('%', #{query.studentName}, '%')</if>
     </select>
 
 </mapper>
diff --git a/src/main/resources/mapper/ExamSubmitTempMapper.xml b/src/main/resources/mapper/ExamSubmitTempMapper.xml
new file mode 100644
index 0000000..43017bc
--- /dev/null
+++ b/src/main/resources/mapper/ExamSubmitTempMapper.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ycl.jxkg.mapper.ExamSubmitTempMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ycl.jxkg.domain.vo.ExamSubmitTempVO">
+        <result column="exam_id" property="examId" />
+        <result column="user_id" property="userId" />
+        <result column="do_time" property="doTime" />
+        <result column="exam_submit" property="examSubmit" />
+        <result column="create_time" property="createTime" />
+        <result column="status" property="status" />
+    </resultMap>
+
+
+
+
+
+
+
+    <select id="getById" resultMap="BaseResultMap">
+        SELECT
+            TEST.exam_id,
+            TEST.user_id,
+            TEST.do_time,
+            TEST.exam_submit,
+            TEST.create_time,
+            TEST.status,
+            TEST.id
+        FROM
+            t_exam_submit_temp TEST
+        WHERE
+            TEST.id = #{id} AND TEST.deleted = 0
+    </select>
+
+
+    <select id="getPage" resultMap="BaseResultMap">
+        SELECT
+            TEST.exam_id,
+            TEST.user_id,
+            TEST.do_time,
+            TEST.exam_submit,
+            TEST.create_time,
+            TEST.status,
+            TEST.id
+        FROM
+            t_exam_submit_temp TEST
+        WHERE
+            TEST.deleted = 0
+    </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/QuestionMapper.xml b/src/main/resources/mapper/QuestionMapper.xml
index c0266f0..691aa92 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -15,13 +15,16 @@
         <result column="deleted" jdbcType="BIT" property="deleted"/>
     </resultMap>
     <sql id="Base_Column_List">
-        id, question_type, subject_id, difficult, correct, content, create_user, status, create_time, deleted
+        id
+        , question_type, subject_id, difficult, correct, content, create_user, status, create_time, deleted
     </sql>
 
-    <select id="page" resultType="com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO" parameterType="com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO">
+    <select id="page" resultType="com.ycl.jxkg.domain.vo.admin.question.QuestionResponseVO"
+            parameterType="com.ycl.jxkg.domain.vo.admin.question.QuestionPageRequestVO">
         SELECT
         tq.*,
-        CASE WHEN tq.question_type = 1 THEN '鍗曢�夐' WHEN tq.question_type = 2 THEN '澶氶�夐' WHEN tq.question_type = 3 THEN '鍒ゆ柇棰�' WHEN tq.question_type = 4 THEN '濉┖棰�' WHEN tq.question_type = 5 THEN '绠�绛旈' END AS questionTypeName,
+        CASE WHEN tq.question_type = 1 THEN '鍗曢�夐' WHEN tq.question_type = 2 THEN '澶氶�夐' WHEN tq.question_type = 3 THEN
+        '鍒ゆ柇棰�' WHEN tq.question_type = 4 THEN '濉┖棰�' WHEN tq.question_type = 5 THEN '绠�绛旈' END AS questionTypeName,
         ts.name AS subjectName,
         tu.real_name AS createUserName
         FROM t_question tq
@@ -36,10 +39,12 @@
                 and tq.status = #{status}
             </if>
             <if test="subjectId != null and subjectId.size() > 0">
-                and tq.subject_id in <foreach collection="subjectId" item="item" separator="," open="(" close=")"> #{item} </foreach>
+                and tq.subject_id in
+                <foreach collection="subjectId" item="item" separator="," open="(" close=")">#{item}</foreach>
             </if>
             <if test="questionType != null and questionType.size() > 0">
-                and tq.question_type in <foreach collection="questionType" item="item" separator="," open="(" close=")"> #{item} </foreach>
+                and tq.question_type in
+                <foreach collection="questionType" item="item" separator="," open="(" close=")">#{item}</foreach>
             </if>
             <if test="content != null and content != ''">
                 and instr(tq.content, #{content})
@@ -75,4 +80,9 @@
         GROUP BY create_time
     </select>
 
+    <select id="getAnswerInfo" resultType="com.ycl.jxkg.domain.entity.Question">
+        SELECT id, question_type, correct FROM t_question WHERE id in
+        <foreach collection="questionIds" open="(" item="id" close=")" separator=",">#{id}</foreach>
+    </select>
+
 </mapper>

--
Gitblit v1.8.0