Kaynağa Gözat

监考接口修改

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

+ 85 - 75
themis-business/src/main/java/com/qmth/themis/business/cache/MobileAuthCacheUtil.java

@@ -5,83 +5,93 @@ import com.qmth.themis.business.enums.MobileModeEnum;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.common.enums.Source;
 
-/**移动端临时认证
- * @Description: 
+/**
+ * 移动端临时认证
+ *
+ * @Description:
  * @Author: xiatian
  * @Date: 2020-08-14
  */
 public class MobileAuthCacheUtil {
-	private static RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
-
-	public static void setMode(MobileModeEnum mode,String code) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mode", mode);
-	}
-	
-	public static MobileModeEnum getMode(MobileModeEnum mode,String code) {
-		return (MobileModeEnum) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mode");
-	}
-	
-	public static void setCode(MobileModeEnum mode,String code) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "code", code);
-	}
-	
-	public static String getCode(MobileModeEnum mode,String code) {
-		return (String) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "code");
-	}
-	
-	public static void setRecordId(MobileModeEnum mode,String code,Long recordId) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "recordId", recordId);
-	}
-	
-	public static Long getRecordId(MobileModeEnum mode,String code) {
-		return (Long) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "recordId");
-	}
-	
-	public static void setMainNumber(MobileModeEnum mode,String code,Integer mainNumber) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mainNumber", mainNumber);
-	}
-	
-	public static Integer getMainNumber(MobileModeEnum mode,String code) {
-		return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mainNumber");
-	}
-	
-	public static void setSubNumber(MobileModeEnum mode,String code,Integer subNumber) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subNumber", subNumber);
-	}
-	
-	public static Integer getSubNumber(MobileModeEnum mode,String code) {
-		return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subNumber");
-	}
-	
-	public static void setSubIndex(MobileModeEnum mode,String code,Integer subIndex) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subIndex", subIndex);
-	}
-	
-	public static Integer getSubIndex(MobileModeEnum mode,String code) {
-		return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subIndex");
-	}
-	
-	public static void setMonitorKey(MobileModeEnum mode,String code,String monitorKey) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorKey", monitorKey);
-	}
-	
-	public static String getMonitorKey(MobileModeEnum mode,String code) {
-		return (String) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorKey");
-	}
-	
-	public static void setMonitorVideoSource(MobileModeEnum mode,String code,Source monitorVideoSource) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorVideoSource", monitorVideoSource);
-	}
-	
-	public static Source getMonitorVideoSource(MobileModeEnum mode,String code) {
-		return (Source) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorVideoSource");
-	}
-	
-	public static void setMonitorAudioEnable(MobileModeEnum mode,String code,Boolean monitorAudioEnable) {
-		redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorAudioEnable", monitorAudioEnable);
-	}
-	
-	public static Boolean getMonitorAudioEnable(MobileModeEnum mode,String code) {
-		return (Boolean) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorAudioEnable");
-	}
+    private static RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
+
+    public static void setSessionId(MobileModeEnum mode, String code, String sessionId) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "sessionId", sessionId);
+    }
+
+    public static void setUserType(MobileModeEnum mode, String code, String userType) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "userType", userType);
+    }
+
+    public static void setMode(MobileModeEnum mode, String code) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mode", mode);
+    }
+
+    public static MobileModeEnum getMode(MobileModeEnum mode, String code) {
+        return (MobileModeEnum) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mode");
+    }
+
+    public static void setCode(MobileModeEnum mode, String code) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "code", code);
+    }
+
+    public static String getCode(MobileModeEnum mode, String code) {
+        return (String) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "code");
+    }
+
+    public static void setRecordId(MobileModeEnum mode, String code, Long recordId) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "recordId", recordId);
+    }
+
+    public static Long getRecordId(MobileModeEnum mode, String code) {
+        return (Long) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "recordId");
+    }
+
+    public static void setMainNumber(MobileModeEnum mode, String code, Integer mainNumber) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mainNumber", mainNumber);
+    }
+
+    public static Integer getMainNumber(MobileModeEnum mode, String code) {
+        return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "mainNumber");
+    }
+
+    public static void setSubNumber(MobileModeEnum mode, String code, Integer subNumber) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subNumber", subNumber);
+    }
+
+    public static Integer getSubNumber(MobileModeEnum mode, String code) {
+        return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subNumber");
+    }
+
+    public static void setSubIndex(MobileModeEnum mode, String code, Integer subIndex) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subIndex", subIndex);
+    }
+
+    public static Integer getSubIndex(MobileModeEnum mode, String code) {
+        return (Integer) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "subIndex");
+    }
+
+    public static void setMonitorKey(MobileModeEnum mode, String code, String monitorKey) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorKey", monitorKey);
+    }
+
+    public static String getMonitorKey(MobileModeEnum mode, String code) {
+        return (String) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorKey");
+    }
+
+    public static void setMonitorVideoSource(MobileModeEnum mode, String code, Source monitorVideoSource) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorVideoSource", monitorVideoSource);
+    }
+
+    public static Source getMonitorVideoSource(MobileModeEnum mode, String code) {
+        return (Source) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorVideoSource");
+    }
+
+    public static void setMonitorAudioEnable(MobileModeEnum mode, String code, Boolean monitorAudioEnable) {
+        redisUtil.set(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorAudioEnable", monitorAudioEnable);
+    }
+
+    public static Boolean getMonitorAudioEnable(MobileModeEnum mode, String code) {
+        return (Boolean) redisUtil.get(RedisKeyHelper.mobileAuthCacheKey(mode, code), "monitorAudioEnable");
+    }
 }

