Prechádzať zdrojové kódy

mongodb数据更改

wangliang 5 rokov pred
rodič
commit
18ffa279ce
18 zmenil súbory, kde vykonal 1376 pridanie a 2470 odobranie
  1. 9 271
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamActivityEntity.java
  2. 2 103
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamCourseEntity.java
  3. 2 412
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamEntity.java
  4. 2 134
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamPaperEntity.java
  5. 4 145
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamStudentEntity.java
  6. 3 134
      themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEStudentEntity.java
  7. 2 438
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExam.java
  8. 2 287
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamActivity.java
  9. 2 106
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamCourse.java
  10. 2 143
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamPaper.java
  11. 2 154
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamStudent.java
  12. 2 143
      themis-business/src/main/java/com/qmth/themis/business/entity/TEStudent.java
  13. 454 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/Exam.java
  14. 298 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamActivity.java
  15. 117 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamCourse.java
  16. 154 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamPaper.java
  17. 165 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamStudent.java
  18. 154 0
      themis-business/src/main/java/com/qmth/themis/business/entity/common/Student.java

+ 9 - 271
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamActivityEntity.java

@@ -1,280 +1,18 @@
 package com.qmth.themis.backend.mongodb.entity;
 
+import com.qmth.themis.business.entity.common.ExamActivity;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.Date;
-
-/** 
-* @Description: mongodb 考试场次 entity 
-* @Param:  
-* @return:  
-* @Author: wangliang
-* @Date: 2020/7/6 
-*/
+/**
+ * @Description: mongodb 考试场次 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/6
+ */
 @ApiModel(value = "TEExamActivity", description = "考试场次")
 @Document(collection = "TEExamActivity")
-public class MTEExamActivityEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @ApiModelProperty(value = "主键")
-    private Long id;
-
-    @ApiModelProperty(value = "批次id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次代码")
-    private String code;
-
-    @ApiModelProperty(value = "场次名称")
-    private String name;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最早开考时间")
-    private Date minStartTime;
-
-    @ApiModelProperty(value = "最晚开考时间,相当于迟到时间")
-    private Date maxStartTime;
-
-    @ApiModelProperty(value = "最大考试时长")
-    private Integer maxDurationSeconds;
-
-    @ApiModelProperty(value = "最短考试时间,相当于考试冻结时间(秒)")
-    private Integer minDurationSeconds;
-
-    @ApiModelProperty(value = "集中收卷时间")
-    private Date maxFinishTime;
-
-    @ApiModelProperty(value = "允许考试次数")
-    private Integer examCount;
-
-    @ApiModelProperty(value = "断点失效时间(秒)")
-    private Integer breakExpireSeconds;
-
-    @ApiModelProperty(value = "断点续考次数")
-    private Integer breakResumeCount;
-
-    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
-    private Integer entryFaceVerify;
-
-    @ApiModelProperty(value = "是否开启/强制开考活体检测")
-    private Integer entryLivenessVerify;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
-    private Integer constantFaceVerify;
-
-    @ApiModelProperty(value = "考试过程中随机活体验证次数")
-    private Integer constantLivenessVerifyCount;
-
-    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
-    private Integer clientVideoPush;
-
-    @ApiModelProperty(value = "是否开启客户端视频转录")
-    private Integer clientVideoRecord;
-
-    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
-    private Integer wxappVideoPush;
-
-    @ApiModelProperty(value = "是否开启微信小程序视频转录")
-    private Integer wxappVideoRecord;
-
-    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
-    private Integer cameraPhotoUpload;
-
-    @ApiModelProperty(value = "是否允许使用微信拍照答题")
-    private Integer wxappPhotoUpload;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getPrepareSeconds() {
-        return prepareSeconds;
-    }
-
-    public void setPrepareSeconds(Integer prepareSeconds) {
-        this.prepareSeconds = prepareSeconds;
-    }
-
-    public Date getMinStartTime() {
-        return minStartTime;
-    }
-
-    public void setMinStartTime(Date minStartTime) {
-        this.minStartTime = minStartTime;
-    }
-
-    public Date getMaxStartTime() {
-        return maxStartTime;
-    }
-
-    public void setMaxStartTime(Date maxStartTime) {
-        this.maxStartTime = maxStartTime;
-    }
-
-    public Integer getMaxDurationSeconds() {
-        return maxDurationSeconds;
-    }
-
-    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
-        this.maxDurationSeconds = maxDurationSeconds;
-    }
-
-    public Integer getMinDurationSeconds() {
-        return minDurationSeconds;
-    }
-
-    public void setMinDurationSeconds(Integer minDurationSeconds) {
-        this.minDurationSeconds = minDurationSeconds;
-    }
-
-    public Date getMaxFinishTime() {
-        return maxFinishTime;
-    }
-
-    public void setMaxFinishTime(Date maxFinishTime) {
-        this.maxFinishTime = maxFinishTime;
-    }
-
-    public Integer getExamCount() {
-        return examCount;
-    }
-
-    public void setExamCount(Integer examCount) {
-        this.examCount = examCount;
-    }
-
-    public Integer getBreakExpireSeconds() {
-        return breakExpireSeconds;
-    }
-
-    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
-        this.breakExpireSeconds = breakExpireSeconds;
-    }
-
-    public Integer getBreakResumeCount() {
-        return breakResumeCount;
-    }
-
-    public void setBreakResumeCount(Integer breakResumeCount) {
-        this.breakResumeCount = breakResumeCount;
-    }
-
-    public Integer getEntryFaceVerify() {
-        return entryFaceVerify;
-    }
-
-    public void setEntryFaceVerify(Integer entryFaceVerify) {
-        this.entryFaceVerify = entryFaceVerify;
-    }
-
-    public Integer getEntryLivenessVerify() {
-        return entryLivenessVerify;
-    }
-
-    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
-        this.entryLivenessVerify = entryLivenessVerify;
-    }
-
-    public Integer getConstantFaceVerify() {
-        return constantFaceVerify;
-    }
-
-    public void setConstantFaceVerify(Integer constantFaceVerify) {
-        this.constantFaceVerify = constantFaceVerify;
-    }
-
-    public Integer getConstantLivenessVerifyCount() {
-        return constantLivenessVerifyCount;
-    }
-
-    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
-        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
-    }
-
-    public Integer getClientVideoPush() {
-        return clientVideoPush;
-    }
-
-    public void setClientVideoPush(Integer clientVideoPush) {
-        this.clientVideoPush = clientVideoPush;
-    }
-
-    public Integer getClientVideoRecord() {
-        return clientVideoRecord;
-    }
-
-    public void setClientVideoRecord(Integer clientVideoRecord) {
-        this.clientVideoRecord = clientVideoRecord;
-    }
-
-    public Integer getWxappVideoPush() {
-        return wxappVideoPush;
-    }
-
-    public void setWxappVideoPush(Integer wxappVideoPush) {
-        this.wxappVideoPush = wxappVideoPush;
-    }
-
-    public Integer getWxappVideoRecord() {
-        return wxappVideoRecord;
-    }
-
-    public void setWxappVideoRecord(Integer wxappVideoRecord) {
-        this.wxappVideoRecord = wxappVideoRecord;
-    }
-
-    public Integer getCameraPhotoUpload() {
-        return cameraPhotoUpload;
-    }
-
-    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
-        this.cameraPhotoUpload = cameraPhotoUpload;
-    }
-
-    public Integer getWxappPhotoUpload() {
-        return wxappPhotoUpload;
-    }
+public class MTEExamActivityEntity extends ExamActivity {
 
-    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
-        this.wxappPhotoUpload = wxappPhotoUpload;
-    }
 }

+ 2 - 103
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamCourseEntity.java

@@ -1,15 +1,9 @@
 package com.qmth.themis.backend.mongodb.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamCourse;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.List;
-
 /**
  * @Description: mongodb 考试科目 entity
  * @Param:
@@ -19,34 +13,7 @@ import java.util.List;
  */
 @ApiModel(value = "TEExamCourse", description = "考试科目")
 @Document(collection = "TEExamCourse")
