Bläddra i källkod

监考日志修改

wangliang 4 år sedan
förälder
incheckning
22a272f987

+ 22 - 1
themis-business/src/main/java/com/qmth/themis/business/bean/exam/ExamResumeBean.java

@@ -35,9 +35,30 @@ public class ExamResumeBean {
 	@ApiModelProperty("已上传作答")
 	private List<ExamStudentAnswerCacheBean> answerList;
 
-	@ApiModelProperty("")
+	@ApiModelProperty("若未上传或不开启乱序则无此字段;开启乱序情况下必须上传,否则无法交卷")
 	private Map<String, Integer> audioLeftPlayCount;
 
+	@ApiModelProperty("加入房间用户ID")
+	private String monitorUserId;
+	@ApiModelProperty("用户认证签名")
+	private String monitorUserSig;
+
+	public String getMonitorUserId() {
+		return monitorUserId;
+	}
+
+	public void setMonitorUserId(String monitorUserId) {
+		this.monitorUserId = monitorUserId;
+	}
+
+	public String getMonitorUserSig() {
+		return monitorUserSig;
+	}
+
+	public void setMonitorUserSig(String monitorUserSig) {
+		this.monitorUserSig = monitorUserSig;
+	}
+
 	public Integer getDurationSeconds() {
 		return durationSeconds;
 	}

+ 21 - 0
themis-business/src/main/java/com/qmth/themis/business/bean/mobile/MobileAuthorizationMonitorBean.java

@@ -18,6 +18,27 @@ public class MobileAuthorizationMonitorBean  extends MobileAuthorizationBean{
 	@ApiModelProperty("是否启用当前设备的音频播放与麦克风采集")
 	private Boolean monitorAudioEnable;
 
+	@ApiModelProperty("加入房间用户ID")
+	private String monitorUserId;
+	@ApiModelProperty("用户认证签名")
+	private String monitorUserSig;
+
+	public String getMonitorUserId() {
+		return monitorUserId;
+	}
+
+	public void setMonitorUserId(String monitorUserId) {
+		this.monitorUserId = monitorUserId;
+	}
+
+	public String getMonitorUserSig() {
+		return monitorUserSig;
+	}
+
+	public void setMonitorUserSig(String monitorUserSig) {
+		this.monitorUserSig = monitorUserSig;
+	}
+
 	public String getMonitorKey() {
 		return monitorKey;
 	}

+ 4 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -173,6 +173,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @Transactional
     @Override
     public ExamPrepareBean prepare(Long studentId, Long examStudentId) {
+        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
         ExamStudentCacheBean es = teExamStudentService.getExamStudentCacheBean(examStudentId);
         if (es == null) {
             throw new BusinessException("未找到考生");
@@ -200,7 +201,6 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             prepare.setPaperUrl(paperurl);
             prepare.setStructUrl(structurl);
             prepare.setMonitorKey(String.valueOf(recordId));
-            TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
             prepare.setMonitorUserId("s_" + tbSession.getId());
             prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
             return prepare;
@@ -270,7 +270,6 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         prepare.setPaperUrl(paperurl);
         prepare.setStructUrl(structurl);
         prepare.setMonitorKey(String.valueOf(recordId));
-        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
         prepare.setMonitorUserId("s_" + tbSession.getId());
         prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
 
@@ -554,7 +553,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @SuppressWarnings("unchecked")
     @Override
     public ExamResumeBean resume(Long studentId, Long recordId) {
-
+        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
         // 校验当前登录用户和参数一致性
         if (ExamRecordCacheUtil.getId(recordId) == null) {
             throw new BusinessException("未找到考试记录");
@@ -587,6 +586,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         ret.setAudioPlayCount(ep.getAudioPlayCount());
         // TODO 9527
         ret.setMonitorKey(recordId.toString());
+        ret.setMonitorUserId("s_" + tbSession.getId());
+        ret.setMonitorUserSig(tencentYunUtil.getSign(ret.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
 
         ExamStudentPaperStructCacheBean struct = (ExamStudentPaperStructCacheBean) redisUtil
                 .get(RedisKeyHelper.studentPaperStructKey(recordId));

+ 7 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -7,6 +7,7 @@ import java.util.Objects;
 
 import javax.annotation.Resource;
 
+import com.qmth.themis.business.util.TencentYunUtil;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.springframework.stereotype.Service;
 
@@ -46,6 +47,9 @@ public class TEMobileServiceImpl implements TEMobileService {
 	@Resource
 	TEExamStudentService examStudentService;
 
+	@Resource
+	TencentYunUtil tencentYunUtil;
+
 	@Override
 	public MobileAuthorizationBean authorization(MobileAuthorizationParamBean param) throws NoSuchAlgorithmException {
 		MobileModeEnum mode = MobileModeEnum.valueOf(param.getMode().toUpperCase());
@@ -107,6 +111,7 @@ public class TEMobileServiceImpl implements TEMobileService {
 	}
 
 	private MobileAuthorizationBean monitorAuthorization(MobileModeEnum mode, String code) {
+		TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
 		Long recordId = MobileAuthCacheUtil.getRecordId(mode, code);
 		String monitorKey = MobileAuthCacheUtil.getMonitorKey(mode, code);
 		Source monitorVideoSource = MobileAuthCacheUtil.getMonitorVideoSource(mode, code);
@@ -119,6 +124,8 @@ public class TEMobileServiceImpl implements TEMobileService {
 		ret.setMonitorKey(monitorKey);
 		ret.setMonitorVideoSource(monitorVideoSource);
 		ret.setMonitorAudioEnable(monitorAudioEnable);
+		ret.setMonitorUserId("s_" + tbSession.getId());
+		ret.setMonitorUserSig(tencentYunUtil.getSign(ret.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
 		return ret;
 	}
 

+ 0 - 3
themis-exam/src/main/java/com/qmth/themis/exam/api/TEMobileController.java

@@ -49,9 +49,6 @@ import io.swagger.annotations.ApiResponses;
 @RequestMapping("/${prefix.url.mobile}")
 public class TEMobileController {
 
-    @Resource
-    MqDtoService mqDtoService;
-
     @Resource
     TEMobileService mobileService;