Browse Source

监考日志修改

wangliang 4 years ago
parent
commit
fce3474305

+ 6 - 0
pom.xml

@@ -46,6 +46,7 @@
         <ehcache.version>2.10.6</ehcache.version>
         <ehcache.version>2.10.6</ehcache.version>
         <swagger2-bootstrap.version>1.9.6</swagger2-bootstrap.version>
         <swagger2-bootstrap.version>1.9.6</swagger2-bootstrap.version>
         <jetbrains.version>13.0</jetbrains.version>
         <jetbrains.version>13.0</jetbrains.version>
+        <tencentyun.version>1.1</tencentyun.version>
     </properties>
     </properties>
 
 
     <dependencyManagement>
     <dependencyManagement>
@@ -231,6 +232,11 @@
                 <version>${jetbrains.version}</version>
                 <version>${jetbrains.version}</version>
                 <scope>compile</scope>
                 <scope>compile</scope>
             </dependency>
             </dependency>
+            <dependency>
+                <groupId>com.github.tencentyun</groupId>
+                <artifactId>tls-sig-api-v2</artifactId>
+                <version>${tencentyun.version}</version>
+            </dependency>
         </dependencies>
         </dependencies>
     </dependencyManagement>
     </dependencyManagement>
 
 

+ 4 - 4
themis-backend/src/main/java/com/qmth/themis/backend/config/DictionaryConfig.java

@@ -71,13 +71,13 @@ public class DictionaryConfig {
     }
     }
 
 
     /**
     /**
-     * 阿里云oss配置
+     * 腾讯云配置
      *
      *
      * @return
      * @return
      */
      */
     @Bean
     @Bean
-    @ConfigurationProperties(prefix = "mq", ignoreUnknownFields = false)
-    public MqDomain mqDomain() {
-        return new MqDomain();
+    @ConfigurationProperties(prefix = "tencentyun.sdk", ignoreUnknownFields = false)
+    public TencentYunDomain tencentYunDomain() {
+        return new TencentYunDomain();
     }
     }
 }
 }

+ 4 - 0
themis-backend/src/main/resources/application.properties

@@ -117,6 +117,10 @@ aliyun.oss.bucket=qmth-test
 #aliyun.oss.url=http://${aliyun.oss.bucket}.${aliyun.oss.name}
 #aliyun.oss.url=http://${aliyun.oss.bucket}.${aliyun.oss.name}
 aliyun.oss.url=http://qmth-test.oss-cn-shenzhen.aliyuncs.com
 aliyun.oss.url=http://qmth-test.oss-cn-shenzhen.aliyuncs.com
 
 
+#\u817E\u8BAF\u4E91\u914D\u7F6E
+tencentyun.sdk.appId=1400411036
+tencentyun.sdk.key=d78004c94473cb1cf78af33d333e18b731132e527e829e44e2ab133945243b11
+
 #\u7CFB\u7EDF\u914D\u7F6E
 #\u7CFB\u7EDF\u914D\u7F6E
 sys.config.oss=false
 sys.config.oss=false
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip

+ 30 - 0
themis-business/src/main/java/com/qmth/themis/business/bean/exam/ExamPrepareBean.java