-public class MTEExamCourseEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @ApiModelProperty(value = "主键")
-    private Long id;
-
-    @ApiModelProperty(value = "考试ID")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次ID")
-    private Long examActivityId;
-
-    @ApiModelProperty(value = "科目编码")
-    private String courseCode;
-
-    @ApiModelProperty(value = "科目名称")
-    private String courseName;
-
-    @ApiModelProperty(value = "是否开启客观题乱序")
-    private Integer objectiveShuffle;
-
-    @ApiModelProperty(value = "是否选项乱序,针对一个科目进行设置")
-    private Integer optionShuffle;
-
-    @ApiModelProperty(value = "所有绑定的考试试卷")
-    private String paperIds;
+public class MTEExamCourseEntity extends ExamCourse {
 
 //    @DBRef
 //    private List<MTEExamPaperEntity> mteExamPaperEntityList;
@@ -58,72 +25,4 @@ public class MTEExamCourseEntity implements Serializable {
 //    public void setMteExamPaperEntityList(List<MTEExamPaperEntity> mteExamPaperEntityList) {
 //        this.mteExamPaperEntityList = mteExamPaperEntityList;
 //    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public Long getExamActivityId() {
-        return examActivityId;
-    }
-
-    public void setExamActivityId(Long examActivityId) {
-        this.examActivityId = examActivityId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public Integer getObjectiveShuffle() {
-        return objectiveShuffle;
-    }
-
-    public void setObjectiveShuffle(Integer objectiveShuffle) {
-        this.objectiveShuffle = objectiveShuffle;
-    }
-
-    public Integer getOptionShuffle() {
-        return optionShuffle;
-    }
-
-    public void setOptionShuffle(Integer optionShuffle) {
-        this.optionShuffle = optionShuffle;
-    }
-
-    public String getPaperIds() {
-        return paperIds;
-    }
-
-    public void setPaperIds(String paperIds) {
-        this.paperIds = paperIds;
-    }
 }

+ 2 - 412
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamEntity.java

@@ -1,16 +1,9 @@
 package com.qmth.themis.backend.mongodb.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.Exam;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.DBRef;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
 /**
  * @Description: mongodb 考试批次 entity
  * @Param:
@@ -20,118 +13,7 @@ import java.util.List;
  */
 @ApiModel(value = "TEExam", description = "考试批次")
 @Document(collection = "TEExam")
-public class MTEExamEntity implements Serializable {
-    private static final long serialVersionUID = -1688201571728312142L;
-
-    @Id
-    @ApiModelProperty(value = "主键")
-    private Long id;
-
-    @ApiModelProperty(value = "机构ID")
-    private Long orgId;
-
-    @ApiModelProperty(value = "批次编码,机构唯一")
-    private String code;
-
-    @ApiModelProperty(value = "批次名称")
-    private String name;
-
-    @ApiModelProperty(value = "批次标注,可用于多个考试批次归类")
-    private String tag;
-
-    @ApiModelProperty(value = "批次开始时间")
-    private Date startTime;
-
-    @ApiModelProperty(value = "批次结束时间")
-    private Date endTime;
-
-    @ApiModelProperty(value = "状态")
-    private Integer status;
-
-    @ApiModelProperty(value = "考试口令")
-    private String shortCode;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最短考试时长,相当于考试冻结时间(秒)")
-    private Integer minDurationSeconds;
-
-    @ApiModelProperty(value = "考前须知")
-    private String preNotice;
-
-    @ApiModelProperty(value = "考试须知阅读时长(秒)")
-    @TableId(value = "pre_notice_stay_seconds")
-    private Integer preNoticeStaySeconds;
-
-    @ApiModelProperty(value = "考后说明,针对一个场次进行设置")
-    private String postNotice;
-
-    @ApiModelProperty(value = "允许考试次数")
-    private Integer examCount;
-
-    @ApiModelProperty(value = "断点失效时间(秒)")
-    private Integer breakExpireSeconds;
-
-    @ApiModelProperty(value = "断点续考次数")
-    private Integer breakResumeCount;
-
-    @ApiModelProperty(value = "活体动作个数")
-    private Integer livenessActionCount;
-
-    @ApiModelProperty(value = "活体单个动作重试次数")
-    private Integer livenessActionRetryCount;
-
-    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
-    private Integer entryFaceVerify;
-
-    @ApiModelProperty(value = "是否开启/强制开考活体检测")
-    private Integer entryLivenessVerify;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
-    private Integer constantFaceVerify;
-
-    @ApiModelProperty(value = "考试过程中随机活体验证次数")
-    private Integer constantLivenessVerifyCount;
-
-    @ApiModelProperty(value = "考试过程中随机活体重试次数")
-    private Integer constantLivenessRetryCount;
-
-    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
-    private Integer clientVideoPush;
-
-    @ApiModelProperty(value = "是否开启客户端视频转录")
-    private Integer clientVideoRecord;
-
-    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
-    private Integer wxappVideoPush;
-
-    @ApiModelProperty(value = "是否开启微信小程序视频转录")
-    private Integer wxappVideoRecord;
-
-    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
-    private Integer cameraPhotoUpload;
-
-    @ApiModelProperty(value = "是否允许使用微信拍照答题")
-    private Integer wxappPhotoUpload;
-
-    @ApiModelProperty(value = "重考是否审批")
-    private Integer reexamAuditing;
-
-    @ApiModelProperty(value = "多次考试记录的选择逻辑:全部阅卷后取最高分;客观分最高;最后一次提交")
-    private Integer selectStrategy;
-
-    @ApiModelProperty(value = "IP段限制")
-    private String ipLimit;
-
-    @ApiModelProperty(value = "交卷后是否显示客观得分")
-    private Integer showObjectiveScore;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    private Date updateTime;
+public class MTEExamEntity extends Exam {
 
 //    @DBRef
 //    private List<MTEExamActivityEntity> mteExamActivityEntityList;
@@ -143,296 +25,4 @@ public class MTEExamEntity implements Serializable {
 //    public void setMteExamActivityEntityList(List<MTEExamActivityEntity> mteExamActivityEntityList) {
 //        this.mteExamActivityEntityList = mteExamActivityEntityList;
 //    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getOrgId() {
-        return orgId;
-    }
-
-    public void setOrgId(Long orgId) {
-        this.orgId = orgId;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getTag() {
-        return tag;
-    }
-
-    public void setTag(String tag) {
-        this.tag = tag;
-    }
-
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    public Date getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(Date endTime) {
-        this.endTime = endTime;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public String getShortCode() {
-        return shortCode;
-    }
-
-    public void setShortCode(String shortCode) {
-        this.shortCode = shortCode;
-    }
-
-    public Integer getPrepareSeconds() {
-        return prepareSeconds;
-    }
-
-    public void setPrepareSeconds(Integer prepareSeconds) {
-        this.prepareSeconds = prepareSeconds;
-    }
-
-    public Integer getMinDurationSeconds() {
-        return minDurationSeconds;
-    }
-
-    public void setMinDurationSeconds(Integer minDurationSeconds) {
-        this.minDurationSeconds = minDurationSeconds;
-    }
-
-    public String getPreNotice() {
-        return preNotice;
-    }
-
-    public void setPreNotice(String preNotice) {
-        this.preNotice = preNotice;
-    }
-
-    public Integer getPreNoticeStaySeconds() {
-        return preNoticeStaySeconds;
-    }
-
-    public void setPreNoticeStaySeconds(Integer preNoticeStaySeconds) {
-        this.preNoticeStaySeconds = preNoticeStaySeconds;
-    }
-
-    public String getPostNotice() {
-        return postNotice;
-    }
-
-    public void setPostNotice(String postNotice) {
-        this.postNotice = postNotice;
-    }
-
-    public Integer getExamCount() {
-        return examCount;
-    }
-
-    public void setExamCount(Integer examCount) {
-        this.examCount = examCount;
-    }
-
-    public Integer getBreakExpireSeconds() {
-        return breakExpireSeconds;
-    }
-
-    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
-        this.breakExpireSeconds = breakExpireSeconds;
-    }
-
-    public Integer getBreakResumeCount() {
-        return breakResumeCount;
-    }
-
-    public void setBreakResumeCount(Integer breakResumeCount) {
-        this.breakResumeCount = breakResumeCount;
-    }
-
-    public Integer getLivenessActionCount() {
-        return livenessActionCount;
-    }
-
-    public void setLivenessActionCount(Integer livenessActionCount) {
-        this.livenessActionCount = livenessActionCount;
-    }
-
-    public Integer getLivenessActionRetryCount() {
-        return livenessActionRetryCount;
-    }
-
-    public void setLivenessActionRetryCount(Integer livenessActionRetryCount) {
-        this.livenessActionRetryCount = livenessActionRetryCount;
-    }
-
-    public Integer getEntryFaceVerify() {
-        return entryFaceVerify;
-    }
-
-    public void setEntryFaceVerify(Integer entryFaceVerify) {
-        this.entryFaceVerify = entryFaceVerify;
-    }
-
-    public Integer getEntryLivenessVerify() {
-        return entryLivenessVerify;
-    }
-
-    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
-        this.entryLivenessVerify = entryLivenessVerify;
-    }
-
-    public Integer getConstantFaceVerify() {
-        return constantFaceVerify;
-    }
-
-    public void setConstantFaceVerify(Integer constantFaceVerify) {
-        this.constantFaceVerify = constantFaceVerify;
-    }
-
-    public Integer getConstantLivenessVerifyCount() {
-        return constantLivenessVerifyCount;
-    }
-
-    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
-        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
-    }
-
-    public Integer getConstantLivenessRetryCount() {
-        return constantLivenessRetryCount;
-    }
-
-    public void setConstantLivenessRetryCount(Integer constantLivenessRetryCount) {
-        this.constantLivenessRetryCount = constantLivenessRetryCount;
-    }
-
-    public Integer getClientVideoPush() {
-        return clientVideoPush;
-    }
-
-    public void setClientVideoPush(Integer clientVideoPush) {
-        this.clientVideoPush = clientVideoPush;
-    }
-
-    public Integer getClientVideoRecord() {
-        return clientVideoRecord;
-    }
-
-    public void setClientVideoRecord(Integer clientVideoRecord) {
-        this.clientVideoRecord = clientVideoRecord;
-    }
-
-    public Integer getWxappVideoPush() {
-        return wxappVideoPush;
-    }
-
-    public void setWxappVideoPush(Integer wxappVideoPush) {
-        this.wxappVideoPush = wxappVideoPush;
-    }
-
-    public Integer getWxappVideoRecord() {
-        return wxappVideoRecord;
-    }
-
-    public void setWxappVideoRecord(Integer wxappVideoRecord) {
-        this.wxappVideoRecord = wxappVideoRecord;
-    }
-
-    public Integer getCameraPhotoUpload() {
-        return cameraPhotoUpload;
-    }
-
-    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
-        this.cameraPhotoUpload = cameraPhotoUpload;
-    }
-
-    public Integer getWxappPhotoUpload() {
-        return wxappPhotoUpload;
-    }
-
-    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
-        this.wxappPhotoUpload = wxappPhotoUpload;
-    }
-
-    public Integer getReexamAuditing() {
-        return reexamAuditing;
-    }
-
-    public void setReexamAuditing(Integer reexamAuditing) {
-        this.reexamAuditing = reexamAuditing;
-    }
-
-    public Integer getSelectStrategy() {
-        return selectStrategy;
-    }
-
-    public void setSelectStrategy(Integer selectStrategy) {
-        this.selectStrategy = selectStrategy;
-    }
-
-    public String getIpLimit() {
-        return ipLimit;
-    }
-
-    public void setIpLimit(String ipLimit) {
-        this.ipLimit = ipLimit;
-    }
-
-    public Integer getShowObjectiveScore() {
-        return showObjectiveScore;
-    }
-
-    public void setShowObjectiveScore(Integer showObjectiveScore) {
-        this.showObjectiveScore = showObjectiveScore;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 2 - 134
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamPaperEntity.java

@@ -1,14 +1,9 @@
 package com.qmth.themis.backend.mongodb.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamPaper;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.Date;
-
 /**
  * @Description: mongodb 考试试卷 entity
  * @Param:
@@ -18,133 +13,6 @@ import java.util.Date;
  */
 @ApiModel(value = "TEExamPaper", description = "考试试卷")
 @Document(collection = "TEExamPaper")
-public class MTEExamPaperEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @ApiModelProperty(value = "主键")
-    private Long id;
-
-    @ApiModelProperty(value = "试卷名称")
-    private String name;
-
-    @ApiModelProperty(value = "试卷总分")
-    private Double totalScore;
-
-    @ApiModelProperty(value = "题干路径")
-    private String paperPath;
-
-    @ApiModelProperty(value = "标答路径")
-    private String standardAnswerPath;
-
-    @ApiModelProperty(value = "解密密钥")
-    private String decryptSecret;
-
-    @ApiModelProperty(value = "自动、手动、不加密")
-    private Integer encryptMode;
-
-    @ApiModelProperty(value = "题干包含音视频")
-    private Integer hasVideo;
-
-    @ApiModelProperty(value = "是否需要语音作答")
-    private Integer needVoiceAnswer;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    private Date updateTime;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Double getTotalScore() {
-        return totalScore;
-    }
-
-    public void setTotalScore(Double totalScore) {
-        this.totalScore = totalScore;
-    }
-
-    public String getPaperPath() {
-        return paperPath;
-    }
-
-    public void setPaperPath(String paperPath) {
-        this.paperPath = paperPath;
-    }
-
-    public String getStandardAnswerPath() {
-        return standardAnswerPath;
-    }
-
-    public void setStandardAnswerPath(String standardAnswerPath) {
-        this.standardAnswerPath = standardAnswerPath;
-    }
-
-    public String getDecryptSecret() {
-        return decryptSecret;
-    }
-
-    public void setDecryptSecret(String decryptSecret) {
-        this.decryptSecret = decryptSecret;
-    }
-
-    public Integer getEncryptMode() {
-        return encryptMode;
-    }
-
-    public void setEncryptMode(Integer encryptMode) {
-        this.encryptMode = encryptMode;
-    }
-
-    public Integer getHasVideo() {
-        return hasVideo;
-    }
-
-    public void setHasVideo(Integer hasVideo) {
-        this.hasVideo = hasVideo;
-    }
-
-    public Integer getNeedVoiceAnswer() {
-        return needVoiceAnswer;
-    }
-
-    public void setNeedVoiceAnswer(Integer needVoiceAnswer) {
-        this.needVoiceAnswer = needVoiceAnswer;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+public class MTEExamPaperEntity extends ExamPaper {
 
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 4 - 145
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEExamStudentEntity.java

@@ -1,13 +1,9 @@
 package com.qmth.themis.backend.mongodb.entity;
 
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
-import org.springframework.data.mongodb.core.mapping.DBRef;
+import com.qmth.themis.business.entity.common.ExamStudent;
+import io.swagger.annotations.ApiModel;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.List;
-
 /**
  * @Description: mongodb 考生 entity
  * @Param:
@@ -15,46 +11,9 @@ import java.util.List;
  * @Author: wangliang
  * @Date: 2020/7/6
  */
+@ApiModel(value = "TEExamStudent", description = "考生库")
 @Document(collection = "TEExamStudent")
-public class MTEExamStudentEntity implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @Id
-    private Long id;
-
-    @ApiModelProperty(value = "批次id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次id")
-    private Long examActivityId;
-
-    @ApiModelProperty(value = "学生id")
-    private Long studentId;
-
-    @ApiModelProperty(value = "科目代码")
-    private String courseCode;
-
-    @ApiModelProperty(value = "虚拟考场代码,考试唯一")
-    private String roomCode;
-
-    @ApiModelProperty(value = "证件号,机构内唯一")
-    private String identity;
-
-    @ApiModelProperty(value = "姓名")
-    private String name;
-
-    @ApiModelProperty(value = "扩展字段")
-    private String parameter;
-
-    @ApiModelProperty(value = "剩余考试次数")
-    private Integer leftExamCount;
-
-    @ApiModelProperty(value = "当前考试记录ID")
-    private Long currentRecordId;
-
-    @ApiModelProperty(value = "最终生效的记录ID")
-    private Long selectRecordId;
+public class MTEExamStudentEntity extends ExamStudent {
 
 //    @DBRef
 //    private MTEStudentEntity mteStudentEntity;
@@ -99,104 +58,4 @@ public class MTEExamStudentEntity implements Serializable {
 //    public void setMteStudentEntity(MTEStudentEntity mteStudentEntity) {
 //        this.mteStudentEntity = mteStudentEntity;
 //    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public Long getExamActivityId() {
-        return examActivityId;
-    }
-
-    public void setExamActivityId(Long examActivityId) {
-        this.examActivityId = examActivityId;
-    }
-
-    public Long getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Long studentId) {
-        this.studentId = studentId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getRoomCode() {
-        return roomCode;
-    }
-
-    public void setRoomCode(String roomCode) {
-        this.roomCode = roomCode;
-    }
-
-    public String getIdentity() {
-        return identity;
-    }
-
-    public void setIdentity(String identity) {
-        this.identity = identity;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getParameter() {
-        return parameter;
-    }
-
-    public void setParameter(String parameter) {
-        this.parameter = parameter;
-    }
-
-    public Integer getLeftExamCount() {
-        return leftExamCount;
-    }
-
-    public void setLeftExamCount(Integer leftExamCount) {
-        this.leftExamCount = leftExamCount;
-    }
-
-    public Long getCurrentRecordId() {
-        return currentRecordId;
-    }
-
-    public void setCurrentRecordId(Long currentRecordId) {
-        this.currentRecordId = currentRecordId;
-    }
-
-    public Long getSelectRecordId() {
-        return selectRecordId;
-    }
-
-    public void setSelectRecordId(Long selectRecordId) {
-        this.selectRecordId = selectRecordId;
-    }
 }

+ 3 - 134
themis-backend/src/main/java/com/qmth/themis/backend/mongodb/entity/MTEStudentEntity.java

@@ -1,14 +1,9 @@
 package com.qmth.themis.backend.mongodb.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.Student;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
 
-import java.io.Serializable;
-import java.util.Date;
-
 /**
  * @Description: mongodb 学生档案 entity
  * @Param:
@@ -16,134 +11,8 @@ import java.util.Date;
  * @Author: wangliang
  * @Date: 2020/7/6
  */
+@ApiModel(value = "TEStudent", description = "学生档案")
 @Document(collection = "TEStudent")
-public class MTEStudentEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @ApiModelProperty(value = "主键")
-    private Long id;
-
-    @ApiModelProperty(value = "机构ID")
-    private Long orgId;
-
-    @ApiModelProperty(value = "证件号")
-    private String identity;
-
-    @ApiModelProperty(value = "登陆密码,密文保存")
-    private String password;
-
-    @ApiModelProperty(value = "身份证号")
-    private String idcardNumber;
-
-    @ApiModelProperty(value = "手机号")
-    private String mobileNumber;
-
-    @ApiModelProperty(value = "姓名")
-    private String name;
-
-    @ApiModelProperty(value = "性别")
-    private Integer gender;
-
-    @ApiModelProperty(value = "底照保存地址")
-    private String basePhotoPath;
-
-    @ApiModelProperty(value = "创建时间")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    private Date updateTime;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getOrgId() {
-        return orgId;
-    }
-
-    public void setOrgId(Long orgId) {
-        this.orgId = orgId;
-    }
-
-    public String getIdentity() {
-        return identity;
-    }
-
-    public void setIdentity(String identity) {
-        this.identity = identity;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getIdcardNumber() {
-        return idcardNumber;
-    }
-
-    public void setIdcardNumber(String idcardNumber) {
-        this.idcardNumber = idcardNumber;
-    }
-
-    public String getMobileNumber() {
-        return mobileNumber;
-    }
-
-    public void setMobileNumber(String mobileNumber) {
-        this.mobileNumber = mobileNumber;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getGender() {
-        return gender;
-    }
-
-    public void setGender(Integer gender) {
-        this.gender = gender;
-    }
-
-    public String getBasePhotoPath() {
-        return basePhotoPath;
-    }
-
-    public void setBasePhotoPath(String basePhotoPath) {
-        this.basePhotoPath = basePhotoPath;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+public class MTEStudentEntity extends Student {
 
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 2 - 438
themis-business/src/main/java/com/qmth/themis/business/entity/TEExam.java

@@ -1,6 +1,7 @@
 package com.qmth.themis.business.entity;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.Exam;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -15,443 +16,6 @@ import java.util.Date;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam", description = "考试批次")
-public class TEExam implements Serializable {
+public class TEExam extends Exam {
 
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "机构ID")
-    @TableId(value = "org_id")
-    private Long orgId;
-
-    @ApiModelProperty(value = "批次编码,机构唯一")
-    @TableId(value = "code")
-    private String code;
-
-    @ApiModelProperty(value = "批次名称")
-    @TableId(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "批次标注,可用于多个考试批次归类")
-    @TableId(value = "name")
-    private String tag;
-
-    @ApiModelProperty(value = "批次开始时间")
-    @TableId(value = "start_time")
-    private Date startTime;
-
-    @ApiModelProperty(value = "批次结束时间")
-    @TableId(value = "end_time")
-    private Date endTime;
-
-    @ApiModelProperty(value = "状态")
-    @TableId(value = "status")
-    private Integer status;
-
-    @ApiModelProperty(value = "考试口令")
-    @TableId(value = "short_code")
-    private String shortCode;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
-    @TableId(value = "prepare_seconds")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最短考试时长,相当于考试冻结时间(秒)")
-    @TableId(value = "min_duration_seconds")
-    private Integer minDurationSeconds;
-
-    @ApiModelProperty(value = "考前须知")
-    @TableId(value = "pre_notice")
-    private String preNotice;
-
-    @ApiModelProperty(value = "考试须知阅读时长(秒)")
-    @TableId(value = "pre_notice_stay_seconds")
-    private Integer preNoticeStaySeconds;
-
-    @ApiModelProperty(value = "考后说明,针对一个场次进行设置")
-    @TableId(value = "post_notice")
-    private String postNotice;
-
-    @ApiModelProperty(value = "允许考试次数")
-    @TableId(value = "exam_count")
-    private Integer examCount;
-
-    @ApiModelProperty(value = "断点失效时间(秒)")
-    @TableId(value = "break_expire_seconds")
-    private Integer breakExpireSeconds;
-
-    @ApiModelProperty(value = "断点续考次数")
-    @TableId(value = "break_resume_count")
-    private Integer breakResumeCount;
-
-    @ApiModelProperty(value = "活体动作个数")
-    @TableId(value = "liveness_action_count")
-    private Integer livenessActionCount;
-
-    @ApiModelProperty(value = "活体单个动作重试次数")
-    @TableId(value = "liveness_action_retry_count")
-    private Integer livenessActionRetryCount;
-
-    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
-    @TableId(value = "entry_face_verify")
-    private Integer entryFaceVerify;
-
-    @ApiModelProperty(value = "是否开启/强制开考活体检测")
-    @TableId(value = "entry_liveness_verify")
-    private Integer entryLivenessVerify;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
-    @TableId(value = "constant_face_verify")
-    private Integer constantFaceVerify;
-
-    @ApiModelProperty(value = "考试过程中随机活体验证次数")
-    @TableId(value = "constant_liveness_verify_count")
-    private Integer constantLivenessVerifyCount;
-
-    @ApiModelProperty(value = "考试过程中随机活体重试次数")
-    @TableId(value = "constant_liveness_retry_count")
-    private Integer constantLivenessRetryCount;
-
-    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
-    @TableId(value = "client_video_push")
-    private Integer clientVideoPush;
-
-    @ApiModelProperty(value = "是否开启客户端视频转录")
-    @TableId(value = "client_video_record")
-    private Integer clientVideoRecord;
-
-    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
-    @TableId(value = "wxapp_video_push")
-    private Integer wxappVideoPush;
-
-    @ApiModelProperty(value = "是否开启微信小程序视频转录")
-    @TableId(value = "wxapp_video_record")
-    private Integer wxappVideoRecord;
-
-    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
-    @TableId(value = "camera_photo_upload")
-    private Integer cameraPhotoUpload;
-
-    @ApiModelProperty(value = "是否允许使用微信拍照答题")
-    @TableId(value = "wxapp_photo_upload")
-    private Integer wxappPhotoUpload;
-
-    @ApiModelProperty(value = "重考是否审批")
-    @TableId(value = "reexam_auditing")
-    private Integer reexamAuditing;
-
-    @ApiModelProperty(value = "多次考试记录的选择逻辑:全部阅卷后取最高分;客观分最高;最后一次提交")
-    @TableId(value = "select_strategy")
-    private Integer selectStrategy;
-
-    @ApiModelProperty(value = "IP段限制")
-    @TableId(value = "ip_limit")
-    private String ipLimit;
-
-    @ApiModelProperty(value = "交卷后是否显示客观得分")
-    @TableId(value = "show_objective_score")
-    private Integer showObjectiveScore;
-
-    @ApiModelProperty(value = "创建时间")
-    @TableId(value = "create_time")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    @TableId(value = "update_time")
-    private Date updateTime;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getOrgId() {
-        return orgId;
-    }
-
-    public void setOrgId(Long orgId) {
-        this.orgId = orgId;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getTag() {
-        return tag;
-    }
-
-    public void setTag(String tag) {
-        this.tag = tag;
-    }
-
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    public Date getEndTime() {
-        return endTime;
-    }
-
-    public void setEndTime(Date endTime) {
-        this.endTime = endTime;
-    }
-
-    public Integer getStatus() {
-        return status;
-    }
-
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
-
-    public String getShortCode() {
-        return shortCode;
-    }
-
-    public void setShortCode(String shortCode) {
-        this.shortCode = shortCode;
-    }
-
-    public Integer getPrepareSeconds() {
-        return prepareSeconds;
-    }
-
-    public void setPrepareSeconds(Integer prepareSeconds) {
-        this.prepareSeconds = prepareSeconds;
-    }
-
-    public Integer getMinDurationSeconds() {
-        return minDurationSeconds;
-    }
-
-    public void setMinDurationSeconds(Integer minDurationSeconds) {
-        this.minDurationSeconds = minDurationSeconds;
-    }
-
-    public String getPreNotice() {
-        return preNotice;
-    }
-
-    public void setPreNotice(String preNotice) {
-        this.preNotice = preNotice;
-    }
-
-    public Integer getPreNoticeStaySeconds() {
-        return preNoticeStaySeconds;
-    }
-
-    public void setPreNoticeStaySeconds(Integer preNoticeStaySeconds) {
-        this.preNoticeStaySeconds = preNoticeStaySeconds;
-    }
-
-    public String getPostNotice() {
-        return postNotice;
-    }
-
-    public void setPostNotice(String postNotice) {
-        this.postNotice = postNotice;
-    }
-
-    public Integer getExamCount() {
-        return examCount;
-    }
-
-    public void setExamCount(Integer examCount) {
-        this.examCount = examCount;
-    }
-
-    public Integer getBreakExpireSeconds() {
-        return breakExpireSeconds;
-    }
-
-    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
-        this.breakExpireSeconds = breakExpireSeconds;
-    }
-
-    public Integer getBreakResumeCount() {
-        return breakResumeCount;
-    }
-
-    public void setBreakResumeCount(Integer breakResumeCount) {
-        this.breakResumeCount = breakResumeCount;
-    }
-
-    public Integer getLivenessActionCount() {
-        return livenessActionCount;
-    }
-
-    public void setLivenessActionCount(Integer livenessActionCount) {
-        this.livenessActionCount = livenessActionCount;
-    }
-
-    public Integer getLivenessActionRetryCount() {
-        return livenessActionRetryCount;
-    }
-
-    public void setLivenessActionRetryCount(Integer livenessActionRetryCount) {
-        this.livenessActionRetryCount = livenessActionRetryCount;
-    }
-
-    public Integer getEntryFaceVerify() {
-        return entryFaceVerify;
-    }
-
-    public void setEntryFaceVerify(Integer entryFaceVerify) {
-        this.entryFaceVerify = entryFaceVerify;
-    }
-
-    public Integer getEntryLivenessVerify() {
-        return entryLivenessVerify;
-    }
-
-    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
-        this.entryLivenessVerify = entryLivenessVerify;
-    }
-
-    public Integer getConstantFaceVerify() {
-        return constantFaceVerify;
-    }
-
-    public void setConstantFaceVerify(Integer constantFaceVerify) {
-        this.constantFaceVerify = constantFaceVerify;
-    }
-
-    public Integer getConstantLivenessVerifyCount() {
-        return constantLivenessVerifyCount;
-    }
-
-    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
-        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
-    }
-
-    public Integer getConstantLivenessRetryCount() {
-        return constantLivenessRetryCount;
-    }
-
-    public void setConstantLivenessRetryCount(Integer constantLivenessRetryCount) {
-        this.constantLivenessRetryCount = constantLivenessRetryCount;
-    }
-
-    public Integer getClientVideoPush() {
-        return clientVideoPush;
-    }
-
-    public void setClientVideoPush(Integer clientVideoPush) {
-        this.clientVideoPush = clientVideoPush;
-    }
-
-    public Integer getClientVideoRecord() {
-        return clientVideoRecord;
-    }
-
-    public void setClientVideoRecord(Integer clientVideoRecord) {
-        this.clientVideoRecord = clientVideoRecord;
-    }
-
-    public Integer getWxappVideoPush() {
-        return wxappVideoPush;
-    }
-
-    public void setWxappVideoPush(Integer wxappVideoPush) {
-        this.wxappVideoPush = wxappVideoPush;
-    }
-
-    public Integer getWxappVideoRecord() {
-        return wxappVideoRecord;
-    }
-
-    public void setWxappVideoRecord(Integer wxappVideoRecord) {
-        this.wxappVideoRecord = wxappVideoRecord;
-    }
-
-    public Integer getCameraPhotoUpload() {
-        return cameraPhotoUpload;
-    }
-
-    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
-        this.cameraPhotoUpload = cameraPhotoUpload;
-    }
-
-    public Integer getWxappPhotoUpload() {
-        return wxappPhotoUpload;
-    }
-
-    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
-        this.wxappPhotoUpload = wxappPhotoUpload;
-    }
-
-    public Integer getReexamAuditing() {
-        return reexamAuditing;
-    }
-
-    public void setReexamAuditing(Integer reexamAuditing) {
-        this.reexamAuditing = reexamAuditing;
-    }
-
-    public Integer getSelectStrategy() {
-        return selectStrategy;
-    }
-
-    public void setSelectStrategy(Integer selectStrategy) {
-        this.selectStrategy = selectStrategy;
-    }
-
-    public String getIpLimit() {
-        return ipLimit;
-    }
-
-    public void setIpLimit(String ipLimit) {
-        this.ipLimit = ipLimit;
-    }
-
-    public Integer getShowObjectiveScore() {
-        return showObjectiveScore;
-    }
-
-    public void setShowObjectiveScore(Integer showObjectiveScore) {
-        this.showObjectiveScore = showObjectiveScore;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 2 - 287
themis-business/src/main/java/com/qmth/themis/business/entity/TEExamActivity.java

@@ -1,11 +1,7 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamActivity;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-import java.util.Date;
 
 /**
  * @Description: 考试场次
@@ -15,287 +11,6 @@ import java.util.Date;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_activity", description = "考试场次")
-public class TEExamActivity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "批次id")
-    @TableId(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次代码")
-    @TableId(value = "code")
-    private String code;
-
-    @ApiModelProperty(value = "场次名称")
-    @TableId(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
-    @TableId(value = "prepare_seconds")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最早开考时间")
-    @TableId(value = "min_start_time")
-    private Date minStartTime;
-
-    @ApiModelProperty(value = "最晚开考时间,相当于迟到时间")
-    @TableId(value = "max_start_time")
-    private Date maxStartTime;
-
-    @ApiModelProperty(value = "最大考试时长")
-    @TableId(value = "max_duration_seconds")
-    private Integer maxDurationSeconds;
-
-    @ApiModelProperty(value = "最短考试时间,相当于考试冻结时间(秒)")
-    @TableId(value = "min_duration_seconds")
-    private Integer minDurationSeconds;
-
-    @ApiModelProperty(value = "集中收卷时间")
-    @TableId(value = "max_finish_time")
-    private Date maxFinishTime;
-
-    @ApiModelProperty(value = "允许考试次数")
-    @TableId(value = "exam_count")
-    private Integer examCount;
-
-    @ApiModelProperty(value = "断点失效时间(秒)")
-    @TableId(value = "break_expire_seconds")
-    private Integer breakExpireSeconds;
-
-    @ApiModelProperty(value = "断点续考次数")
-    @TableId(value = "break_resume_count")
-    private Integer breakResumeCount;
-
-    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
-    @TableId(value = "entry_face_verify")
-    private Integer entryFaceVerify;
-
-    @ApiModelProperty(value = "是否开启/强制开考活体检测")
-    @TableId(value = "entry_liveness_verify")
-    private Integer entryLivenessVerify;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
-    @TableId(value = "constant_face_verify")
-    private Integer constantFaceVerify;
-
-    @ApiModelProperty(value = "考试过程中随机活体验证次数")
-    @TableId(value = "constant_liveness_verify_count")
-    private Integer constantLivenessVerifyCount;
-
-    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
-    @TableId(value = "client_video_push")
-    private Integer clientVideoPush;
-
-    @ApiModelProperty(value = "是否开启客户端视频转录")
-    @TableId(value = "client_video_record")
-    private Integer clientVideoRecord;
-
-    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
-    @TableId(value = "wxapp_video_push")
-    private Integer wxappVideoPush;
-
-    @ApiModelProperty(value = "是否开启微信小程序视频转录")
-    @TableId(value = "wxapp_video_record")
-    private Integer wxappVideoRecord;
-
-    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
-    @TableId(value = "camera_photo_upload")
-    private Integer cameraPhotoUpload;
-
-    @ApiModelProperty(value = "是否允许使用微信拍照答题")
-    @TableId(value = "wxapp_photo_upload")
-    private Integer wxappPhotoUpload;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getPrepareSeconds() {
-        return prepareSeconds;
-    }
-
-    public void setPrepareSeconds(Integer prepareSeconds) {
-        this.prepareSeconds = prepareSeconds;
-    }
-
-    public Date getMinStartTime() {
-        return minStartTime;
-    }
-
-    public void setMinStartTime(Date minStartTime) {
-        this.minStartTime = minStartTime;
-    }
-
-    public Date getMaxStartTime() {
-        return maxStartTime;
-    }
-
-    public void setMaxStartTime(Date maxStartTime) {
-        this.maxStartTime = maxStartTime;
-    }
-
-    public Integer getMaxDurationSeconds() {
-        return maxDurationSeconds;
-    }
-
-    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
-        this.maxDurationSeconds = maxDurationSeconds;
-    }
-
-    public Integer getMinDurationSeconds() {
-        return minDurationSeconds;
-    }
-
-    public void setMinDurationSeconds(Integer minDurationSeconds) {
-        this.minDurationSeconds = minDurationSeconds;
-    }
-
-    public Date getMaxFinishTime() {
-        return maxFinishTime;
-    }
-
-    public void setMaxFinishTime(Date maxFinishTime) {
-        this.maxFinishTime = maxFinishTime;
-    }
-
-    public Integer getExamCount() {
-        return examCount;
-    }
-
-    public void setExamCount(Integer examCount) {
-        this.examCount = examCount;
-    }
-
-    public Integer getBreakExpireSeconds() {
-        return breakExpireSeconds;
-    }
-
-    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
-        this.breakExpireSeconds = breakExpireSeconds;
-    }
-
-    public Integer getBreakResumeCount() {
-        return breakResumeCount;
-    }
-
-    public void setBreakResumeCount(Integer breakResumeCount) {
-        this.breakResumeCount = breakResumeCount;
-    }
-
-    public Integer getEntryFaceVerify() {
-        return entryFaceVerify;
-    }
-
-    public void setEntryFaceVerify(Integer entryFaceVerify) {
-        this.entryFaceVerify = entryFaceVerify;
-    }
-
-    public Integer getEntryLivenessVerify() {
-        return entryLivenessVerify;
-    }
-
-    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
-        this.entryLivenessVerify = entryLivenessVerify;
-    }
-
-    public Integer getConstantFaceVerify() {
-        return constantFaceVerify;
-    }
-
-    public void setConstantFaceVerify(Integer constantFaceVerify) {
-        this.constantFaceVerify = constantFaceVerify;
-    }
-
-    public Integer getConstantLivenessVerifyCount() {
-        return constantLivenessVerifyCount;
-    }
-
-    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
-        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
-    }
-
-    public Integer getClientVideoPush() {
-        return clientVideoPush;
-    }
-
-    public void setClientVideoPush(Integer clientVideoPush) {
-        this.clientVideoPush = clientVideoPush;
-    }
-
-    public Integer getClientVideoRecord() {
-        return clientVideoRecord;
-    }
-
-    public void setClientVideoRecord(Integer clientVideoRecord) {
-        this.clientVideoRecord = clientVideoRecord;
-    }
-
-    public Integer getWxappVideoPush() {
-        return wxappVideoPush;
-    }
-
-    public void setWxappVideoPush(Integer wxappVideoPush) {
-        this.wxappVideoPush = wxappVideoPush;
-    }
-
-    public Integer getWxappVideoRecord() {
-        return wxappVideoRecord;
-    }
-
-    public void setWxappVideoRecord(Integer wxappVideoRecord) {
-        this.wxappVideoRecord = wxappVideoRecord;
-    }
-
-    public Integer getCameraPhotoUpload() {
-        return cameraPhotoUpload;
-    }
-
-    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
-        this.cameraPhotoUpload = cameraPhotoUpload;
-    }
-
-    public Integer getWxappPhotoUpload() {
-        return wxappPhotoUpload;
-    }
+public class TEExamActivity extends ExamActivity {
 
-    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
-        this.wxappPhotoUpload = wxappPhotoUpload;
-    }
 }

+ 2 - 106
themis-business/src/main/java/com/qmth/themis/business/entity/TEExamCourse.java

@@ -1,10 +1,7 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamCourse;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
 
 /**
  * @Description: 考试科目
@@ -14,107 +11,6 @@ import java.io.Serializable;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_course", description = "考试科目")
-public class TEExamCourse implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "考试ID")
-    @TableId(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次ID")
-    @TableId(value = "exam_activity_id")
-    private Long examActivityId;
-
-    @ApiModelProperty(value = "科目编码")
-    @TableId(value = "course_code")
-    private String courseCode;
-
-    @ApiModelProperty(value = "科目名称")
-    @TableId(value = "course_name")
-    private String courseName;
-
-    @ApiModelProperty(value = "是否开启客观题乱序")
-    @TableId(value = "objective_shuffle")
-    private Integer objectiveShuffle;
-
-    @ApiModelProperty(value = "是否选项乱序,针对一个科目进行设置")
-    @TableId(value = "option_shuffle")
-    private Integer optionShuffle;
-
-    @ApiModelProperty(value = "所有绑定的考试试卷")
-    @TableId(value = "paper_ids")
-    private String paperIds;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public Long getExamActivityId() {
-        return examActivityId;
-    }
-
-    public void setExamActivityId(Long examActivityId) {
-        this.examActivityId = examActivityId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getCourseName() {
-        return courseName;
-    }
-
-    public void setCourseName(String courseName) {
-        this.courseName = courseName;
-    }
-
-    public Integer getObjectiveShuffle() {
-        return objectiveShuffle;
-    }
-
-    public void setObjectiveShuffle(Integer objectiveShuffle) {
-        this.objectiveShuffle = objectiveShuffle;
-    }
-
-    public Integer getOptionShuffle() {
-        return optionShuffle;
-    }
-
-    public void setOptionShuffle(Integer optionShuffle) {
-        this.optionShuffle = optionShuffle;
-    }
-
-    public String getPaperIds() {
-        return paperIds;
-    }
+public class TEExamCourse extends ExamCourse {
 
-    public void setPaperIds(String paperIds) {
-        this.paperIds = paperIds;
-    }
 }

+ 2 - 143
themis-business/src/main/java/com/qmth/themis/business/entity/TEExamPaper.java

@@ -1,11 +1,7 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamPaper;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-import java.util.Date;
 
 /**
  * @Description: 考试试卷
@@ -15,143 +11,6 @@ import java.util.Date;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_paper", description = "考试试卷")
-public class TEExamPaper implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "试卷名称")
-    @TableId(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "试卷总分")
-    @TableId(value = "total_score")
-    private Double totalScore;
-
-    @ApiModelProperty(value = "题干路径")
-    @TableId(value = "paper_path")
-    private String paperPath;
-
-    @ApiModelProperty(value = "标答路径")
-    @TableId(value = "standard_answer_path")
-    private String standardAnswerPath;
-
-    @ApiModelProperty(value = "解密密钥")
-    @TableId(value = "decrypt_secret")
-    private String decryptSecret;
-
-    @ApiModelProperty(value = "自动、手动、不加密")
-    @TableId(value = "encrypt_mode")
-    private Integer encryptMode;
-
-    @ApiModelProperty(value = "题干包含音视频")
-    @TableId(value = "has_video")
-    private Integer hasVideo;
-
-    @ApiModelProperty(value = "是否需要语音作答")
-    @TableId(value = "need_voice_answer")
-    private Integer needVoiceAnswer;
-
-    @ApiModelProperty(value = "创建时间")
-    @TableId(value = "create_time")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    @TableId(value = "update_time")
-    private Date updateTime;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Double getTotalScore() {
-        return totalScore;
-    }
-
-    public void setTotalScore(Double totalScore) {
-        this.totalScore = totalScore;
-    }
-
-    public String getPaperPath() {
-        return paperPath;
-    }
-
-    public void setPaperPath(String paperPath) {
-        this.paperPath = paperPath;
-    }
-
-    public String getStandardAnswerPath() {
-        return standardAnswerPath;
-    }
-
-    public void setStandardAnswerPath(String standardAnswerPath) {
-        this.standardAnswerPath = standardAnswerPath;
-    }
-
-    public String getDecryptSecret() {
-        return decryptSecret;
-    }
-
-    public void setDecryptSecret(String decryptSecret) {
-        this.decryptSecret = decryptSecret;
-    }
-
-    public Integer getEncryptMode() {
-        return encryptMode;
-    }
-
-    public void setEncryptMode(Integer encryptMode) {
-        this.encryptMode = encryptMode;
-    }
-
-    public Integer getHasVideo() {
-        return hasVideo;
-    }
-
-    public void setHasVideo(Integer hasVideo) {
-        this.hasVideo = hasVideo;
-    }
-
-    public Integer getNeedVoiceAnswer() {
-        return needVoiceAnswer;
-    }
-
-    public void setNeedVoiceAnswer(Integer needVoiceAnswer) {
-        this.needVoiceAnswer = needVoiceAnswer;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+public class TEExamPaper extends ExamPaper {
 
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 2 - 154
themis-business/src/main/java/com/qmth/themis/business/entity/TEExamStudent.java

@@ -1,10 +1,7 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.ExamStudent;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
 
 /**
  * @Description: 考生库
@@ -14,155 +11,6 @@ import java.io.Serializable;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_student", description = "考生库")
-public class TEExamStudent implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "批次id")
-    @TableId(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次id")
-    @TableId(value = "exam_activity_id")
-    private Long examActivityId;
-
-    @ApiModelProperty(value = "学生id")
-    @TableId(value = "student_id")
-    private Long studentId;
-
-    @ApiModelProperty(value = "科目代码")
-    @TableId(value = "course_code")
-    private String courseCode;
-
-    @ApiModelProperty(value = "虚拟考场代码,考试唯一")
-    @TableId(value = "room_code")
-    private String roomCode;
-
-    @ApiModelProperty(value = "证件号,机构内唯一")
-    @TableId(value = "identity")
-    private String identity;
-
-    @ApiModelProperty(value = "姓名")
-    @TableId(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "扩展字段")
-    @TableId(value = "parameter")
-    private String parameter;
-
-    @ApiModelProperty(value = "剩余考试次数")
-    @TableId(value = "left_exam_count")
-    private Integer leftExamCount;
-
-    @ApiModelProperty(value = "当前考试记录ID")
-    @TableId(value = "current_record_id")
-    private Long currentRecordId;
-
-    @ApiModelProperty(value = "最终生效的记录ID")
-    @TableId(value = "select_record_id")
-    private Long selectRecordId;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public Long getExamActivityId() {
-        return examActivityId;
-    }
-
-    public void setExamActivityId(Long examActivityId) {
-        this.examActivityId = examActivityId;
-    }
-
-    public Long getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Long studentId) {
-        this.studentId = studentId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getRoomCode() {
-        return roomCode;
-    }
-
-    public void setRoomCode(String roomCode) {
-        this.roomCode = roomCode;
-    }
-
-    public String getIdentity() {
-        return identity;
-    }
-
-    public void setIdentity(String identity) {
-        this.identity = identity;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getParameter() {
-        return parameter;
-    }
-
-    public void setParameter(String parameter) {
-        this.parameter = parameter;
-    }
-
-    public Integer getLeftExamCount() {
-        return leftExamCount;
-    }
-
-    public void setLeftExamCount(Integer leftExamCount) {
-        this.leftExamCount = leftExamCount;
-    }
-
-    public Long getCurrentRecordId() {
-        return currentRecordId;
-    }
-
-    public void setCurrentRecordId(Long currentRecordId) {
-        this.currentRecordId = currentRecordId;
-    }
-
-    public Long getSelectRecordId() {
-        return selectRecordId;
-    }
+public class TEExamStudent extends ExamStudent {
 
-    public void setSelectRecordId(Long selectRecordId) {
-        this.selectRecordId = selectRecordId;
-    }
 }

+ 2 - 143
themis-business/src/main/java/com/qmth/themis/business/entity/TEStudent.java

@@ -1,11 +1,7 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
+import com.qmth.themis.business.entity.common.Student;
 import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.io.Serializable;
-import java.util.Date;
 
 /**
  * @Description: 学生档案
@@ -15,143 +11,6 @@ import java.util.Date;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_student", description = "学生档案")
-public class TEStudent implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "主键")
-    @TableId(value = "id")
-    private Long id;
-
-    @ApiModelProperty(value = "机构ID")
-    @TableId(value = "org_id")
-    private Long orgId;
-
-    @ApiModelProperty(value = "证件号")
-    @TableId(value = "identity")
-    private String identity;
-
-    @ApiModelProperty(value = "登陆密码,密文保存")
-    @TableId(value = "password")
-    private String password;
-
-    @ApiModelProperty(value = "身份证号")
-    @TableId(value = "idcard_number")
-    private String idcardNumber;
-
-    @ApiModelProperty(value = "手机号")
-    @TableId(value = "mobile_number")
-    private String mobileNumber;
-
-    @ApiModelProperty(value = "姓名")
-    @TableId(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "性别")
-    @TableId(value = "gender")
-    private Integer gender;
-
-    @ApiModelProperty(value = "底照保存地址")
-    @TableId(value = "base_photo_path")
-    private String basePhotoPath;
-
-    @ApiModelProperty(value = "创建时间")
-    @TableId(value = "create_time")
-    private Date createTime;
-
-    @ApiModelProperty(value = "更新时间")
-    @TableId(value = "update_time")
-    private Date updateTime;
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getOrgId() {
-        return orgId;
-    }
-
-    public void setOrgId(Long orgId) {
-        this.orgId = orgId;
-    }
-
-    public String getIdentity() {
-        return identity;
-    }
-
-    public void setIdentity(String identity) {
-        this.identity = identity;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getIdcardNumber() {
-        return idcardNumber;
-    }
-
-    public void setIdcardNumber(String idcardNumber) {
-        this.idcardNumber = idcardNumber;
-    }
-
-    public String getMobileNumber() {
-        return mobileNumber;
-    }
-
-    public void setMobileNumber(String mobileNumber) {
-        this.mobileNumber = mobileNumber;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public Integer getGender() {
-        return gender;
-    }
-
-    public void setGender(Integer gender) {
-        this.gender = gender;
-    }
-
-    public String getBasePhotoPath() {
-        return basePhotoPath;
-    }
-
-    public void setBasePhotoPath(String basePhotoPath) {
-        this.basePhotoPath = basePhotoPath;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
+public class TEStudent extends Student {
 
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }

+ 454 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/Exam.java

@@ -0,0 +1,454 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 考试批次公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class Exam implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "机构ID")
+    @TableId(value = "org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "批次编码,机构唯一")
+    @TableId(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "批次名称")
+    @TableId(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "批次标注,可用于多个考试批次归类")
+    @TableId(value = "name")
+    private String tag;
+
+    @ApiModelProperty(value = "批次开始时间")
+    @TableId(value = "start_time")
+    private Date startTime;
+
+    @ApiModelProperty(value = "批次结束时间")
+    @TableId(value = "end_time")
+    private Date endTime;
+
+    @ApiModelProperty(value = "状态")
+    @TableId(value = "status")
+    private Integer status;
+
+    @ApiModelProperty(value = "考试口令")
+    @TableId(value = "short_code")
+    private String shortCode;
+
+    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
+    @TableId(value = "prepare_seconds")
+    private Integer prepareSeconds;
+
+    @ApiModelProperty(value = "最短考试时长,相当于考试冻结时间(秒)")
+    @TableId(value = "min_duration_seconds")
+    private Integer minDurationSeconds;
+
+    @ApiModelProperty(value = "考前须知")
+    @TableId(value = "pre_notice")
+    private String preNotice;
+
+    @ApiModelProperty(value = "考试须知阅读时长(秒)")
+    @TableId(value = "pre_notice_stay_seconds")
+    private Integer preNoticeStaySeconds;
+
+    @ApiModelProperty(value = "考后说明,针对一个场次进行设置")
+    @TableId(value = "post_notice")
+    private String postNotice;
+
+    @ApiModelProperty(value = "允许考试次数")
+    @TableId(value = "exam_count")
+    private Integer examCount;
+
+    @ApiModelProperty(value = "断点失效时间(秒)")
+    @TableId(value = "break_expire_seconds")
+    private Integer breakExpireSeconds;
+
+    @ApiModelProperty(value = "断点续考次数")
+    @TableId(value = "break_resume_count")
+    private Integer breakResumeCount;
+
+    @ApiModelProperty(value = "活体动作个数")
+    @TableId(value = "liveness_action_count")
+    private Integer livenessActionCount;
+
+    @ApiModelProperty(value = "活体单个动作重试次数")
+    @TableId(value = "liveness_action_retry_count")
+    private Integer livenessActionRetryCount;
+
+    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
+    @TableId(value = "entry_face_verify")
+    private Integer entryFaceVerify;
+
+    @ApiModelProperty(value = "是否开启/强制开考活体检测")
+    @TableId(value = "entry_liveness_verify")
+    private Integer entryLivenessVerify;
+
+    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
+    @TableId(value = "constant_face_verify")
+    private Integer constantFaceVerify;
+
+    @ApiModelProperty(value = "考试过程中随机活体验证次数")
+    @TableId(value = "constant_liveness_verify_count")
+    private Integer constantLivenessVerifyCount;
+
+    @ApiModelProperty(value = "考试过程中随机活体重试次数")
+    @TableId(value = "constant_liveness_retry_count")
+    private Integer constantLivenessRetryCount;
+
+    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
+    @TableId(value = "client_video_push")
+    private Integer clientVideoPush;
+
+    @ApiModelProperty(value = "是否开启客户端视频转录")
+    @TableId(value = "client_video_record")
+    private Integer clientVideoRecord;
+
+    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
+    @TableId(value = "wxapp_video_push")
+    private Integer wxappVideoPush;
+
+    @ApiModelProperty(value = "是否开启微信小程序视频转录")
+    @TableId(value = "wxapp_video_record")
+    private Integer wxappVideoRecord;
+
+    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
+    @TableId(value = "camera_photo_upload")
+    private Integer cameraPhotoUpload;
+
+    @ApiModelProperty(value = "是否允许使用微信拍照答题")
+    @TableId(value = "wxapp_photo_upload")
+    private Integer wxappPhotoUpload;
+
+    @ApiModelProperty(value = "重考是否审批")
+    @TableId(value = "reexam_auditing")
+    private Integer reexamAuditing;
+
+    @ApiModelProperty(value = "多次考试记录的选择逻辑:全部阅卷后取最高分;客观分最高;最后一次提交")
+    @TableId(value = "select_strategy")
+    private Integer selectStrategy;
+
+    @ApiModelProperty(value = "IP段限制")
+    @TableId(value = "ip_limit")
+    private String ipLimit;
+
+    @ApiModelProperty(value = "交卷后是否显示客观得分")
+    @TableId(value = "show_objective_score")
+    private Integer showObjectiveScore;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableId(value = "create_time")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableId(value = "update_time")
+    private Date updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        this.tag = tag;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public Integer getStatus() {
+        return status;
+    }
+
+    public void setStatus(Integer status) {
+        this.status = status;
+    }
+
+    public String getShortCode() {
+        return shortCode;
+    }
+
+    public void setShortCode(String shortCode) {
+        this.shortCode = shortCode;
+    }
+
+    public Integer getPrepareSeconds() {
+        return prepareSeconds;
+    }
+
+    public void setPrepareSeconds(Integer prepareSeconds) {
+        this.prepareSeconds = prepareSeconds;
+    }
+
+    public Integer getMinDurationSeconds() {
+        return minDurationSeconds;
+    }
+
+    public void setMinDurationSeconds(Integer minDurationSeconds) {
+        this.minDurationSeconds = minDurationSeconds;
+    }
+
+    public String getPreNotice() {
+        return preNotice;
+    }
+
+    public void setPreNotice(String preNotice) {
+        this.preNotice = preNotice;
+    }
+
+    public Integer getPreNoticeStaySeconds() {
+        return preNoticeStaySeconds;
+    }
+
+    public void setPreNoticeStaySeconds(Integer preNoticeStaySeconds) {
+        this.preNoticeStaySeconds = preNoticeStaySeconds;
+    }
+
+    public String getPostNotice() {
+        return postNotice;
+    }
+
+    public void setPostNotice(String postNotice) {
+        this.postNotice = postNotice;
+    }
+
+    public Integer getExamCount() {
+        return examCount;
+    }
+
+    public void setExamCount(Integer examCount) {
+        this.examCount = examCount;
+    }
+
+    public Integer getBreakExpireSeconds() {
+        return breakExpireSeconds;
+    }
+
+    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
+        this.breakExpireSeconds = breakExpireSeconds;
+    }
+
+    public Integer getBreakResumeCount() {
+        return breakResumeCount;
+    }
+
+    public void setBreakResumeCount(Integer breakResumeCount) {
+        this.breakResumeCount = breakResumeCount;
+    }
+
+    public Integer getLivenessActionCount() {
+        return livenessActionCount;
+    }
+
+    public void setLivenessActionCount(Integer livenessActionCount) {
+        this.livenessActionCount = livenessActionCount;
+    }
+
+    public Integer getLivenessActionRetryCount() {
+        return livenessActionRetryCount;
+    }
+
+    public void setLivenessActionRetryCount(Integer livenessActionRetryCount) {
+        this.livenessActionRetryCount = livenessActionRetryCount;
+    }
+
+    public Integer getEntryFaceVerify() {
+        return entryFaceVerify;
+    }
+
+    public void setEntryFaceVerify(Integer entryFaceVerify) {
+        this.entryFaceVerify = entryFaceVerify;
+    }
+
+    public Integer getEntryLivenessVerify() {
+        return entryLivenessVerify;
+    }
+
+    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
+        this.entryLivenessVerify = entryLivenessVerify;
+    }
+
+    public Integer getConstantFaceVerify() {
+        return constantFaceVerify;
+    }
+
+    public void setConstantFaceVerify(Integer constantFaceVerify) {
+        this.constantFaceVerify = constantFaceVerify;
+    }
+
+    public Integer getConstantLivenessVerifyCount() {
+        return constantLivenessVerifyCount;
+    }
+
+    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
+        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
+    }
+
+    public Integer getConstantLivenessRetryCount() {
+        return constantLivenessRetryCount;
+    }
+
+    public void setConstantLivenessRetryCount(Integer constantLivenessRetryCount) {
+        this.constantLivenessRetryCount = constantLivenessRetryCount;
+    }
+
+    public Integer getClientVideoPush() {
+        return clientVideoPush;
+    }
+
+    public void setClientVideoPush(Integer clientVideoPush) {
+        this.clientVideoPush = clientVideoPush;
+    }
+
+    public Integer getClientVideoRecord() {
+        return clientVideoRecord;
+    }
+
+    public void setClientVideoRecord(Integer clientVideoRecord) {
+        this.clientVideoRecord = clientVideoRecord;
+    }
+
+    public Integer getWxappVideoPush() {
+        return wxappVideoPush;
+    }
+
+    public void setWxappVideoPush(Integer wxappVideoPush) {
+        this.wxappVideoPush = wxappVideoPush;
+    }
+
+    public Integer getWxappVideoRecord() {
+        return wxappVideoRecord;
+    }
+
+    public void setWxappVideoRecord(Integer wxappVideoRecord) {
+        this.wxappVideoRecord = wxappVideoRecord;
+    }
+
+    public Integer getCameraPhotoUpload() {
+        return cameraPhotoUpload;
+    }
+
+    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
+        this.cameraPhotoUpload = cameraPhotoUpload;
+    }
+
+    public Integer getWxappPhotoUpload() {
+        return wxappPhotoUpload;
+    }
+
+    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
+        this.wxappPhotoUpload = wxappPhotoUpload;
+    }
+
+    public Integer getReexamAuditing() {
+        return reexamAuditing;
+    }
+
+    public void setReexamAuditing(Integer reexamAuditing) {
+        this.reexamAuditing = reexamAuditing;
+    }
+
+    public Integer getSelectStrategy() {
+        return selectStrategy;
+    }
+
+    public void setSelectStrategy(Integer selectStrategy) {
+        this.selectStrategy = selectStrategy;
+    }
+
+    public String getIpLimit() {
+        return ipLimit;
+    }
+
+    public void setIpLimit(String ipLimit) {
+        this.ipLimit = ipLimit;
+    }
+
+    public Integer getShowObjectiveScore() {
+        return showObjectiveScore;
+    }
+
+    public void setShowObjectiveScore(Integer showObjectiveScore) {
+        this.showObjectiveScore = showObjectiveScore;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 298 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamActivity.java

@@ -0,0 +1,298 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 考试场次公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class ExamActivity implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "批次id")
+    @TableId(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "场次代码")
+    @TableId(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "场次名称")
+    @TableId(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
+    @TableId(value = "prepare_seconds")
+    private Integer prepareSeconds;
+
+    @ApiModelProperty(value = "最早开考时间")
+    @TableId(value = "min_start_time")
+    private Date minStartTime;
+
+    @ApiModelProperty(value = "最晚开考时间,相当于迟到时间")
+    @TableId(value = "max_start_time")
+    private Date maxStartTime;
+
+    @ApiModelProperty(value = "最大考试时长")
+    @TableId(value = "max_duration_seconds")
+    private Integer maxDurationSeconds;
+
+    @ApiModelProperty(value = "最短考试时间,相当于考试冻结时间(秒)")
+    @TableId(value = "min_duration_seconds")
+    private Integer minDurationSeconds;
+
+    @ApiModelProperty(value = "集中收卷时间")
+    @TableId(value = "max_finish_time")
+    private Date maxFinishTime;
+
+    @ApiModelProperty(value = "允许考试次数")
+    @TableId(value = "exam_count")
+    private Integer examCount;
+
+    @ApiModelProperty(value = "断点失效时间(秒)")
+    @TableId(value = "break_expire_seconds")
+    private Integer breakExpireSeconds;
+
+    @ApiModelProperty(value = "断点续考次数")
+    @TableId(value = "break_resume_count")
+    private Integer breakResumeCount;
+
+    @ApiModelProperty(value = "是否开启/强制开考人脸识别")
+    @TableId(value = "entry_face_verify")
+    private Integer entryFaceVerify;
+
+    @ApiModelProperty(value = "是否开启/强制开考活体检测")
+    @TableId(value = "entry_liveness_verify")
+    private Integer entryLivenessVerify;
+
+    @ApiModelProperty(value = "考试过程中人脸检测是否开启")
+    @TableId(value = "constant_face_verify")
+    private Integer constantFaceVerify;
+
+    @ApiModelProperty(value = "考试过程中随机活体验证次数")
+    @TableId(value = "constant_liveness_verify_count")
+    private Integer constantLivenessVerifyCount;
+
+    @ApiModelProperty(value = "是否开启/强制客户端视频监控")
+    @TableId(value = "client_video_push")
+    private Integer clientVideoPush;
+
+    @ApiModelProperty(value = "是否开启客户端视频转录")
+    @TableId(value = "client_video_record")
+    private Integer clientVideoRecord;
+
+    @ApiModelProperty(value = "是否开启/强制微信小程序监控")
+    @TableId(value = "wxapp_video_push")
+    private Integer wxappVideoPush;
+
+    @ApiModelProperty(value = "是否开启微信小程序视频转录")
+    @TableId(value = "wxapp_video_record")
+    private Integer wxappVideoRecord;
+
+    @ApiModelProperty(value = "是否允许使用摄像头拍照答题")
+    @TableId(value = "camera_photo_upload")
+    private Integer cameraPhotoUpload;
+
+    @ApiModelProperty(value = "是否允许使用微信拍照答题")
+    @TableId(value = "wxapp_photo_upload")
+    private Integer wxappPhotoUpload;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getPrepareSeconds() {
+        return prepareSeconds;
+    }
+
+    public void setPrepareSeconds(Integer prepareSeconds) {
+        this.prepareSeconds = prepareSeconds;
+    }
+
+    public Date getMinStartTime() {
+        return minStartTime;
+    }
+
+    public void setMinStartTime(Date minStartTime) {
+        this.minStartTime = minStartTime;
+    }
+
+    public Date getMaxStartTime() {
+        return maxStartTime;
+    }
+
+    public void setMaxStartTime(Date maxStartTime) {
+        this.maxStartTime = maxStartTime;
+    }
+
+    public Integer getMaxDurationSeconds() {
+        return maxDurationSeconds;
+    }
+
+    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
+        this.maxDurationSeconds = maxDurationSeconds;
+    }
+
+    public Integer getMinDurationSeconds() {
+        return minDurationSeconds;
+    }
+
+    public void setMinDurationSeconds(Integer minDurationSeconds) {
+        this.minDurationSeconds = minDurationSeconds;
+    }
+
+    public Date getMaxFinishTime() {
+        return maxFinishTime;
+    }
+
+    public void setMaxFinishTime(Date maxFinishTime) {
+        this.maxFinishTime = maxFinishTime;
+    }
+
+    public Integer getExamCount() {
+        return examCount;
+    }
+
+    public void setExamCount(Integer examCount) {
+        this.examCount = examCount;
+    }
+
+    public Integer getBreakExpireSeconds() {
+        return breakExpireSeconds;
+    }
+
+    public void setBreakExpireSeconds(Integer breakExpireSeconds) {
+        this.breakExpireSeconds = breakExpireSeconds;
+    }
+
+    public Integer getBreakResumeCount() {
+        return breakResumeCount;
+    }
+
+    public void setBreakResumeCount(Integer breakResumeCount) {
+        this.breakResumeCount = breakResumeCount;
+    }
+
+    public Integer getEntryFaceVerify() {
+        return entryFaceVerify;
+    }
+
+    public void setEntryFaceVerify(Integer entryFaceVerify) {
+        this.entryFaceVerify = entryFaceVerify;
+    }
+
+    public Integer getEntryLivenessVerify() {
+        return entryLivenessVerify;
+    }
+
+    public void setEntryLivenessVerify(Integer entryLivenessVerify) {
+        this.entryLivenessVerify = entryLivenessVerify;
+    }
+
+    public Integer getConstantFaceVerify() {
+        return constantFaceVerify;
+    }
+
+    public void setConstantFaceVerify(Integer constantFaceVerify) {
+        this.constantFaceVerify = constantFaceVerify;
+    }
+
+    public Integer getConstantLivenessVerifyCount() {
+        return constantLivenessVerifyCount;
+    }
+
+    public void setConstantLivenessVerifyCount(Integer constantLivenessVerifyCount) {
+        this.constantLivenessVerifyCount = constantLivenessVerifyCount;
+    }
+
+    public Integer getClientVideoPush() {
+        return clientVideoPush;
+    }
+
+    public void setClientVideoPush(Integer clientVideoPush) {
+        this.clientVideoPush = clientVideoPush;
+    }
+
+    public Integer getClientVideoRecord() {
+        return clientVideoRecord;
+    }
+
+    public void setClientVideoRecord(Integer clientVideoRecord) {
+        this.clientVideoRecord = clientVideoRecord;
+    }
+
+    public Integer getWxappVideoPush() {
+        return wxappVideoPush;
+    }
+
+    public void setWxappVideoPush(Integer wxappVideoPush) {
+        this.wxappVideoPush = wxappVideoPush;
+    }
+
+    public Integer getWxappVideoRecord() {
+        return wxappVideoRecord;
+    }
+
+    public void setWxappVideoRecord(Integer wxappVideoRecord) {
+        this.wxappVideoRecord = wxappVideoRecord;
+    }
+
+    public Integer getCameraPhotoUpload() {
+        return cameraPhotoUpload;
+    }
+
+    public void setCameraPhotoUpload(Integer cameraPhotoUpload) {
+        this.cameraPhotoUpload = cameraPhotoUpload;
+    }
+
+    public Integer getWxappPhotoUpload() {
+        return wxappPhotoUpload;
+    }
+
+    public void setWxappPhotoUpload(Integer wxappPhotoUpload) {
+        this.wxappPhotoUpload = wxappPhotoUpload;
+    }
+}

+ 117 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamCourse.java

@@ -0,0 +1,117 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 考试科目公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class ExamCourse implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "考试ID")
+    @TableId(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "场次ID")
+    @TableId(value = "exam_activity_id")
+    private Long examActivityId;
+
+    @ApiModelProperty(value = "科目编码")
+    @TableId(value = "course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "科目名称")
+    @TableId(value = "course_name")
+    private String courseName;
+
+    @ApiModelProperty(value = "是否开启客观题乱序")
+    @TableId(value = "objective_shuffle")
+    private Integer objectiveShuffle;
+
+    @ApiModelProperty(value = "是否选项乱序,针对一个科目进行设置")
+    @TableId(value = "option_shuffle")
+    private Integer optionShuffle;
+
+    @ApiModelProperty(value = "所有绑定的考试试卷")
+    @TableId(value = "paper_ids")
+    private String paperIds;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getExamActivityId() {
+        return examActivityId;
+    }
+
+    public void setExamActivityId(Long examActivityId) {
+        this.examActivityId = examActivityId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCourseName() {
+        return courseName;
+    }
+
+    public void setCourseName(String courseName) {
+        this.courseName = courseName;
+    }
+
+    public Integer getObjectiveShuffle() {
+        return objectiveShuffle;
+    }
+
+    public void setObjectiveShuffle(Integer objectiveShuffle) {
+        this.objectiveShuffle = objectiveShuffle;
+    }
+
+    public Integer getOptionShuffle() {
+        return optionShuffle;
+    }
+
+    public void setOptionShuffle(Integer optionShuffle) {
+        this.optionShuffle = optionShuffle;
+    }
+
+    public String getPaperIds() {
+        return paperIds;
+    }
+
+    public void setPaperIds(String paperIds) {
+        this.paperIds = paperIds;
+    }
+}

+ 154 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamPaper.java

@@ -0,0 +1,154 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 考试试卷公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class ExamPaper implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "试卷名称")
+    @TableId(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "试卷总分")
+    @TableId(value = "total_score")
+    private Double totalScore;
+
+    @ApiModelProperty(value = "题干路径")
+    @TableId(value = "paper_path")
+    private String paperPath;
+
+    @ApiModelProperty(value = "标答路径")
+    @TableId(value = "standard_answer_path")
+    private String standardAnswerPath;
+
+    @ApiModelProperty(value = "解密密钥")
+    @TableId(value = "decrypt_secret")
+    private String decryptSecret;
+
+    @ApiModelProperty(value = "自动、手动、不加密")
+    @TableId(value = "encrypt_mode")
+    private Integer encryptMode;
+
+    @ApiModelProperty(value = "题干包含音视频")
+    @TableId(value = "has_video")
+    private Integer hasVideo;
+
+    @ApiModelProperty(value = "是否需要语音作答")
+    @TableId(value = "need_voice_answer")
+    private Integer needVoiceAnswer;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableId(value = "create_time")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableId(value = "update_time")
+    private Date updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Double getTotalScore() {
+        return totalScore;
+    }
+
+    public void setTotalScore(Double totalScore) {
+        this.totalScore = totalScore;
+    }
+
+    public String getPaperPath() {
+        return paperPath;
+    }
+
+    public void setPaperPath(String paperPath) {
+        this.paperPath = paperPath;
+    }
+
+    public String getStandardAnswerPath() {
+        return standardAnswerPath;
+    }
+
+    public void setStandardAnswerPath(String standardAnswerPath) {
+        this.standardAnswerPath = standardAnswerPath;
+    }
+
+    public String getDecryptSecret() {
+        return decryptSecret;
+    }
+
+    public void setDecryptSecret(String decryptSecret) {
+        this.decryptSecret = decryptSecret;
+    }
+
+    public Integer getEncryptMode() {
+        return encryptMode;
+    }
+
+    public void setEncryptMode(Integer encryptMode) {
+        this.encryptMode = encryptMode;
+    }
+
+    public Integer getHasVideo() {
+        return hasVideo;
+    }
+
+    public void setHasVideo(Integer hasVideo) {
+        this.hasVideo = hasVideo;
+    }
+
+    public Integer getNeedVoiceAnswer() {
+        return needVoiceAnswer;
+    }
+
+    public void setNeedVoiceAnswer(Integer needVoiceAnswer) {
+        this.needVoiceAnswer = needVoiceAnswer;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}

+ 165 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamStudent.java

@@ -0,0 +1,165 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Description: 考生公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class ExamStudent implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "批次id")
+    @TableId(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "场次id")
+    @TableId(value = "exam_activity_id")
+    private Long examActivityId;
+
+    @ApiModelProperty(value = "学生id")
+    @TableId(value = "student_id")
+    private Long studentId;
+
+    @ApiModelProperty(value = "科目代码")
+    @TableId(value = "course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "虚拟考场代码,考试唯一")
+    @TableId(value = "room_code")
+    private String roomCode;
+
+    @ApiModelProperty(value = "证件号,机构内唯一")
+    @TableId(value = "identity")
+    private String identity;
+
+    @ApiModelProperty(value = "姓名")
+    @TableId(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "扩展字段")
+    @TableId(value = "parameter")
+    private String parameter;
+
+    @ApiModelProperty(value = "剩余考试次数")
+    @TableId(value = "left_exam_count")
+    private Integer leftExamCount;
+
+    @ApiModelProperty(value = "当前考试记录ID")
+    @TableId(value = "current_record_id")
+    private Long currentRecordId;
+
+    @ApiModelProperty(value = "最终生效的记录ID")
+    @TableId(value = "select_record_id")
+    private Long selectRecordId;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public Long getExamActivityId() {
+        return examActivityId;
+    }
+
+    public void setExamActivityId(Long examActivityId) {
+        this.examActivityId = examActivityId;
+    }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getRoomCode() {
+        return roomCode;
+    }
+
+    public void setRoomCode(String roomCode) {
+        this.roomCode = roomCode;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getParameter() {
+        return parameter;
+    }
+
+    public void setParameter(String parameter) {
+        this.parameter = parameter;
+    }
+
+    public Integer getLeftExamCount() {
+        return leftExamCount;
+    }
+
+    public void setLeftExamCount(Integer leftExamCount) {
+        this.leftExamCount = leftExamCount;
+    }
+
+    public Long getCurrentRecordId() {
+        return currentRecordId;
+    }
+
+    public void setCurrentRecordId(Long currentRecordId) {
+        this.currentRecordId = currentRecordId;
+    }
+
+    public Long getSelectRecordId() {
+        return selectRecordId;
+    }
+
+    public void setSelectRecordId(Long selectRecordId) {
+        this.selectRecordId = selectRecordId;
+    }
+}

+ 154 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/common/Student.java

@@ -0,0 +1,154 @@
+package com.qmth.themis.business.entity.common;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Description: 学生档案公用 entity
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/7/7
+ */
+public class Student implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "机构ID")
+    @TableId(value = "org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "证件号")
+    @TableId(value = "identity")
+    private String identity;
+
+    @ApiModelProperty(value = "登陆密码,密文保存")
+    @TableId(value = "password")
+    private String password;
+
+    @ApiModelProperty(value = "身份证号")
+    @TableId(value = "idcard_number")
+    private String idcardNumber;
+
+    @ApiModelProperty(value = "手机号")
+    @TableId(value = "mobile_number")
+    private String mobileNumber;
+
+    @ApiModelProperty(value = "姓名")
+    @TableId(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "性别")
+    @TableId(value = "gender")
+    private Integer gender;
+
+    @ApiModelProperty(value = "底照保存地址")
+    @TableId(value = "base_photo_path")
+    private String basePhotoPath;
+
+    @ApiModelProperty(value = "创建时间")
+    @TableId(value = "create_time")
+    private Date createTime;
+
+    @ApiModelProperty(value = "更新时间")
+    @TableId(value = "update_time")
+    private Date updateTime;
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getOrgId() {
+        return orgId;
+    }
+
+    public void setOrgId(Long orgId) {
+        this.orgId = orgId;
+    }
+
+    public String getIdentity() {
+        return identity;
+    }
+
+    public void setIdentity(String identity) {
+        this.identity = identity;
+    }
+
+    public String getPassword() {
+        return password;
+    }
+
+    public void setPassword(String password) {
+        this.password = password;
+    }
+
+    public String getIdcardNumber() {
+        return idcardNumber;
+    }
+
+    public void setIdcardNumber(String idcardNumber) {
+        this.idcardNumber = idcardNumber;
+    }
+
+    public String getMobileNumber() {
+        return mobileNumber;
+    }
+
+    public void setMobileNumber(String mobileNumber) {
+        this.mobileNumber = mobileNumber;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public String getBasePhotoPath() {
+        return basePhotoPath;
+    }
+
+    public void setBasePhotoPath(String basePhotoPath) {
+        this.basePhotoPath = basePhotoPath;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getUpdateTime() {
+        return updateTime;
+    }
+
+    public void setUpdateTime(Date updateTime) {
+        this.updateTime = updateTime;
+    }
+}