Selaa lähdekoodia

add 添加子设备消息类型

18339543638 4 vuotta sitten
vanhempi
commit
6ca37802e0

+ 22 - 15
jetlinks-components/common-component/src/main/java/org/jetlinks/community/annotation/MessageValueCodec.java

@@ -6,6 +6,7 @@ import lombok.Data;
 import org.hswebframework.ezorm.core.ValueCodec;
 import org.jetlinks.core.message.ChildDeviceMessage;
 import org.jetlinks.core.message.DeviceMessage;
+import org.jetlinks.core.message.Message;
 import org.jetlinks.core.message.MessageType;
 import org.jetlinks.core.message.function.FunctionInvokeMessage;
 import org.jetlinks.core.message.property.ReadPropertyMessage;
@@ -31,24 +32,30 @@ public class MessageValueCodec implements ValueCodec<Object, Object> {
         return decode(JSON.parseObject(String.valueOf(data)));
     }
 
-    private DeviceMessage decode(JSONObject jsonObject ){
+    private Message decode(JSONObject jsonObject ){
         Object msgType = jsonObject.get("messageType");
-        if(MessageType.WRITE_PROPERTY.name().equals(msgType)){
-            return jsonObject.toJavaObject(WritePropertyMessage.class);
-        }
-        if(MessageType.READ_PROPERTY.name().equals(msgType)){
-            return jsonObject.toJavaObject(ReadPropertyMessage.class);
-        }
-        if(MessageType.INVOKE_FUNCTION.name().equals(msgType)){
-            return jsonObject.toJavaObject(FunctionInvokeMessage.class);
-        }
-        if (MessageType.STATE_CHECK.name().equals(msgType)) {
-            return jsonObject.toJavaObject(DeviceStateCheckMessage.class);
-        }
         if(MessageType.CHILD.name().equals(msgType)){
             JSONObject childDeviceMessage = (JSONObject) jsonObject.get("childDeviceMessage");
-            return ChildDeviceMessage.create(String.valueOf(jsonObject.get("deviceId")), this.decode(childDeviceMessage));
+            return ChildDeviceMessage.create(String.valueOf(jsonObject.get("deviceId")), (DeviceMessage) this.decode(childDeviceMessage));
         }
-        return null;
+        MessageType messageType = MessageType.of(String.valueOf(msgType)).orElse(MessageType.UNKNOWN);
+        return jsonObject.toJavaObject(messageType.getNewInstance().get().getClass());
+//        if(MessageType.WRITE_PROPERTY.name().equals(msgType)){
+//            return jsonObject.toJavaObject(WritePropertyMessage.class);
+//        }
+//        if(MessageType.READ_PROPERTY.name().equals(msgType)){
+//            return jsonObject.toJavaObject(ReadPropertyMessage.class);
+//        }
+//        if(MessageType.INVOKE_FUNCTION.name().equals(msgType)){
+//            return jsonObject.toJavaObject(FunctionInvokeMessage.class);
+//        }
+//        if (MessageType.STATE_CHECK.name().equals(msgType)) {
+//            return jsonObject.toJavaObject(DeviceStateCheckMessage.class);
+//        }
+//        if(MessageType.READ_PROPERTY_REPLY.name().equals(msgType)){
+//
+//        }
+//
+//        return null;
     }
 }