From 2574334327d47d5b0d62e1e9fe442a493bbcf2bd Mon Sep 17 00:00:00 2001
From: 562935844@qq.com
Date: 星期二, 11 四月 2023 15:52:54 +0800
Subject: [PATCH] 新增接收主机退网delete/notify主题处理

---
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java       |   29 +++++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java                |    2 
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java |   62 +++++++++++++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java        |    9 --
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java        |   28 ++++++
 HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java                   |   65 +++++++++++++++
 6 files changed, 180 insertions(+), 15 deletions(-)

diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
index f9ce88a..4ad39ac 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java
@@ -108,6 +108,8 @@
     public static final String DELETE_REQUEST = "/base/%s/thing/topo/delete/request";
 
     //缃戝叧鍝嶅簲閫�缃戦�氱煡
+    public static final String DELETE_NOTIFY = "/base/%s/thing/topo/delete/notify";
+
     public static final String DELETE_NOTIFY_REPLY = "/base/%s/thing/topo/delete/notify_reply";
 
     //缃戝叧鐗╃悊鍒犻櫎(閫�缃�)瀛愯澶囧悗涓婃姤
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java
index 164f569..32b1cd0 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java
@@ -9,7 +9,6 @@
 public class ListOidRequest implements Serializable {
 
     private String oid;
-    private String mac;
 
     public String getOid() {
         return oid;
@@ -17,13 +16,5 @@
 
     public void setOid(String oid) {
         this.oid = oid;
-    }
-
-    public String getMac() {
-        return mac;
-    }
-
-    public void setMac(String mac) {
-        this.mac = mac;
     }
 }
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java
new file mode 100644
index 0000000..24aa094
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java
@@ -0,0 +1,29 @@
+package com.hdl.sdk.connect.bean.request;
+
+import java.io.Serializable;
+
+/**
+ * Created by Tong on 2022/09/23.
+ */
+
+public class ListOidRequest2 implements Serializable {
+
+    private String oid;
+    private String mac;
+
+    public String getOid() {
+        return oid;
+    }
+
+    public void setOid(String oid) {
+        this.oid = oid;
+    }
+
+    public String getMac() {
+        return mac;
+    }
+
+    public void setMac(String mac) {
+        this.mac = mac;
+    }
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
new file mode 100644
index 0000000..1e9d43c
--- /dev/null
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
@@ -0,0 +1,62 @@
+package com.hdl.sdk.connect.bean.response;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * Created by jlchen on 11/12/21.
+ *
+ * @Description : DeviceDeleteResponse
+ */
+public class DeviceDeleteResponse extends BaseResponse {
+    private List<GatewayObjects> objects;
+
+    public List<GatewayObjects> getObjects() {
+        return objects;
+    }
+
+    public void setObjects(List<GatewayObjects> objects) {
+        this.objects = objects;
+    }
+
+    public class GatewayObjects implements Serializable {
+        private String device_name;
+        private String oid;
+        private boolean isSaveOidInfo;
+        private boolean isDeletOidInfo;
+
+        public String getOID() {
+            return oid;
+        }
+
+        public void setOID(String value) {
+            this.oid = value;
+        }
+
+        public String getDevice_name() {
+            return device_name;
+        }
+
+        public void setDevice_name(String device_name) {
+            this.device_name = device_name;
+        }
+
+        public boolean isSaveOidInfo() {
+            return isSaveOidInfo;
+        }
+
+        public void setSaveOidInfo(boolean saveOidInfo) {
+            isSaveOidInfo = saveOidInfo;
+        }
+
+        public boolean isDeletOidInfo() {
+            return isDeletOidInfo;
+        }
+
+        public void setDeletOidInfo(boolean deletOidInfo) {
+            isDeletOidInfo = deletOidInfo;
+        }
+    }
+
+
+}
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
index e5eebc8..a227a2a 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -17,6 +17,7 @@
 import com.hdl.sdk.common.utils.gson.GsonConvert;
 import com.hdl.sdk.connect.bean.LinkResponse;
 import com.hdl.sdk.connect.bean.request.AuthenticateRequest;
+import com.hdl.sdk.connect.bean.response.DeviceDeleteResponse;
 import com.hdl.sdk.connect.bean.response.DeviceInfoResponse;
 import com.hdl.sdk.connect.callback.HDLLinkCallBack;
 import com.hdl.sdk.connect.config.HDLLinkConfig;
@@ -194,7 +195,11 @@
                 response.setData(bodyString);
                 LogUtils.i("鎺ユ敹鍒版暟鎹�:" + response.getTopic() + "\r\n" + response.getData());
 
-                String receivetopic = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId());
+                String updateLocalSecret = String.format(TopicConstant.LINK_BROADCAST, HDLLinkConfig.getInstance().getGatewayId());
+                String deleteNetwork = "";
+                if (HDLLinkConfig.getInstance().getDeviceInfoBean() != null) {
+                    deleteNetwork = String.format(TopicConstant.DELETE_NOTIFY, HDLLinkConfig.getInstance().getDeviceInfoBean().getOID());
+                }
 
                 if (response.getTopic().equals("/user/all/custom/gateway/search")) {
                     HDLAuthSocket.getInstance().UploadGatewayInfo(new HDLLinkCallBack() {
@@ -208,7 +213,7 @@
                             LogUtils.i("UploadGatewayInfo onError");
                         }
                     });
-                } else if (response.getTopic().equals(receivetopic)) {
+                } else if (response.getTopic().equals(updateLocalSecret)) {
                     try {
                         DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() {
                         }.getType());
@@ -220,13 +225,30 @@
                                 mackey = SPUtils.getString("auth_mackey_key", "");
                                 byte[] bodyBytes = AesUtil.aesDecrypt(baseBytes, mackey.substring(mackey.length() - 16));
                                 String localSecret = new String(bodyBytes, "utf-8");
-                                Log.d("panlili", "LinkMessageDecoder.java:----->localSecret= " + localSecret);
                                 HDLLinkConfig.getInstance().setLocalSecret(localSecret);
                             }
                         }
                     } catch (Exception e) {
                         LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
                     }
