From 6fd2460cc439e64789925e41d7106627d354fcd4 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期五, 14 六月 2024 13:45:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
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/StudentExamController.java | 46 +++++
src/main/resources/mapper/QuestionMapper.xml | 25 ++
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 | 94 ++++++++++
src/main/java/com/ycl/jxkg/domain/vo/ExamSubmitTempVO.java | 48 +++++
src/main/java/com/ycl/jxkg/domain/entity/Question.java | 18 ++
src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java | 7
pom.xml | 8
src/main/resources/mapper/ExamPaperAnswerMapper.xml | 1
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/domain/vo/admin/question/QuestionEditRequestVO.java | 4
src/main/java/com/ycl/jxkg/service/ExamService.java | 18 ++
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
22 files changed, 504 insertions(+), 17 deletions(-)
diff --git a/pom.xml b/pom.xml
index a3b59c0..6a1ebf1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -48,6 +48,14 @@
<version>2.0.43</version>
</dependency>
+ <!-- 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/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/controller/student/StudentExamController.java b/src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java
new file mode 100644
index 0000000..9cc7334
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/controller/student/StudentExamController.java
@@ -0,0 +1,46 @@
+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 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/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/entity/Question.java b/src/main/java/com/ycl/jxkg/domain/entity/Question.java
index 4075d4f..278d717 100644
--- a/src/main/java/com/ycl/jxkg/domain/entity/Question.java
+++ b/src/main/java/com/ycl/jxkg/domain/entity/Question.java
@@ -24,6 +24,12 @@
private Integer questionType;
/**
+ * 棰樼洰
+ */
+ @TableField("title")
+ private String title;
+
+ /**
* 瀛︾
*/
@TableField("subject_id")
@@ -48,6 +54,18 @@
private String content;
/**
+ * 璇煶鏂囦欢
+ */
+ @TableField("audio_file")
+ private String audioFile;
+
+ /**
+ * 鍘熷鏂囦欢鍚嶇О
+ */
+ @TableField("original_file")
+ private String originalFile;
+
+ /**
* 鍒涘缓浜�
*/
@TableField("create_user")
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/domain/vo/admin/question/QuestionEditRequestVO.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionEditRequestVO.java
index 01de229..05dab93 100644
--- a/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionEditRequestVO.java
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/question/QuestionEditRequestVO.java
@@ -39,4 +39,8 @@
private Integer itemOrder;
+ private String audioFile;
+
+ private String originalFile;
+
}
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..a8e154b 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,20 @@
* @return
*/
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 afbca10..921cff5 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,76 @@
.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
+ // 鐜板湪鍙渶瑕佷繚瀛樺埌涓�寮犱复鏃惰〃
+ // 璇ユ帴鍙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(status);
+ examSubmitTemp.setUserId(webContext.getCurrentUser().getId());
+ examSubmitTemp.setExamSubmit(JSON.toJSONString(submitData.getQuestionList()));
+ examSubmitTempMapper.insert(examSubmitTemp);
+ }
+ }
}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
index 758c8c1..9e6a0d2 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/QuestionServiceImpl.java
@@ -18,6 +18,7 @@
import com.ycl.jxkg.service.QuestionService;
import com.ycl.jxkg.utils.DateTimeUtil;
import com.ycl.jxkg.utils.ExamUtil;
+import com.ycl.jxkg.utils.HtmlUtil;
import com.ycl.jxkg.utils.JsonUtil;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.BeanUtils;
@@ -60,6 +61,9 @@
question.setDifficult(model.getDifficult());
question.setContent(questionObject);
question.setCreateUser(userId);
+ question.setTitle(HtmlUtil.clear(model.getTitle()));
+ question.setAudioFile(model.getAudioFile());
+ question.setOriginalFile(model.getOriginalFile());
questionMapper.insert(question);
return question;
}
@@ -74,6 +78,9 @@
//棰樺共銆佽В鏋愩�侀�夐」绛� 鏇存柊
String questionObject = setQuestionInfoFromVM(model);
question.setContent(questionObject);
+ question.setTitle(HtmlUtil.clear(model.getTitle()));
+ question.setAudioFile(model.getAudioFile());
+ question.setOriginalFile(model.getOriginalFile());
questionMapper.updateById(question);
return question;
}
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/ExamPaperAnswerMapper.xml b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
index f5f8e64..01be319 100644
--- a/src/main/resources/mapper/ExamPaperAnswerMapper.xml
+++ b/src/main/resources/mapper/ExamPaperAnswerMapper.xml
@@ -86,7 +86,6 @@
a.id,
a.name AS paperName,
a.score DIV 10 AS systemScore,
- a.question_count,
a.subject_id,
a.paper_type,
a.suggest_time,
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 850f168..d2c122b 100644
--- a/src/main/resources/mapper/QuestionMapper.xml
+++ b/src/main/resources/mapper/QuestionMapper.xml
@@ -15,13 +15,21 @@
<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 '绠�绛旈'
+ WHEN tq.question_type = 6 THEN '璇煶棰�'
+ END AS questionTypeName,
ts.name AS subjectName,
tu.real_name AS createUserName
FROM t_question tq
@@ -36,10 +44,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,6 +85,11 @@
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>
+
<select id="getQuestionRandom">
SELECT
*
--
Gitblit v1.8.0