wangliang 4 年之前
父節點
當前提交
32b6d2d134

+ 15 - 1
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -142,7 +142,7 @@ public class TEMobileServiceImpl implements TEMobileService {
         return ret;
     }
 
-    private MobileAuthorizationBean answerUploadAuthorization(MobileModeEnum mode, String code) {
+    private MobileAuthorizationBean answerUploadAuthorization(MobileModeEnum mode, String code) throws NoSuchAlgorithmException {
         Long recordId = MobileAuthCacheUtil.getRecordId(mode, code);
         Integer mainNumber = MobileAuthCacheUtil.getMainNumber(mode, code);
         Integer subNumber = MobileAuthCacheUtil.getSubNumber(mode, code);
@@ -150,6 +150,20 @@ public class TEMobileServiceImpl implements TEMobileService {
         if (MobileAuthCacheUtil.getMode(mode, code) == null) {
             throw new BusinessException("二维码已过期");
         }
+        Map<String, Object> objectMap = redisUtil.getHashEntries(RedisKeyHelper.mobileAuthCacheKey(mode, code));
+        ExamStudentCacheBean es = examStudentService
+                .getExamStudentCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId));
+        String source = null;
+        if (mode.equals(MobileModeEnum.MOBILE_MONITOR)) {
+            Source sourceEnum = MobileAuthCacheUtil.getSource(mode, code);
+            source = sourceEnum.name();
+        } else if (mode.equals(MobileModeEnum.PHOTO_UPLOAD) || mode.equals(MobileModeEnum.AUDIO_UPLOAD)) {
+            source = Source.OE_ANSWER.name();
+        }
+        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.studentOauth + "::" + es.getStudentId());
+        String sessionId = SessionUtil.digest(es.getIdentity(), Math.abs(authDto.getRoleCodes().toString().hashCode()), source);
+        objectMap.put("sessionId", sessionId);
+        redisUtil.setForHash(RedisKeyHelper.mobileAuthCacheKey(mode, code), objectMap);
         MobileAuthorizationUploadBean ret = new MobileAuthorizationUploadBean();
         ret.setRecordId(recordId);
         ret.setMainNumber(mainNumber);