Explorar el Código

Merge branch 'dev'
111

wangliang hace 4 años
padre
commit
1110779f51

+ 2 - 0
themis-backend/src/main/java/com/qmth/themis/backend/api/TEExamController.java

@@ -129,6 +129,7 @@ public class TEExamController {
             if (Objects.equals(teExam.getMode().name(), ExamModeEnum.ANYTIME.name())) {//随到随考模式
                 if (Objects.isNull(oldId)) {//如果是新增
                     TEExamActivity teExamActivity = new TEExamActivity(teExam.getId(), teExam.getPrepareSeconds(), teExam.getMaxDurationSeconds(), teExam.getOpeningSeconds(), teExam.getStartTime(), teExam.getEndTime(), tbUser.getId());
+                    teExamActivity.setCode(String.valueOf(redisUtil.getRedisActivityCodeSequence()));
                     teExamActivityService.saveOrUpdate(teExamActivity);
 
                     //新增quartz任务,发送mq消息start
@@ -299,6 +300,7 @@ public class TEExamController {
                     s.setCreateId(teExam.getCreateId());
                     s.setUpdateId(null);
                     s.setUpdateTime(null);
+                    s.setCode(String.valueOf(redisUtil.getRedisActivityCodeSequence()));
                 });
                 teExamActivityService.saveOrUpdateBatch(teExamActivityList);
             }

+ 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);

+ 2 - 0
themis-business/src/main/resources/db/init.sql

@@ -303,6 +303,7 @@ CREATE TABLE `t_b_exam_invigilate_user` (
   `user_id` bigint DEFAULT NULL COMMENT '用户ID',
   `room_code` varchar(50) NOT NULL COMMENT '考场代码',
   `room_name` varchar(100) NOT NULL COMMENT '考场名称',
+  `monitor_status` varchar(30) DEFAULT NULL COMMENT '监考状态,NOT_START:未开始,START:监考中,FINISHED:已结束',
   PRIMARY KEY (`id`),
   UNIQUE KEY `t_b_exam_invigilate_user_orgId_userId_roomCode_Idx` (`org_id`,`user_id`,`room_code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='监考员设置';
@@ -870,6 +871,7 @@ CREATE TABLE `t_e_exam` (
   `progress` double DEFAULT NULL COMMENT '算分进度',
   `mobile_photo_upload` tinyint DEFAULT NULL COMMENT '是否允许使用移动端拍照答题,0:不开启,1:开启',
   `invigilate_verify` varchar(30) DEFAULT NULL COMMENT '监考人工审核,now:实时审核,later:事后审核',
+  `monitor_status` varchar(30) DEFAULT NULL COMMENT '监考状态,NOT_START:未开始,START:监考中,FINISHED:已结束',
   PRIMARY KEY (`id`),
   UNIQUE KEY `t_e_exam_orgId_code_Idx` (`org_id`,`code`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='考试批次';