Explorar el Código

socket 消息回复代码提交

jingyuanchao hace 1 año
padre
commit
c54ade3a1e

+ 5 - 2
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/video/service/impl/VideoDiagnosisRecordServiceImpl.java

@@ -9,10 +9,10 @@ import com.xunmei.common.core.domain.iot.domain.IotDevice;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
 import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisRecord;
 import com.xunmei.common.core.utils.IDHelper;
+import com.xunmei.mediator.api.alarm.service.IotAlarmDataService;
 import com.xunmei.mediator.api.host.mapper.MediatorCategoryMapper;
 import com.xunmei.mediator.api.host.service.IIotDeviceService;
 import com.xunmei.mediator.api.host.service.IIotDvrChannelService;
-import com.xunmei.mediator.api.alarm.service.IotAlarmDataService;
 import com.xunmei.mediator.api.video.mapper.VideoDiagnosisRecordMapper;
 import com.xunmei.mediator.api.video.service.IVideoDiagnosisLogService;
 import com.xunmei.mediator.api.video.service.IVideoDiagnosisRecordService;
@@ -84,8 +84,10 @@ public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisR
     @Override
     public Object execute(WebsocketExecuteReq obj) {
 
+
         try {
-            VideoDiagnosisReq req = (VideoDiagnosisReq) obj.getData();
+            String jsonString = JSON.toJSONString(obj.getData());
+            VideoDiagnosisReq req = JSON.parseObject(jsonString, VideoDiagnosisReq.class);
 
             VideoDiagnosisDto dto = new VideoDiagnosisDto();
             dto.setEquipmentCode(req.getDvsCode());
@@ -95,6 +97,7 @@ public class VideoDiagnosisRecordServiceImpl extends ServiceImpl<VideoDiagnosisR
             dto.setAlarmTime(req.getAlarmTime());
             dto.setDetailInfo(req.getDetailInfo());
             return saveData(dto, "");
+
         } catch (IllegalAccessException | ParseException e) {
             throw new RuntimeException(e);
         }

+ 1 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/video/service/impl/VideoIntegrityCheckServiceImpl.java

@@ -124,6 +124,7 @@ public class VideoIntegrityCheckServiceImpl extends ServiceImpl<VideoIntegrityCh
         dst.setEquipmentCode(req.getDvsCode());
         dst.setChannelCode(req.getIndex());
         dst.setRecordDate(req.getRecordDate());
+        dst.setRecordType(req.getRecordType());
         dst.setLoseSpan(req.getLoseSpan());
         dst.setRecordSpan(req.getRecordSpan());
         dst.setCheckSpan(req.getCheckSpan());

+ 7 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/constant/WebSocketConstants.java

@@ -105,4 +105,11 @@ public interface WebSocketConstants {
 
 
     // ------------------ IOT提供的服务能力结束 ------------------
+
+    /**
+     * 返回常量
+     */
+    String STATUS_CODE="statusCode";
+
+    String STATUS_DESCRIPTION="statusDescription";
 }

+ 24 - 4
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/dto/WebsocketResult.java

@@ -1,12 +1,17 @@
 package com.xunmei.mediator.websocket.dto;
 
 import cn.hutool.core.date.DateUtil;
+import com.xunmei.common.core.constant.HttpStatus;
+import com.xunmei.mediator.websocket.constant.WebSocketConstants;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * @author gaoxiong
@@ -39,12 +44,27 @@ public class WebsocketResult implements Serializable {
     private Object payload;
 
 
-    public String invokeTopic(String productName,String deviceName) {
-       return String.format("things/%s/%s/service/invoke",productName,deviceName);
+    public String invokeTopic(String productName, String deviceName) {
+        return String.format("things/%s/%s/service/invoke", productName, deviceName);
     }
 
-    public void  setTimestamp(Date date) {
-        this.timestamp=DateUtil.format(date,"yyyy-MM-dd'T'HH:mm:ss");
+    public void setTimestamp(Date date) {
+        this.timestamp = DateUtil.format(date, "yyyy-MM-dd'T'HH:mm:ss");
+    }
+
+    public static WebsocketResult of(ReceiveErrorDto dto, String topic, String id) {
+        WebsocketResult result = new WebsocketResult();
+        result.setId(id);
+        result.setTopic(topic);
+        result.setTimestamp(new Date());
+        if (dto == null) {
+            return result;
+        }
+        Map<String, Object> map = new HashMap<>();
+        map.put(WebSocketConstants.STATUS_CODE, dto.getSuccess() ? HttpStatus.SUCCESS : HttpStatus.ERROR);
+        map.put(WebSocketConstants.STATUS_DESCRIPTION, dto.getErrorMsg());
+        result.setPayload(map);
+        return result;
     }
 
 }

+ 3 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/handler/SocWebSocketHandler.java

@@ -16,6 +16,7 @@ import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
 import com.xunmei.mediator.websocket.service.RouterService;
 import com.xunmei.mediator.websocket.service.RouterServiceHandler;
 import com.xunmei.mediator.websocket.utils.WebSocketUtils;
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -184,7 +185,8 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                         //IoT返回服务调用消息
                     case PRODUCT_SERVICE_REPLY:
                         RouterService routeService = RouterServiceHandler.getRouteService(typeEnums.getProductName(), routingKey);
-                        routeService.execute(new WebsocketExecuteReq(event, args, token));
+                        ReceiveErrorDto dto = (ReceiveErrorDto) routeService.execute(new WebsocketExecuteReq(event, args, token));
+                        WebSocketUtils.sendMessage(session,WebsocketResult.of(dto, topic, websocketResult.getId()));
                         break;
                     //IoT返回属性
                     case PRODUCT_PROPERTY_REPLY:
@@ -192,8 +194,6 @@ public class SocWebSocketHandler extends AbstractWebSocketHandler {
                     default:
                         break;
                 }
-
-                //todo 返回iot消息
             }
         } catch (Exception e) {
             log.error("转换消息内容时出错:{}", e);

+ 6 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/websocket/utils/WebSocketUtils.java

@@ -1,8 +1,10 @@
 package com.xunmei.mediator.websocket.utils;
 
 import cn.hutool.core.collection.CollUtil;
+import com.xunmei.common.core.utils.JacksonUtils;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.mediator.websocket.dto.WebSocketMessageDto;
+import com.xunmei.mediator.websocket.dto.WebsocketResult;
 import com.xunmei.mediator.websocket.dto.WebsocketUrlInfo;
 import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
 import lombok.AccessLevel;
@@ -112,6 +114,10 @@ public class WebSocketUtils {
         sendMessage(session, new TextMessage(message));
     }
 
+    public static void sendMessage(WebSocketSession session, WebsocketResult message) {
+        sendMessage(session, new TextMessage(JacksonUtils.toJSONString(message)));
+    }
+
     /**
      * 向指定的WebSocket会话发送WebSocket消息对象
      *