|
@@ -0,0 +1,95 @@
|
|
|
+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;
|
|
|
+import com.qmth.themis.business.cache.ExamRecordCacheUtil;
|
|
|
+import com.qmth.themis.business.cache.MobileAuthCacheUtil;
|
|
|
+import com.qmth.themis.business.cache.RedisKeyHelper;
|
|
|
+import com.qmth.themis.business.cache.bean.ExamCacheBean;
|
|
|
+import com.qmth.themis.business.config.SystemConfig;
|
|
|
+import com.qmth.themis.business.enums.MobileModeEnum;
|
|
|
+import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
|
|
|
+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;
|
|
|
+
|
|
|
+@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 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_monitor_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;
|
|
|
+ }
|
|
|
+
|
|
|
+}
|