From 5ca2b601848c62607d88fee5afdae6af80f6eea7 Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期三, 20 三月 2024 16:12:26 +0800
Subject: [PATCH] 2024年03月20日16:12:17

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java |  244 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 183 insertions(+), 61 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
index dc2df03..f9d9993 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -11,10 +11,14 @@
 import android.location.LocationManager;
 import android.os.IBinder;
 import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
 
 import androidx.core.app.ActivityCompat;
 
+import com.alibaba.fastjson.JSON;
 import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
 import com.hdl.linkpm.sdk.core.exception.HDLException;
 import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean;
 import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean;
@@ -30,6 +34,7 @@
 import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
 import com.hdl.photovoltaic.listener.LinkCallBack;
+import com.hdl.photovoltaic.ui.bean.CUserInfo;
 import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
 import com.hdl.photovoltaic.ui.bean.DeviceTimeBean;
 import com.hdl.photovoltaic.ui.bean.Geolocation;
@@ -58,9 +63,11 @@
 
 
 import java.io.File;
+import java.lang.reflect.Type;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -109,9 +116,25 @@
                 return;
             }
             String type = getKeyValue("type", data);//灏忕被
+            String logTag = getKeyValue("logTag", data);//鏍囪uni鎸囦护
             String mode_type = "澶х被->" + topic + "--->" + "灏忕被->" + type;//鐢ㄦ潵鎵撳嵃鐨�
