浏览代码

WebSocket ack time修改

wangliang 4 年之前
父节点
当前提交
573433ade0

+ 1 - 1
themis-admin/src/main/java/com/qmth/themis/admin/websocket/WebSocketAdminServer.java

@@ -129,7 +129,7 @@ public class WebSocketAdminServer
                     Gson gson = new Gson();
                     WebsocketDto websocketDto = gson.fromJson(gson.toJson(jsonObject), WebsocketDto.class);
                     Method method = webSocketAdminMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(websocketDto.getType()).getDesc(), String.class);
-                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketAdminMessageTemplete, String.valueOf(websocketDto.getBody()));
+                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketAdminMessageTemplete, String.valueOf(websocketDto.getBody()), websocketDto.getTime());
                     this.sendMessage(result);
                 }
             } catch (Exception e) {

+ 6 - 9
themis-admin/src/main/java/com/qmth/themis/admin/websocketTemplete/WebSocketAdminMessageTemplete.java

@@ -3,16 +3,12 @@ package com.qmth.themis.admin.websocketTemplete;
 import com.alibaba.fastjson.JSONObject;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.WebsocketDto;
-import com.qmth.themis.common.util.Result;
-import com.qmth.themis.common.util.ResultUtil;
+import com.qmth.themis.business.enums.WebsocketTypeEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 
 /**
  * @Description: 管理端websocket模版
@@ -29,12 +25,13 @@ public class WebSocketAdminMessageTemplete {
      * 状态同步
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto syncStatus(String body) {
+    public WebsocketDto syncStatus(String body, Long time) {
         JSONObject jsonObject = JSONObject.parseObject(body);
         log.info("syncStatus jsonObject:{}", jsonObject.toJSONString());
-        return this.syncAck();
+        return this.syncAck(body, time);
     }
 
     /**
@@ -42,7 +39,7 @@ public class WebSocketAdminMessageTemplete {
      *
      * @return
      */
-    public WebsocketDto syncAck() {
-        return new WebsocketDto(this.getClass().getEnclosingMethod().getName(), Collections.singletonMap(SystemConstant.ACK_MESSAGE, System.currentTimeMillis()));
+    public WebsocketDto syncAck(String body, Long time) {
+        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, time));
     }
 }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketMobileServer.java

@@ -157,7 +157,7 @@ public class WebSocketMobileServer implements Concurrently {
                     jsonObject.getJSONObject("body").put("recordId", this.recordId);
                     websocketDto.setBody(jsonObject.getJSONObject("body"));
                     Method method = webSocketMobileMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(websocketDto.getType()).getDesc(), String.class);
-                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketMobileMessageTemplete, String.valueOf(websocketDto.getBody()));
+                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketMobileMessageTemplete, String.valueOf(websocketDto.getBody()), websocketDto.getTime());
                     this.sendMessage(result);
                 }
             } catch (Exception e) {

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java

@@ -164,7 +164,7 @@ public class WebSocketOeServer implements Concurrently {
                     jsonObject.getJSONObject("body").put("recordId", this.recordId);
                     websocketDto.setBody(jsonObject.getJSONObject("body"));
                     Method method = webSocketOeMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(websocketDto.getType()).getDesc(), String.class);
-                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketOeMessageTemplete, String.valueOf(websocketDto.getBody()));
+                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketOeMessageTemplete, String.valueOf(websocketDto.getBody()), websocketDto.getTime());
                     this.sendMessage(result);
                 }
             } catch (Exception e) {

+ 6 - 4
themis-exam/src/main/java/com/qmth/themis/exam/websocketTemplete/WebSocketMobileMessageTemplete.java

@@ -28,24 +28,26 @@ public class WebSocketMobileMessageTemplete {
      * 状态同步
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto syncStatus(String body) {
+    public WebsocketDto syncStatus(String body, Long time) {
         JSONObject jsonObject = JSONObject.parseObject(body);
         log.info("syncStatus jsonObject:{}", jsonObject.toJSONString());
         if (Objects.isNull(jsonObject.get("recordId")) || Objects.equals(jsonObject.get("recordId"), "")) {
             throw new BusinessException(ExceptionResultEnum.RECORD_ID_IS_NULL);
         }
-        return this.syncAck(body);
+        return this.syncAck(body, time);
     }
 
     /**
      * 同步确认
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto syncAck(String body) {
-        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, System.currentTimeMillis()));
+    public WebsocketDto syncAck(String body, Long time) {
+        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, time));
     }
 }

+ 14 - 11
themis-exam/src/main/java/com/qmth/themis/exam/websocketTemplete/WebSocketOeMessageTemplete.java

@@ -7,12 +7,12 @@ import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.enums.ExamRecordFieldEnum;
 import com.qmth.themis.business.enums.WebsocketTypeEnum;
 import com.qmth.themis.business.service.TOeExamRecordService;
-import com.qmth.themis.business.util.RedisUtil;
 import com.qmth.themis.common.enums.ExceptionResultEnum;
 import com.qmth.themis.common.exception.BusinessException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.util.Collections;
@@ -29,9 +29,6 @@ import java.util.Objects;
 public class WebSocketOeMessageTemplete {
     private final static Logger log = LoggerFactory.getLogger(WebSocketOeMessageTemplete.class);
 
-    @Resource
-    RedisUtil redisUtil;
-
     @Resource
     TOeExamRecordService tOeExamRecordService;
 
@@ -39,9 +36,11 @@ public class WebSocketOeMessageTemplete {
      * 客户端已下载试卷
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto clientPaperDownload(String body) {
+    @Transactional
+    public WebsocketDto clientPaperDownload(String body, Long time) {
         JSONObject jsonObject = JSONObject.parseObject(body);
         log.info("clientPaperDownload jsonObject:{}", jsonObject.toJSONString());
         if (Objects.isNull(jsonObject.get("recordId")) || Objects.equals(jsonObject.get("recordId"), "")) {
@@ -60,9 +59,11 @@ public class WebSocketOeMessageTemplete {
      * 状态同步
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto syncStatus(String body) {
+    @Transactional
+    public WebsocketDto syncStatus(String body, Long time) {
         JSONObject jsonObject = JSONObject.parseObject(body);
         log.info("syncStatus jsonObject:{}", jsonObject.toJSONString());
         if (Objects.isNull(jsonObject.get("recordId")) || Objects.equals(jsonObject.get("recordId"), "")) {
@@ -88,26 +89,28 @@ public class WebSocketOeMessageTemplete {
         String[] columns = new String[]{ExamRecordFieldEnum.answer_progress.name(), ExamRecordFieldEnum.duration_seconds.name(), ExamRecordFieldEnum.client_last_sync_time.name()};
         Object[] values = new Object[]{progress, durationSeconds, clientLastSyncTime};
         tOeExamRecordService.dataUpdatesMq(recordId, columns, values);
-        return this.syncAck(body);
+        return this.syncAck(body, time);
     }
 
     /**
      * 同步确认
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto syncAck(String body) {
-        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, System.currentTimeMillis()));
+    public WebsocketDto syncAck(String body, Long time) {
+        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, time));
     }
 
     /**
      * 监考消息确认
      *
      * @param body
+     * @param time
      * @return
      */
-    public WebsocketDto invigilateNoticeAck(String body) {
-        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, System.currentTimeMillis()));
+    public WebsocketDto invigilateNoticeAck(String body, Long time) {
+        return new WebsocketDto(WebsocketTypeEnum.convertToName(Thread.currentThread().getStackTrace()[1].getMethodName()), Collections.singletonMap(SystemConstant.ACK_MESSAGE, time));
     }
 }