Browse Source

quartz mq

wangliang 4 years ago
parent
commit
d706e936c1

+ 6 - 4
themis-backend/src/main/java/com/qmth/themis/backend/websocket/WebSocketAdminServer.java

@@ -1,10 +1,12 @@
 package com.qmth.themis.backend.websocket;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
 import com.qmth.themis.backend.config.DictionaryConfig;
 import com.qmth.themis.backend.websocketTemplete.WebSocketAdminMessageTemplete;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.enums.MqEnum;
 import com.qmth.themis.business.enums.SystemOperationEnum;
@@ -179,11 +181,11 @@ public class WebSocketAdminServer
                 log.info("onMessage:{}", jsonObject.toJSONString());
                 if (Objects.nonNull(jsonObject)) {
                     WebSocketAdminMessageTemplete webSocketAdminMessageTemplete = SpringContextHolder.getBean(WebSocketAdminMessageTemplete.class);
-                    String type = String.valueOf(jsonObject.get("type"));
-                    Long time = Long.parseLong(String.valueOf(jsonObject.get("time")));
+                    Gson gson = new Gson();
+                    WebsocketDto websocketDto = gson.fromJson(gson.toJson(jsonObject), WebsocketDto.class);
                     //todo 加入当前时间和time比较的校验
-                    Method method = webSocketAdminMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(type).getDesc(), String.class);
-                    Result result = (Result) method.invoke(webSocketAdminMessageTemplete, String.valueOf(jsonObject.get("body")));
+                    Method method = webSocketAdminMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(websocketDto.getType()).getDesc(), String.class);
+                    WebsocketDto result = (WebsocketDto) method.invoke(webSocketAdminMessageTemplete, String.valueOf(websocketDto.getBody()));
                     this.sendMessage(JSONObject.toJSONString(result));
                 }
             } catch (Exception e) {

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

@@ -1,8 +1,10 @@
 package com.qmth.themis.exam.websocket;
 
 import com.alibaba.fastjson.JSONObject;
+import com.google.gson.Gson;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
+import com.qmth.themis.business.dto.WebsocketDto;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.enums.MqEnum;
 import com.qmth.themis.business.enums.SystemOperationEnum;
@@ -182,12 +184,13 @@ public class WebSocketOeServer
                 log.info("onMessage:{}", jsonObject.toJSONString());
                 if (Objects.nonNull(jsonObject)) {
                     WebSocketOeMessageTemplete webSocketOeMessageTemplete = SpringContextHolder.getBean(WebSocketOeMessageTemplete.class);
-                    String type = String.valueOf(jsonObject.get("type"));
-                    Long time = Long.parseLong(String.valueOf(jsonObject.get("time")));
+                    Gson gson = new Gson();
+                    WebsocketDto websocketDto = gson.fromJson(gson.toJson(jsonObject), WebsocketDto.class);
                     //todo 加入当前时间和time比较的校验
                     jsonObject.getJSONObject("body").put("recordId", this.recordId);
-                    Method method = webSocketOeMessageTemplete.getClass().getDeclaredMethod(WebsocketTypeEnum.valueOf(type).getDesc(), String.class);
-                    Result result = (Result) method.invoke(webSocketOeMessageTemplete, String.valueOf(jsonObject.get("body")));
+                    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()));
                     this.sendMessage(JSONObject.toJSONString(result));
                 }
             } catch (Exception e) {

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

@@ -98,7 +98,7 @@ public class WebSocketOeMessageTemplete {
     public WebsocketDto syncAck() {
         Map map = new HashMap<>();
         map.put(SystemConstant.ACK_MESSAGE, System.currentTimeMillis());
-        WebsocketDto websocketDto = new WebsocketDto(this.getClass().getEnclosingMethod().getName(), map);
+        WebsocketDto websocketDto = new WebsocketDto(Thread.currentThread().getStackTrace()[1].getMethodName(), map);
         return websocketDto;
     }