Pārlūkot izejas kodu

通话申请新加cancel状态

wangliang 2 gadi atpakaļ
vecāks
revīzija
6ca7cee4ed

+ 28 - 0
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -15,11 +15,15 @@ import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.enums.Platform;
 import com.qmth.themis.common.enums.Platform;
 import com.qmth.themis.common.enums.Source;
 import com.qmth.themis.common.enums.Source;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.exception.BusinessException;
+import com.qmth.themis.common.util.Base64Util;
 import com.qmth.themis.common.util.IpUtil;
 import com.qmth.themis.common.util.IpUtil;
+import org.apache.commons.io.IOUtils;
 import org.lionsoul.ip2region.xdb.Searcher;
 import org.lionsoul.ip2region.xdb.Searcher;
 
 
 import java.io.File;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.IOException;
+import java.io.OutputStream;
 import java.security.NoSuchAlgorithmException;
 import java.security.NoSuchAlgorithmException;
 import java.util.*;
 import java.util.*;
 import java.util.function.Function;
 import java.util.function.Function;
@@ -86,6 +90,7 @@ public class SystemConstant {
     /**
     /**
      * 系统相关
      * 系统相关
      */
      */
+    public static final String AUTH_INFO_CACHE = "auth:info:cache";
     public volatile static Searcher SEARCHER = null;
     public volatile static Searcher SEARCHER = null;
     public static final String SYS_CONFIG_KEY_CHARSETS = "sys.txt.charset";
     public static final String SYS_CONFIG_KEY_CHARSETS = "sys.txt.charset";
     public static final String ONLINE_WARN_INTERVAL = "online.warn.interval";
     public static final String ONLINE_WARN_INTERVAL = "online.warn.interval";
@@ -737,4 +742,27 @@ public class SystemConstant {
         Matcher matcher = pattern.matcher(str.trim());
         Matcher matcher = pattern.matcher(str.trim());
         return matcher.matches();
         return matcher.matches();
     }
     }
+
+    /**
+     * 图片转换
+     *
+     * @param imgBase64
+     * @param filePath
+     * @throws IOException
+     */
+    public static void base64ToImage(String imgBase64, String filePath) throws IOException {
+        OutputStream out = null;
+        try {
+            byte[] b = Base64Util.decode(imgBase64);
+            out = new FileOutputStream(filePath);
+            IOUtils.write(b, out);
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (Objects.nonNull(out)) {
+                out.flush();
+                out.close();
+            }
+        }
+    }
 }
 }

+ 2 - 1
themis-business/src/main/java/com/qmth/themis/business/dao/TBOrgMapper.java

@@ -2,6 +2,7 @@ package com.qmth.themis.business.dao;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.qmth.themis.business.base.CustomBaseMapper;
 import com.qmth.themis.business.dto.response.TBOrgDto;
 import com.qmth.themis.business.dto.response.TBOrgDto;
 import com.qmth.themis.business.entity.TBOrg;
 import com.qmth.themis.business.entity.TBOrg;
 import com.qmth.themis.business.enums.TaskStatusEnum;
 import com.qmth.themis.business.enums.TaskStatusEnum;
@@ -19,7 +20,7 @@ import java.util.Map;
  * @Date: 2020/6/25
  * @Date: 2020/6/25
  */
  */
 @Mapper
 @Mapper
