lideyin 5 rokov pred
rodič
commit
d397ec6102

+ 6 - 1
pom.xml

@@ -22,7 +22,12 @@
 			<artifactId>examcloud-ws-api</artifactId>
 			<version>${examcloud.version}</version>
 		</dependency>
-	</dependencies>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud</groupId>
+            <artifactId>examcloud-support</artifactId>
+            <version>${examcloud.version}</version>
+        </dependency>
+    </dependencies>
 
 	<build>
 		<plugins>

+ 60 - 0
src/main/java/cn/com/qmth/examcloud/ws/handler/FileAnswerHandler.java

@@ -0,0 +1,60 @@
+package cn.com.qmth.examcloud.ws.handler;
+
+import cn.com.qmth.examcloud.api.commons.security.bean.User;
+import cn.com.qmth.examcloud.ws.api.enums.WebSocketEventType;
+import cn.com.qmth.examcloud.ws.handler.bean.FileAnswerBean;
+import cn.com.qmth.examcloud.ws.starter.core.Message;
+import cn.com.qmth.examcloud.ws.starter.core.MessageHandler;
+import com.mysql.cj.util.StringUtils;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Component
+@MessageHandler("fileAnswer")
+public class FileAnswerHandler {
+
+	@MessageHandler
+	public Map<String,Object> message(User user, @Message FileAnswerBean fileAnswerBean) {
+		try {
+			//事件类型
+			String eventType = fileAnswerBean.getEventType();
+
+			if (StringUtils.isNullOrEmpty(eventType)) {
+				return buildSystemErrorMap("无效的消息请求");
+			}
+			if (eventType.equals(WebSocketEventType.HEARTBEAT.toString())) {
+				return buildHeartbeatMessage(eventType);
+			} else {
+				return buildSystemErrorMap("无效的消息请求");
+			}
+		} catch (Exception e) {
+			return buildSystemErrorMap("无效的消息请求,详情:" + e.getMessage());
+		}
+	}
+
+	/**
+	 * 构建系统错误消息体
+	 *
+	 * @param message
+	 */
+	private Map<String,Object> buildSystemErrorMap(String message) {
+		Map<String,Object> errorMap = new HashMap<>();
+		errorMap.put("eventType", WebSocketEventType.SYSTEM_ERROR.toString());
+		errorMap.put("errorMessage", message);
+		return errorMap;
+	}
+
+	/**
+	 * 构建心跳消息体
+	 * @param eventType
+	 * @return
+	 */
+	private Map<String,Object> buildHeartbeatMessage(String eventType) {
+		Map<String,Object> heartbeatMap = new HashMap<>();
+		heartbeatMap.put("eventType", eventType);
+		return heartbeatMap;
+	}
+
+}

+ 73 - 0
src/main/java/cn/com/qmth/examcloud/ws/handler/bean/FileAnswerBean.java

@@ -0,0 +1,73 @@
+package cn.com.qmth.examcloud.ws.handler.bean;
+
+import cn.com.qmth.examcloud.api.commons.exchange.JsonSerializable;
+import com.sun.org.apache.xpath.internal.operations.Bool;
+
+public class FileAnswerBean implements JsonSerializable {
+
+	private static final long serialVersionUID = -2201601873884785173L;
+	/**
+	 * 事件类型
+	 */
+	private String eventType;
+
+	/**
+	 * 题目序号
+	 */
+	private Integer order;
+
+	/**
+	 *是否为环境监测
+	 */
+	private Boolean testEnv;
+
+	/**
+	 * 传输文件类型(用于标识,通过二维码传输文件的类型)
+	 */
+	private String transferFileType;
+
+	/**
+	 * 考试记录id
+	 */
+	private Long examRecordDataId;
+
+	public String getEventType() {
+		return eventType;
+	}
+
+	public void setEventType(String eventType) {
+		this.eventType = eventType;
+	}
+
+	public Integer getOrder() {
+		return order;
+	}
+
+	public void setOrder(Integer order) {
+		this.order = order;
+	}
+
+	public Boolean getTestEnv() {
+		return testEnv;
+	}
+
+	public void setTestEnv(Boolean testEnv) {
+		this.testEnv = testEnv;
+	}
+
+	public String getTransferFileType() {
+		return transferFileType;
+	}
+
+	public void setTransferFileType(String transferFileType) {
+		this.transferFileType = transferFileType;
+	}
+
+	public Long getExamRecordDataId() {
+		return examRecordDataId;
+	}
+
+	public void setExamRecordDataId(Long examRecordDataId) {
+		this.examRecordDataId = examRecordDataId;
+	}
+}