Kaynağa Gözat

考务接口修改

wangliang 5 yıl önce
ebeveyn
işleme
6e0bef28d5
17 değiştirilmiş dosya ile 1249 ekleme ve 1287 silme
  1. 2 0
      themis-backend/src/main/java/com/qmth/themis/backend/api/SysController.java
  2. 2 0
      themis-backend/src/main/java/com/qmth/themis/backend/api/TBOrgController.java
  3. 11 1
      themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java
  4. 34 0
      themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java
  5. 524 4
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExam.java
  6. 101 2
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamActivity.java
  7. 118 2
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamCourse.java
  8. 183 2
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamPaper.java
  9. 159 2
      themis-business/src/main/java/com/qmth/themis/business/entity/TEExamStudent.java
  10. 111 2
      themis-business/src/main/java/com/qmth/themis/business/entity/TEStudent.java
  11. 0 538
      themis-business/src/main/java/com/qmth/themis/business/entity/common/Exam.java
  12. 0 113
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamActivity.java
  13. 0 130
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamCourse.java
  14. 0 195
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamPaper.java
  15. 0 171
      themis-business/src/main/java/com/qmth/themis/business/entity/common/ExamStudent.java
  16. 0 123
      themis-business/src/main/java/com/qmth/themis/business/entity/common/Student.java
  17. 4 2
      themis-common/src/main/java/com/qmth/themis/common/enums/ExceptionResultEnum.java

+ 2 - 0
themis-backend/src/main/java/com/qmth/themis/backend/api/SysController.java

