hxb
2023-09-18 881519bc1efeb83701e0ca44d026385db3d8509a
增加全局处理方法
4个文件已修改
151 ■■■■■ 已修改文件
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -1,15 +1,23 @@
package com.hdl.sdk.common.utils;
import android.text.TextUtils;
import android.util.Base64;
import android.util.Log;
import com.google.gson.reflect.TypeToken;
import com.hdl.sdk.common.config.TopicConstant;
import com.hdl.sdk.common.exception.HDLLinkException;
import com.hdl.sdk.common.utils.gson.GsonConvert;
import com.hdl.sdk.connect.HDLLink;
import com.hdl.sdk.connect.bean.LinkResponse;
import com.hdl.sdk.connect.bean.request.GatewayRemoteEditRequest;
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;
import com.hdl.sdk.connect.socket.HDLAuthSocket;
import com.hdl.sdk.connect.socket.HDLSocket;
import com.hdl.sdk.connect.utils.AesUtil;
import java.time.chrono.IsoChronology;
@@ -25,6 +33,9 @@
     */
    public static void manager(LinkResponse linkResponse) {
        try {
            if(linkResponse==null){
                return;
            }
            String topic = linkResponse.getTopic();
            if (TextUtils.isEmpty(topic)) {
                return;
@@ -46,8 +57,57 @@
            if(isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE,topic)){
                gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData());
            }
            else if(isSameTopic(TopicConstant.GATEWAY_SEARCH,topic)){
                HDLAuthSocket.getInstance().UploadGatewayInfo(null);
            }
            else if(isSameTopic(TopicConstant.LINK_BROADCAST,topic)){
                try {
                    DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(linkResponse.getData(), new TypeToken<DeviceInfoResponse>() {
                    }.getType());
            //TODO 通过增加if else 增加其它主题类似这样使用
                    if(deviceInfoResponse==null||deviceInfoResponse.getObjects()==null){
                        return;
                    }
                    if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
                        byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
                        String mackey = "";
                        if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
                            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", "更新密钥----->localSecret= " + localSecret);
                            HDLLinkConfig.getInstance().setLocalSecret(localSecret);
                        }
                    }
                } catch (Exception e) {
                    LogUtils.i("LinkMessageDecoder.java:getLocalSecret----->e= " + e.getMessage());
                }
            }
            else if(isSameTopic(TopicConstant.DELETE_NOTIFY,topic)){
                try {
                    DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(linkResponse.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");
                            if (HDLLink.getInstance().listener != null) {
                                HDLLink.getInstance().listener.onSuccess(msg);
                            }
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            LogUtils.i("deleteNetwork onError");
                            if (HDLLink.getInstance().listener != null) {
                                HDLLink.getInstance().listener.onFailure();
                            }
                        }
                    });
                } catch (Exception e) {
                    LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
                }
            }
        } catch (Exception e) {
            LogUtils.e("全局处理模块异常:" + e.getMessage());
@@ -64,10 +124,11 @@
            return false;
        }
        String mac = HDLLinkConfig.getInstance().getDeviceInfoBean().getDeviceMAC();
        String oid = "123";//HDLLinkConfig.getInstance().getDeviceInfoBean().getOID();
        String oid = HDLLinkConfig.getInstance().getDeviceInfoBean().getOID();
        String gatewayId = HDLLinkConfig.getInstance().getGatewayId();
        String all="all";
        return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId);
        return mac_Oid_GatewayId.equals(mac) || mac_Oid_GatewayId.equals(oid) || mac_Oid_GatewayId.equals(gatewayId)||mac_Oid_GatewayId.toLowerCase().equals(all);
    }
    /**
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/protocol/LinkMessageDecoder.java
@@ -196,71 +196,7 @@
                String bodyString = new String(body, "utf-8");
                response.setData(bodyString);
                LogUtils.i("接收到数据:" + response.getTopic() + "\r\n" + response.getData());
                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() {
                        @Override
                        public void onSuccess(String msg) {
                            LogUtils.i("UploadGatewayInfo onSucceed");
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            LogUtils.i("UploadGatewayInfo onError");
                        }
                    });
                }
                else if (response.getTopic().equals(updateLocalSecret) || response.getTopic().equals(TopicConstant.LINK_BROADCAST)) {
                    try {
                        DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(response.getData(), new TypeToken<DeviceInfoResponse>() {
                        }.getType());
                        if (!TextUtils.isEmpty(deviceInfoResponse.getObjects().getLocalSecret())) {
                            byte[] baseBytes = Base64.decode(deviceInfoResponse.getObjects().getLocalSecret(), Base64.NO_WRAP);
                            String mackey = "";
                            if (!TextUtils.isEmpty(SPUtils.getString("auth_mackey_key", ""))) {
                                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", "更新密钥----->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");
                                if (HDLLink.getInstance().listener != null) {
                                    HDLLink.getInstance().listener.onSuccess(msg);
                                }
                            }
                            @Override
                            public void onError(HDLLinkException e) {
                                LogUtils.i("deleteNetwork onError");
                                if (HDLLink.getInstance().listener != null) {
                                    HDLLink.getInstance().listener.onFailure();
                                }
                            }
                        });
                    } catch (Exception e) {
                        LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
                    }
                }
                //非正常数据,返回
                if (!((bodyString.startsWith("{") && bodyString.endsWith("}"))
                        || (bodyString.startsWith("[") && bodyString.endsWith("]")))) {
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HDLAuthSocket.java
@@ -224,21 +224,7 @@
                GsonConvert.getGson().toJson(data));
        String ip = IpUtils.getBroadcastAddress();
        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, new HdlSocketHelper.HdlSocketListener() {
            @Override
            public void onSucceed(Object msg) {
                if (callBack == null) return;
                callBack.onSuccess("上报成功");
                LogUtils.i("UploadGatewayInfo onSucceed = " + msg);
            }
            @Override
            public void onFailure() {
                if (callBack == null) return;
                callBack.onError(HDLLinkException.getErrorWithCode(HDLLinkCode.HDL_UPLOAD_GATEWAYINFO_FAILURE_ERROR));
                LogUtils.i("UploadGatewayInfo onFailure");
            }
        });
        HdlSocketHelper.sendUdp(getUdpBoot(), ip, UDP_PORT, message, null);
    }
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/connect/socket/HdlSocketHelper.java
@@ -91,7 +91,7 @@
     * 注册监听
     */
    void registerListener() {
        if (!TextUtils.isEmpty(observeTopic)) {
        if (listener != null && !TextUtils.isEmpty(observeTopic)) {
            EventDispatcher.getInstance().register(observeTopic, eventListener);
//            LogUtils.i("HdlSocketHelper", "register event");
        }