From 6fa9d69da922c8049f5acfcbb9ce9fd26811024c Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 16 四月 2020 17:10:57 +0800
Subject: [PATCH] 请合并代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs |  163 ++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 133 insertions(+), 30 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs
old mode 100755
new mode 100644
index a44eb08..798ab93
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs
@@ -75,8 +75,8 @@
             //娓呯┖鏈湴缂撳瓨
             this.dicRooms.Clear();
             //妫�娴嬫垜鐨勫枩鐖辫繖涓埧闂村璞�
-            this.CheckLoveRoom();
-            
+            this.CheckLoveRoom();
+
             foreach (var roomId in Config.Instance.Home.ListRooms)
             {
                 //浠庢枃浠堕噷闈㈣幏鍙栨埧闂村璞�
@@ -123,7 +123,14 @@
                 }
             }
             //妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬�
-            this.CheckFloorData(listRoomFile);
+            if (UserCenterResourse.UserInfo.AuthorityNo == 3)
+            {
+                this.CheckMemberFloorData(listRoomFile);
+            }
+            else
+            {
+                this.CheckAdminFloorData(listRoomFile);
+            }
 
             homeTemp.Save(false);
             InitAllRoom();
@@ -136,7 +143,7 @@
         {
             Application.RunOnMainThread(() =>
             {
-                Phone.Device.Room.RoomManagement.Instance.Show();
+                MainPage.ListRoomViewFrom.Instance?.ShowForm();
             });
         }
 
@@ -144,8 +151,12 @@
         /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬�
         /// </summary>
         /// <param name="listRoomFile"></param>
-        private void CheckFloorData(List<string> listRoomFile)
+        private void CheckAdminFloorData(List<string> listRoomFile)
         {
+            //娌℃湁妤煎眰,鍒欐棤闇�澶勭悊
+            if (Config.Instance.Home.FloorDics.Count == 0) { return; }
+
+            //涓讳汉鎴栬�呯鐞嗗憳鐨勮瘽,灏辨娴嬫槸鍚﹀瓨鍦ㄦ湭鍒嗛厤妤煎眰鐨勬埧闂�
             for (int i = 0; i < listRoomFile.Count; i++)
             {
                 try
@@ -163,6 +174,49 @@
                 }
                 catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
             }
+        }
+
+        /// <summary>
+        /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬�
+        /// </summary>
+        /// <param name="listRoomFile"></param>
+        private void CheckMemberFloorData(List<string> listRoomFile)
+        {
+            //娌℃湁妤煎眰,鍒欐棤闇�澶勭悊
+            if (Config.Instance.Home.FloorDics.Count == 0) { return; }
+
+            //鎴愬憳鐨勮瘽,灏辨娴嬫槸鍚﹀瓨鍦ㄦ病鏈夋埧闂寸殑妤煎眰
+            var listEsixtFloor = new List<string>();
+            for (int i = 0; i < listRoomFile.Count; i++)
+            {
+                try
+                {
+                    var byteData = Global.ReadFileByHomeId(listRoomFile[i]);
+                    string valueData = System.Text.Encoding.UTF8.GetString(byteData);
+                    var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
+                    if (roomTemp.FloorId != string.Empty && listEsixtFloor.Contains(roomTemp.FloorId) == false)
+                    {
+                        //鏀堕泦妤煎眰
+                        listEsixtFloor.Add(roomTemp.FloorId);
+                    }
+                }
+                catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
+            }
+            var listDeleteId = new List<string>();
+            foreach (var flootId in Config.Instance.Home.FloorDics.Keys)
+            {
+                if (listEsixtFloor.Contains(flootId) == false)
+                {
+                    //濡傛灉杩欎釜id涓嶅瓨鍦ㄤ簬浠讳綍鎴块棿鐨勮瘽,鏀堕泦瀹�
+                    listDeleteId.Add(flootId);
+                }
+            }
+            foreach (var deleteId in listDeleteId)
+            {
+                //鍒犻櫎杩欎釜id
+                Config.Instance.Home.FloorDics.Remove(deleteId);
+            }
+            Config.Instance.Home.Save(false);
         }
 
         #endregion
@@ -307,10 +361,19 @@
         /// </summary>
         /// <returns>鎴块棿鍚�</returns>
         /// <param name="device">璁惧瀵硅薄</param>
-        /// <param name="append">鍦ㄦゼ灞傚拰鎴块棿鍚嶅瓧鐨勪腑闂存坊鍔犵殑瀛楃(浠呴檺鏈夋ゼ灞傜殑鏃跺�欐湁鏁�)</param>
-        public string GetRoomNameByDevice(CommonDevice device, string append = " ")
+        public string GetRoomNameByDevice(CommonDevice device)
         {
             var room = this.GetRoomByDevice(device);
+            return this.GetFloorRoomName(room);
+        }
+
+        /// <summary>
+        /// 鑾峰彇鎴块棿鍚嶅瓧(妤煎眰+鎴块棿鍚�)
+        /// </summary>
+        /// <returns>鎴块棿鍚�</returns>
+        /// <param name="room">鎴块棿瀵硅薄</param>
+        public string GetFloorRoomName(Room room)
+        {
             if (room == null)
             {
                 //鏈垎閰嶅尯鍩�
@@ -319,7 +382,7 @@
             if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true)
             {
                 //(妤煎眰+鎴块棿鍚�)
-                return Config.Instance.Home.FloorDics[room.FloorId] + append + room.Name;
+                return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name;
             }
             return room.Name;
         }