+                } else if (response.getTopic().equals(deleteNetwork)) {
+                    try {
+                        DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceDeleteResponse>() {
+                        }.getType());
+                        HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), new HDLLinkCallBack() {
+                            @Override
+                            public void onSuccess(String msg) {
+                                LogUtils.i("deleteNetwork onSucceed");
+                            }
+
+                            @Override
+                            public void onError(HDLLinkException e) {
+                                LogUtils.i("deleteNetwork onError");
+                            }
+                        });
+                    } catch (Exception e) {
+                        LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
+                    }
                 }
 
                 //闈炴甯告暟鎹紝杩斿洖
diff --git a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
index 47d5f92..82b4652 100644
--- a/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
+++ b/HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java
@@ -26,6 +26,7 @@
 import com.hdl.sdk.connect.bean.request.DeviceAuthRequest;
 import com.hdl.sdk.connect.bean.request.GatewayInfoRequest;
 import com.hdl.sdk.connect.bean.request.ListOidRequest;
+import com.hdl.sdk.connect.bean.request.ListOidRequest2;
 import com.hdl.sdk.connect.bean.request.ListUploadRequest;
 import com.hdl.sdk.connect.bean.response.AuthenticateResponse;
 import com.hdl.sdk.connect.bean.response.BaseLocalResponse;
@@ -765,13 +766,13 @@
 
         final String msgId = IdUtils.getUUId();
         String time = String.valueOf(System.currentTimeMillis());
-        final BaseLocalResponse<List<ListOidRequest>> data = new BaseLocalResponse<>();
+        final BaseLocalResponse<List<ListOidRequest2>> data = new BaseLocalResponse<>();
         data.setId(msgId);
         data.setTime_stamp(time);
 
-        final ListOidRequest request = new ListOidRequest();
+        final ListOidRequest2 request = new ListOidRequest2();
         request.setOid(oid);
-        List<ListOidRequest> list = new ArrayList<>();
+        List<ListOidRequest2> list = new ArrayList<>();
         list.add(request);
 
         data.setObjects(list);
@@ -814,6 +815,64 @@
         }
     }
 
+    /**
+     * 閫氱煡鍒犻櫎骞堕��缃戝瓙璁惧鎷撴墤鍏崇郴
+     *
+     * @param oid      浠庣綉鍏筹紙璁惧锛塷id
+     * @param callBack 缁撴灉鍥炶皟
+     */
+    public void deleteNetwork(String oid, HDLLinkCallBack callBack) {
+        if (TextUtils.isEmpty(oid)) {
+            callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_NULL_ERROR));
+        }
+
+        final String msgId = IdUtils.getUUId();
+        String time = String.valueOf(System.currentTimeMillis());
+        final BaseLocalResponse<List<ListOidRequest>> data = new BaseLocalResponse<>();
+        data.setId(msgId);
+        data.setTime_stamp(time);
+
+        final ListOidRequest request = new ListOidRequest();
+        request.setOid(oid);
+        List<ListOidRequest> list = new ArrayList<>();
+        list.add(request);
+
+        data.setObjects(list);
+
+        String topic = String.format(TopicConstant.DELETE_NOTIFY_REPLY, HDLLinkConfig.getInstance().getGatewayId());
+        LinkRequest message = new LinkRequest(topic,
+                GsonConvert.getGson().toJson(data));
+
+//        String replyTopic = topic + "_reply";
+
+        try {
+            sendMsg(message.getSendBytes(), topic, callBack, new SendListener() {
+                @Override
+                public void onSucceed() {
+                    if (callBack == null) return;
+                    try {
+                        callBack.onSuccess("閫�缃戞垚鍔�");
+                        HDLLinkConfig.getInstance().clearConfig();
+
+                    } catch (Exception e) {
+                        callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_DATA_ERROR));
+                    }
+                }
+
+                @Override
+                public void onError() {
+                    if (callBack != null) {
+                        callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+                    }
+                }
+            });
+        } catch (Exception e) {
+            if (callBack != null) {
+                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_SEND_ERROR));
+            }
+        }
+    }
+
 //    /**
 //     * 娓呯┖缂撳瓨
 //     */

--
Gitblit v1.8.0