From d8d41b0623146ec890ec9191b613c0e8f13197dd Mon Sep 17 00:00:00 2001
From: mac <user@users-MacBook-Pro.local>
Date: 星期三, 12 六月 2024 14:53:37 +0800
Subject: [PATCH] 2024年06月12日14:53:31

---
 app/src/main/java/com/hdl/photovoltaic/other/HdlMemberLogic.java      |  298 +++++++++++++++++++++-
 app/src/main/java/com/hdl/photovoltaic/ui/bean/MemberBean.java        |  177 +++++++++++++
 app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java      |   34 ++
 app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java              |   16 +
 app/src/main/res/values/strings.xml                                   |    2 
 app/src/main/java/com/hdl/photovoltaic/ui/bean/QrCodeBean.java        |   46 +++
 app/src/main/java/com/hdl/photovoltaic/ui/bean/UserRightTypeBean.java |   15 +
 app/src/main/java/com/hdl/photovoltaic/enums/ChildAccountType.java    |   11 
 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java         |   45 +++
 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java      |   88 ++++--
 10 files changed, 680 insertions(+), 52 deletions(-)

diff --git a/app/src/main/java/com/hdl/photovoltaic/enums/ChildAccountType.java b/app/src/main/java/com/hdl/photovoltaic/enums/ChildAccountType.java
new file mode 100644
index 0000000..434324a
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/enums/ChildAccountType.java
@@ -0,0 +1,11 @@
+package com.hdl.photovoltaic.enums;
+
+/**
+ * 瀛愯处鎴风被鍨�
+ */
+public @interface ChildAccountType {
+    String ORDINARY = "ORDINARY";//鏅�氭垚鍛�
+    String DEBUG = "DEBUG";//璋冭瘯浜哄憳
+    String ADMIN = "ADMIN";//绠$悊鍛�
+    String VIEW = "VIEW";//浠呮煡鐪�
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
index f4a2918..4f2ed33 100644
--- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
+++ b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java
@@ -55,16 +55,17 @@
     public static final String POST_Device_Add = "/home-wisdom/program/device/independentRegister";
     //鎵归噺娣诲姞閫嗗彉鍣�
     public static final String POST_Device_Add_All = "/home-wisdom/program/device/batchIndependentRegister";
-    //鑾峰彇閫嗗彉鍣ㄥ垪琛�
+    //鑾峰彇(浜戠)閫嗗彉鍣ㄥ垪琛�
     public static final String POST_Device_List = "/home-wisdom/app/device/inverter/list";
-    //鍒犻櫎閫嗗彉鍣�
-    public static final String POST_Device_Remove = "/home-wisdom/app/device/remove";
+    //鍒犲垹闄ら�嗗彉鍣ㄥ強涓嬫寕璁惧
+    public static final String POST_Device_Remove = "/home-wisdom/app/powerStation/device/delete";
     //鑾峰彇涓嬫寕璁惧鍒楄〃
     public static final String POST_Device_ChildDevices_List = "/home-wisdom/app/powerStation/childDevices";
     //鍏ㄩ噺鏇存柊OID
     public static final String POST_Device_Oid = "/home-wisdom/program/device/oid/add";
     //璁惧鍩烘湰淇℃伅(oid)澧為噺娣诲姞
     public static final String POST_Device_IncrAdd = "/home-wisdom/program/device/oid/incrAdd";
+    public static final String POST_Device_Rename = "/home-wisdom/app/powerStation/device/rename";
     //鑾峰彇閫嗗彉鍣�(鑾峰彇璁惧杩滅▼閫氳淇℃伅)
     public static final String POST_Device_RemoteInfo = "/home-wisdom/program/device/remoteInfo";
     //璁惧鍩烘湰淇℃伅鍒楄〃(oid)鑾峰彇
@@ -121,6 +122,18 @@
     public static final String B_POST_GET_USERINFO = "/basis-footstone/mgmt/user/oauth/getUserInfo";
     //鑱旂郴鎴戜滑
     public static final String B_POST_GET_UTIL_CONTACT = "/home-wisdom/app/powerStation/util/contact";
+    //鑾峰彇褰撳墠璐﹀彿鍦ㄥ叕鍙哥殑韬唤
+    public static final String B_POST_GET_USERRIGHTTYPE = "/home-wisdom/app/powerStation/user/manage/userRightType";
+    //鑾峰彇鍛樺伐鍒楄〃
+    public static final String B_POST_GET_LISTBYPAGE = "/home-wisdom/app/powerStation/user/manage/listByPage";
+    //鑾峰彇鍛樺伐璇︽儏
+    public static final String B_POST_GET_MANAGE_INFO = "/home-wisdom/app/powerStation/user/manage/info";
+    //鍛樺伐娣诲姞锛圔绔級
+    public static final String B_POST_GET_MANAGE_CREATE = "/home-wisdom/app/powerStation/user/manage/create";
+    //鍛樺伐缂栬緫锛圔绔級
+    public static final String B_POST_GET_MANAGE_EDIT = "/home-wisdom/app/powerStation/user/manage/edit";
+    //鍛樺伐鍒犻櫎锛圔绔級
+    public static final String B_POST_GET_MANAGE_DELETE = "/home-wisdom/app/powerStation/user/manage/delete";
 
 
     //閫�鍑虹櫥褰�
@@ -130,8 +143,11 @@
     public static final String POST_deviceList = "/home-wisdom/app/powerStation/deviceList";
     //鐢电珯鐘舵�佹瑙�(瀹夎鍟�)
     public static final String POST_statusOverview = "/home-wisdom/app/powerStation/statusOverview";
+    //鑾峰彇鐢电珯浜や粯浜岀淮鐮�(瀹夎鍟�)
+    public static final String POST_getDeliveryUrlQrcode = "/home-wisdom/app/powerStation/getDeliveryUrlQrcode";
 
-
+    //鐢电珯鎵嬪姩浜や粯(瀹夎鍟�)
+    public static final String POST_deliverToAccount = "/home-wisdom/app/powerStation/deliverToAccount";
     //endregion
 
 
@@ -159,6 +175,16 @@
     public static final String C_POST_MEMBERINFO_BINDWITHACCOUNT = "/smart-footstone/member/memberInfo/bindWithAccount";
     //瑙g粦璁よ瘉(鎵嬫満/閭)
     public static final String C_POST_MEMBERINFO_UNBINDWITHACCOUNT = "/smart-footstone/member/memberInfo/unbindWithAccount";
+    //鎴愬憳鍒楄〃
+    public static final String C_POST_MEMBER_LIST = "/home-wisdom/app/child/account/findAll";
+    //娣诲姞鎴愬憳
+    public static final String C_POST_MEMBER_ADD = "/home-wisdom/app/child/account/add";
+    //缂栬緫鎴愬憳
+    public static final String C_POST_MEMBER_EDIT = "/home-wisdom/app/child/account/update";
+    //鍒犻櫎鎴愬憳
+    public static final String C_POST_MEMBER_DELETE = "/home-wisdom/app/child/account/delete";
+    //鐢电珯鎺堟潈瀹夎鍟�
+    public static final String C_POST_HOME_UPDATEDEBUGPERM = "/home-wisdom/app/home/updateDebugPerm";
 
 
     //endregion
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
index 67a3800..bb731c8 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -159,6 +159,28 @@
     }
 
     /**
+     * 娣诲姞銆愯澶囧垪琛ㄣ�戝埌鏈湴缂撳瓨
+     *
+     * @param list -璁惧鍒楄〃
+     */
+    public void setListDevice(List<CloudInverterDeviceBean> list) {
+        try {
+            if (list == null || list.size() == 0) {
+                return;
+            }
+            if (this.mListDevice.size() == 0) {
+                this.mListDevice.addAll(list);
+                return;
+            }
+            for (int i = 0; i < list.size(); i++) {
+                this.setSingleDevice(list.get(i));
+            }
+        } catch (Exception ignored) {
+        }
+    }
+
+
+    /**
      * 鑾峰彇璁惧鍒楄〃(瀹夎鍟�)
      *
      * @param searchTxt 鎼滅储鍐呭
@@ -198,28 +220,6 @@
                 }
             }
         });
-    }
-
-
-    /**
-     * 娣诲姞銆愯澶囧垪琛ㄣ�戝埌鏈湴缂撳瓨
-     *
-     * @param list -璁惧鍒楄〃
-     */
-    public void setListDevice(List<CloudInverterDeviceBean> list) {
-        try {
-            if (list == null || list.size() == 0) {
-                return;
-            }
-            if (this.mListDevice.size() == 0) {
-                this.mListDevice.addAll(list);
-                return;
-            }
-            for (int i = 0; i < list.size(); i++) {
-                this.setSingleDevice(list.get(i));
-            }
-        } catch (Exception ignored) {
-        }
     }
 
     /**
@@ -709,6 +709,42 @@
 
     }
 
+    /**
+     * 淇敼璁惧鍚嶇О閫嗗彉鍣˙MS鐢垫睜鍖�
+     * 鎻忚堪:  淇敼璁惧鍚嶇О锛屾敮鎸侀�嗗彉鍣紝BMS锛岀數姹犲寘璁惧鍚嶇О淇敼
+     *
+     * @param homeId        浣忓畢id
+     * @param deviceType    璁惧绫诲瀷(INV:閫嗗彉鍣�,BMS:BMS鎺у埗鐩�,BATTERY:鐢垫睜鍗曞厓)
+     * @param deviceId      璁惧id(deviceType = INV 鏄�嗗彉鍣╠eviceId;deviceType = BMS 鏄疊MS鐨刣eviceOidId;deviceType = BATTERY 鏄數姹犲寘鐨刣eviceOidId)
+     * @param cloudCallBeak 鍥炶皟update
+     */
+    public void setRename(String homeId, String deviceType, String deviceId, String name, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_Device_Rename;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("name", name);
+        json.addProperty("deviceType", deviceType);//璁惧绫诲瀷(INV:閫嗗彉鍣�,BMS:BMS鎺у埗鐩�,BATTERY:鐢垫睜鍗曞厓)
+        json.addProperty("deviceId", deviceId);//璁惧id(deviceType = INV 鏄�嗗彉鍣╠eviceId;deviceType = BMS 鏄疊MS鐨刣eviceOidId;deviceType = BATTERY 鏄數姹犲寘鐨刣eviceOidId)
+        // json.addProperty("zoneType", "password");//鍖哄煙
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String str) {
+
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
 
     /**
      * 璁剧疆缃戝叧杩滅▼鍙傛暟
@@ -999,7 +1035,7 @@
      * @param cloudCallBeak 杩斿洖閫嗗彉鍣ㄥ垪琛�
      */
     public void getCurrentHomeLocalAndCloudGatewayList(String homeId, CloudCallBeak<List<GatewayBean>> cloudCallBeak) {
-        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(homeId,new GatewayCallBack() {
+        HdlDeviceLogic.getInstance().searchCurrentHomeGateway(homeId, new GatewayCallBack() {
             @Override
             public void onSuccess(List<GatewayBean> gatewayBeanList) {
                 //灞�鍩熺綉鏈�2绉嶆儏鍐�(1:鏈夊眬鍩熺綉锛屾湁澶栫綉锛�2:鏈夊眬鍩熺綉锛屾病鏈夊缃�);
@@ -1201,7 +1237,7 @@
      *
      * @param gatewayCallBack -
      */
-    public void searchCurrentHomeGateway(String homeId,GatewayCallBack gatewayCallBack) {
+    public void searchCurrentHomeGateway(String homeId, GatewayCallBack gatewayCallBack) {
         List<String> spks = this.getGatewaySpk();
         //缃戝叧鎼滅储
         HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(homeId, spks, true, gatewayCallBack);
@@ -1225,8 +1261,8 @@
      * @param deviceMac 璁惧mac锛�
      * @param callBeak  杩斿洖 true=鏈湴杩炴帴;false=杩滅▼;
      */
-    public void isLocalConnect(String homeId,String deviceMac, CloudCallBeak<Boolean> callBeak) {
-        searchCurrentHomeGateway(homeId,new GatewayCallBack() {
+    public void isLocalConnect(String homeId, String deviceMac, CloudCallBeak<Boolean> callBeak) {
+        searchCurrentHomeGateway(homeId, new GatewayCallBack() {
             @Override
             public void onSuccess(List<GatewayBean> gatewayBeanList) {
                 if (gatewayBeanList == null || gatewayBeanList.size() == 0) {
diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlMemberLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlMemberLogic.java
index 38c7558..67ea58a 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlMemberLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlMemberLogic.java
@@ -6,18 +6,16 @@
 import com.google.gson.JsonObject;
 import com.google.gson.reflect.TypeToken;
 import com.hdl.linkpm.sdk.core.exception.HDLException;
-import com.hdl.linkpm.sdk.user.HDLLinkPMUser;
-import com.hdl.linkpm.sdk.user.bean.HDLLoginBean;
-import com.hdl.linkpm.sdk.user.callback.ILoginCallBack;
 import com.hdl.photovoltaic.bean.PageNumberObject;
-import com.hdl.photovoltaic.config.UserConfigManage;
 import com.hdl.photovoltaic.internet.HttpClient;
 import com.hdl.photovoltaic.internet.api.HttpApi;
 import com.hdl.photovoltaic.listener.CloudCallBeak;
-import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean;
+import com.hdl.photovoltaic.ui.bean.MemberBean;
 import com.hdl.photovoltaic.ui.bean.StaffBean;
+import com.hdl.photovoltaic.ui.bean.UserRightTypeBean;
 
 import java.lang.reflect.Type;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -44,14 +42,49 @@
     }
 
     /**
-     * 鑾峰彇鍛樺伐鍒楄〃
+     * 鑾峰彇褰撳墠璐﹀彿鍦ㄥ叕鍙哥殑韬唤
+     *
+     * @param cloudCallBeak -
+     */
+    public void getUserRightType(CloudCallBeak<PageNumberObject<UserRightTypeBean>> cloudCallBeak) {
+        String requestUrl = HttpApi.B_POST_GET_USERRIGHTTYPE;
+        JsonObject json = new JsonObject();
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (TextUtils.isEmpty(jsonStr)) {
+                    if (cloudCallBeak != null) {
+                        cloudCallBeak.onSuccess(new PageNumberObject<>());
+                    }
+                }
+                Gson gson = new Gson();
+                Type type = new TypeToken<PageNumberObject<UserRightTypeBean>>() {
+                }.getType();
+                PageNumberObject<UserRightTypeBean> pageNumberObject = gson.fromJson(jsonStr, type);
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(pageNumberObject);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鑾峰彇鍛樺伐鍒楄〃锛圔绔級
      *
      * @param pageNo        椤电爜
      * @param pageSize      椤垫暟锛堜竴椤靛灏戞暟鎹級
      * @param cloudCallBeak -
      */
     public void getStaffList(long pageNo, long pageSize, CloudCallBeak<PageNumberObject<List<StaffBean>>> cloudCallBeak) {
-        String requestUrl = "/home-wisdom/app/powerStation/user/manage/listByPage";// HttpApi.POST_PowerStation_List;
+        String requestUrl = HttpApi.B_POST_GET_LISTBYPAGE;
         JsonObject json = new JsonObject();
         json.addProperty("pageNo", pageNo);
         json.addProperty("pageSize", pageNo);
@@ -83,13 +116,13 @@
     }
 
     /**
-     * 鑾峰彇鍛樺伐璇︽儏
+     * 鑾峰彇鍛樺伐璇︽儏锛圔绔級
      *
      * @param userId        -
      * @param cloudCallBeak -
      */
     public void getStaffInfo(String userId, CloudCallBeak<PageNumberObject<StaffBean>> cloudCallBeak) {
-        String requestUrl = "/home-wisdom/app/powerStation/user/manage/info";// HttpApi.POST_PowerStation_List;
+        String requestUrl = HttpApi.B_POST_GET_MANAGE_INFO;
         JsonObject json = new JsonObject();
         json.addProperty("userId", userId);
         HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
@@ -120,13 +153,13 @@
     }
 
     /**
-     * 鍛樺伐娣诲姞
+     * 鍛樺伐娣诲姞锛圔绔級
      *
      * @param staffBean     鍛樺伐瀵硅薄
      * @param cloudCallBeak -
      */
     public void getStaffAdd(StaffBean staffBean, CloudCallBeak<Boolean> cloudCallBeak) {
-        String requestUrl = "/home-wisdom/app/powerStation/user/manage/create";// HttpApi.POST_PowerStation_List;
+        String requestUrl = HttpApi.B_POST_GET_MANAGE_CREATE;
         JsonObject json = new JsonObject();
         if (!TextUtils.isEmpty(staffBean.getUserName())) {
             json.addProperty("userName", staffBean.getUserName());
@@ -159,13 +192,13 @@
     }
 
     /**
-     * 鍛樺伐缂栬緫
+     * 鍛樺伐缂栬緫锛圔绔級
      *
      * @param staffBean     鍛樺伐瀵硅薄
      * @param cloudCallBeak -
      */
     public void getStaffEdit(StaffBean staffBean, CloudCallBeak<Boolean> cloudCallBeak) {
-        String requestUrl = "/home-wisdom/app/powerStation/user/manage/edit";// HttpApi.POST_PowerStation_List;
+        String requestUrl = HttpApi.B_POST_GET_MANAGE_EDIT;
         JsonObject json = new JsonObject();
         if (!TextUtils.isEmpty(staffBean.getUserId())) {
             json.addProperty("userId", staffBean.getUserId());
@@ -201,13 +234,13 @@
     }
 
     /**
-     * 鍛樺伐鍒犻櫎
+     * 鍛樺伐鍒犻櫎锛圔绔級
      *
      * @param staffBean     鍛樺伐瀵硅薄
      * @param cloudCallBeak -
      */
     public void getStaffDelete(StaffBean staffBean, CloudCallBeak<Boolean> cloudCallBeak) {
-        String requestUrl = "/home-wisdom/app/powerStation/user/manage/delete";// HttpApi.POST_PowerStation_List;
+        String requestUrl = HttpApi.B_POST_GET_MANAGE_DELETE;
         JsonObject json = new JsonObject();
         json.addProperty("userId", staffBean.getUserId());
 
@@ -228,4 +261,239 @@
         });
 
     }
+
+    /**
+     * 鑾峰彇鐢电珯浜や粯浜岀淮鐮侊紙B绔級
+     * 鎻忚堪锛氬畨瑁呭晢鐢电珯鐨勪氦浠樹簩缁寸爜
+     *
+     * @param homeId        鐢电珯id
+     * @param cloudCallBeak -
+     */
+    public void getDeliveryUrlQrcode(String homeId, CloudCallBeak<String> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_getDeliveryUrlQrcode;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+//        json.addProperty("zoneType", memberBean.getId());//鍖哄煙
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(jsonStr);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鐢电珯鎵嬪姩浜や粯(B绔�)
+     * 鎻忚堪锛氬畨瑁呭晢鎵嬪姩浜や粯鐢电珯缁欐寚瀹氱殑C绔处鍙�
+     *
+     * @param homeId        鐢电珯id
+     * @param account       C绔处鍙�
+     * @param cloudCallBeak -
+     */
+    public void getDeliverToAccount(String homeId, String account, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.POST_deliverToAccount;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("account", account);//C绔处鍙�
+//        json.addProperty("zoneType", memberBean.getId());//鍖哄煙
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鑾峰彇鎴愬憳鍒楄〃锛圕绔級
+     *
+     * @param memberBean    鎴愬憳瀵硅薄
+     * @param cloudCallBeak -
+     */
+    public void getMemberList(MemberBean memberBean, CloudCallBeak<List<MemberBean>> cloudCallBeak) {
+        String requestUrl = HttpApi.C_POST_MEMBER_LIST;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", memberBean.getHomeId());
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (TextUtils.isEmpty(jsonStr)) {
+                    if (cloudCallBeak != null) {
+                        cloudCallBeak.onSuccess(new ArrayList<>());
+                    }
+                }
+                Gson gson = new Gson();
+                Type type = new TypeToken<List<MemberBean>>() {
+                }.getType();
+                List<MemberBean> memberBeanList = gson.fromJson(jsonStr, type);
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(memberBeanList);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 娣诲姞鎴愬憳锛圕绔級
+     *
+     * @param memberBean    鎴愬憳瀵硅薄
+     * @param cloudCallBeak -
+     */
+    public void getMemberAdd(MemberBean memberBean, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.C_POST_MEMBER_ADD;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", memberBean.getHomeId());
+        json.addProperty("account", memberBean.getAccount());
+        json.addProperty("childAccountType", memberBean.getChildAccountType());////瀛愯处鎴风被鍨�(ORDINARY 锛氭櫘閫氭垚鍛�,DEBUG 锛� 璋冭瘯浜哄憳,ADMIN 锛� 绠$悊鍛�,VIEW : 浠呮煡鐪�)
+        json.addProperty("nickName", memberBean.getNickName());
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 缂栬緫鎴愬憳锛圕绔級
+     *
+     * @param memberBean    鎴愬憳瀵硅薄
+     * @param cloudCallBeak -
+     */
+    public void getMemberEdit(MemberBean memberBean, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.C_POST_MEMBER_EDIT;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", memberBean.getHomeId());
+        json.addProperty("childAccountId", memberBean.getChildAccountId());
+        json.addProperty("childId", memberBean.getId());//鏌ユ壘瀛愯处鍙锋帴鍙h幏鍙栧埌鐨勬暟鎹紙涓婚敭id==childId锛�
+        json.addProperty("childAccountType", memberBean.getChildAccountType());////瀛愯处鎴风被鍨�(ORDINARY 锛氭櫘閫氭垚鍛�,DEBUG 锛� 璋冭瘯浜哄憳,ADMIN 锛� 绠$悊鍛�,VIEW : 浠呮煡鐪�)
+        json.addProperty("nickName", memberBean.getNickName());
+//        json.addProperty("isRemoteControl", memberBean.getNickName());//杩滅▼鎺у埗
+//        json.addProperty("isAllowCreateScene", memberBean.getNickName());//鍒涘缓鍦烘櫙
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鍒犻櫎鎴愬憳锛圕绔級
+     *
+     * @param memberBean    鎴愬憳瀵硅薄
+     * @param cloudCallBeak -
+     */
+    public void getMemberDelete(MemberBean memberBean, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.C_POST_MEMBER_DELETE;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", memberBean.getHomeId());
+        json.addProperty("childAccountId", memberBean.getChildAccountId());
+        json.addProperty("childId", memberBean.getId());//鏌ユ壘瀛愯处鍙锋帴鍙h幏鍙栧埌鐨勬暟鎹紙涓婚敭id==childId锛�
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+    /**
+     * 鐢电珯鎺堟潈瀹夎鍟嗭紙C绔級
+     * 鎻忚堪锛氫氦浠樺悗鐨勪綇瀹咃紝C绔敤鎴峰彲浠ュ紑鍚巿鏉冨悗瀹夎鍟嗗彲浠ョ户缁皟璇曠數绔�
+     *
+     * @param homeId        鐢电珯id
+     * @param debugPerm     鎺堟潈鐘舵�侊紙true鍙互缁х画璋冭瘯锛�
+     * @param cloudCallBeak -
+     */
+    public void homeUpdateDebugPerm(String homeId, boolean debugPerm, CloudCallBeak<Boolean> cloudCallBeak) {
+        String requestUrl = HttpApi.C_POST_HOME_UPDATEDEBUGPERM;
+        JsonObject json = new JsonObject();
+        json.addProperty("homeId", homeId);
+        json.addProperty("debugPerm", debugPerm);
+//        json.addProperty("zoneType", memberBean.getId());//鍖哄煙
+
+        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
+            @Override
+            public void onSuccess(String jsonStr) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onSuccess(true);
+                }
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                if (cloudCallBeak != null) {
+                    cloudCallBeak.onFailure(e);
+                }
+            }
+        });
+
+    }
+
+
 }
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 174df66..4cc3c6e 100644
--- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
+++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -282,7 +282,11 @@
                         this.setInverterDeviceRemoteInfo(mode_type, data, callback);
                     }
                     break;
-
+                    //璁惧鍚嶇О淇敼(淇敼鏄簯绔痮id鍚嶇О锛岃澶囦娇鐢╩odbus鍗忚淇敼)
+                    case HDLUniMP.UNI_EVENT_REPLY_DEVICE_EDIT_NAME: {
+                        this.uniOidEditName(mode_type, data, callback);
+                    }
+                    break;
                 }
 
             } else if (HDLUniMP.UNI_EVENT_REPLY_WIFI_MODEL.equals(topic)) {
@@ -462,6 +466,11 @@
                         intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                         intent.setClass(HDLApp.getInstance(), SetActivity.class);
                         HDLApp.getInstance().startActivity(intent);
+
+                    }
+                    break;
+                    //鎴愬憳鍒楄〃
+                    case HDLUniMP.UNI_EVENT_REPLY_MEMBER_LIST: {
 
                     }
                     break;
@@ -802,7 +811,7 @@
         String module = "FW#" + imageId;//妯″潡淇℃伅(HW锛氱‖浠�)
 
         //鍗囩骇鏈湴浼樺厛->浜戠鍗囩骇
-        HdlDeviceLogic.getInstance().isLocalConnect(homeId,deviceMac, new CloudCallBeak<Boolean>() {
+        HdlDeviceLogic.getInstance().isLocalConnect(homeId, deviceMac, new CloudCallBeak<Boolean>() {
             @Override
             public void onSuccess(Boolean b) {
                 if (b) {
@@ -1054,7 +1063,7 @@
         String imageId = getKeyValue("imageId", getKeyValue("data", data));//鍥轰欢闀滃儚id
         String module = driverCode + "#" + imageId;
         //鍗囩骇鏈湴浼樺厛->浜戠鍗囩骇
-        HdlDeviceLogic.getInstance().isLocalConnect(homeId,deviceMac, new CloudCallBeak<Boolean>() {
+        HdlDeviceLogic.getInstance().isLocalConnect(homeId, deviceMac, new CloudCallBeak<Boolean>() {
             @Override
             public void onSuccess(Boolean b) {
                 if (b) {
@@ -1568,7 +1577,10 @@
      */
     private void uniDelInverterDevice(String type, Object data, DCUniMPJSCallback callback) {
         String deviceId = getKeyValue("deviceId", getKeyValue("data", data));
-        String homeId = UserConfigManage.getInstance().getHomeId();
+        String homeId = getKeyValue("homeId", getKeyValue("data", data));
+        if (TextUtils.isEmpty(homeId)) {
+            homeId = UserConfigManage.getInstance().getHomeId();
+        }
         HdlDeviceLogic.getInstance().delInverterDevice(homeId, deviceId, new CloudCallBeak<Boolean>() {
             @Override
             public void onSuccess(Boolean obj) {
@@ -1863,6 +1875,31 @@
         });
     }
 
+    /**
+     * 淇敼璁惧鍚嶇О閫嗗彉鍣˙MS鐢垫睜鍖�
+     *
+     * @param type     璐﹀彿
+     * @param data     uni璇锋眰鏁版嵁
+     * @param callback uni鍥炶皟
+     */
+    public void uniOidEditName(String type, Object data, DCUniMPJSCallback callback) {
+        String homeId = getKeyValue("homeId", getKeyValue("data", data));
+        String deviceType = getKeyValue("deviceType", getKeyValue("data", data));
+        String deviceId = getKeyValue("deviceId", getKeyValue("data", data));
+        String name = getKeyValue("name", getKeyValue("data", data));
+        HdlDeviceLogic.getInstance().setRename(homeId, deviceType, deviceId, name, new CloudCallBeak<Boolean>() {
+            @Override
+            public void onSuccess(Boolean obj) {
+                uniCallbackData(type, obj, callback);
+            }
+
+            @Override
+            public void onFailure(HDLException e) {
+                uniCallbackData(type, null, e.getCode(), e.getMsg(), callback);
+            }
+        });
+    }
+
 
     /**
      * 鍙戦�乵odbus鍗忚鏁版嵁
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/MemberBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/MemberBean.java
new file mode 100644
index 0000000..ab1a19a
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/MemberBean.java
@@ -0,0 +1,177 @@
+package com.hdl.photovoltaic.ui.bean;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 鎴愬憳鐨勫疄浣�
+ */
+public class MemberBean implements Serializable {
+
+    private String id;//涓婚敭
+    private String account;//瀛愮敤鎴� phone 鎴栬�� email
+    private String childAccountType;//瀛愯处鎴风被鍨�(ORDINARY 锛氭櫘閫氭垚鍛�,DEBUG 锛� 璋冭瘯浜哄憳,ADMIN 锛� 绠$悊鍛�,VIEW : 浠呮煡鐪�)
+
+    private String childAccountId;//瀛愯处鍙穒d
+    private String childAccountRegionId;//瀛愯处鍙峰尯鍩焛d
+    private String homeId;//鐢电珯id
+    private String homeRegionId;//浣忓畢鍖哄煙id
+    private boolean isRemoteControl;//杩滅▼鎺у埗 (榛樿true)
+    private String nickName;//瀛愯处鍙锋樀绉�
+    private String faceUrl;//鎴愬憳浜鸿劯鍥剧墖,鍥剧墖url鎴栬�呭浘鐗�,base64浼犲浘鐗嘼ase64鏃跺浐瀹氫紶jpg鏍煎紡鐨勫浘鐗�
+
+    private String createPeople;//	鍒涘缓浜篒D
+    private boolean isAllowCreateScene;//鍒涘缓鍦烘櫙
+    private String modifyPeople;//鏈�鍚庝慨鏀逛汉ID
+    private String modifyTime;//鏈�鍚庝慨鏀规椂闂�
+    private String region;//鏈嶅姟鍖哄煙
+
+    private int isDelete;//isDelete	0:鏈垹闄� 1:鍒犻櫎
+
+    private List<String> privileges = new ArrayList<>();//鏉冮檺
+
+    public int getIsDelete() {
+        return isDelete;
+    }
+
+    public void setIsDelete(int isDelete) {
+        this.isDelete = isDelete;
+    }
+
+    public List<String> getPrivileges() {
+        return privileges;
+    }
+
+    public void setPrivileges(List<String> privileges) {
+        this.privileges = privileges;
+    }
+
+    public String getId() {
+        return id == null ? "" : id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getChildAccountId() {
+        return childAccountId == null ? "" : childAccountId;
+    }
+
+    public void setChildAccountId(String childAccountId) {
+        this.childAccountId = childAccountId;
+    }
+
+    public String getChildAccountRegionId() {
+        return childAccountRegionId == null ? "" : childAccountRegionId;
+    }
+
+    public void setChildAccountRegionId(String childAccountRegionId) {
+        this.childAccountRegionId = childAccountRegionId;
+    }
+
+    public String getHomeRegionId() {
+        return homeRegionId == null ? "" : homeRegionId;
+    }
+
+    public void setHomeRegionId(String homeRegionId) {
+        this.homeRegionId = homeRegionId;
+    }
+
+    public boolean isRemoteControl() {
+        return isRemoteControl;
+    }
+
+    public void setRemoteControl(boolean remoteControl) {
+        isRemoteControl = remoteControl;
+    }
+
+    public String getFaceUrl() {
+        return faceUrl == null ? "" : faceUrl;
+    }
+
+    public void setFaceUrl(String faceUrl) {
+        this.faceUrl = faceUrl;
+    }
+
+    public String getCreatePeople() {
+        return createPeople == null ? "" : createPeople;
+    }
+
+    public void setCreatePeople(String createPeople) {
+        this.createPeople = createPeople;
+    }
+
+    public boolean isAllowCreateScene() {
+        return isAllowCreateScene;
+    }
+
+    public void setAllowCreateScene(boolean allowCreateScene) {
+        isAllowCreateScene = allowCreateScene;
+    }
+
+    public String getModifyPeople() {
+        return modifyPeople == null ? "" : modifyPeople;
+    }
+
+    public void setModifyPeople(String modifyPeople) {
+        this.modifyPeople = modifyPeople;
+    }
+
+    public String getModifyTime() {
+        return modifyTime == null ? "" : modifyTime;
+    }
+
+    public void setModifyTime(String modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    public String getRegion() {
+        return region == null ? "" : region;
+    }
+
+    public void setRegion(String region) {
+        this.region = region;
+    }
+
+    public String getAccount() {
+        return account == null ? "" : account;
+    }
+
+    public void setAccount(String account) {
+        this.account = account;
+    }
+
+    public String getChildAccountType() {
+        return childAccountType == null ? "" : childAccountType;
+    }
+
+    public void setChildAccountType(String childAccountType) {
+        this.childAccountType = childAccountType;
+    }
+
+    public String getHomeId() {
+        return homeId == null ? "" : homeId;
+    }
+
+    public void setHomeId(String homeId) {
+        this.homeId = homeId;
+    }
+
+    public boolean isIsRemoteControl() {
+        return isRemoteControl;
+    }
+
+    public void setIsRemoteControl(boolean isRemoteControl) {
+        this.isRemoteControl = isRemoteControl;
+    }
+
+    public String getNickName() {
+        return nickName == null ? "" : nickName;
+    }
+
+    public void setNickName(String nickName) {
+        this.nickName = nickName;
+    }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/QrCodeBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/QrCodeBean.java
new file mode 100644
index 0000000..5cf613a
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/QrCodeBean.java
@@ -0,0 +1,46 @@
+package com.hdl.photovoltaic.ui.bean;
+
+import java.io.Serializable;
+
+/**
+ * 浜岀淮鐮佸悕鐗�
+ */
+public class QrCodeBean implements Serializable {
+    private String userName;//鎴峰悕绉�
+    private String sex;//鎬у埆(鐢凤紝濂�)
+    private String userPhone;//鎵嬫満鍙�
+    private String userEmail;//銆侀偖绠�
+
+    public String getUserName() {
+
+        return userName == null ? "" : userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    public String getSex() {
+        return sex == null ? "" : sex;
+    }
+
+    public void setSex(String sex) {
+        this.sex = sex;
+    }
+
+    public String getUserPhone() {
+        return userPhone == null ? "" : userPhone;
+    }
+
+    public void setUserPhone(String userPhone) {
+        this.userPhone = userPhone;
+    }
+
+    public String getUserEmail() {
+        return userEmail == null ? "" : userEmail;
+    }
+
+    public void setUserEmail(String userEmail) {
+        this.userEmail = userEmail;
+    }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/UserRightTypeBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/UserRightTypeBean.java
new file mode 100644
index 0000000..d364b26
--- /dev/null
+++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/UserRightTypeBean.java
@@ -0,0 +1,15 @@
+package com.hdl.photovoltaic.ui.bean;
+
+import java.io.Serializable;
+
+public class UserRightTypeBean implements Serializable {
+    private String userRightType;//鏉冮檺绫诲瀷(MANAGER:鍏徃绠$悊鍛�;USER锛氭櫘閫氬憳宸�)
+
+    public String getUserRightType() {
+        return userRightType == null ? "" : userRightType;
+    }
+
+    public void setUserRightType(String userRightType) {
+        this.userRightType = userRightType;
+    }
+}
diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
index 245022a..6632099 100644
--- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
+++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -51,8 +51,9 @@
     public final static String UNI_EVENT_REPLY_DEVICE_Link_read_SEND = "link_property_read";//link鍗忚灞炴�ц鍙�
     public final static String UNI_EVENT_REPLY_DEVICE_MESSAGE_NUMBER = "message_number";//娑堟伅鎬绘暟閲�
     public final static String UNI_EVENT_REPLY_DEVICE_DELETE_OID = "delete_Oid";//鍒犻櫎璁惧oid
-    public final static String UNI_EVENT_REPLY_DEVICE_INITIALIZEINVERTER = "initializeInverter";//閲嶇疆閫嗗彉鍣�
-    public final static String UNI_EVENT_REPLY_DEVICE_REMOTEINFO = "set_device_remoteInfo";//璁剧疆璁惧杩滅▼淇℃伅
+    public final static String UNI_EVENT_REPLY_DEVICE_INITIALIZEINVERTER = "initializeInverter";//鍒濆鍖栭�嗗彉鍣�
+    public final static String UNI_EVENT_REPLY_DEVICE_REMOTEINFO = "set_device_remoteInfo";//璁剧疆璁惧杩滅▼淇℃伅edit_name
+    public final static String UNI_EVENT_REPLY_DEVICE_EDIT_NAME = "edit_name";//璁惧鍚嶇О淇敼(淇敼鏄簯绔痮id鍚嶇О锛岃澶囦娇鐢╩odbus鍗忚淇敼)
 
 
     /*********OTA妯″潡*********/
@@ -84,7 +85,7 @@
     public final static String UNI_EVENT_REPLY_OTHER_LOGOUT = "uni_logout";//閫�鍑虹櫥褰�
 
 
-    /*********C绔�愭垜鐨勩�戞ā鍧�*********/
+    /*********銆愭垜鐨勩�戞ā鍧�*********/
     public final static String UNI_EVENT_REPLY_MINE_MODEL = "uni_mine_model";//鎴戠殑妯″潡(澶х被)
     public final static String UNI_EVENT_REPLY_MINE_USER_INFO = "get_user_info";//涓汉淇℃伅鑾峰彇锛�
     public final static String UNI_EVENT_REPLY_MINE_EDIT_AVATAR = "edit_avatar";//澶村儚鏇存柊
@@ -94,6 +95,14 @@
     public final static String UNI_EVENT_REPLY_MINE_USER_MANAGER = "user_manager";//鐢ㄦ埛绠$悊
     public final static String UNI_EVENT_REPLY_MINE_ABOUT = "about";//鍏充簬
     public final static String UNI_EVENT_REPLY_MINE_SETTING = "setting";//璁剧疆
+    public final static String UNI_EVENT_REPLY_MEMBER_LIST = "member_list";//鎴愬憳鍒楄〃
+    public final static String UNI_EVENT_REPLY_MEMBER_ADD = "member_add";//鎴愬憳娣诲姞
+    public final static String UNI_EVENT_REPLY_MEMBER_DELETE = "member_delete";//鎴愬憳鍒犻櫎
+    public final static String UNI_EVENT_REPLY_MEMBER_EDIT = "member_edit";//鎴愬憳缂栬緫锛堝寘鍚娉ㄣ�佹潈闄愪慨鏀癸級
+    public final static String UNI_EVENT_REPLY_STAFF_LIST = "staff_list";//鍛樺伐鍒楄〃
+    public final static String UNI_EVENT_REPLY_STAFF_ADD = "staff_add";//鍛樺伐娣诲姞
+    public final static String UNI_EVENT_REPLY_STAFF_DELETE = "staff_delete";//鍛樺伐鍒犻櫎
+    public final static String UNI_EVENT_REPLY_STAFF_EDIT = "staff_edit";//鍛樺伐缂栬緫
 
 
     /*********Wifi妯″潡*********/
@@ -108,6 +117,7 @@
     public final static String UNI_EVENT_REPLY_DEVICE_ETHERNET_SET = "device_ethernet_set";//閫嗗彉鍣ㄤ互澶綉閰嶇疆
     public final static String UNI_EVENT_REPLY_DEVICE_ETHERNET_GET = "device_ethernet_get";//閫嗗彉鍣ㄤ互澶綉鑾峰彇
 
+
     //endregion
 
     //region --------銆愬師鐢熴�戜富鍔ㄥ彂閫佸埌銆愬皬绋嬪簭銆�--------
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index b5c745d..ed5f278 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -246,6 +246,8 @@
     <string name="restarting_please_wait">閲嶅惎涓�,璇风瓑寰呪��</string>
     <string name="port_conflict">搴旂敤鍐茬獊锛岄渶瑕佸叧闂璷npro鎴栬�呭叾瀹冪増鏈殑璋冭瘯杞欢鐒跺悗鍐嶉噸鏂板惎鍔ㄨ繖涓蒋浠惰瘯璇�</string>
 
+
+
     <string name="cancel_download_successfully">鍙栨秷涓嬭浇鎴愬姛.</string>
     <string name="writing_firmware_upgrade_memory_succeeded">鍐欏叆鏂板浐浠舵枃浠跺埌鍐呭瓨鎴愬姛.</string>
     <string name="download_firmware_upgrade_file_failed">涓嬭浇鍥轰欢鍗囩骇鏂囦欢澶辫触.</string>

--
Gitblit v1.8.0