562935844@qq.com
2023-04-11 2574334327d47d5b0d62e1e9fe442a493bbcf2bd
新增接收主机退网delete/notify主题处理
2个文件已添加
4个文件已修改
195 ■■■■■ 已修改文件
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/config/TopicConstant.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLSocket.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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";
    //网关物理删除(退网)子设备后上报
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;
    }
}
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/request/ListOidRequest2.java
New file
@@ -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;
    }
}
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/bean/response/DeviceDeleteResponse.java
New file
@@ -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;
        }
    }
}
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());
                    }
                }
                //非正常数据,返回
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      从网关(设备)oid
     * @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));
            }
        }
    }
//    /**
//     * 清空缓存
//     */