@@ -15,6 +15,7 @@ import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import io.swagger.annotations.*;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -88,6 +89,7 @@ public class SysController {
 
     @ApiOperation(value = "上传文件接口")
     @RequestMapping(value = "/file/upload", method = RequestMethod.POST)
+    @Transactional
     @ApiResponses({@ApiResponse(code = 200, message = "{\"id\":0}", response = Result.class)})
     public Result fileUpload(@ApiParam(value = "上传文件", required = true) @RequestParam MultipartFile file) throws IOException {
         HttpServletRequest request = ServletUtil.getRequest();

+ 2 - 0
themis-backend/src/main/java/com/qmth/themis/backend/api/TBOrgController.java

@@ -12,6 +12,7 @@ import com.qmth.themis.common.contanst.Constants;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import io.swagger.annotations.*;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -70,6 +71,7 @@ public class TBOrgController {
     //    @CacheEvict(value = "org_cache", key = "'orgCacheQuery'")
     @ApiOperation(value = "机构新增/编辑接口")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @Transactional
     @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result save(@ApiParam(value = "机构信息", required = true) @RequestBody TBOrg tbOrg) {
         HttpServletRequest request = ServletUtil.getRequest();

+ 11 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java

@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.google.gson.Gson;
 import com.qmth.themis.backend.config.DictionaryConfig;
 import com.qmth.themis.backend.util.ServletUtil;
+import com.qmth.themis.business.annotation.ApiJsonObject;
+import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.AuthDto;
 import com.qmth.themis.business.entity.TBSession;
@@ -523,7 +525,15 @@ public class TBUserController {
     @RequestMapping(value = "/save", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     @Transactional
-    public Result save(@ApiParam(value = "机构信息", required = true) @RequestBody Map<String, Object> mapParameter) {
+    public Result save(@ApiJsonObject(name = "save", value = {
+            @ApiJsonProperty(key = "id", type = "long", example = "1", description = "新增不需要主键"),
+            @ApiJsonProperty(key = "loginName", description = "登录名,新增必须"),
+            @ApiJsonProperty(key = "name", description = "姓名,新增必须"),
+            @ApiJsonProperty(key = "password", description = "密码,新增必须"),
+            @ApiJsonProperty(key = "enable", type = "int", example = "1", description = "是否启用"),
+            @ApiJsonProperty(key = "mobileNumber", description = "手机号"),
+            @ApiJsonProperty(key = "roles", description = "角色")
+    }) @ApiParam(value = "用户信息", required = true) @RequestBody Map<String, Object> mapParameter) {
         Gson gson = new Gson();
         TBUser tbUser = gson.fromJson(gson.toJson(mapParameter), TBUser.class);
         List<String> roleList = (List<String>) mapParameter.get("role");

+ 34 - 0
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java

@@ -1,9 +1,12 @@
 package com.qmth.themis.backend.api;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.qmth.themis.backend.util.ServletUtil;
+import com.qmth.themis.business.annotation.ApiJsonObject;
+import com.qmth.themis.business.annotation.ApiJsonProperty;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.entity.TBOrg;
 import com.qmth.themis.business.entity.TBUser;
@@ -12,11 +15,13 @@ import com.qmth.themis.business.enums.FieldUniqueEnum;
 import com.qmth.themis.business.service.TEExamService;
 import com.qmth.themis.business.util.JacksonUtil;
 import com.qmth.themis.common.contanst.Constants;
+import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import io.swagger.annotations.*;
 import org.springframework.dao.DuplicateKeyException;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -42,6 +47,7 @@ public class TEExamController {
 
     @ApiOperation(value = "考试批次修改/新增接口")
     @RequestMapping(value = "/save", method = RequestMethod.POST)
+    @Transactional
     @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
     public Result save(@ApiParam(value = "考试批次信息", required = true) @RequestBody TEExam teExam) {
         try {
@@ -102,4 +108,32 @@ public class TEExamController {
         map.put(SystemConstant.RECORDS, teExamIPage);
         return ResultUtil.ok(map);
     }
+
+    @ApiOperation(value = "考试批次停用/启用接口")
+    @RequestMapping(value = "/toggle", method = RequestMethod.POST)
+    @ApiResponses({@ApiResponse(code = 200, message = "{\"success\":true}", response = Result.class)})
+    @Transactional
+    public Result toggle(@ApiJsonObject(name = "toggle", value = {
+            @ApiJsonProperty(key = "id", type = "long", example = "1", description = "考试批次id"),
+            @ApiJsonProperty(key = "enable", type = "int", example = "1", description = "是否启用")
+    }) @ApiParam(value = "考试批次信息", required = true) @RequestBody Map<String, Object> mapParameter) {
+        if (Objects.isNull(mapParameter.get("id")) || Objects.equals(mapParameter.get("id"), "")) {
+            throw new BusinessException(ExceptionResultEnum.EXAM_ID_IS_NULL);
+        }
+        Long examId = Long.parseLong(String.valueOf(mapParameter.get("id")));
+        if (Objects.isNull(mapParameter.get("enable")) || Objects.equals(mapParameter.get("enable"), "")) {
+            throw new BusinessException(ExceptionResultEnum.ENABLE_IS_NULL);
+        }
+        Integer enable = Integer.parseInt(String.valueOf(mapParameter.get("enable")));
+        TEExam teExam = teExamService.getById(examId);
+        if (Objects.isNull(teExam)) {
+            throw new BusinessException(ExceptionResultEnum.EXAM_NO);
+        }
+        HttpServletRequest request = ServletUtil.getRequest();
+        TBUser tbUser = (TBUser) ServletUtil.getRequestAccount(request);
+        teExam.setEnable(enable);
+        teExam.setUpdateId(tbUser.getId());
+        teExamService.updateById(teExam);
+        return ResultUtil.ok(JSONObject.parseObject(SystemConstant.SUCCESS));
+    }
 }

+ 524 - 4
themis-business/src/main/java/com/qmth/themis/business/entity/TEExam.java

@@ -1,11 +1,10 @@
 package com.qmth.themis.business.entity;
 
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.qmth.themis.business.entity.common.Exam;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.themis.business.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -16,6 +15,527 @@ import java.util.Date;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam", description = "考试批次")
-public class TEExam extends Exam {
+public class TEExam extends BaseEntity {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "机构ID")
+    @TableField(value = "org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "批次编码,机构唯一")
+    @TableField(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "批次名称")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "批次标注,可用于多个考试批次归类")
+    @TableField(value = "tag")
+    private String tag;
+
+    @ApiModelProperty(value = "批次开始时间")
+    @TableField(value = "start_time")
+    private Date startTime;
+
+    @ApiModelProperty(value = "批次结束时间")
+    @TableField(value = "end_time")
+    private Date endTime;
+
+    @ApiModelProperty(value = "状态")
+    @TableField(value = "status")
+    private Integer status;
+
+    @ApiModelProperty(value = "考试口令")
+    @TableField(value = "short_code")
+    private String shortCode;
+
+    @ApiModelProperty(value = "提前多长时间开始候考(分钟)")
+    @TableField(value = "prepare_seconds")
+    private Integer prepareSeconds;
+
+    @ApiModelProperty(value = "最短考试时长,相当于考试冻结时间(分钟)")
+    @TableField(value = "min_duration_seconds")
+    private Integer minDurationSeconds;
+
+    @ApiModelProperty(value = "考前须知")
+    @TableField(value = "pre_notice")
+    private String preNotice;
+
+    @ApiModelProperty(value = "考试须知阅读时长(秒)")
+    @TableField(value = "pre_notice_stay_seconds")
+    private Integer preNoticeStaySeconds;
+
+    @ApiModelProperty(value = "考后说明,针对一个场次进行设置")
+    @TableField(value = "post_notice")
+    private String postNotice;
+
+    @ApiModelProperty(value = "允许考试次数")
+    @TableField(value = "exam_count")
+    private Integer examCount;
+
+    @ApiModelProperty(value = "断点失效时间(秒)")
+    @TableField(value = "break_expire_seconds")
+    private Integer breakExpireSeconds;
+
+    @ApiModelProperty(value = "断点续考次数")
+    @TableField(value = "break_resume_count")
+    private Integer breakResumeCount;
+
+    @ApiModelProperty(value = "是否开启/强制客户端视频监控,0:不开启,1:开启,2:强制开启")
+    @TableField(value = "client_video_push")
+    private Integer clientVideoPush;
+
+    @ApiModelProperty(value = "是否开启客户端视频转录,0:不开启,1:开启")
+    @TableField(value = "client_video_record")
+    private Integer clientVideoRecord;
+
+    @ApiModelProperty(value = "是否开启/强制微信小程序监控,0:不开启,1:开启,2:强制开启")
+    @TableField(value = "wxapp_video_push")
+    private Integer wxappVideoPush;
+
+    @ApiModelProperty(value = "是否开启微信小程序视频转录,0:不开启,1:开启")
+    @TableField(value = "wxapp_video_record")
+    private Integer wxappVideoRecord;
+
+    @ApiModelProperty(value = "是否允许使用摄像头拍照答题,0:不允许,1:允许")
+    @TableField(value = "camera_photo_upload")
+    private Integer cameraPhotoUpload;
+
+    @ApiModelProperty(value = "是否允许使用微信拍照答题,0:不允许,1:允许")
+    @TableField(value = "wxapp_photo_upload")
+    private Integer wxappPhotoUpload;
+
+    @ApiModelProperty(value = "重考是否审批,0:不审批,1:审批")
+    @TableField(value = "reexam_auditing")
+    private Integer reexamAuditing;
+
+    @ApiModelProperty(value = "交卷后是否显示客观得分,0:不显示,1:显示")
+    @TableField(value = "show_objective_score")
+    private Integer showObjectiveScore;
+
+    @ApiModelProperty(value = "模式,0:集中统一,1:随到随考")
+    @TableField(value = "mode")
+    private Integer mode;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @TableField(value = "enable")
+    private Integer enable;
+
+    @ApiModelProperty(value = "是否归档,0:不归档,1:归档")
+    @TableField(value = "archived")
+    private Integer archived;
+
+    @ApiModelProperty(value = "允许开考开放时长(分钟),相当于迟到时间")
+    @TableField(value = "opening_seconds")
+    private Integer openingSeconds;
+
+    @ApiModelProperty(value = "最大考试时长(分钟)")
+    @TableField(value = "max_duration_seconds")
+    private Integer maxDurationSeconds;
+
+    @ApiModelProperty(value = "是否在结束时间集中强制收卷,0:不强制,1:强制")
+    @TableField(value = "force_finish")
+    private Integer forceFinish;
+
+    @ApiModelProperty(value = "开考身份验证策略,0:关闭,1:非强制人脸验证,2:强制人脸验证,3:活体验证")
+    @TableField(value = "entry_authentication_policy")
+    private Integer entryAuthenticationPolicy;
+
+    @ApiModelProperty(value = "考试过程中人脸检测是否开启,0:不开启,1:开启")
+    @TableField(value = "in_process_face_verify")
+    private Integer inProcessFaceVerify;
+
+    @ApiModelProperty(value = "考试过程中人脸检测是否忽略陌生人 ,0:不忽略,1:忽略")
+    @TableField(value = "in_process_face_stranger_ignore")
+    private Integer inProcessFaceStrangerIgnore;
+
+    @ApiModelProperty(value = "考试过程中是否启用活体检测 ,0:不启用,1:启用")
+    @TableField(value = "in_process_liveness_verify")
+    private Integer inProcessLivenessVerify;
+
+    @ApiModelProperty(value = "考试过程中活体检测间隔时间")
+    @TableField(value = "in_process_liveness_interval_seconds")
+    private Integer inProcessLivenessIntervalSeconds;
+
+    @ApiModelProperty(value = "考试过程中活体检测重试次数")
+    @TableField(value = "in_process_liveness_retry_count")
+    private Integer inProcessLivenessRetryCount;
+
+    @ApiModelProperty(value = "考试过程中活体检测结果判定规则,0:任意一次通过,1:全部都要通过,2:通过次数大于失败次数")
+    @TableField(value = "in_process_liveness_judge_policy")
+    private Integer inProcessLivenessJudgePolicy;
+
+    @ApiModelProperty(value = "多次考试记录的选择逻辑,0:全部阅卷后取最高分,1:客观分最高,3:最后一次提交")
+    @TableField(value = "record_select_strategy")
+    private Integer recordSelectStrategy;
+
+    @ApiModelProperty(value = "是否IP段限制,0:不允许,1:允许")
+    @TableField(value = "enable_ip_limit")
+    private Integer enableIpLimit;
+
+    @ApiModelProperty(value = "允许IP段")
+    @TableField(value = "ip_allow")
+    private String ipAllow;
+
+    @ApiModelProperty(value = "算分状态,0:从未算分,1:正在算分,2:算分完成")
+    @TableField(value = "score_status")
+    private Integer scoreStatus;
+
+    @ApiModelProperty(value = "是否启用开考口令,0:不启用,1:启用")
+    @TableField(value = "enable_short_code")
+    private Integer enableShortCode;
+
+    @ApiModelProperty(value = "是否允许断点续考,0:不允许,1:允许")
+    @TableField(value = "enable_break")
+    private Integer enableBreak;
+
+    public Integer getEnableBreak() {
+        return enableBreak;
+    }
+
+    public void setEnableBreak(Integer enableBreak) {
+        this.enableBreak = enableBreak;
+    }
+
+    public Integer getEnableShortCode() {
+        return enableShortCode;
+    }
+
+    public void setEnableShortCode(Integer enableShortCode) {
+        this.enableShortCode = enableShortCode;
+    }
+
+    public Integer getMode() {
+        return mode;
+    }
+
+    public void setMode(Integer mode) {
+        this.mode = mode;
+    }
+
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
+    public Integer getArchived() {
+        return archived;
+    }
+
+    public void setArchived(Integer archived) {
+        this.archived = archived;
+    }
+
+    public Integer getOpeningSeconds() {
+        return openingSeconds;
+    }
+
+    public void setOpeningSeconds(Integer openingSeconds) {
+        this.openingSeconds = openingSeconds;
+    }
+
+    public Integer getMaxDurationSeconds() {
+        return maxDurationSeconds;
+    }
+
+    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
+        this.maxDurationSeconds = maxDurationSeconds;
+    }
+
+    public Integer getForceFinish() {
+        return forceFinish;
+    }
+
+    public void setForceFinish(Integer forceFinish) {
+        this.forceFinish = forceFinish;
+    }
+
+    public Integer getEntryAuthenticationPolicy() {
+        return entryAuthenticationPolicy;
+    }
+
+    public void setEntryAuthenticationPolicy(Integer entryAuthenticationPolicy) {
+        this.entryAuthenticationPolicy = entryAuthenticationPolicy;
+    }
+
+    public Integer getInProcessFaceVerify() {
+        return inProcessFaceVerify;
+    }
+
+    public void setInProcessFaceVerify(Integer inProcessFaceVerify) {
+        this.inProcessFaceVerify = inProcessFaceVerify;
+    }
+
+    public Integer getInProcessFaceStrangerIgnore() {
+        return inProcessFaceStrangerIgnore;
+    }
+
+    public void setInProcessFaceStrangerIgnore(Integer inProcessFaceStrangerIgnore) {
+        this.inProcessFaceStrangerIgnore = inProcessFaceStrangerIgnore;
+    }
+
+    public Integer getInProcessLivenessVerify() {
+        return inProcessLivenessVerify;
+    }
+
+    public void setInProcessLivenessVerify(Integer inProcessLivenessVerify) {
+        this.inProcessLivenessVerify = inProcessLivenessVerify;
+    }
+
+    public Integer getInProcessLivenessIntervalSeconds() {
+        return inProcessLivenessIntervalSeconds;
+    }
+
+    public void setInProcessLivenessIntervalSeconds(Integer inProcessLivenessIntervalSeconds) {
+        this.inProcessLivenessIntervalSeconds = inProcessLivenessIntervalSeconds;
+    }
+
+    public Integer getInProcessLivenessRetryCount() {
+        return inProcessLivenessRetryCount;
+    }
+
+    public void setInProcessLivenessRetryCount(Integer inProcessLivenessRetryCount) {
+        this.inProcessLivenessRetryCount = inProcessLivenessRetryCount;
+    }
+
+    public Integer getInProcessLivenessJudgePolicy() {
+        return inProcessLivenessJudgePolicy;
+    }
+
+    public void setInProcessLivenessJudgePolicy(Integer inProcessLivenessJudgePolicy) {
+        this.inProcessLivenessJudgePolicy = inProcessLivenessJudgePolicy;
+    }
+
+    public Integer getRecordSelectStrategy() {
+        return recordSelectStrategy;
+    }
+
+    public void setRecordSelectStrategy(Integer recordSelectStrategy) {
+        this.recordSelectStrategy = recordSelectStrategy;
+    }
+
+    public Integer getEnableIpLimit() {
+        return enableIpLimit;
+    }
+
+    public void setEnableIpLimit(Integer enableIpLimit) {
+        this.enableIpLimit = enableIpLimit;
+    }
+
+    public String getIpAllow() {
+        return ipAllow;
+    }
+
+    public void setIpAllow(String ipAllow) {
+        this.ipAllow = ipAllow;
+    }
+
+    public Integer getScoreStatus() {
+        return scoreStatus;
+    }
+
+    public void setScoreStatus(Integer scoreStatus) {
+        this.scoreStatus = scoreStatus;
+    }
+
+    public static long getSerialVersionUID() {
+        return serialVersionUID;
+    }
+
+    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 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 getShowObjectiveScore() {
+        return showObjectiveScore;
+    }
+
+    public void setShowObjectiveScore(Integer showObjectiveScore) {
+        this.showObjectiveScore = showObjectiveScore;
+    }
 
 }

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

@@ -1,7 +1,11 @@
 package com.qmth.themis.business.entity;
 
-import com.qmth.themis.business.entity.common.ExamActivity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.themis.business.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
 
 /**
  * @Description: 考试场次
@@ -11,6 +15,101 @@ import io.swagger.annotations.ApiModel;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_activity", description = "考试场次")
-public class TEExamActivity extends ExamActivity {
+public class TEExamActivity extends BaseEntity {
+
+    @ApiModelProperty(value = "批次id")
+    @TableField(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "场次代码")
+    @TableField(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
+    @TableField(value = "prepare_seconds")
+    private Integer prepareSeconds;
+
+    @ApiModelProperty(value = "最大考试时长")
+    @TableField(value = "max_duration_seconds")
+    private Integer maxDurationSeconds;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @TableField(value = "enable")
+    private Integer enable;
+
+    @ApiModelProperty(value = "允许开考时长(秒)")
+    @TableField(value = "opening_seconds")
+    private Integer openingSeconds;
+
+    @ApiModelProperty(value = "开考时间")
+    @TableField(value = "start_time")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结束时间")
+    @TableField(value = "finish_time")
+    private Date finishTime;
+
+    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 Integer getPrepareSeconds() {
+        return prepareSeconds;
+    }
+
+    public void setPrepareSeconds(Integer prepareSeconds) {
+        this.prepareSeconds = prepareSeconds;
+    }
+
+    public Integer getMaxDurationSeconds() {
+        return maxDurationSeconds;
+    }
+
+    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
+        this.maxDurationSeconds = maxDurationSeconds;
+    }
+
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
+    public Integer getOpeningSeconds() {
+        return openingSeconds;
+    }
+
+    public void setOpeningSeconds(Integer openingSeconds) {
+        this.openingSeconds = openingSeconds;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getFinishTime() {
+        return finishTime;
+    }
 
+    public void setFinishTime(Date finishTime) {
+        this.finishTime = finishTime;
+    }
 }

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

@@ -1,7 +1,11 @@
 package com.qmth.themis.business.entity;
 
-import com.qmth.themis.business.entity.common.ExamCourse;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
 
 /**
  * @Description: 考试科目
@@ -11,6 +15,118 @@ import io.swagger.annotations.ApiModel;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_course", description = "考试科目")
-public class TEExamCourse extends ExamCourse {
+public class TEExamCourse implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty(value = "主键")
+    @TableId(value = "id")
+    private Long id;
+
+    @ApiModelProperty(value = "考试ID")
+    @TableField(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "科目编码")
+    @TableField(value = "course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "科目名称")
+    @TableField(value = "course_name")
+    private String courseName;
+
+    @ApiModelProperty(value = "是否开启客观题乱序,0:不开启,1:开启")
+    @TableField(value = "objective_shuffle")
+    private Integer objectiveShuffle;
+
+    @ApiModelProperty(value = "是否选项乱序,针对一个科目进行设置,0:不开启,1:开启")
+    @TableField(value = "option_shuffle")
+    private Integer optionShuffle;
+
+    @ApiModelProperty(value = "已绑定试卷数量")
+    @TableField(value = "paper_count")
+    private Integer paperCount;
+
+    @ApiModelProperty(value = "是否已补齐标答,0:否,1:是")
+    @TableField(value = "has_answer")
+    private Integer hasAnswer;
+
+    @ApiModelProperty(value = "音频播放次数")
+    @TableField(value = "audio_play_time")
+    private Integer audioPlayTime;
+
+    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 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 Integer getPaperCount() {
+        return paperCount;
+    }
+
+    public void setPaperCount(Integer paperCount) {
+        this.paperCount = paperCount;
+    }
+
+    public Integer getHasAnswer() {
+        return hasAnswer;
+    }
+
+    public void setHasAnswer(Integer hasAnswer) {
+        this.hasAnswer = hasAnswer;
+    }
+
+    public Integer getAudioPlayTime() {
+        return audioPlayTime;
+    }
 
+    public void setAudioPlayTime(Integer audioPlayTime) {
+        this.audioPlayTime = audioPlayTime;
+    }
 }

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

@@ -1,7 +1,9 @@
 package com.qmth.themis.business.entity;
 
-import com.qmth.themis.business.entity.common.ExamPaper;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.themis.business.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Description: 考试试卷
@@ -11,6 +13,185 @@ import io.swagger.annotations.ApiModel;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_paper", description = "考试试卷")
-public class TEExamPaper extends ExamPaper {
+public class TEExamPaper extends BaseEntity {
 
+    @ApiModelProperty(value = "试卷名称")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "试卷总分")
+    @TableField(value = "total_score")
+    private Double totalScore;
+
+    @ApiModelProperty(value = "题干路径")
+    @TableField(value = "paper_path")
+    private String paperPath;
+
+    @ApiModelProperty(value = "解密密钥")
+    @TableField(value = "decrypt_secret")
+    private String decryptSecret;
+
+    @ApiModelProperty(value = "0:自动,1:手动,2:不加密")
+    @TableField(value = "encrypt_mode")
+    private Integer encryptMode;
+
+    @ApiModelProperty(value = "是否需要语音作答,0:不需要,1:需要")
+    @TableField(value = "need_voice_answer")
+    private Integer needVoiceAnswer;
+
+    @ApiModelProperty(value = "批次id")
+    @TableField(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "科目编码")
+    @TableField(value = "course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "试卷编码")
+    @TableField(value = "code")
+    private String code;
+
+    @ApiModelProperty(value = "标答路径")
+    @TableField(value = "answer_path")
+    private String answerPath;
+
+    @ApiModelProperty(value = "题干包含音频")
+    @TableField(value = "has_audio")
+    private Integer hasAudio;
+
+    @ApiModelProperty(value = "调卷比例")
+    @TableField(value = "weight")
+    private Double weight;
+
+    @ApiModelProperty(value = "音频播放次数")
+    @TableField(value = "audio_play_time")
+    private Integer audioPlayTime;
+
+    @ApiModelProperty(value = "结构文件路径")
+    @TableField(value = "struct_path")
+    private String structPath;
+
+    @ApiModelProperty(value = "解密向量")
+    @TableField(value = "decrypt_vector")
+    private String decryptVector;
+
+    public String getStructPath() {
+        return structPath;
+    }
+
+    public void setStructPath(String structPath) {
+        this.structPath = structPath;
+    }
+
+    public String getDecryptVector() {
+        return decryptVector;
+    }
+
+    public void setDecryptVector(String decryptVector) {
+        this.decryptVector = decryptVector;
+    }
+
+    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 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 getNeedVoiceAnswer() {
+        return needVoiceAnswer;
+    }
+
+    public void setNeedVoiceAnswer(Integer needVoiceAnswer) {
+        this.needVoiceAnswer = needVoiceAnswer;
+    }
+
+    public Long getExamId() {
+        return examId;
+    }
+
+    public void setExamId(Long examId) {
+        this.examId = examId;
+    }
+
+    public String getCourseCode() {
+        return courseCode;
+    }
+
+    public void setCourseCode(String courseCode) {
+        this.courseCode = courseCode;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+
+    public String getAnswerPath() {
+        return answerPath;
+    }
+
+    public void setAnswerPath(String answerPath) {
+        this.answerPath = answerPath;
+    }
+
+    public Integer getHasAudio() {
+        return hasAudio;
+    }
+
+    public void setHasAudio(Integer hasAudio) {
+        this.hasAudio = hasAudio;
+    }
+
+    public Double getWeight() {
+        return weight;
+    }
+
+    public void setWeight(Double weight) {
+        this.weight = weight;
+    }
+
+    public Integer getAudioPlayTime() {
+        return audioPlayTime;
+    }
+
+    public void setAudioPlayTime(Integer audioPlayTime) {
+        this.audioPlayTime = audioPlayTime;
+    }
 }

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

@@ -1,7 +1,9 @@
 package com.qmth.themis.business.entity;
 
-import com.qmth.themis.business.entity.common.ExamStudent;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.themis.business.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Description: 考生库
@@ -11,6 +13,161 @@ import io.swagger.annotations.ApiModel;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_exam_student", description = "考生库")
-public class TEExamStudent extends ExamStudent {
+public class TEExamStudent extends BaseEntity {
 
+    @ApiModelProperty(value = "批次id")
+    @TableField(value = "exam_id")
+    private Long examId;
+
+    @ApiModelProperty(value = "场次id")
+    @TableField(value = "exam_activity_id")
+    private Long examActivityId;
+
+    @ApiModelProperty(value = "学生id")
+    @TableField(value = "student_id")
+    private Long studentId;
+
+    @ApiModelProperty(value = "科目代码")
+    @TableField(value = "course_code")
+    private String courseCode;
+
+    @ApiModelProperty(value = "虚拟考场代码,考试唯一")
+    @TableField(value = "room_code")
+    private String roomCode;
+
+    @ApiModelProperty(value = "证件号,机构内唯一")
+    @TableField(value = "identity")
+    private String identity;
+
+    @ApiModelProperty(value = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "扩展字段")
+    @TableField(value = "parameter")
+    private String parameter;
+
+    @ApiModelProperty(value = "剩余考试次数")
+    @TableField(value = "left_exam_count")
+    private Integer leftExamCount;
+
+    @ApiModelProperty(value = "当前考试记录ID")
+    @TableField(value = "current_record_id")
+    private Long currentRecordId;
+
+    @ApiModelProperty(value = "最终生效的记录ID")
+    @TableField(value = "select_record_id")
+    private Long selectRecordId;
+
+    @ApiModelProperty(value = "考场名称")
+    @TableField(value = "room_name")
+    private String roomName;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @TableField(value = "enable")
+    private Integer enable;
+
+    public String getRoomName() {
+        return roomName;
+    }
+
+    public void setRoomName(String roomName) {
+        this.roomName = roomName;
+    }
+
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
+    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;
+    }
 }

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

@@ -1,7 +1,9 @@
 package com.qmth.themis.business.entity;
 
-import com.qmth.themis.business.entity.common.Student;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.qmth.themis.business.base.BaseEntity;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Description: 学生档案
@@ -11,6 +13,113 @@ import io.swagger.annotations.ApiModel;
  * @Date: 2020/6/25
  */
 @ApiModel(value = "t_e_student", description = "学生档案")
-public class TEStudent extends Student {
+public class TEStudent extends BaseEntity {
 
+    @ApiModelProperty(value = "机构ID")
+    @TableField(value = "org_id")
+    private Long orgId;
+
+    @ApiModelProperty(value = "证件号")
+    @TableField(value = "identity")
+    private String identity;
+
+    @ApiModelProperty(value = "登陆密码,密文保存")
+    @TableField(value = "password")
+    private String password;
+
+    @ApiModelProperty(value = "身份证号")
+    @TableField(value = "idcard_number")
+    private String idcardNumber;
+
+    @ApiModelProperty(value = "手机号")
+    @TableField(value = "mobile_number")
+    private String mobileNumber;
+
+    @ApiModelProperty(value = "姓名")
+    @TableField(value = "name")
+    private String name;
+
+    @ApiModelProperty(value = "性别")
+    @TableField(value = "gender")
+    private Integer gender;
+
+    @ApiModelProperty(value = "底照保存地址")
+    @TableField(value = "base_photo_path")
+    private String basePhotoPath;
+
+    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
+    @TableField(value = "enable")
+    private Integer enable;
+
+    public Integer getEnable() {
+        return enable;
+    }
+
+    public void setEnable(Integer enable) {
+        this.enable = enable;
+    }
+
+    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;
+    }
 }

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

@@ -1,538 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.qmth.themis.business.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.Date;
-
-/**
- * @Description: 考试批次公用 entity
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/7
- */
-public class Exam extends BaseEntity {
-    private static final long serialVersionUID = 1L;
-
-    @ApiModelProperty(value = "机构ID")
-    @TableField(value = "org_id")
-    private Long orgId;
-
-    @ApiModelProperty(value = "批次编码,机构唯一")
-    @TableField(value = "code")
-    private String code;
-
-    @ApiModelProperty(value = "批次名称")
-    @TableField(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "批次标注,可用于多个考试批次归类")
-    @TableField(value = "tag")
-    private String tag;
-
-    @ApiModelProperty(value = "批次开始时间")
-    @TableField(value = "start_time")
-    private Date startTime;
-
-    @ApiModelProperty(value = "批次结束时间")
-    @TableField(value = "end_time")
-    private Date endTime;
-
-    @ApiModelProperty(value = "状态")
-    @TableField(value = "status")
-    private Integer status;
-
-    @ApiModelProperty(value = "考试口令")
-    @TableField(value = "short_code")
-    private String shortCode;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(分钟)")
-    @TableField(value = "prepare_seconds")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最短考试时长,相当于考试冻结时间(分钟)")
-    @TableField(value = "min_duration_seconds")
-    private Integer minDurationSeconds;
-
-    @ApiModelProperty(value = "考前须知")
-    @TableField(value = "pre_notice")
-    private String preNotice;
-
-    @ApiModelProperty(value = "考试须知阅读时长(秒)")
-    @TableField(value = "pre_notice_stay_seconds")
-    private Integer preNoticeStaySeconds;
-
-    @ApiModelProperty(value = "考后说明,针对一个场次进行设置")
-    @TableField(value = "post_notice")
-    private String postNotice;
-
-    @ApiModelProperty(value = "允许考试次数")
-    @TableField(value = "exam_count")
-    private Integer examCount;
-
-    @ApiModelProperty(value = "断点失效时间(秒)")
-    @TableField(value = "break_expire_seconds")
-    private Integer breakExpireSeconds;
-
-    @ApiModelProperty(value = "断点续考次数")
-    @TableField(value = "break_resume_count")
-    private Integer breakResumeCount;
-
-    @ApiModelProperty(value = "是否开启/强制客户端视频监控,0:不开启,1:开启,2:强制开启")
-    @TableField(value = "client_video_push")
-    private Integer clientVideoPush;
-
-    @ApiModelProperty(value = "是否开启客户端视频转录,0:不开启,1:开启")
-    @TableField(value = "client_video_record")
-    private Integer clientVideoRecord;
-
-    @ApiModelProperty(value = "是否开启/强制微信小程序监控,0:不开启,1:开启,2:强制开启")
-    @TableField(value = "wxapp_video_push")
-    private Integer wxappVideoPush;
-
-    @ApiModelProperty(value = "是否开启微信小程序视频转录,0:不开启,1:开启")
-    @TableField(value = "wxapp_video_record")
-    private Integer wxappVideoRecord;
-
-    @ApiModelProperty(value = "是否允许使用摄像头拍照答题,0:不允许,1:允许")
-    @TableField(value = "camera_photo_upload")
-    private Integer cameraPhotoUpload;
-
-    @ApiModelProperty(value = "是否允许使用微信拍照答题,0:不允许,1:允许")
-    @TableField(value = "wxapp_photo_upload")
-    private Integer wxappPhotoUpload;
-
-    @ApiModelProperty(value = "重考是否审批,0:不审批,1:审批")
-    @TableField(value = "reexam_auditing")
-    private Integer reexamAuditing;
-
-    @ApiModelProperty(value = "交卷后是否显示客观得分,0:不显示,1:显示")
-    @TableField(value = "show_objective_score")
-    private Integer showObjectiveScore;
-
-    @ApiModelProperty(value = "模式,0:集中统一,1:随到随考")
-    @TableField(value = "mode")
-    private Integer mode;
-
-    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
-    @TableField(value = "enable")
-    private Integer enable;
-
-    @ApiModelProperty(value = "是否归档,0:不归档,1:归档")
-    @TableField(value = "archived")
-    private Integer archived;
-
-    @ApiModelProperty(value = "允许开考开放时长(分钟),相当于迟到时间")
-    @TableField(value = "opening_seconds")
-    private Integer openingSeconds;
-
-    @ApiModelProperty(value = "最大考试时长(分钟)")
-    @TableField(value = "max_duration_seconds")
-    private Integer maxDurationSeconds;
-
-    @ApiModelProperty(value = "是否在结束时间集中强制收卷,0:不强制,1:强制")
-    @TableField(value = "force_finish")
-    private Integer forceFinish;
-
-    @ApiModelProperty(value = "开考身份验证策略,0:关闭,1:非强制人脸验证,2:强制人脸验证,3:活体验证")
-    @TableField(value = "entry_authentication_policy")
-    private Integer entryAuthenticationPolicy;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否开启,0:不开启,1:开启")
-    @TableField(value = "in_process_face_verify")
-    private Integer inProcessFaceVerify;
-
-    @ApiModelProperty(value = "考试过程中人脸检测是否忽略陌生人 ,0:不忽略,1:忽略")
-    @TableField(value = "in_process_face_stranger_ignore")
-    private Integer inProcessFaceStrangerIgnore;
-
-    @ApiModelProperty(value = "考试过程中是否启用活体检测 ,0:不启用,1:启用")
-    @TableField(value = "in_process_liveness_verify")
-    private Integer inProcessLivenessVerify;
-
-    @ApiModelProperty(value = "考试过程中活体检测间隔时间")
-    @TableField(value = "in_process_liveness_interval_seconds")
-    private Integer inProcessLivenessIntervalSeconds;
-
-    @ApiModelProperty(value = "考试过程中活体检测重试次数")
-    @TableField(value = "in_process_liveness_retry_count")
-    private Integer inProcessLivenessRetryCount;
-
-    @ApiModelProperty(value = "考试过程中活体检测结果判定规则,0:任意一次通过,1:全部都要通过,2:通过次数大于失败次数")
-    @TableField(value = "in_process_liveness_judge_policy")
-    private Integer inProcessLivenessJudgePolicy;
-
-    @ApiModelProperty(value = "多次考试记录的选择逻辑,0:全部阅卷后取最高分,1:客观分最高,3:最后一次提交")
-    @TableField(value = "record_select_strategy")
-    private Integer recordSelectStrategy;
-
-    @ApiModelProperty(value = "是否IP段限制,0:不允许,1:允许")
-    @TableField(value = "enable_ip_limit")
-    private Integer enableIpLimit;
-
-    @ApiModelProperty(value = "允许IP段")
-    @TableField(value = "ip_allow")
-    private String ipAllow;
-
-    @ApiModelProperty(value = "算分状态,0:从未算分,1:正在算分,2:算分完成")
-    @TableField(value = "score_status")
-    private Integer scoreStatus;
-
-    @ApiModelProperty(value = "是否启用开考口令,0:不启用,1:启用")
-    @TableField(value = "enable_short_code")
-    private Integer enableShortCode;
-
-    @ApiModelProperty(value = "是否允许断点续考,0:不允许,1:允许")
-    @TableField(value = "enable_break")
-    private Integer enableBreak;
-
-    public Integer getEnableBreak() {
-        return enableBreak;
-    }
-
-    public void setEnableBreak(Integer enableBreak) {
-        this.enableBreak = enableBreak;
-    }
-
-    public Integer getEnableShortCode() {
-        return enableShortCode;
-    }
-
-    public void setEnableShortCode(Integer enableShortCode) {
-        this.enableShortCode = enableShortCode;
-    }
-
-    public Integer getMode() {
-        return mode;
-    }
-
-    public void setMode(Integer mode) {
-        this.mode = mode;
-    }
-
-    public Integer getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Integer enable) {
-        this.enable = enable;
-    }
-
-    public Integer getArchived() {
-        return archived;
-    }
-
-    public void setArchived(Integer archived) {
-        this.archived = archived;
-    }
-
-    public Integer getOpeningSeconds() {
-        return openingSeconds;
-    }
-
-    public void setOpeningSeconds(Integer openingSeconds) {
-        this.openingSeconds = openingSeconds;
-    }
-
-    public Integer getMaxDurationSeconds() {
-        return maxDurationSeconds;
-    }
-
-    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
-        this.maxDurationSeconds = maxDurationSeconds;
-    }
-
-    public Integer getForceFinish() {
-        return forceFinish;
-    }
-
-    public void setForceFinish(Integer forceFinish) {
-        this.forceFinish = forceFinish;
-    }
-
-    public Integer getEntryAuthenticationPolicy() {
-        return entryAuthenticationPolicy;
-    }
-
-    public void setEntryAuthenticationPolicy(Integer entryAuthenticationPolicy) {
-        this.entryAuthenticationPolicy = entryAuthenticationPolicy;
-    }
-
-    public Integer getInProcessFaceVerify() {
-        return inProcessFaceVerify;
-    }
-
-    public void setInProcessFaceVerify(Integer inProcessFaceVerify) {
-        this.inProcessFaceVerify = inProcessFaceVerify;
-    }
-
-    public Integer getInProcessFaceStrangerIgnore() {
-        return inProcessFaceStrangerIgnore;
-    }
-
-    public void setInProcessFaceStrangerIgnore(Integer inProcessFaceStrangerIgnore) {
-        this.inProcessFaceStrangerIgnore = inProcessFaceStrangerIgnore;
-    }
-
-    public Integer getInProcessLivenessVerify() {
-        return inProcessLivenessVerify;
-    }
-
-    public void setInProcessLivenessVerify(Integer inProcessLivenessVerify) {
-        this.inProcessLivenessVerify = inProcessLivenessVerify;
-    }
-
-    public Integer getInProcessLivenessIntervalSeconds() {
-        return inProcessLivenessIntervalSeconds;
-    }
-
-    public void setInProcessLivenessIntervalSeconds(Integer inProcessLivenessIntervalSeconds) {
-        this.inProcessLivenessIntervalSeconds = inProcessLivenessIntervalSeconds;
-    }
-
-    public Integer getInProcessLivenessRetryCount() {
-        return inProcessLivenessRetryCount;
-    }
-
-    public void setInProcessLivenessRetryCount(Integer inProcessLivenessRetryCount) {
-        this.inProcessLivenessRetryCount = inProcessLivenessRetryCount;
-    }
-
-    public Integer getInProcessLivenessJudgePolicy() {
-        return inProcessLivenessJudgePolicy;
-    }
-
-    public void setInProcessLivenessJudgePolicy(Integer inProcessLivenessJudgePolicy) {
-        this.inProcessLivenessJudgePolicy = inProcessLivenessJudgePolicy;
-    }
-
-    public Integer getRecordSelectStrategy() {
-        return recordSelectStrategy;
-    }
-
-    public void setRecordSelectStrategy(Integer recordSelectStrategy) {
-        this.recordSelectStrategy = recordSelectStrategy;
-    }
-
-    public Integer getEnableIpLimit() {
-        return enableIpLimit;
-    }
-
-    public void setEnableIpLimit(Integer enableIpLimit) {
-        this.enableIpLimit = enableIpLimit;
-    }
-
-    public String getIpAllow() {
-        return ipAllow;
-    }
-
-    public void setIpAllow(String ipAllow) {
-        this.ipAllow = ipAllow;
-    }
-
-    public Integer getScoreStatus() {
-        return scoreStatus;
-    }
-
-    public void setScoreStatus(Integer scoreStatus) {
-        this.scoreStatus = scoreStatus;
-    }
-
-    public static long getSerialVersionUID() {
-        return serialVersionUID;
-    }
-
-    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 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 getShowObjectiveScore() {
-        return showObjectiveScore;
-    }
-
-    public void setShowObjectiveScore(Integer showObjectiveScore) {
-        this.showObjectiveScore = showObjectiveScore;
-    }
-}

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

@@ -1,113 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.qmth.themis.business.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-import java.util.Date;
-
-/**
- * @Description: 考试场次公用 entity
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/7
- */
-public class ExamActivity extends BaseEntity {
-
-    @ApiModelProperty(value = "批次id")
-    @TableField(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次代码")
-    @TableField(value = "code")
-    private String code;
-
-    @ApiModelProperty(value = "提前多长时间开始候考(秒)")
-    @TableField(value = "prepare_seconds")
-    private Integer prepareSeconds;
-
-    @ApiModelProperty(value = "最大考试时长")
-    @TableField(value = "max_duration_seconds")
-    private Integer maxDurationSeconds;
-
-    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
-    @TableField(value = "enable")
-    private Integer enable;
-
-    @ApiModelProperty(value = "允许开考时长(秒)")
-    @TableField(value = "opening_seconds")
-    private Integer openingSeconds;
-
-    @ApiModelProperty(value = "开考时间")
-    @TableField(value = "start_time")
-    private Date startTime;
-
-    @ApiModelProperty(value = "结束时间")
-    @TableField(value = "finish_time")
-    private Date finishTime;
-
-    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 Integer getPrepareSeconds() {
-        return prepareSeconds;
-    }
-
-    public void setPrepareSeconds(Integer prepareSeconds) {
-        this.prepareSeconds = prepareSeconds;
-    }
-
-    public Integer getMaxDurationSeconds() {
-        return maxDurationSeconds;
-    }
-
-    public void setMaxDurationSeconds(Integer maxDurationSeconds) {
-        this.maxDurationSeconds = maxDurationSeconds;
-    }
-
-    public Integer getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Integer enable) {
-        this.enable = enable;
-    }
-
-    public Integer getOpeningSeconds() {
-        return openingSeconds;
-    }
-
-    public void setOpeningSeconds(Integer openingSeconds) {
-        this.openingSeconds = openingSeconds;
-    }
-
-    public Date getStartTime() {
-        return startTime;
-    }
-
-    public void setStartTime(Date startTime) {
-        this.startTime = startTime;
-    }
-
-    public Date getFinishTime() {
-        return finishTime;
-    }
-
-    public void setFinishTime(Date finishTime) {
-        this.finishTime = finishTime;
-    }
-}

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

@@ -1,130 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-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")
-    @TableField(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "科目编码")
-    @TableField(value = "course_code")
-    private String courseCode;
-
-    @ApiModelProperty(value = "科目名称")
-    @TableField(value = "course_name")
-    private String courseName;
-
-    @ApiModelProperty(value = "是否开启客观题乱序,0:不开启,1:开启")
-    @TableField(value = "objective_shuffle")
-    private Integer objectiveShuffle;
-
-    @ApiModelProperty(value = "是否选项乱序,针对一个科目进行设置,0:不开启,1:开启")
-    @TableField(value = "option_shuffle")
-    private Integer optionShuffle;
-
-    @ApiModelProperty(value = "已绑定试卷数量")
-    @TableField(value = "paper_count")
-    private Integer paperCount;
-
-    @ApiModelProperty(value = "是否已补齐标答,0:否,1:是")
-    @TableField(value = "has_answer")
-    private Integer hasAnswer;
-
-    @ApiModelProperty(value = "音频播放次数")
-    @TableField(value = "audio_play_time")
-    private Integer audioPlayTime;
-
-    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 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 Integer getPaperCount() {
-        return paperCount;
-    }
-
-    public void setPaperCount(Integer paperCount) {
-        this.paperCount = paperCount;
-    }
-
-    public Integer getHasAnswer() {
-        return hasAnswer;
-    }
-
-    public void setHasAnswer(Integer hasAnswer) {
-        this.hasAnswer = hasAnswer;
-    }
-
-    public Integer getAudioPlayTime() {
-        return audioPlayTime;
-    }
-
-    public void setAudioPlayTime(Integer audioPlayTime) {
-        this.audioPlayTime = audioPlayTime;
-    }
-}

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

@@ -1,195 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.qmth.themis.business.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @Description: 考试试卷公用 entity
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/7
- */
-public class ExamPaper extends BaseEntity {
-
-    @ApiModelProperty(value = "试卷名称")
-    @TableField(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "试卷总分")
-    @TableField(value = "total_score")
-    private Double totalScore;
-
-    @ApiModelProperty(value = "题干路径")
-    @TableField(value = "paper_path")
-    private String paperPath;
-
-    @ApiModelProperty(value = "解密密钥")
-    @TableField(value = "decrypt_secret")
-    private String decryptSecret;
-
-    @ApiModelProperty(value = "0:自动,1:手动,2:不加密")
-    @TableField(value = "encrypt_mode")
-    private Integer encryptMode;
-
-    @ApiModelProperty(value = "是否需要语音作答,0:不需要,1:需要")
-    @TableField(value = "need_voice_answer")
-    private Integer needVoiceAnswer;
-
-    @ApiModelProperty(value = "批次id")
-    @TableField(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "科目编码")
-    @TableField(value = "course_code")
-    private String courseCode;
-
-    @ApiModelProperty(value = "试卷编码")
-    @TableField(value = "code")
-    private String code;
-
-    @ApiModelProperty(value = "标答路径")
-    @TableField(value = "answer_path")
-    private String answerPath;
-
-    @ApiModelProperty(value = "题干包含音频")
-    @TableField(value = "has_audio")
-    private Integer hasAudio;
-
-    @ApiModelProperty(value = "调卷比例")
-    @TableField(value = "weight")
-    private Double weight;
-
-    @ApiModelProperty(value = "音频播放次数")
-    @TableField(value = "audio_play_time")
-    private Integer audioPlayTime;
-
-    @ApiModelProperty(value = "结构文件路径")
-    @TableField(value = "struct_path")
-    private String structPath;
-
-    @ApiModelProperty(value = "解密向量")
-    @TableField(value = "decrypt_vector")
-    private String decryptVector;
-
-    public String getStructPath() {
-        return structPath;
-    }
-
-    public void setStructPath(String structPath) {
-        this.structPath = structPath;
-    }
-
-    public String getDecryptVector() {
-        return decryptVector;
-    }
-
-    public void setDecryptVector(String decryptVector) {
-        this.decryptVector = decryptVector;
-    }
-
-    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 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 getNeedVoiceAnswer() {
-        return needVoiceAnswer;
-    }
-
-    public void setNeedVoiceAnswer(Integer needVoiceAnswer) {
-        this.needVoiceAnswer = needVoiceAnswer;
-    }
-
-    public Long getExamId() {
-        return examId;
-    }
-
-    public void setExamId(Long examId) {
-        this.examId = examId;
-    }
-
-    public String getCourseCode() {
-        return courseCode;
-    }
-
-    public void setCourseCode(String courseCode) {
-        this.courseCode = courseCode;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getAnswerPath() {
-        return answerPath;
-    }
-
-    public void setAnswerPath(String answerPath) {
-        this.answerPath = answerPath;
-    }
-
-    public Integer getHasAudio() {
-        return hasAudio;
-    }
-
-    public void setHasAudio(Integer hasAudio) {
-        this.hasAudio = hasAudio;
-    }
-
-    public Double getWeight() {
-        return weight;
-    }
-
-    public void setWeight(Double weight) {
-        this.weight = weight;
-    }
-
-    public Integer getAudioPlayTime() {
-        return audioPlayTime;
-    }
-
-    public void setAudioPlayTime(Integer audioPlayTime) {
-        this.audioPlayTime = audioPlayTime;
-    }
-}

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

@@ -1,171 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.qmth.themis.business.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @Description: 考生公用 entity
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/7
- */
-public class ExamStudent extends BaseEntity {
-
-    @ApiModelProperty(value = "批次id")
-    @TableField(value = "exam_id")
-    private Long examId;
-
-    @ApiModelProperty(value = "场次id")
-    @TableField(value = "exam_activity_id")
-    private Long examActivityId;
-
-    @ApiModelProperty(value = "学生id")
-    @TableField(value = "student_id")
-    private Long studentId;
-
-    @ApiModelProperty(value = "科目代码")
-    @TableField(value = "course_code")
-    private String courseCode;
-
-    @ApiModelProperty(value = "虚拟考场代码,考试唯一")
-    @TableField(value = "room_code")
-    private String roomCode;
-
-    @ApiModelProperty(value = "证件号,机构内唯一")
-    @TableField(value = "identity")
-    private String identity;
-
-    @ApiModelProperty(value = "姓名")
-    @TableField(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "扩展字段")
-    @TableField(value = "parameter")
-    private String parameter;
-
-    @ApiModelProperty(value = "剩余考试次数")
-    @TableField(value = "left_exam_count")
-    private Integer leftExamCount;
-
-    @ApiModelProperty(value = "当前考试记录ID")
-    @TableField(value = "current_record_id")
-    private Long currentRecordId;
-
-    @ApiModelProperty(value = "最终生效的记录ID")
-    @TableField(value = "select_record_id")
-    private Long selectRecordId;
-
-    @ApiModelProperty(value = "考场名称")
-    @TableField(value = "room_name")
-    private String roomName;
-
-    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
-    @TableField(value = "enable")
-    private Integer enable;
-
-    public String getRoomName() {
-        return roomName;
-    }
-
-    public void setRoomName(String roomName) {
-        this.roomName = roomName;
-    }
-
-    public Integer getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Integer enable) {
-        this.enable = enable;
-    }
-
-    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;
-    }
-}

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

@@ -1,123 +0,0 @@
-package com.qmth.themis.business.entity.common;
-
-import com.baomidou.mybatisplus.annotation.TableField;
-import com.qmth.themis.business.base.BaseEntity;
-import io.swagger.annotations.ApiModelProperty;
-
-/**
- * @Description: 学生档案公用 entity
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/7
- */
-public class Student extends BaseEntity {
-
-    @ApiModelProperty(value = "机构ID")
-    @TableField(value = "org_id")
-    private Long orgId;
-
-    @ApiModelProperty(value = "证件号")
-    @TableField(value = "identity")
-    private String identity;
-
-    @ApiModelProperty(value = "登陆密码,密文保存")
-    @TableField(value = "password")
-    private String password;
-
-    @ApiModelProperty(value = "身份证号")
-    @TableField(value = "idcard_number")
-    private String idcardNumber;
-
-    @ApiModelProperty(value = "手机号")
-    @TableField(value = "mobile_number")
-    private String mobileNumber;
-
-    @ApiModelProperty(value = "姓名")
-    @TableField(value = "name")
-    private String name;
-
-    @ApiModelProperty(value = "性别")
-    @TableField(value = "gender")
-    private Integer gender;
-
-    @ApiModelProperty(value = "底照保存地址")
-    @TableField(value = "base_photo_path")
-    private String basePhotoPath;
-
-    @ApiModelProperty(value = "是否启用,0:停用,1:启用")
-    @TableField(value = "enable")
-    private Integer enable;
-
-    public Integer getEnable() {
-        return enable;
-    }
-
-    public void setEnable(Integer enable) {
-        this.enable = enable;
-    }
-
-    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;
-    }
-}

+ 4 - 2
themis-common/src/main/java/com/qmth/themis/common/enums/ExceptionResultEnum.java

@@ -24,7 +24,7 @@ public enum ExceptionResultEnum {
 
     PARAMS_ILLEGALITY("102", "参数不能为空"),
 
-    EXAM_ID_IS_NULL("102", "考试id不能为空"),
+    EXAM_ID_IS_NULL("102", "考试批次id不能为空"),
 
     EXAM_IS_NULL("102", "考试不能为空"),
 
@@ -48,6 +48,8 @@ public enum ExceptionResultEnum {
 
     USER_NO("102", "用户不存在"),
 
+    EXAM_NO("102", "考试批次不存在"),
+
     TOKEN_NO("106", "token已过期"),
 
     EXCEL_IS_NULL("102", "excel没有数据"),
@@ -58,7 +60,7 @@ public enum ExceptionResultEnum {
 
     USER_ID_IS_NULL("102", "userId不能为空"),
 
-    ENABLE_IS_NULL("102", "启用状态不能为空"),
+    ENABLE_IS_NULL("102", "禁用/启用状态不能为空"),
 
     ATTACHMENT_ID_IS_NULL("102", "附件id不能为空"),