|
|
@@ -3,11 +3,12 @@ package com.xunmei.mediator.websocket.utils;
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.xunmei.common.core.constant.Constants;
|
|
|
-import com.xunmei.common.core.utils.JacksonUtils;
|
|
|
+import com.xunmei.common.core.constant.HttpStatus;
|
|
|
import com.xunmei.mediator.websocket.constant.WebSocketConstants;
|
|
|
import com.xunmei.mediator.websocket.dto.WebsocketResult;
|
|
|
import com.xunmei.mediator.websocket.enums.TopicTypeEnums;
|
|
|
-import com.xunmei.mediator.websocket.holder.WebSocketSessionHolder;
|
|
|
+import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
|
|
|
+import io.netty.util.internal.StringUtil;
|
|
|
import lombok.AccessLevel;
|
|
|
import lombok.NoArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -20,7 +21,7 @@ import java.util.UUID;
|
|
|
@NoArgsConstructor(access = AccessLevel.PRIVATE)
|
|
|
public class IotServerUtils {
|
|
|
|
|
|
- public static WebsocketResult invokeIotServer(String topic, String service, Object args){
|
|
|
+ public static WebsocketResult invokeIotServer(String topic, String service, Object args) {
|
|
|
WebsocketResult websocketResult = new WebsocketResult();
|
|
|
websocketResult.setId(UUID.randomUUID().toString());
|
|
|
websocketResult.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
|
|
|
@@ -38,7 +39,7 @@ public class IotServerUtils {
|
|
|
String id = UUID.randomUUID().toString();
|
|
|
WebsocketResult iotWebsocketResult = new WebsocketResult();
|
|
|
//Iot消息透穿至主机 固定Topic
|
|
|
- iotWebsocketResult.setTopic(TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE, WebSocketConstants.IOT_SERVER,WebSocketConstants.IOT_SERVER_DEVICE));
|
|
|
+ iotWebsocketResult.setTopic(TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), WebSocketConstants.IOT_SERVER,WebSocketConstants.IOT_SERVER_DEVICE));
|
|
|
iotWebsocketResult.setId(id);
|
|
|
iotWebsocketResult.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
|
|
|
//iot消息头
|
|
|
@@ -55,7 +56,7 @@ public class IotServerUtils {
|
|
|
iotPayloadObj.put(WebSocketConstants.ARGS,hostData );
|
|
|
hostData.setId(id);
|
|
|
hostData.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
|
|
|
- hostData.setTopic(TopicTypeEnums.formatUrl(topicTypeEnums, produceName,deviceName));
|
|
|
+ hostData.setTopic(TopicTypeEnums.formatUrl(topicTypeEnums.getUrl(), produceName,deviceName));
|
|
|
JSONObject hostHeaderObj = new JSONObject();
|
|
|
hostHeaderObj.put(WebSocketConstants.PRODUCT_NAME,produceName);
|
|
|
hostHeaderObj.put(WebSocketConstants.DEVICE_NAME, deviceName);
|
|
|
@@ -68,4 +69,52 @@ public class IotServerUtils {
|
|
|
hostData.setPayload(hostPayloadObj);
|
|
|
return iotWebsocketResult;
|
|
|
}
|
|
|
+
|
|
|
+ public static WebsocketResult invokeUpLinkServer(String topic,String produceName,String deviceName,String invokeMethod,JSONObject object,String replyId){
|
|
|
+ WebsocketResult iotWebsocketResult = new WebsocketResult();
|
|
|
+ //Iot消息透穿至主机 固定Topic
|
|
|
+ iotWebsocketResult.setTopic(TopicTypeEnums.formatUrl(TopicTypeEnums.PRODUCT_SERVICE_INVOKE.getUrl(), WebSocketConstants.IOT_SERVER,WebSocketConstants.IOT_SERVER_DEVICE));
|
|
|
+ iotWebsocketResult.setId(replyId);
|
|
|
+ iotWebsocketResult.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
|
|
|
+ //iot消息头
|
|
|
+ JSONObject iotHeaderObj = new JSONObject();
|
|
|
+ iotHeaderObj.put(WebSocketConstants.PRODUCT_NAME,WebSocketConstants.IOT_SERVER);
|
|
|
+ iotHeaderObj.put(WebSocketConstants.DEVICE_NAME, WebSocketConstants.IOT_SERVER_DEVICE);
|
|
|
+ iotHeaderObj.put(WebSocketConstants.REPLY_ID, replyId);
|
|
|
+ iotWebsocketResult.setHeaders(iotHeaderObj);
|
|
|
+ //iot消息体,完整的消息包含在payload中
|
|
|
+ JSONObject iotPayloadObj = new JSONObject();
|
|
|
+ iotWebsocketResult.setPayload(iotPayloadObj);
|
|
|
+ iotPayloadObj.put(WebSocketConstants.SERVICE, WebSocketConstants.UP_LINK_SERVICE_PASS_THROUGH);
|
|
|
+ //以下是主机消息内容
|
|
|
+ WebsocketResult hostData = new WebsocketResult();
|
|
|
+ iotPayloadObj.put(WebSocketConstants.ARGS,hostData );
|
|
|
+ hostData.setId(replyId);
|
|
|
+ hostData.setTimestamp(DateUtil.format(new Date(), Constants.UTC_FORMAT));
|
|
|
+ hostData.setTopic(topic);
|
|
|
+ JSONObject hostHeaderObj = new JSONObject();
|
|
|
+ hostHeaderObj.put(WebSocketConstants.PRODUCT_NAME,produceName);
|
|
|
+ hostHeaderObj.put(WebSocketConstants.DEVICE_NAME, deviceName);
|
|
|
+ hostHeaderObj.put(WebSocketConstants.REPLY_ID, replyId);
|
|
|
+ hostData.setHeaders(hostHeaderObj);
|
|
|
+
|
|
|
+ JSONObject hostPayloadObj = new JSONObject();
|
|
|
+ hostPayloadObj.put(WebSocketConstants.EVENT, invokeMethod);
|
|
|
+ hostPayloadObj.put(WebSocketConstants.ARGS, object);
|
|
|
+
|
|
|
+ hostData.setPayload(hostPayloadObj);
|
|
|
+ return iotWebsocketResult;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static JSONObject dealReceiveErrorDto(ReceiveErrorDto dto) {
|
|
|
+ final JSONObject object = new JSONObject();
|
|
|
+ if (dto.getSuccess()){
|
|
|
+ object.put(WebSocketConstants.STATUS_CODE, HttpStatus.SUCCESS);
|
|
|
+ object.put(WebSocketConstants.STATUS_DESCRIPTION, dto.getErrorMsg());
|
|
|
+ }else {
|
|
|
+ object.put(WebSocketConstants.STATUS_CODE, HttpStatus.ERROR);
|
|
|
+ object.put(WebSocketConstants.STATUS_DESCRIPTION, dto.getErrorMsg());
|
|
|
+ }
|
|
|
+ return object;
|
|
|
+ }
|
|
|
}
|