Kaynağa Gözat

监考接口修改

wangliang 4 yıl önce
ebeveyn
işleme
a7ef210747

+ 66 - 68
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEQrcodeServiceImpl.java

@@ -1,13 +1,5 @@
 package com.qmth.themis.business.service.impl;
 
-import java.util.Date;
-import java.util.UUID;
-
-import javax.annotation.Resource;
-
-import org.apache.commons.lang3.time.DateUtils;
-import org.springframework.stereotype.Service;
-
 import com.qmth.themis.business.bean.exam.QrMobileMonitorParamBean;
 import com.qmth.themis.business.bean.exam.QrResponseBean;
 import com.qmth.themis.business.bean.exam.QrUploadParamBean;
@@ -22,74 +14,80 @@ import com.qmth.themis.business.service.TEExamService;
 import com.qmth.themis.business.service.TEQrcodeService;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.common.enums.Source;
+import org.apache.commons.lang3.time.DateUtils;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.UUID;
 
 @Service
 public class TEQrcodeServiceImpl implements TEQrcodeService {
-	
-	//二维码过期时间(秒)
-	private final static int qrExpireTime=120;
-	
-	@Resource
-	TEExamService examService;
-	@Resource
-	RedisUtil redisUtil;
-	@Resource
-	SystemConfig systemConfig;
 
-	@Override
-	public QrResponseBean mobileMonitor(QrMobileMonitorParamBean param) {
-		String domain = systemConfig.getProperty("wxapp.upload.url");
-		String code=uuid();
-		MobileModeEnum mode=MobileModeEnum.MOBILE_MONITOR;
-		MobileAuthCacheUtil.setMode(mode, code);
-		MobileAuthCacheUtil.setCode(mode, code);
-		MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());
-		MobileAuthCacheUtil.setMonitorKey(mode, code, ExamRecordCacheUtil.getMonitorKey(param.getRecordId()));
-		MobileAuthCacheUtil.setMonitorVideoSource(mode, code, param.getSource());
-		MobileAuthCacheUtil.setMonitorAudioEnable(mode, code, getMonitorAudioEnable(param));
-		Long expireTime=DateUtils.addSeconds(new Date(), qrExpireTime).getTime();
-		redisUtil.expire(RedisKeyHelper.mobileAuthCacheKey(mode, code), qrExpireTime);
-		QrResponseBean ret=new QrResponseBean();
-		ret.setExpireTime(expireTime);
-		ret.setContent(domain+"/"+mode.name().toLowerCase()+"/"+code);
-		return ret;
-	}
+    //二维码过期时间(秒)
+    private final static int qrExpireTime = 60 * 60 * 24;
+
+    @Resource
+    TEExamService examService;
+    @Resource
+    RedisUtil redisUtil;
+    @Resource
+    SystemConfig systemConfig;
+
+    @Override
+    public QrResponseBean mobileMonitor(QrMobileMonitorParamBean param) {
+        String domain = systemConfig.getProperty("wxapp.upload.url");
+        String code = uuid();
+        MobileModeEnum mode = MobileModeEnum.MOBILE_MONITOR;
+        MobileAuthCacheUtil.setMode(mode, code);
+        MobileAuthCacheUtil.setCode(mode, code);
+        MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());
+        MobileAuthCacheUtil.setMonitorKey(mode, code, ExamRecordCacheUtil.getMonitorKey(param.getRecordId()));
+        MobileAuthCacheUtil.setMonitorVideoSource(mode, code, param.getSource());
+        MobileAuthCacheUtil.setMonitorAudioEnable(mode, code, getMonitorAudioEnable(param));
+        Long expireTime = DateUtils.addSeconds(new Date(), qrExpireTime).getTime();
+        redisUtil.expire(RedisKeyHelper.mobileAuthCacheKey(mode, code), qrExpireTime);
+        QrResponseBean ret = new QrResponseBean();
+        ret.setExpireTime(expireTime);
+        ret.setContent(domain + "/" + mode.name().toLowerCase() + "/" + code);
+        return ret;
+    }
+
+    private Boolean getMonitorAudioEnable(QrMobileMonitorParamBean param) {
+        Long examId = ExamRecordCacheUtil.getExamId(param.getRecordId());
+        ExamCacheBean exam = examService.getExamCacheBean(examId);
+        String monitorVideoSource = exam.getMonitorVideoSource();
+        if (!monitorVideoSource.toUpperCase().contains(MonitorVideoSourceEnum.CLIENT_SCREEN.name())
+                && !monitorVideoSource.toUpperCase().contains(MonitorVideoSourceEnum.CLIENT_CAMERA.name())
+                && Source.MOBILE_FIRST.equals(param.getSource())) {
+            return true;
+        } else {
+            return false;
+        }
+    }
 
