hxb
2023-09-18 e7e494c6d168ea2942e1c6fa1c9c7808f4c12184
HDLSDK/hdl-connect/src/main/java/com/hdl/sdk/common/utils/AllTopicManagerUtils.java
@@ -19,8 +19,6 @@
import com.hdl.sdk.connect.socket.HDLSocket;
import com.hdl.sdk.connect.utils.AesUtil;
import java.time.chrono.IsoChronology;
/**
 * Created by hxb on 2023/9/14.
 */
@@ -56,57 +54,12 @@
            if(isSameTopic(TopicConstant.GATEWAY_EDIT_REMOTE,topic)){
                gatewayRemoteEditRequest(mac_Oid_GatewayId, linkResponse.getData());
            }
            else if(isSameTopic(TopicConstant.GATEWAY_SEARCH,topic)){
            } 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());
                    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());
                }
            } else if (isSameTopic(TopicConstant.LINK_BROADCAST, topic)) {
                managerLinkBroadcast(linkResponse.getData());
            } else if (isSameTopic(TopicConstant.DELETE_NOTIFY, topic)) {
                managerDeleteNofity(linkResponse.getData());
            }
        } catch (Exception e) {
@@ -116,6 +69,7 @@
    /**
     * 是否当前的设备
     *
     * @param mac_Oid_GatewayId
     * @return
     */
@@ -133,6 +87,7 @@
    /**
     * 是否相同主题
     *
     * @param targetTopic 目标的主题
     * @param sourceTopic 接收的主题
     * @return
@@ -161,6 +116,7 @@
    /**
     * 网关信息配置
     *
     * @param body
     */
    private static void gatewayRemoteEditRequest(String mac_Oid_GatewayId,String body) {
@@ -179,4 +135,51 @@
        HDLSocket.getInstance().gatewayRemoteEditReply(mac_Oid_GatewayId, gatewayRemoteEditRequest.getId(), null);
    }
    /**
     * 更新密钥
     * @param body
     */
    private static void managerLinkBroadcast(String body) {
        try {
            DeviceInfoResponse deviceInfoResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceInfoResponse>() {
            }.getType());
            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());
        }
    }
    /**
     * 退网
     * @param body
     */
    private static void managerDeleteNofity(String body)
    {
        try {
            DeviceDeleteResponse deviceDeleteResponse = GsonConvert.getGson().fromJson(body, new TypeToken<DeviceDeleteResponse>() {
            }.getType());
            if(deviceDeleteResponse==null||deviceDeleteResponse.getObjects()==null){
                return;
            }
            HDLSocket.getInstance().deleteNetwork(deviceDeleteResponse.getObjects().get(0).getOID(), null);
        } catch (Exception e) {
            LogUtils.i("LinkMessageDecoder.java:deleteNetwork----->e= " + e.getMessage());
        }
    }
}