+ 8 - 6
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -110,9 +110,8 @@ 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);
+        String monitorKey = MobileAuthCacheUtil.getMonitorKey(mode, code);
         Source monitorVideoSource = MobileAuthCacheUtil.getMonitorVideoSource(mode, code);
         Boolean monitorAudioEnable = MobileAuthCacheUtil.getMonitorAudioEnable(mode, code);
         if (MobileAuthCacheUtil.getMode(mode, code) == null) {
@@ -120,14 +119,17 @@ public class TEMobileServiceImpl implements TEMobileService {
         }
         MobileAuthorizationMonitorBean ret = new MobileAuthorizationMonitorBean();
         ret.setRecordId(recordId);
-        ret.setMonitorKey(String.valueOf(recordId % SystemConstant.MONITOR_VALUE));
+        ret.setMonitorKey(monitorKey);
         ret.setMonitorVideoSource(monitorVideoSource);
         ret.setMonitorAudioEnable(monitorAudioEnable);
 //        if (monitorAudioEnable) {
-        if (Objects.equals(tbSession.getType(), RoleEnum.STUDENT.name())) {
-            ret.setMonitorUserId("s_" + tbSession.getId());
+        Map<String, Object> objectMap = redisUtil.getHashEntries(RedisKeyHelper.mobileAuthCacheKey(mode, code));
+        String userType = String.valueOf(objectMap.get("userType"));
+        String sessionId = String.valueOf(objectMap.get("sessionId"));
+        if (Objects.equals(userType, RoleEnum.STUDENT.name())) {
+            ret.setMonitorUserId("s_" + sessionId);
         } else {
-            ret.setMonitorUserId("m_" + tbSession.getId());
+            ret.setMonitorUserId("m_" + sessionId);
         }
         ret.setMonitorUserSig(tencentYunUtil.getSign(ret.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
 //        }

+ 5 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEQrcodeServiceImpl.java

@@ -9,11 +9,13 @@ 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.constant.SystemConstant;
+import com.qmth.themis.business.entity.TBSession;
 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.business.util.ServletUtil;
 import com.qmth.themis.common.enums.Source;
 import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.stereotype.Service;
@@ -37,9 +39,12 @@ public class TEQrcodeServiceImpl implements TEQrcodeService {
 
     @Override
     public QrResponseBean mobileMonitor(QrMobileMonitorParamBean param) {
+        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
         String domain = systemConfig.getProperty("wxapp.upload.url");
         String code = uuid();
         MobileModeEnum mode = MobileModeEnum.MOBILE_MONITOR;
+        MobileAuthCacheUtil.setSessionId(mode, code, tbSession.getId());
+        MobileAuthCacheUtil.setUserType(mode, code, tbSession.getType());
         MobileAuthCacheUtil.setMode(mode, code);
         MobileAuthCacheUtil.setCode(mode, code);
         MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());