-public interface TBOrgMapper extends BaseMapper<TBOrg> {
+public interface TBOrgMapper extends CustomBaseMapper<TBOrg> {
 
 
     /**
     /**
      * 查询机构分页信息
      * 查询机构分页信息

+ 4 - 2
themis-business/src/main/java/com/qmth/themis/business/dao/TIeExamInvigilateCallMapper.java

@@ -7,6 +7,7 @@ import com.qmth.themis.business.entity.TIeExamInvigilateCall;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -27,11 +28,12 @@ public interface TIeExamInvigilateCallMapper extends BaseMapper<TIeExamInvigilat
      * @param userId
      * @param userId
      * @param orgId
      * @param orgId
      * @param status
      * @param status
-     * @param callStatus
+     * @param callStatusList
      * @param roomCode
      * @param roomCode
+     * @param callStatus
      * @return
      * @return
      */
      */
-    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, @Param("examId") Long examId, @Param("userId") Long userId, @Param("orgId") Long orgId, @Param("status") String status, @Param("callStatus") String callStatus, @Param("roomCode") String roomCode);
+    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, @Param("examId") Long examId, @Param("userId") Long userId, @Param("orgId") Long orgId, @Param("status") String status, @Param("callStatusList") List<String> callStatusList, @Param("roomCode") String roomCode, @Param("callStatus") String callStatus);
 
 
     /**
     /**
      * 监考监控通话count查询
      * 监考监控通话count查询

+ 29 - 0
themis-business/src/main/java/com/qmth/themis/business/entity/TBOrg.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.themis.business.base.BaseEntity;
 import com.qmth.themis.business.base.BaseEntity;
+import com.qmth.themis.business.util.UidUtil;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
+import java.util.Objects;
+
 /**
 /**
  * @Description: 机构
  * @Description: 机构
  * @Param:
  * @Param:
@@ -21,6 +24,19 @@ public class TBOrg extends BaseEntity {
     @TableField(value = "code")
     @TableField(value = "code")
     private String code;
     private String code;
 
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        TBOrg tbOrg = (TBOrg) o;
+        return code.equals(tbOrg.code) && name.equals(tbOrg.name) && logo.equals(tbOrg.logo) && enable.equals(tbOrg.enable) && enableSimulate.equals(tbOrg.enableSimulate) && simulatePaperId.equals(tbOrg.simulatePaperId) && accessKey.equals(tbOrg.accessKey) && accessSecret.equals(tbOrg.accessSecret) && contactName.equals(tbOrg.contactName) && contactPhone.equals(tbOrg.contactPhone) && enableLiveness.equals(tbOrg.enableLiveness) && enableMonitorRecord.equals(tbOrg.enableMonitorRecord);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(code, name, logo, enable, enableSimulate, simulatePaperId, accessKey, accessSecret, contactName, contactPhone, enableLiveness, enableMonitorRecord);
+    }
+
     @ApiModelProperty(value = "名称")
     @ApiModelProperty(value = "名称")
     @TableField(value = "name")
     @TableField(value = "name")
     private String name;
     private String name;
@@ -66,6 +82,19 @@ public class TBOrg extends BaseEntity {
     @TableField(value = "enable_monitor_record")
     @TableField(value = "enable_monitor_record")
     private Integer enableMonitorRecord;
     private Integer enableMonitorRecord;
 
 
+    public TBOrg() {
+
+    }
+
+    public TBOrg(String code, String name, String accessKey, String accessSecret) {
+        this.code = code;
+        this.name = name;
+        this.accessKey = accessKey;
+        this.accessSecret = accessSecret;
+        setId(UidUtil.nextId());
+        this.enable = 1;
+    }
+
     public String getContactName() {
     public String getContactName() {
         return contactName;
         return contactName;
     }
     }

+ 3 - 1
themis-business/src/main/java/com/qmth/themis/business/enums/MonitorCallStatusSourceEnum.java

@@ -13,7 +13,9 @@ public enum MonitorCallStatusSourceEnum {
 
 
     CALLING("通话中"),
     CALLING("通话中"),
 
 
-    START("正常");
+    START("正常"),
+
+    CANCEL("取消");
 
 
     private String code;
     private String code;
 
 

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/enums/UploadFileEnum.java

@@ -69,7 +69,7 @@ public enum UploadFileEnum {
      */
      */
     public static Integer convertToId(String value) {
     public static Integer convertToId(String value) {
         for (UploadFileEnum e : UploadFileEnum.values()) {
         for (UploadFileEnum e : UploadFileEnum.values()) {
-            if (Objects.equals(value,e.name())) {
+            if (Objects.equals(value, e.name())) {
                 return e.getId();
                 return e.getId();
             }
             }
         }
         }

+ 4 - 2
themis-business/src/main/java/com/qmth/themis/business/service/TIeExamInvigilateCallService.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.qmth.themis.business.dto.response.TIeExamInvigilateCallDto;
 import com.qmth.themis.business.dto.response.TIeExamInvigilateCallDto;
 import com.qmth.themis.business.entity.TIeExamInvigilateCall;
 import com.qmth.themis.business.entity.TIeExamInvigilateCall;
 
 
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -24,11 +25,12 @@ public interface TIeExamInvigilateCallService extends IService<TIeExamInvigilate
      * @param userId
      * @param userId
      * @param orgId
      * @param orgId
      * @param status
      * @param status
-     * @param callStatus
+     * @param callStatusList
      * @param roomCode
      * @param roomCode
+     * @param callStatus
      * @return
      * @return
      */
      */
-    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, Long examId, Long userId, Long orgId, String status, String callStatus, String roomCode);
+    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, Long examId, Long userId, Long orgId, String status, List<String> callStatusList, String roomCode, String callStatus);
 
 
     /**
     /**
      * 监考监控通话count查询
      * 监考监控通话count查询

+ 5 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TIeExamInvigilateCallServiceImpl.java

@@ -9,6 +9,7 @@ import com.qmth.themis.business.service.TIeExamInvigilateCallService;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
+import java.util.List;
 import java.util.Map;
 import java.util.Map;
 
 
 /**
 /**
@@ -32,13 +33,14 @@ public class TIeExamInvigilateCallServiceImpl extends ServiceImpl<TIeExamInvigil
      * @param userId
      * @param userId
      * @param orgId
      * @param orgId
      * @param status
      * @param status
-     * @param callStatus
+     * @param callStatusList
      * @param roomCode
      * @param roomCode
+     * @param callStatus
      * @return
      * @return
      */
      */
     @Override
     @Override
