|
@@ -26,8 +26,8 @@ import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* 同步云阅卷接口工具类
|
|
|
- *
|
|
|
- * @Date: 2021/10/29.
|
|
|
+ * <p>
|
|
|
+ * Date: 2021/10/29.
|
|
|
*/
|
|
|
@Component
|
|
|
public class StmmsUtils {
|
|
@@ -54,7 +54,7 @@ public class StmmsUtils {
|
|
|
public Long syncExam(String code, String name, String examTime) {
|
|
|
String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
|
|
|
String examSaveUrl = dictionaryConfig.syncDataDomain().getExamSaveUrl();
|
|
|
- validatUrl(hostUrl, examSaveUrl);
|
|
|
+ validUrl(hostUrl, examSaveUrl);
|
|
|
String postUrl = hostUrl.concat(examSaveUrl);
|
|
|
//参数
|
|
|
Map<String, String> map = new HashMap<>();
|
|
@@ -88,14 +88,13 @@ public class StmmsUtils {
|
|
|
* @param paperType 试卷类型
|
|
|
* @param examSite 考点
|
|
|
* @param examRoom 考场
|
|
|
- * @return
|
|
|
*/
|
|
|
public boolean syncStudent(String examId, String examNumber, String studentCode, String name, String college,
|
|
|
String className, String teacher, String subjectCode, String subjectName,
|
|
|
String packageCode, String paperType, String examSite, String examRoom) {
|
|
|
String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
|
|
|
String studentSaveUrl = dictionaryConfig.syncDataDomain().getStudentSaveUrl();
|
|
|
- validatUrl(hostUrl, studentSaveUrl);
|
|
|
+ validUrl(hostUrl, studentSaveUrl);
|
|
|
String postUrl = hostUrl.concat(studentSaveUrl);
|
|
|
try {
|
|
|
//参数
|
|
@@ -133,12 +132,11 @@ public class StmmsUtils {
|
|
|
* @param subjectCode 科目代码
|
|
|
* @param type 文件类型 SyncFileTypeEnum枚举
|
|
|
* @param file 文件
|
|
|
- * @return
|
|
|
*/
|
|
|
public boolean syncFile(String examId, String subjectCode, SyncFileTypeEnum type, File file) {
|
|
|
String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
|
|
|
String fileUploadUrl = dictionaryConfig.syncDataDomain().getFileUploadUrl();
|
|
|
- validatUrl(hostUrl, fileUploadUrl);
|
|
|
+ validUrl(hostUrl, fileUploadUrl);
|
|
|
fileUploadUrl = fileUploadUrl.replace("{type}", type.name().toLowerCase());
|
|
|
String postUrl = hostUrl.concat(fileUploadUrl);
|
|
|
try {
|
|
@@ -185,18 +183,17 @@ public class StmmsUtils {
|
|
|
/**
|
|
|
* 试卷结构创建/更新接口
|
|
|
*
|
|
|
- * @param examId
|
|
|
- * @param subjectCode
|
|
|
- * @param objective
|
|
|
- * @param paperType
|
|
|
- * @param questions
|
|
|
- * @return
|
|
|
+ * @param examId 考试ID
|
|
|
+ * @param subjectCode 科目代码
|
|
|
+ * @param objective 是否客观题
|
|
|
+ * @param paperType 试卷类型
|
|
|
+ * @param questions 试卷结构JSON
|
|
|
*/
|
|
|
public boolean syncPaperStructure(String examId, String subjectCode, Boolean objective,
|
|
|
String paperType, List<SyncStructureData> questions) {
|
|
|
String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
|
|
|
String structureUrl = dictionaryConfig.syncDataDomain().getStructureUrl();
|
|
|
- validatUrl(hostUrl, structureUrl);
|
|
|
+ validUrl(hostUrl, structureUrl);
|
|
|
String postUrl = hostUrl.concat(structureUrl);
|
|
|
try {
|
|
|
//参数
|
|
@@ -222,7 +219,6 @@ public class StmmsUtils {
|
|
|
|
|
|
/**
|
|
|
* 评卷员登录
|
|
|
- * @return
|
|
|
*/
|
|
|
public Map<String, Object> markLogin(SysUser sysUser) {
|
|
|
String markLoginUrl = dictionaryConfig.syncDataDomain().getMarkLoginUrl();
|
|
@@ -236,7 +232,6 @@ public class StmmsUtils {
|
|
|
|
|
|
/**
|
|
|
* 科组长登录
|
|
|
- * @return
|
|
|
*/
|
|
|
public Map<String, Object> markLeaderLogin(SysUser sysUser) {
|
|
|
String markLeaderLoginUrl = dictionaryConfig.syncDataDomain().getMarkLeaderLoginUrl();
|
|
@@ -250,31 +245,33 @@ public class StmmsUtils {
|
|
|
|
|
|
/**
|
|
|
* 组装登录参数
|
|
|
- * @param loginUrl
|
|
|
- * @param prefix
|
|
|
- * @return
|
|
|
+ *
|
|
|
+ * @param loginUrl 登录url
|
|
|
+ * @param prefix 账号前缀
|
|
|
*/
|
|
|
private Map<String, Object> openLogin(SysUser sysUser, String loginUrl, String prefix) {
|
|
|
String hostUrl = dictionaryConfig.syncDataDomain().getHostUrl();
|
|
|
- validatUrl(hostUrl, loginUrl);
|
|
|
+ validUrl(hostUrl, loginUrl);
|
|
|
String postUrl = hostUrl.concat(loginUrl);
|
|
|
|
|
|
-
|
|
|
- long time = System.currentTimeMillis();
|
|
|
- Map<String, Object> map = new HashMap<>();
|
|
|
- map.put("redirectUrl", postUrl);
|
|
|
- map.put("account", prefix + sysUser.getLoginName());
|
|
|
- map.put("name", sysUser.getLoginName());
|
|
|
- map.put("time", time);
|
|
|
- map.put("authorization", createSign(time, loginUrl));
|
|
|
- return map;
|
|
|
+ try {
|
|
|
+ long time = System.currentTimeMillis();
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ map.put("redirectUrl", postUrl);
|
|
|
+ map.put("account", prefix + sysUser.getLoginName());
|
|
|
+ map.put("name", sysUser.getLoginName());
|
|
|
+ map.put("time", time);
|
|
|
+ map.put("authorization", createSign(time, loginUrl));
|
|
|
+ return map;
|
|
|
+ } catch (Exception e) {
|
|
|
+ throw ExceptionResultEnum.ERROR.exception("登录信息获取失败");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* http请求头
|
|
|
*
|
|
|
- * @param url
|
|
|
- * @return
|
|
|
+ * @param url 请求URL
|
|
|
*/
|
|
|
private Map<String, String> getHeaders(String url) {
|
|
|
long time = System.currentTimeMillis();
|
|
@@ -287,11 +284,10 @@ public class StmmsUtils {
|
|
|
/**
|
|
|
* 签名
|
|
|
*
|
|
|
- * @param time
|
|
|
- * @param url
|
|
|
- * @return
|
|
|
+ * @param time 时间戳
|
|
|
+ * @param url 请求URL
|
|
|
*/
|
|
|
- public String createSign(long time, String url) {
|
|
|
+ private String createSign(long time, String url) {
|
|
|
Long schoolId = Long.valueOf(ServletUtil.getRequestHeaderSchoolId().toString());
|
|
|
BasicSchool basicSchool = commonCacheService.schoolCache(schoolId);
|
|
|
if (basicSchool == null) {
|
|
@@ -301,8 +297,7 @@ public class StmmsUtils {
|
|
|
throw ExceptionResultEnum.ERROR.exception("学校已禁用");
|
|
|
}
|
|
|
|
|
|
- String signature = SignatureEntityTest.build(SignatureType.SECRET, POST_METHOD, url, time, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
|
|
|
- return signature;
|
|
|
+ return SignatureEntityTest.build(SignatureType.SECRET, POST_METHOD, url, time, basicSchool.getAccessKey(), basicSchool.getAccessSecret());
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -312,7 +307,6 @@ public class StmmsUtils {
|
|
|
* @param defaulValue 默认值
|
|
|
* @param require 是否必填(true:是,false:否)
|
|
|
* @param name 参数名称
|
|
|
- * @return
|
|
|
*/
|
|
|
private String validParam(String value, String defaulValue, boolean require, String name) {
|
|
|
if (require && StringUtils.isAnyBlank(value, defaulValue)) {
|
|
@@ -325,11 +319,10 @@ public class StmmsUtils {
|
|
|
/**
|
|
|
* 校验参数值并返回 (布尔型)
|
|
|
*
|
|
|
- * @param value
|
|
|
- * @param defaulValue
|
|
|
- * @param require
|
|
|
- * @param name
|
|
|
- * @return
|
|
|
+ * @param value 参数值
|
|
|
+ * @param defaulValue 默认值
|
|
|
+ * @param require 是否必填
|
|
|
+ * @param name 描述
|
|
|
*/
|
|
|
private Boolean validParam(Boolean value, Boolean defaulValue, Boolean require, String name) {
|
|
|
if (require && value == null && defaulValue == null) {
|
|
@@ -342,9 +335,8 @@ public class StmmsUtils {
|
|
|
/**
|
|
|
* 校验试卷结构值
|
|
|
*
|
|
|
- * @param objective
|
|
|
- * @param questions
|
|
|
- * @return
|
|
|
+ * @param objective 是否客观题
|
|
|
+ * @param questions 试卷结构JSON
|
|
|
*/
|
|
|
private Object validParam(Boolean objective, List<SyncStructureData> questions) {
|
|
|
for (SyncStructureData question : questions) {
|
|
@@ -362,9 +354,9 @@ public class StmmsUtils {
|
|
|
/**
|
|
|
* 校验url是否配置
|
|
|
*
|
|
|
- * @param urls
|
|
|
+ * @param urls URL数组
|
|
|
*/
|
|
|
- private void validatUrl(String... urls) {
|
|
|
+ private void validUrl(String... urls) {
|
|
|
if (StringUtils.isAnyBlank(urls)) {
|
|
|
throw ExceptionResultEnum.ERROR.exception("云阅卷同步接口未正确配置");
|
|
|
}
|