@@ -510,6 +573,13 @@
         /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
         public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
         {
+            //閫夋嫨鐨勬槸鏈垎閰�
+            if (roomId == string.Empty)
+            {
+                //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧
+                this.DeleteDevice(device);
+                return;
+            }
             //鎴块棿鏄惁淇敼
             if (this.IsRoomChanged(device, roomId) == false)
             {
@@ -683,12 +753,28 @@
         /// <returns></returns>
         public List<CommonDevice> GetRoomListDevice(Room i_room)
         {
-            var listDevice = new List<CommonDevice>();
+            var dicSort = new Dictionary<string, List<int>>();
             foreach (var mainKeys in i_room.ListDevice)
             {
                 var device = LocalDevice.Current.GetDevice(mainKeys);
                 if (device != null)
                 {
+                    if (dicSort.ContainsKey(device.DeviceAddr) == false)
+                    {
+                        dicSort[device.DeviceAddr] = new List<int>();
+                    }
+                    dicSort[device.DeviceAddr].Add(device.DeviceEpoint);
+                }
+            }
+            var listDevice = new List<CommonDevice>();
+            foreach (var strMac in dicSort.Keys)
+            {
+                var listEpont = dicSort[strMac];
+                //鎺掑簭
+                listEpont.Sort();
+                for (int i = 0; i < listEpont.Count; i++)
+                {
+                    var device = LocalDevice.Current.GetDevice(strMac, listEpont[i]);
                     listDevice.Add(device);
                 }
             }
@@ -747,6 +833,11 @@
             var listEsxit = new HashSet<string>();
             foreach (var room in this.dicRooms.Values)
             {
+                if (room.IsLove == true)
+                {
+                    //涓嶅寘鍚敹钘忔埧闂�
+                    continue;
+                }
                 foreach (string mainkeys in room.ListDevice)
                 {
                     if (listEsxit.Contains(mainkeys) == false)
@@ -760,15 +851,16 @@
             var commonDeviceList = LocalDevice.Current.listAllDevice;
             foreach (var device in commonDeviceList)
             {
+                //鍒ゆ柇璇ヨ澶囪兘鍚︽樉绀哄湪涓婚〉
+                if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
+                {
+                    continue;
+                }
                 string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
                 if (listEsxit.Contains(mainkeys) == false)
                 {
                     listDevice.Add(device);
                 }
-            }
-            if (listDevice.Count == 0)
-            {
-                return null;
             }
             return listDevice;
         }
@@ -825,7 +917,7 @@
         #region 鈻� 妤煎眰鍜屾埧闂撮『搴忕浉鍏砡________________
 
         /// <summary>
-        /// 鏍规嵁妤煎眰鐨勪富閿幏鍙栨帓搴忓悗鐨勬埧闂村垪琛�
+        /// 鏍规嵁妤煎眰鐨勪富閿幏鍙栨帓搴忓悗鐨勬埧闂村垪琛�(鏀寔鏃犳ゼ灞傛ā寮�)
         /// </summary>
         /// <param name="i_floorKeys">妤煎眰鐨勪富閿�</param>
         /// <param name="getShard">鍒嗕韩鐨勬埧闂存槸鍚︿篃鑾峰彇</param>
@@ -854,9 +946,14 @@
             var dicRoom = new Dictionary<string, Common.Room>();
             foreach (var room in this.dicRooms.Values)
             {
-                if (room.FloorId != i_floorKeys || room.IsLove == true)
+                if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty)
                 {
                     //涓嶆槸鍚屼竴涓ゼ灞�
+                    continue;
+                }
+                if (room.IsLove == true)
+                {
+                    //涓嶈鎴戠殑鍠滅埍
                     continue;
                 }
                 if (listRoomSort.Contains(room.Id) == false)
@@ -924,23 +1021,29 @@
             }
             foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys)
             {
-                if (listFloorSort.Contains(keys) == false)
-                {
-                    //鏂版坊鍔犵殑妤煎眰
-                    listFloorSort.Add(keys);
-                }
+                if (listFloorSort != null)
+                {
+                    if (listFloorSort.Contains(keys) == false)
+                    {
+                        //鏂版坊鍔犵殑妤煎眰
+                        listFloorSort.Add(keys);
+                    }
+                }
             }
 
             var dic = new Dictionary<string, string>();
-            for (int i = 0; i < listFloorSort.Count; i++)
-            {
-                if (Config.Instance.Home.FloorDics.ContainsKey(listFloorSort[i]) == true)
-                {
-                    dic[listFloorSort[i]] = Config.Instance.Home.FloorDics[listFloorSort[i]];
-                }
-            }
-
-            //淇濆瓨椤哄簭
+            if (listFloorSort != null)
+            {
+                for (int i = 0; i < listFloorSort.Count; i++)
+                {
+                    if (Config.Instance.Home.FloorDics.ContainsKey(listFloorSort[i]) == true)
+                    {
+                        dic[listFloorSort[i]] = Config.Instance.Home.FloorDics[listFloorSort[i]];
+                    }
+                }
+            }
+
+            //淇濆瓨椤哄簭
             UserCenterLogic.SaveFileContent(fullName, listFloorSort);
             return dic;
         }
@@ -993,7 +1096,7 @@
             if (Config.Instance.Home.ListRooms.Contains("Favorite") == false)
             {
                 //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚�
-                var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.JPG", Id = "Favorite" };
+                var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.jpg", Id = "Favorite" };
                 love.Save(false);
                 //娣诲姞鍒癶ouse 鎴块棿璺緞鍒楄〃
                 var currentHome = Config.Instance.Home;

--
Gitblit v1.8.0