-            HdlLogLogic.print("uni--->鍙戦��--->" + mode_type + "\r\n" + data, true);
-            if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) {
+            HdlLogLogic.print(logTag + ":" + "uni--->鍙戦��--->" + mode_type + "\r\n" + data, true);
+            if (HDLUniMP.UNI_EVENT_REPLY_USER_MODEL.equals(topic)) {
+                //鐢ㄦ埛妯″潡
+                switch (type) {
+                    //鐢ㄦ埛淇℃伅
+                    case HDLUniMP.UNI_EVENT_REPLY_USER_INFO: {
+                        this.uniGetUserInfo(mode_type, data, callback);
+                    }
+                    break;
+                    //鐢ㄦ埛澶村儚锛堟棫骞冲彴閫昏緫鏄ご鍍忓崟鐙幏鍙栦笅杞藉湴鍧�锛�
+                    case HDLUniMP.UNI_EVENT_REPLY_USER_IMAGE: {
+                        uniGetImageKey(mode_type, data, callback);
+                    }
+                    break;
+                }
+
+            } else if (HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL.equals(topic)) {
                 //浣忓畢妯″潡
                 switch (type) {
                     //鍒涘缓鐢电珯
@@ -210,6 +233,11 @@
                     //閫嗗彉鍣ㄦ竻绌轰綇瀹卛d
                     case HDLUniMP.UNI_EVENT_REPLY_DEVICE_CLEAR_DATA: {
                         this.uniClearInverterHomeId(mode_type, data, callback);
+                    }
+                    break;
+                    //鑾峰彇鏈鐞�/鏈娑堟伅鏁伴噺
+                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MESSAGE_NUMBER: {
+                        this.uniGetMessageNumber(mode_type, data, callback);
                     }
                     break;
 
@@ -1079,6 +1107,74 @@
     }
 
     /**
+     * 鑾峰彇鐢ㄦ埛淇℃伅
+     *
+     * @param data     uni鏁版嵁
+     * @param callback uni鍥炶皟
+     */
+    private void uniGetUserInfo(String type, Object data, DCUniMPJSCallback callback) {
+        HdlAccountLogic.getInstance().getMemberInfo_C(new CloudCallBeak<CUserInfo>() {
+            @Override
+            public void onSuccess(CUserInfo cUserInfo) {
+                if (cUserInfo == null) {
+                    return;
+                }
+                UserConfigManage.getInstance().setBingPhone(cUserInfo.getMemberPhone());
+                UserConfigManage.getInstance().setBingEmail(cUserInfo.getMemberEmail());
+                UserConfigManage.getInstance().Save();
+                //鑾峰彇鐢ㄦ埛澶村儚璺緞
+                if (cUserInfo.getMemberHeadIcon().contains("http")) {
+                    UserConfigManage.getInstance().setUserImageUrl(cUserInfo.getMemberHeadIcon());
+                    //鏇存柊鐢ㄦ埛澶村儚
+                    uniCallbackData(type, cUserInfo, callback);
+                } else {
+                    HdlAccountLogic.getInstance().getImageKey_C(cUserInfo.getMemberHeadIcon(), new CloudCallBeak<String>() {
+                        @Override
+                        public void onSuccess(String url) {
+                            cUserInfo.setMemberHeadIcon(url);
+                            UserConfigManage.getInstance().setUserImageUrl(cUserInfo.getMemberHeadIcon());
+                            uniCallbackData(type, cUserInfo, callback);
+                        }
+
+                        @Override
+                        public void onFailure(HDLException e) {
+                            uniCallbackData(type, cUserInfo, callback);
+                        }
+                    });
+                }
+
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+            }
+        });
+    }
+
+    /**
+     * 鑾峰彇鐢ㄦ埛澶村儚
+     *
+     * @param data     uni鏁版嵁
+     * @param callback uni鍥炶皟
+     */
+    private void uniGetImageKey(String type, Object data, DCUniMPJSCallback callback) {
+        String imageKey = getKeyValue("imageKey", getKeyValue("data", data));
+        HdlAccountLogic.getInstance().getImageKey_C(imageKey, new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String url) {
+                uniCallbackData(type, url, callback);
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+            }
+        });
+    }
+
+
+    /**
      * 閫嗗彉鍣ㄦ竻绌轰綇瀹卛d
      *
      * @param data     uni鏁版嵁
@@ -1100,6 +1196,27 @@
     }
 
     /**
+     * 鑾峰彇鏈鐞�/鏈娑堟伅鏁伴噺
+     *
+     * @param data     uni鏁版嵁
+     * @param callback uni鍥炶皟
+     */
+    private void uniGetMessageNumber(String type, Object data, DCUniMPJSCallback callback) {
+        String homeId = getKeyValue("homeId", getKeyValue("data", data));
+        HdlMessageLogic.getInstance().getMessageUntreatedCount(homeId, new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String data) {
+                uniCallbackData(type, data, callback);
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+            }
+        });
+    }
+
+    /**
      * 閫嗗彉鍣ㄣ�愪笂浼犳暟鎹�戝埌浜戠
      *
      * @param data     uni鏁版嵁
@@ -1107,7 +1224,11 @@
      */
     private void uniUploadDataToCloud(String type, Object data, DCUniMPJSCallback callback) {
         String mac = getKeyValue("mac", getKeyValue("data", data));
-        HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), mac, null);
+        List<GatewayBean> list = new ArrayList<>();
+        GatewayBean gatewayBean = new GatewayBean();
+        gatewayBean.setDevice_mac(mac);
+        list.add(gatewayBean);
+        HdlDeviceLogic.getInstance().uploadDataToCloud(UserConfigManage.getInstance().getHomeId(), list, null);
     }
 
     /**
@@ -1238,62 +1359,66 @@
      */
     private void uniAddAllInverterDeviceToCloud(String type, Object data, DCUniMPJSCallback callback) {
 //        com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(data);
-        String mac = getKeyValue("mac", getKeyValue("data", data));
-        String homeId = UserConfigManage.getInstance().getHomeId();
-        GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(mac);
-        if (gatewayBean == null) {
-            uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
+        try {
+            String devices = getKeyValue("devices", getKeyValue("data", data));
+            Gson gson = new Gson();
+            Type typeOfT = new TypeToken<List<GatewayBean>>() {
+            }.getType();
+            List<GatewayBean> list = gson.fromJson(devices, typeOfT);
+            if (list == null || list.size() == 0) {
+                uniCallbackData(type, null, -100, HDLApp.getInstance().getString(R.string.The_gateway_cannot_be_found_locally), callback);
+                return;
+            }
+            String homeId = UserConfigManage.getInstance().getHomeId();
+            //璁板綍鏉℃暟
+            AtomicInteger atomicInteger = new AtomicInteger(0);
+            final boolean[] is_boolean = {false};
+            for (int i = 0; i < list.size(); i++) {
+                GatewayBean gatewayBean = list.get(i);
+                HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() {
+                    @Override
+                    public void onSuccess(Boolean obj) {
+                        HdlDeviceLogic.getInstance().editGatewayParam(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() {
+                            @Override
+                            public void onSuccess(Boolean obj) {
+                                atomicInteger.set(atomicInteger.get() + 1);
+                                //鏈�鍚庝竴鏉℃墠鍋氭坊鍔犻�嗗彉鍣ㄩ�昏緫澶勭悊
+                                if (atomicInteger.get() == list.size()) {
+                                    HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, list, new CloudCallBeak<Boolean>() {
+                                        @Override
+                                        public void onSuccess(Boolean obj) {
+                                            uniCallbackData(type, null, callback);
+                                        }
 
-            return;
-        }
-        List<GatewayBean> list = new ArrayList<>();
-        //璁板綍鏉℃暟
-        AtomicInteger atomicInteger = new AtomicInteger(0);
-        final boolean[] is_boolean = {false};
-        for (int i = 0; i < list.size(); i++) {
+                                        @Override
+                                        public void onFailure(HDLException e) {
+                                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+                                        }
+                                    });
+                                }
 
-            HdlDeviceLogic.getInstance().setGatewayRemoteParam(homeId, mac, new LinkCallBack<Boolean>() {
-                @Override
-                public void onSuccess(Boolean obj) {
-                    HdlDeviceLogic.getInstance().editGatewayParam(mac, new LinkCallBack<Boolean>() {
-                        @Override
-                        public void onSuccess(Boolean obj) {
-                            atomicInteger.set(atomicInteger.get() + 1);
-                            //鏈�鍚庝竴鏉℃墠鍋氭坊鍔犻�嗗彉鍣ㄩ�昏緫澶勭悊
-                            if (atomicInteger.get() == list.size()) {
-                                HdlDeviceLogic.getInstance().addAllInverterDeviceToCloud(homeId, mac, list, new CloudCallBeak<Boolean>() {
-                                    @Override
-                                    public void onSuccess(Boolean obj) {
-                                        uniCallbackData(type, null, callback);
-                                    }
-
-                                    @Override
-                                    public void onFailure(HDLException e) {
-                                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
-                                    }
-                                });
                             }
 
-                        }
+                            @Override
+                            public void onError(HDLLinkException e) {
+                                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+                                is_boolean[0] = true;
+                            }
+                        });
+                    }
 
-                        @Override
-                        public void onError(HDLLinkException e) {
-                            uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
-                            is_boolean[0] = true;
-                        }
-                    });
+                    @Override
+                    public void onError(HDLLinkException e) {
+                        uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+                        is_boolean[0] = true;
+                    }
+                });
+                if (is_boolean[0]) {
+                    //鍙湁涓棿鏈変竴鏉℃寚浠よ缃け璐�,榛樿鍏ㄩ儴澶辫触;
+                    break;
                 }
-
-                @Override
-                public void onError(HDLLinkException e) {
-                    uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
-                    is_boolean[0] = true;
-                }
-            });
-            if (is_boolean[0]) {
-                //鍙湁涓棿鏈変竴鏉℃寚浠よ缃け璐�,榛樿鍏ㄩ儴澶辫触;
-                break;
             }
+        } catch (Exception ignored) {
         }
     }
 
@@ -1328,7 +1453,7 @@
     private void uniSearchGateway(String type, DCUniMPJSCallback callback) {
 
 
-        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(new GatewayCallBack() {
+        HdlDeviceLogic.getInstance().searchAllNetworkGateway(new GatewayCallBack() {
             @Override
             public void onSuccess(List<GatewayBean> gatewayBeanList) {
                 uniCallbackData(type, gatewayBeanList, callback);
@@ -1360,19 +1485,16 @@
                     }
                     return;
                 }
-                GatewayBean gatewayBean = HdlDeviceLogic.getInstance().queryCurrentHomeMainGateway(list, homeId);
-                if (gatewayBean != null) {
-                    //杩涙潵浣忓畢璇︽儏閮借涓婁紶涓�娆id鍒楄〃鍒颁簯绔�;
-                    HdlDeviceLogic.getInstance().uploadDataToCloud(homeId, gatewayBean.getDevice_mac(), null);
+                if (callback != null) {
+                    uniCallbackData(type, list, callback);
                 }
                 //EventBus浜嬩欢鍒嗗彂,杩涘叆浣忓畢寮�濮嬭闃呬富棰�
                 BaseEventBus baseEventBus = new BaseEventBus();
                 baseEventBus.setType(HDLUniMP.UNI_EVENT_REPLY_DEVICE_LIST);
                 baseEventBus.setData(list);
                 EventBus.getDefault().post(baseEventBus);
-                if (callback != null) {
-                    uniCallbackData(type, list, callback);
-                }
+                //杩涙潵浣忓畢璇︽儏閮借涓婁紶涓�娆id鍒楄〃鍒颁簯绔�;
+                HdlDeviceLogic.getInstance().uploadDataToCloud(homeId, list, null);
             }
 
             @Override
@@ -1433,7 +1555,7 @@
             @Override
             public void onError(HDLLinkException e) {
                 uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
-                //HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true);
+//                HdlLogLogic.print("uni--->鎺ユ敹--->ModBus--->" + e.getMsg() + "(" + e.getCode() + ")", true);
             }
         });
     }

--
Gitblit v1.8.0