-    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, Long examId, Long userId, Long orgId, String status, String callStatus, String roomCode) {
-        return tIeExamInvigilateCallMapper.examInvigilateCallQuery(iPage, examId, userId, orgId, status, callStatus, roomCode);
+    public IPage<TIeExamInvigilateCallDto> examInvigilateCallQuery(IPage<Map> iPage, Long examId, Long userId, Long orgId, String status, List<String> callStatusList, String roomCode, String callStatus) {
+        return tIeExamInvigilateCallMapper.examInvigilateCallQuery(iPage, examId, userId, orgId, status, callStatusList, roomCode, callStatus);
     }
     }
 
 
     /**
     /**

+ 7 - 3
themis-business/src/main/resources/mapper/TIeExamInvigilateCallMapper.xml

@@ -31,14 +31,18 @@
             <if test="status != null and status != ''">
             <if test="status != null and status != ''">
                 and tieic.status = #{status}
                 and tieic.status = #{status}
             </if>
             </if>
-            <if test="callStatus != null and callStatus != ''">
-                and tieic.call_status = #{callStatus}
+
+            <if test="callStatusList != null and callStatusList != ''">
+                and tieic.call_status in
+                <foreach collection="callStatusList" item="status" index="index" open="(" close=")" separator=",">
+                    #{status}
+                </foreach>
             </if>
             </if>
             <if test="roomCode != null and roomCode != ''">
             <if test="roomCode != null and roomCode != ''">
                 and tees.room_code = #{roomCode}
                 and tees.room_code = #{roomCode}
             </if>
             </if>
         </where>
         </where>
-        <if test="callStatus != null and callStatus != '' and callStatus == 'START'">
+        <if test="callStatus != null and callStatus != '' and (callStatus == 'START' or callStatus == 'START,CANCEL')">
             and (toer.status = 'FIRST_PREPARE' or toer.status = 'ANSWERING' or toer.status = 'BREAK_OFF' or toer.status = 'RESUME_PREPARE')
             and (toer.status = 'FIRST_PREPARE' or toer.status = 'ANSWERING' or toer.status = 'BREAK_OFF' or toer.status = 'RESUME_PREPARE')
         </if>
         </if>
         order by tieic.start_time desc
         order by tieic.start_time desc

+ 2 - 0
themis-common/src/main/java/com/qmth/themis/common/enums/ExceptionResultEnum.java

@@ -210,6 +210,8 @@ public enum ExceptionResultEnum {
 
 
     NO_SESSION(401, 401011, "请先登录"),
     NO_SESSION(401, 401011, "请先登录"),
 
 
+    AUTH_INFO_ERROR(401, 401012, "系统授权信息已过期,请联系系统管理员激活!"),
+
     /**
     /**
      * 404
      * 404
      */
      */

+ 6 - 5
themis-exam/src/main/java/com/qmth/themis/exam/api/TIeInvigilateCallOeController.java

@@ -30,9 +30,10 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;
 
 
 import javax.annotation.Resource;
 import javax.annotation.Resource;
-import java.util.*;
-import java.util.function.Function;
-import java.util.stream.Collectors;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
 
 
 /**
 /**
  * @Description: mobile监考监控通话信息 前端控制器
  * @Description: mobile监考监控通话信息 前端控制器
@@ -290,10 +291,10 @@ public class TIeInvigilateCallOeController {
 
 
         MonitorStatusSourceEnum status = ExamRecordCacheUtil.getMonitorStatus(recordId, source);
         MonitorStatusSourceEnum status = ExamRecordCacheUtil.getMonitorStatus(recordId, source);
         Long timestamp = System.currentTimeMillis();
         Long timestamp = System.currentTimeMillis();
-        ExamRecordCacheUtil.setMonitorCallStatus(recordId, source, MonitorCallStatusSourceEnum.STOP, timestamp);
+        ExamRecordCacheUtil.setMonitorCallStatus(recordId, source, MonitorCallStatusSourceEnum.CANCEL, timestamp);
         tOeExamRecordService.sendExamRecordDataSaveMq(recordId, timestamp);
         tOeExamRecordService.sendExamRecordDataSaveMq(recordId, timestamp);
         String monitorKey = ExamRecordCacheUtil.getMonitorKey(recordId);
         String monitorKey = ExamRecordCacheUtil.getMonitorKey(recordId);
-        TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.STOP);
+        TIeExamInvigilateCallLog tIeExamInvigilateCallLog = new TIeExamInvigilateCallLog(recordId, source, liveUrl, status, monitorKey, MonitorCallStatusSourceEnum.CANCEL);
         tIeExamInvigilateCallLog.setEndTime(System.currentTimeMillis());
         tIeExamInvigilateCallLog.setEndTime(System.currentTimeMillis());
         //监考监控通话信息 发送mq start
         //监考监控通话信息 发送mq start
         MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());
         MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.MONITOR_LOG.name(), tIeExamInvigilateCallLog, MqTagEnum.MONITOR_LOG, String.valueOf(tIeExamInvigilateCallLog.getId()), source.name());