Explorar el Código

新增学生视频监考回放查询兼容之前版本数据

wangliang hace 2 años
padre
commit
d19e709d50

+ 11 - 0
themis-business/src/main/java/com/qmth/themis/business/dto/response/TEStudentExamRecordVideoMessageDto.java

@@ -27,6 +27,17 @@ public class TEStudentExamRecordVideoMessageDto implements Serializable {
     @ApiModelProperty(name = "视频地址")
     private String videoUrl;//科目编码
 
+    public TEStudentExamRecordVideoMessageDto() {
+
+    }
+
+    public TEStudentExamRecordVideoMessageDto(String videoSource, Long startTime, Long endTime, String videoUrl) {
+        this.videoSource = videoSource;
+        this.startTime = startTime;
+        this.endTime = endTime;
+        this.videoUrl = videoUrl;
+    }
+
     public String getVideoSource() {
         return Objects.nonNull(videoSource) ? SystemConstant.getMonitorRecordVideoSource(videoSource).name() : videoSource;
     }

+ 11 - 12
themis-business/src/main/java/com/qmth/themis/business/entity/TOeExamRecord.java

@@ -1,17 +1,16 @@
 package com.qmth.themis.business.entity;
 
-import java.io.Serializable;
-
 import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.themis.business.enums.*;
-
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
+import java.io.Serializable;
+
 /**
  * @Description: 考试记录
  * @Param:
@@ -274,8 +273,8 @@ public class TOeExamRecord implements Serializable {
     @TableField(value = "mobile_second_monitor_status")
     private MonitorStatusSourceEnum mobileSecondMonitorStatus;
 
-//    @ApiModelProperty(name = "转录视频地址")
-//    private String tencentVideoUrl;
+    @ApiModelProperty(name = "转录视频地址")
+    private String tencentVideoUrl;
 
     @ApiModelProperty(value = "更新时间")
     private Long updateTime;
@@ -288,13 +287,13 @@ public class TOeExamRecord implements Serializable {
         this.updateTime = updateTime;
     }
 
-//    public String getTencentVideoUrl() {
-//        return tencentVideoUrl;
-//    }
-//
-//    public void setTencentVideoUrl(String tencentVideoUrl) {
-//        this.tencentVideoUrl = tencentVideoUrl;
-//    }
+    public String getTencentVideoUrl() {
+        return tencentVideoUrl;
+    }
+
+    public void setTencentVideoUrl(String tencentVideoUrl) {
+        this.tencentVideoUrl = tencentVideoUrl;
+    }
 
     public String getMonitorRecord() {
         return monitorRecord;

+ 29 - 9
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEStudentServiceImpl.java

@@ -1,8 +1,11 @@
 package com.qmth.themis.business.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.aliyun.oss.common.utils.BinaryUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.qmth.themis.business.bean.StudentParams;
 import com.qmth.themis.business.bean.admin.StudentPhotoUploadResponseBean;
@@ -33,10 +36,7 @@ import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * @Description: 学生档案 服务实现类
@@ -160,13 +160,12 @@ public class TEStudentServiceImpl extends ServiceImpl<TEStudentMapper, TEStudent
      */
     @Override
     public TEStudentExamRecordVideoDto examRecordVideoQuery(IPage<Map> iPage, Long examRecordId, MonitorVideoSourceEnum monitorVideoSource, Boolean log) {
-        TOeExamRecord tOeExamRecord = null;
+        TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(examRecordId);
         ExamCacheBean examCacheBean = null;
         ExamStudentCacheBean examStudentCacheBean = null;
 
         List<TEExamStudentLog> teExamStudentLogList = null;
         if (Objects.nonNull(log) && log) {
-            tOeExamRecord = SystemConstant.getExamRecord(examRecordId);
             examCacheBean = teExamService.getExamCacheBean(tOeExamRecord.getExamId());
             examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(tOeExamRecord.getExamStudentId());
 
@@ -176,13 +175,34 @@ public class TEStudentServiceImpl extends ServiceImpl<TEStudentMapper, TEStudent
                     .orderByAsc(TEExamStudentLog::getCreateTime);
             teExamStudentLogList = teExamStudentLogService.list(teExamStudentLogQueryWrapper);
         }
-        IPage<TEStudentExamRecordVideoMessageDto> teStudentExamRecordVideoMessageDtoIPage = teStudentMapper.examRecordVideoQuery(iPage, examRecordId, Objects.nonNull(monitorVideoSource) ? monitorVideoSource.name().toLowerCase() : null);
+
+        IPage<TEStudentExamRecordVideoMessageDto> teStudentExamRecordVideoMessageDtoIPage = null;
+        if (Objects.isNull(tOeExamRecord.getTencentVideoUrl())) {
+            teStudentExamRecordVideoMessageDtoIPage = teStudentMapper.examRecordVideoQuery(iPage, examRecordId, Objects.nonNull(monitorVideoSource) ? monitorVideoSource.name().toLowerCase() : null);
+        } else {
+            JSONArray jsonArray = JSONArray.parseArray(tOeExamRecord.getTencentVideoUrl());
+            List<TEStudentExamRecordVideoMessageDto> teStudentExamRecordVideoMessageDtoList = new ArrayList<>(jsonArray.size());
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject json = (JSONObject) jsonArray.get(i);
+                TEStudentExamRecordVideoMessageDto teStudentExamRecordVideoMessageDto = new TEStudentExamRecordVideoMessageDto((String) json.get(SystemConstant.VIDEO_SOURCE), tOeExamRecord.getFirstStartTime(), tOeExamRecord.getFinishTime(), (String) json.get(SystemConstant.VIDEO_URL));
+                if (Objects.nonNull(monitorVideoSource)) {
+                    if (MonitorVideoSourceEnum.valueOf(teStudentExamRecordVideoMessageDto.getVideoSource()) == monitorVideoSource) {
+                        teStudentExamRecordVideoMessageDtoList.add(teStudentExamRecordVideoMessageDto);
+                        break;
+                    }
+                } else {
+                    teStudentExamRecordVideoMessageDtoList.add(teStudentExamRecordVideoMessageDto);
+                }
+            }
+            teStudentExamRecordVideoMessageDtoIPage = new Page<>(iPage.getCurrent(), iPage.getSize());
+            teStudentExamRecordVideoMessageDtoIPage.setRecords(teStudentExamRecordVideoMessageDtoList);
+            teStudentExamRecordVideoMessageDtoIPage.setTotal(teStudentExamRecordVideoMessageDtoList.size());
+        }
 
         TEStudentExamRecordVideoDto teStudentExamRecordVideoDto = new TEStudentExamRecordVideoDto(Objects.nonNull(examCacheBean) ? examCacheBean.getId() : null,
                 Objects.nonNull(examCacheBean) ? examCacheBean.getName() : null, Objects.nonNull(examStudentCacheBean) ? examStudentCacheBean.getId() : null, examRecordId, Objects.nonNull(examStudentCacheBean) ? examStudentCacheBean.getCourseCode() : null,
                 Objects.nonNull(examStudentCacheBean) ? examStudentCacheBean.getCourseName() : null, Objects.nonNull(examStudentCacheBean) ? examStudentCacheBean.getIdentity() : null, Objects.nonNull(examStudentCacheBean) ? examStudentCacheBean.getName() : null,
-                Objects.nonNull(tOeExamRecord) ? tOeExamRecord.getFirstStartTime() : null, teExamStudentLogList, teStudentExamRecordVideoMessageDtoIPage);
-        //TODO 兼容1.2.3之前的版本
+                tOeExamRecord.getFirstStartTime(), teExamStudentLogList, teStudentExamRecordVideoMessageDtoIPage);
         return teStudentExamRecordVideoDto;
     }
 }