@@ -19,6 +19,36 @@ public class ExamPrepareBean {
 	private Boolean hasAudio;
 	private Boolean hasAudio;
 	@ApiModelProperty("音频题播放次数")
 	@ApiModelProperty("音频题播放次数")
 	private Integer audioPlayCount;
 	private Integer audioPlayCount;
+	@ApiModelProperty("监控标识,默认使用recordId")
+	private String monitorKey;
+	@ApiModelProperty("加入房间用户ID")
+	private String monitorUserId;
+	@ApiModelProperty("用户认证签名")
+	private String monitorUserSig;
+
+	public String getMonitorKey() {
+		return monitorKey;
+	}
+
+	public void setMonitorKey(String monitorKey) {
+		this.monitorKey = monitorKey;
+	}
+
+	public String getMonitorUserId() {
+		return monitorUserId;
+	}
+
+	public void setMonitorUserId(String monitorUserId) {
+		this.monitorUserId = monitorUserId;
+	}
+
+	public String getMonitorUserSig() {
+		return monitorUserSig;
+	}
+
+	public void setMonitorUserSig(String monitorUserSig) {
+		this.monitorUserSig = monitorUserSig;
+	}
 
 
 	public Long getRecordId() {
 	public Long getRecordId() {
 		return recordId;
 		return recordId;

+ 13 - 1
themis-business/src/main/java/com/qmth/themis/business/config/SystemConfig.java

@@ -68,7 +68,7 @@ public class SystemConfig {
      */
      */
     public Map<String, Object> getOssEnv(Integer type) {
     public Map<String, Object> getOssEnv(Integer type) {
         Map<String, Object> mapParameter = new HashMap<>();
         Map<String, Object> mapParameter = new HashMap<>();
-        mapParameter.put(SystemConstant.END_POINT, props.getProperty("aliyun.oss.endpoint","aliyun.oss.name"));
+        mapParameter.put(SystemConstant.END_POINT, props.getProperty("aliyun.oss.endpoint", "aliyun.oss.name"));
         mapParameter.put(SystemConstant.ACCESS_KEY_ID, props.getProperty("aliyun.oss.accessKeyId"));
         mapParameter.put(SystemConstant.ACCESS_KEY_ID, props.getProperty("aliyun.oss.accessKeyId"));
         mapParameter.put(SystemConstant.ACCESS_KEY_SECRET, props.getProperty("aliyun.oss.accessKeySecret"));
         mapParameter.put(SystemConstant.ACCESS_KEY_SECRET, props.getProperty("aliyun.oss.accessKeySecret"));
         mapParameter.put(SystemConstant.BUCKET, props.getProperty("aliyun.oss.bucket"));
         mapParameter.put(SystemConstant.BUCKET, props.getProperty("aliyun.oss.bucket"));
@@ -78,4 +78,16 @@ public class SystemConfig {
         mapParameter.put(SystemConstant.UPLOAD_TYPE, uploadType);
         mapParameter.put(SystemConstant.UPLOAD_TYPE, uploadType);
         return mapParameter;
         return mapParameter;
     }
     }
+
+    /**
+     * 获取腾讯云环境
+     *
+     * @return
+     */
+    public Map<String, Object> getTencentYunEnv() {
+        Map<String, Object> mapParameter = new HashMap<>();
+        mapParameter.put(SystemConstant.TENCENT_APPID, props.getProperty("tencentyun.sdk.appId"));
+        mapParameter.put(SystemConstant.TENCENT_KEY, props.getProperty("tencentyun.sdk.key"));
+        return mapParameter;
+    }
 }
 }

+ 7 - 2
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -28,6 +28,12 @@ public class SystemConstant {
     public static final String ACCESS_KEY_ID = "accessKeyId";
     public static final String ACCESS_KEY_ID = "accessKeyId";
     public static final String ACCESS_KEY_SECRET = "accessKeySecret";
     public static final String ACCESS_KEY_SECRET = "accessKeySecret";
     public static final String BUCKET = "bucket";
     public static final String BUCKET = "bucket";
+    /**
+     * 腾讯云
+     */
+    public static final String TENCENT_APPID = "appId";
+    public static final String TENCENT_KEY = "key";
+    public static final long TENCENT_EXPIRE_TIME = 24 * 3600 * 30;
     /**
     /**
      * 系统相关
      * 系统相关
      */
      */
@@ -91,7 +97,6 @@ public class SystemConstant {
     public static final String REDIS_LOCK_WEBSOCKET_PREFIX = "lock:websocket:";
     public static final String REDIS_LOCK_WEBSOCKET_PREFIX = "lock:websocket:";
     public static final long REDIS_LOCK_MQ_TIME_OUT = 1L;
     public static final long REDIS_LOCK_MQ_TIME_OUT = 1L;
     public static final long REDIS_LOCK_WEBSOCKET_TIME_OUT = 1L;
     public static final long REDIS_LOCK_WEBSOCKET_TIME_OUT = 1L;
-    public static final String REDIS_CACHE = "cache:task:";
     public static final long REDIS_CACHE_TIME_OUT = 30L;
     public static final long REDIS_CACHE_TIME_OUT = 30L;
     //学生锁
     //学生锁
     public static final String REDIS_LOCK_STUDENT_PREFIX = "lock:student:student_id_";
     public static final String REDIS_LOCK_STUDENT_PREFIX = "lock:student:student_id_";
@@ -257,7 +262,7 @@ public class SystemConstant {
         }
         }
         File tempdir = new File(mkdir + File.separator + "themis-temp");
         File tempdir = new File(mkdir + File.separator + "themis-temp");
         if (!tempdir.exists()) {
         if (!tempdir.exists()) {
-        	tempdir.mkdirs();
+            tempdir.mkdirs();
         }
         }
         FILES_DIR = dir.getPath();
         FILES_DIR = dir.getPath();
         TEMP_FILES_DIR = tempdir.getPath();
         TEMP_FILES_DIR = tempdir.getPath();

+ 0 - 24
themis-business/src/main/java/com/qmth/themis/business/domain/MqDomain.java

@@ -1,24 +0,0 @@
-package com.qmth.themis.business.domain;
-
-import java.io.Serializable;
-import java.util.Map;
-
-/**
- * @Description: mq配置 domain
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/8/5
- */
-public class MqDomain implements Serializable {
-
-    private Map<String, String> groupMap;
-
-    public Map<String, String> getGroupMap() {
-        return groupMap;
-    }
-
-    public void setGroupMap(Map<String, String> groupMap) {
-        this.groupMap = groupMap;
-    }
-}

+ 32 - 0
themis-business/src/main/java/com/qmth/themis/business/domain/TencentYunDomain.java

@@ -0,0 +1,32 @@
+package com.qmth.themis.business.domain;
+
+import java.io.Serializable;
+
+/**
+* @Description: 腾讯云 domain
+* @Param:  
+* @return:  
+* @Author: wangliang
+* @Date: 2020/8/21 
+*/ 
+public class TencentYunDomain implements Serializable {
+
+    private String appId;
+    private String key;
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getKey() {
+        return key;
+    }
+
+    public void setKey(String key) {
+        this.key = key;
+    }
+}

+ 14 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -8,12 +8,14 @@ import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.*;
 import com.qmth.themis.business.cache.bean.*;
 import com.qmth.themis.business.config.SystemConfig;
 import com.qmth.themis.business.config.SystemConfig;
+import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dao.TEExamMapper;
 import com.qmth.themis.business.dao.TEExamMapper;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.MqDto;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
 import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
 import com.qmth.themis.business.dto.response.TEExamActivityDto;
 import com.qmth.themis.business.dto.response.TEExamActivityDto;
 import com.qmth.themis.business.dto.response.TEExamDto;
 import com.qmth.themis.business.dto.response.TEExamDto;
 import com.qmth.themis.business.dto.response.TEExamQueryDto;
 import com.qmth.themis.business.dto.response.TEExamQueryDto;
+import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.entity.TEExam;
 import com.qmth.themis.business.entity.TEExam;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.entity.TOeExamRecord;
 import com.qmth.themis.business.enums.*;
 import com.qmth.themis.business.enums.*;
@@ -21,6 +23,7 @@ import com.qmth.themis.business.service.*;
 import com.qmth.themis.business.util.OssUtil;
 import com.qmth.themis.business.util.OssUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.business.util.ServletUtil;
 import com.qmth.themis.business.util.ServletUtil;
+import com.qmth.themis.business.util.TencentYunUtil;
 import com.qmth.themis.common.exception.BusinessException;
 import com.qmth.themis.common.exception.BusinessException;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -66,9 +69,6 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @Resource
     @Resource
     TOeExamRecordService toeExamRecordService;
     TOeExamRecordService toeExamRecordService;
 
 
-    @Resource
-    TEExamStudentService examStudentService;
-
     @Resource
     @Resource
     RedisUtil redisUtil;
     RedisUtil redisUtil;
 
 
@@ -78,6 +78,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @Resource
     @Resource
     MqDtoService mqDtoService;
     MqDtoService mqDtoService;
 
 
+    @Resource
+    TencentYunUtil tencentYunUtil;
+
     /**
     /**
      * 查询考试批次
      * 查询考试批次
      *
      *
@@ -196,6 +199,10 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
             String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
             prepare.setPaperUrl(paperurl);
             prepare.setPaperUrl(paperurl);
             prepare.setStructUrl(structurl);
             prepare.setStructUrl(structurl);
+            prepare.setMonitorKey(String.valueOf(recordId));
+            TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
+            prepare.setMonitorUserId("s_" + tbSession.getId());
+            prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
             return prepare;
             return prepare;
         }
         }
         if (es.getLeftExamCount() == 0) {
         if (es.getLeftExamCount() == 0) {
@@ -262,6 +269,10 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
         String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
         prepare.setPaperUrl(paperurl);
         prepare.setPaperUrl(paperurl);
         prepare.setStructUrl(structurl);
         prepare.setStructUrl(structurl);
+        prepare.setMonitorKey(String.valueOf(recordId));
+        TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
+        prepare.setMonitorUserId("s_" + tbSession.getId());
+        prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
 
 
         ExamCacheBean exam = getExamCacheBean(es.getExamId());
         ExamCacheBean exam = getExamCacheBean(es.getExamId());
         Integer breakResumeCount = exam.getBreakResumeCount();
         Integer breakResumeCount = exam.getBreakResumeCount();

+ 36 - 0
themis-business/src/main/java/com/qmth/themis/business/util/TencentYunUtil.java

@@ -0,0 +1,36 @@
+package com.qmth.themis.business.util;
+
+import com.qmth.themis.business.config.SystemConfig;
+import com.qmth.themis.business.constant.SystemConstant;
+import com.tencentyun.TLSSigAPIv2;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+/**
+ * @Description: 腾讯云util
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/8/21
+ */
+@Component
+public class TencentYunUtil {
+
+    @Resource
+    SystemConfig systemConfig;
+
+    /**
+     * 获取签名
+     *
+     * @param sessionId
+     * @param expireTime
+     * @return
+     */
+    public String getSign(String sessionId, Long expireTime) {
+        Map<String, Object> map = systemConfig.getTencentYunEnv();
+        TLSSigAPIv2 api = new TLSSigAPIv2(Long.parseLong(String.valueOf(map.get(SystemConstant.TENCENT_APPID))), String.valueOf(map.get(SystemConstant.TENCENT_KEY)));
+        return api.genSig(sessionId, expireTime);
+    }
+}

+ 4 - 0
themis-common/pom.xml

@@ -70,5 +70,9 @@
 			<artifactId>slf4j-api</artifactId>
 			<artifactId>slf4j-api</artifactId>
 			<version>2.0.0-alpha1</version>
 			<version>2.0.0-alpha1</version>
 		</dependency>
 		</dependency>
+		<dependency>
+			<groupId>com.github.tencentyun</groupId>
+			<artifactId>tls-sig-api-v2</artifactId>
+		</dependency>
 	</dependencies>
 	</dependencies>
 </project>
 </project>

+ 2 - 2
themis-common/src/main/java/com/qmth/themis/common/signature/SignatureInfo.java

@@ -1,6 +1,6 @@
 package com.qmth.themis.common.signature;
 package com.qmth.themis.common.signature;
 
 
-import com.qmth.themis.common.util.Base64Utils;
+import com.qmth.themis.common.util.Base64Util;
 import com.qmth.themis.common.util.ShaUtils;
 import com.qmth.themis.common.util.ShaUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
@@ -101,7 +101,7 @@ public class SignatureInfo {
     }
     }
 
 
     private static String encrypt(String... values) {
     private static String encrypt(String... values) {
-        return Base64Utils.encode(ShaUtils.sha1(StringUtils.join(values, PARAM_JOINER)));
+        return Base64Util.encode(ShaUtils.sha1(StringUtils.join(values, PARAM_JOINER)));
     }
     }
 
 
 //    /**
 //    /**

+ 1 - 1
themis-common/src/main/java/com/qmth/themis/common/util/Base64Utils.java → themis-common/src/main/java/com/qmth/themis/common/util/Base64Util.java

@@ -4,7 +4,7 @@ import com.qmth.themis.common.contanst.Constants;
 
 
 import java.util.Base64;
 import java.util.Base64;
 
 
-public class Base64Utils implements Constants {
+public class Base64Util implements Constants {
 
 
     public static String encode(byte[] input) {
     public static String encode(byte[] input) {
         return new String(Base64.getEncoder().encode(input), CHARSET);
         return new String(Base64.getEncoder().encode(input), CHARSET);

+ 8 - 8
themis-common/src/main/java/com/qmth/themis/common/util/RSAUtils.java

@@ -21,14 +21,14 @@ public class RSAUtils implements Constants {
     public static RSAPrivateKey buildPrivateKey(String key)
     public static RSAPrivateKey buildPrivateKey(String key)
             throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
             throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
         KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM_NAME);
         KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM_NAME);
-        PKCS8EncodedKeySpec pkcs8eks = new PKCS8EncodedKeySpec(Base64Utils.decode(key));
+        PKCS8EncodedKeySpec pkcs8eks = new PKCS8EncodedKeySpec(Base64Util.decode(key));
         return (RSAPrivateKey) keyFactory.generatePrivate(pkcs8eks);
         return (RSAPrivateKey) keyFactory.generatePrivate(pkcs8eks);
     }
     }
 
 
     public static RSAPublicKey buildPublicKey(String key)
     public static RSAPublicKey buildPublicKey(String key)
             throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
             throws NoSuchAlgorithmException, UnsupportedEncodingException, InvalidKeySpecException {
         KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM_NAME);
         KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM_NAME);
-        X509EncodedKeySpec x509eks = new X509EncodedKeySpec(Base64Utils.decode(key));
+        X509EncodedKeySpec x509eks = new X509EncodedKeySpec(Base64Util.decode(key));
         return (RSAPublicKey) keyFactory.generatePublic(x509eks);
         return (RSAPublicKey) keyFactory.generatePublic(x509eks);
     }
     }
 
 
@@ -37,7 +37,7 @@ public class RSAUtils implements Constants {
             IllegalBlockSizeException, BadPaddingException {
             IllegalBlockSizeException, BadPaddingException {
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         cipher.init(Cipher.ENCRYPT_MODE, privateKey);
         cipher.init(Cipher.ENCRYPT_MODE, privateKey);
-        return Base64Utils.encode(cipher.doFinal(input.getBytes(CHARSET_NAME)));
+        return Base64Util.encode(cipher.doFinal(input.getBytes(CHARSET_NAME)));
     }
     }
 
 
     public static String encrypt(byte[] input, RSAPrivateKey privateKey)
     public static String encrypt(byte[] input, RSAPrivateKey privateKey)
@@ -45,7 +45,7 @@ public class RSAUtils implements Constants {
             IllegalBlockSizeException, BadPaddingException {
             IllegalBlockSizeException, BadPaddingException {
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         cipher.init(Cipher.ENCRYPT_MODE, privateKey);
         cipher.init(Cipher.ENCRYPT_MODE, privateKey);
-        return Base64Utils.encode(cipher.doFinal(input));
+        return Base64Util.encode(cipher.doFinal(input));
     }
     }
 
 
     public static String decrypt(String input, RSAPublicKey publicKey)
     public static String decrypt(String input, RSAPublicKey publicKey)
@@ -53,7 +53,7 @@ public class RSAUtils implements Constants {
             UnsupportedEncodingException {
             UnsupportedEncodingException {
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         cipher.init(Cipher.DECRYPT_MODE, publicKey);
         cipher.init(Cipher.DECRYPT_MODE, publicKey);
-        return new String(cipher.doFinal(Base64Utils.decode(input)), CHARSET_NAME);
+        return new String(cipher.doFinal(Base64Util.decode(input)), CHARSET_NAME);
     }
     }
 
 
     public static byte[] decrypt2byte(String input, RSAPublicKey publicKey)
     public static byte[] decrypt2byte(String input, RSAPublicKey publicKey)
@@ -61,7 +61,7 @@ public class RSAUtils implements Constants {
             UnsupportedEncodingException {
             UnsupportedEncodingException {
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
         cipher.init(Cipher.DECRYPT_MODE, publicKey);
         cipher.init(Cipher.DECRYPT_MODE, publicKey);
-        return cipher.doFinal(Base64Utils.decode(input));
+        return cipher.doFinal(Base64Util.decode(input));
     }
     }
 
 
     public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
     public static void main(String[] args) throws NoSuchAlgorithmException, UnsupportedEncodingException {
@@ -71,8 +71,8 @@ public class RSAUtils implements Constants {
         keyPairGenerator.initialize(1024);
         keyPairGenerator.initialize(1024);
         KeyPair keyPair = keyPairGenerator.generateKeyPair();
         KeyPair keyPair = keyPairGenerator.generateKeyPair();
         // 分别得到公钥和私钥
         // 分别得到公钥和私钥
-        String publicKey = Base64Utils.encode(((RSAPublicKey) keyPair.getPublic()).getEncoded());
-        String privateKey = Base64Utils.encode(((RSAPrivateKey) keyPair.getPrivate()).getEncoded());
+        String publicKey = Base64Util.encode(((RSAPublicKey) keyPair.getPublic()).getEncoded());
+        String privateKey = Base64Util.encode(((RSAPrivateKey) keyPair.getPrivate()).getEncoded());
         System.out.println("publicKey:" + publicKey);
         System.out.println("publicKey:" + publicKey);
         System.out.println("privateKey:" + privateKey);
         System.out.println("privateKey:" + privateKey);
     }
     }

+ 4 - 4
themis-exam/src/main/java/com/qmth/themis/exam/config/DictionaryConfig.java

@@ -71,13 +71,13 @@ public class DictionaryConfig {
     }
     }
 
 
     /**
     /**
-     * 阿里云oss配置
+     * 腾讯云配置
      *
      *
      * @return
      * @return
      */
      */
     @Bean
     @Bean
-    @ConfigurationProperties(prefix = "mq", ignoreUnknownFields = false)
-    public MqDomain mqDomain() {
-        return new MqDomain();
+    @ConfigurationProperties(prefix = "tencentyun.sdk", ignoreUnknownFields = false)
+    public TencentYunDomain tencentYunDomain() {
+        return new TencentYunDomain();
     }
     }
 }
 }

+ 4 - 0
themis-exam/src/main/resources/application.properties

@@ -129,6 +129,10 @@ aliyun.oss.bucket=qmth-test
 #aliyun.oss.url=http://${aliyun.oss.bucket}.${aliyun.oss.name}
 #aliyun.oss.url=http://${aliyun.oss.bucket}.${aliyun.oss.name}
 aliyun.oss.url=http://qmth-test.oss-cn-shenzhen.aliyuncs.com
 aliyun.oss.url=http://qmth-test.oss-cn-shenzhen.aliyuncs.com
 
 
+#\u817E\u8BAF\u4E91\u914D\u7F6E
+tencentyun.sdk.appId=1400411036
+tencentyun.sdk.key=d78004c94473cb1cf78af33d333e18b731132e527e829e44e2ab133945243b11
+
 #\u7CFB\u7EDF\u914D\u7F6E
 #\u7CFB\u7EDF\u914D\u7F6E
 sys.config.oss=false
 sys.config.oss=false
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip
 sys.config.attachmentType=.xlsx,.xls,.doc,.docx,.pdf,.jpg,.jpeg,.png,.html,.zip

+ 1 - 12
themis-task/src/main/java/com/qmth/themis/task/config/DictionaryConfig.java

@@ -1,8 +1,8 @@
 package com.qmth.themis.task.config;
 package com.qmth.themis.task.config;
 
 
 import com.qmth.themis.business.domain.AliYunOssDomain;
 import com.qmth.themis.business.domain.AliYunOssDomain;
-import com.qmth.themis.business.domain.MqDomain;
 import com.qmth.themis.business.domain.SysDomain;
 import com.qmth.themis.business.domain.SysDomain;
+import com.qmth.themis.business.domain.TencentYunDomain;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Configuration;
@@ -38,15 +38,4 @@ public class DictionaryConfig {
     public AliYunOssDomain aliYunOssDomain() {
     public AliYunOssDomain aliYunOssDomain() {
         return new AliYunOssDomain();
         return new AliYunOssDomain();
     }
     }
-
-    /**
-     * 阿里云oss配置
-     *
-     * @return
-     */
-    @Bean
-    @ConfigurationProperties(prefix = "mq", ignoreUnknownFields = false)
-    public MqDomain mqDomain() {
-        return new MqDomain();
-    }
 }
 }