-	private Boolean getMonitorAudioEnable(QrMobileMonitorParamBean param) {
-		Long examId = ExamRecordCacheUtil.getExamId(param.getRecordId());
-		ExamCacheBean exam = examService.getExamCacheBean(examId);
-		String monitorVideoSource = exam.getMonitorVideoSource();
-		if (!monitorVideoSource.toUpperCase().contains(MonitorVideoSourceEnum.CLIENT_SCREEN.name())
-				&& !monitorVideoSource.toUpperCase().contains(MonitorVideoSourceEnum.CLIENT_CAMERA.name())
-				&& Source.MOBILE_FIRST.equals(param.getSource())) {
-			return true;
-		}else {
-			return false;
-		}
-	}
-	
     private String uuid() {
         return UUID.randomUUID().toString().replaceAll("-", "");
     }
 
-	@Override
-	public QrResponseBean upload(QrUploadParamBean param,MobileModeEnum mode) {
-		String domain = systemConfig.getProperty("wxapp.upload.url");
-		String code=uuid();
-		MobileAuthCacheUtil.setMode(mode, code);
-		MobileAuthCacheUtil.setCode(mode, code);
-		MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());
-		MobileAuthCacheUtil.setMainNumber(mode, code, param.getMainNumber());
-		MobileAuthCacheUtil.setSubNumber(mode, code, param.getSubNumber());
-		if(param.getSubIndex()!=null) {
-			MobileAuthCacheUtil.setSubIndex(mode, code, param.getSubIndex());
-		}
-		Long expireTime=DateUtils.addSeconds(new Date(), qrExpireTime).getTime();
-		redisUtil.expire(RedisKeyHelper.mobileAuthCacheKey(mode, code), qrExpireTime);
-		QrResponseBean ret=new QrResponseBean();
-		ret.setExpireTime(expireTime);
-		ret.setContent(domain+"/"+mode.name().toLowerCase()+"/"+code);
-		return ret;
-	}
+    @Override
+    public QrResponseBean upload(QrUploadParamBean param, MobileModeEnum mode) {
+        String domain = systemConfig.getProperty("wxapp.upload.url");
+        String code = uuid();
+        MobileAuthCacheUtil.setMode(mode, code);
+        MobileAuthCacheUtil.setCode(mode, code);
+        MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());
+        MobileAuthCacheUtil.setMainNumber(mode, code, param.getMainNumber());
+        MobileAuthCacheUtil.setSubNumber(mode, code, param.getSubNumber());
+        if (param.getSubIndex() != null) {
+            MobileAuthCacheUtil.setSubIndex(mode, code, param.getSubIndex());
+        }
+        Long expireTime = DateUtils.addSeconds(new Date(), qrExpireTime).getTime();
+        redisUtil.expire(RedisKeyHelper.mobileAuthCacheKey(mode, code), qrExpireTime);
+        QrResponseBean ret = new QrResponseBean();
+        ret.setExpireTime(expireTime);
+        ret.setContent(domain + "/" + mode.name().toLowerCase() + "/" + code);
+        return ret;
+    }
 
 }

+ 9 - 0
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -27,6 +27,8 @@ import com.qmth.themis.common.util.Result;
 import com.qmth.themis.common.util.ResultUtil;
 import com.qmth.themis.exam.websocket.WebSocketMobileServer;
 import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -41,6 +43,7 @@ import java.util.concurrent.ConcurrentHashMap;
 @RestController
 @RequestMapping("/${prefix.url.exam}/exam")
 public class TEExamController {
+    private final static Logger log = LoggerFactory.getLogger(TEExamController.class);
 
     @Resource
     TEExamService teExamService;
@@ -150,6 +153,9 @@ public class TEExamController {
     @RequestMapping(value = "/student_paper_struct/upload", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
     public Result studentPaperStruct(@RequestBody StudentPaperStructParamBean param) {
+        if (Objects.nonNull(param)) {
+            log.info("studentPaperStruct:{}", JacksonUtil.parseJson(param));
+        }
         TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
         if (param.getRecordId() == null) {
             throw new BusinessException("考试记录id不能为空");
@@ -165,6 +171,9 @@ public class TEExamController {
     @RequestMapping(value = "/answer/submit", method = RequestMethod.POST)
     @ApiResponses({@ApiResponse(code = 200, message = "试卷信息")})
     public Result answerSubmit(@RequestBody AnswerSubmitParamBean param) {
+        if (Objects.nonNull(param)) {
+            log.info("answerSubmit:{}", JacksonUtil.parseJson(param));
+        }
         TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
         if (param.getRecordId() == null) {
             throw new BusinessException("考试记录id不能为空");