From 2ed75b8b337048e5d75e6d9ec8307633134f02fd Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 10 十月 2019 11:33:04 +0800 Subject: [PATCH] 个人中心添加楼层和创建房间,实装二级验证 --- ZigbeeApp/Shared/Common/Room.cs | 325 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 200 insertions(+), 125 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs index c9ca441..e3440a1 100755 --- a/ZigbeeApp/Shared/Common/Room.cs +++ b/ZigbeeApp/Shared/Common/Room.cs @@ -32,7 +32,11 @@ /// Guid.NewGuid().ToString() /// </summary> public string Id = Guid.NewGuid().ToString(); - + /// <summary> + /// 妤煎眰Id + /// 鏂板鏃朵娇鐢℅uid + /// </summary> + public string FloorId = string.Empty; /// <summary> /// 鎴块棿鍚� /// </summary> @@ -91,7 +95,7 @@ /// 鏄惁鍙互鍒锋柊鎴块棿鏁版嵁浜� /// 闇�瑕佺瓑鍒濆鍖栨湰鍦拌澶囨暟鎹悗鍦ㄥ彲浠ュ垵濮嬪寲鎴块棿鏁版嵁 /// </summary> - public static bool canInitAllRoom; + public static bool CanInitAllRoom; /// <summary> /// 鑾峰彇鍠滅埍鎴块棿鐨勬墍鏈夎澶囪矾寰� @@ -192,7 +196,7 @@ /// </summary> public static void InitAllRoom() { - if (canInitAllRoom == false) + if (CanInitAllRoom == false) { return; } @@ -249,7 +253,7 @@ } } homeTemp.Save(false); - canInitAllRoom = true; + CanInitAllRoom = true; InitAllRoom(); } @@ -417,71 +421,48 @@ } /// <summary> - /// 鏍规嵁鎴块棿鍚嶅瓧锛岃幏鍙栨埧闂村璞� + /// 鏍规嵁鎴块棿Id锛岃幏鍙栨埧闂村璞� /// </summary> /// <returns>The room by name.</returns> - /// <param name="roomName">鎴块棿鍚�</param> - public Room GetRoomByName(string roomName) + /// <param name="roomId">鎴块棿ID</param> + public Room GetRoomById(string roomId) { - return Lists.Find((obj) => obj.Name == roomName); + return Lists.Find((obj) => obj.Id == roomId); } /// <summary> - /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧 - /// </summary> - /// <returns>鎴块棿鍚�</returns> - /// <param name="device">璁惧瀵硅薄</param> - public List<string> GetRoomListNameByDevice(CommonDevice device) - { - var listName = new List<string>(); - var listroom = this.GetRoomByDevice(device); - foreach (var room in listroom) - { - listName.Add(room.Name); - } - - return listName; - } - - /// <summary> - /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧(澶氫釜鎴块棿鐨勬椂鍊欙紝鐢ㄢ��,鈥濆垎鍓�) + /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧(妤煎眰+鎴块棿鍚�) /// </summary> /// <returns>鎴块棿鍚�</returns> /// <param name="device">璁惧瀵硅薄</param> public string GetRoomNameByDevice(CommonDevice device) { - var listName = this.GetRoomListNameByDevice(device); - - return this.GetRoomName(listName); - } - - /// <summary> - /// 鑾峰彇澶氫釜鎴块棿鐨勮繛鎺ヨ捣鏉ョ殑鍚嶅瓧 - /// </summary> - /// <param name="listName"></param> - /// <returns></returns> - public string GetRoomName(List<string> listName) - { - if (listName.Count == 0) - { - //鏈垎閰嶅尯鍩� - return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); + var room = this.GetRoomByDevice(device); + if (room == null) + { + //鏈垎閰嶅尯鍩� + return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); } - return string.Join(",", listName); + if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true) + { + //(妤煎眰+鎴块棿鍚�) + return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name; + } + return room.Name; } /// <summary> - /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶� + /// 鑾峰彇璁惧鎵�鍦ㄧ殑鎴块棿 /// </summary> /// <returns>The room by device.</returns> /// <param name="device">璁惧瀵硅薄</param> - public List<Room> GetRoomByDevice(CommonDevice device) + public Room GetRoomByDevice(CommonDevice device) { var deviceUI = new DeviceUI { }; deviceUI.DeviceAddr = device.DeviceAddr; deviceUI.DeviceEpoint = device.DeviceEpoint; - return Lists.FindAll((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); + return Lists.Find((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); } /// <summary> @@ -528,52 +509,37 @@ /// 璁惧鐨勬埧闂村彉鏇� /// </summary> /// <param name="device">璁惧瀵硅薄</param> - /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param> - public void ChangedRoom(CommonDevice device, List<string> listnewName) + /// <param name="roomId">鏂版埧闂碔d</param> + public void ChangedRoom(CommonDevice device, string roomId) { //鎴块棿鏄惁淇敼 - if (this.IsRoomChanged(device, listnewName) == false) + if (this.IsRoomChanged(device, roomId) == false) { return; } - var list = new List<string>(); - list.AddRange(listnewName); - - //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧,浣嗘槸涓嶅垹闄I鏂囦欢 - this.DeleteDevice(device, ref list, false); + //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧 + this.DeleteDevice(device); //娣诲姞鍒版柊鐨勬埧闂� - foreach (string newRoom in list) - { - var room = this.GetRoomByName(newRoom); - if (room != null) - { - //涓嶈鐩朥I鏂囦欢 - room.AddDevice(device, false); - } + var room = this.GetRoomById(roomId); + if (room != null) + { + room.AddDevice(device); } - } - + } + /// <summary> /// 鎴块棿鍚嶅瓧鏄惁鏈変慨鏀� /// </summary> /// <param name="device">璁惧瀵硅薄</param> - /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param> + /// <param name="roomId">鏂版埧闂碔d</param> /// <returns></returns> - public bool IsRoomChanged(CommonDevice device, List<string> listnewName) + public bool IsRoomChanged(CommonDevice device, string roomId) { - var listOld = this.GetRoomListNameByDevice(device); - if (listOld.Count != listnewName.Count) - { - return true; - } - //涓暟涓�鏍锋椂锛屾瘮杈冨唴瀹� - foreach (string newstring in listnewName) - { - if (listOld.Contains(newstring) == false) - { - return true; - } + var room = this.GetRoomByDevice(device); + if (room == null || room.Id != roomId) + { + return true; } return false; } @@ -676,8 +642,7 @@ /// 娣诲姞璁惧 /// </summary> /// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param> - /// <param name="backUpUI">鏄惁瑕佽鐩朥I鏂囦欢</param> - public void AddDevice(CommonDevice device, bool backUpUI = true) + public void AddDevice(CommonDevice device) { if (device == null) { @@ -726,21 +691,7 @@ /// 鍒犻櫎璁惧 /// </summary> /// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param> - /// <param name="DeleteUi">鏄惁鍒犻櫎UI鏂囦欢</param> - public void DeleteDevice(CommonDevice device, bool DeleteUi = true) - { - List<string> listNotDelRoom = new List<string>(); - //鍒犻櫎璁惧 - this.DeleteDevice(device, ref listNotDelRoom, DeleteUi); - } - - /// <summary> - /// 鍒犻櫎璁惧(鐗规畩鍑芥暟,鐜伴樁娈垫槸缁欒澶囧彉鏇存埧闂翠娇鐢ㄧ殑) - /// </summary> - /// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param> - /// <param name="listNotDelRoom">涓嶆墽琛屽垹闄ょ殑鎴块棿,褰撴寚瀹氱殑涓嶈兘鍒犻櫎鐨勬埧闂村瓨鍦ㄦ椂锛屼細浠庤繖涓垪琛ㄤ腑绉婚櫎锛屾渶缁堝彧鍓╀笅鏂扮殑鎴块棿</param> - /// <param name="DeleteUi">鏄惁鍒犻櫎UI鏂囦欢</param> - public void DeleteDevice(CommonDevice device, ref List<string> listNotDelRoom, bool DeleteUi) + public void DeleteDevice(CommonDevice device) { if (device == null) { @@ -750,36 +701,23 @@ deviceUI.DeviceAddr = device.DeviceAddr; deviceUI.DeviceEpoint = device.DeviceEpoint; - //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿锛屽洜涓哄畠鍒犵殑涓嶄竴瀹氭槸褰撳墠鎴块棿 - List<Room> listroom = this.GetRoomByDevice(device); - - //鍒犻櫎UI鏂囦欢 - if (DeleteUi == true && Global.IsExistsByHomeId(deviceUI.FileName) == true) - { - Global.DeleteFilebyHomeId(deviceUI.FileName); - //鍒犻櫎鑷姩澶囦唤 - Phone.UserCenter.HdlAutoBackupLogic.DeleteFile(deviceUI.FileName); - } - - foreach (Room room in listroom) - { - if (listNotDelRoom.Contains(room.Name) == true) - { - listNotDelRoom.Remove(room.Name); - continue; - } - //绉婚櫎缂撳瓨 - if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false) - { - return; - } - room.DeviceUIFilePathList.Remove(deviceUI.FileName); - - room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName); - room.Save(); - //鏇存敼鑷姩澶囦唤 - Phone.UserCenter.HdlAutoBackupLogic.AddOrEditorFile(room.FileName); - } + //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿 + var room = this.GetRoomByDevice(device); + if (room == null) + { + return; + } + //绉婚櫎缂撳瓨 + if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false) + { + return; + } + room.DeviceUIFilePathList.Remove(deviceUI.FileName); + + room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName); + room.Save(); + //鏇存敼鑷姩澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(room.FileName); } #endregion @@ -1151,6 +1089,142 @@ #endregion + #region 鈼� 妤煎眰鍜屾埧闂撮『搴忕浉鍏砡______________ + + /// <summary> + /// 鏍规嵁妤煎眰鐨勪富閿幏鍙栨帓搴忓悗鐨勬埧闂村垪琛� + /// </summary> + /// <param name="i_floorKeys">妤煎眰鐨勪富閿�</param> + /// <param name="getShard">鍒嗕韩鐨勬埧闂存槸鍚︿篃鑾峰彇</param> + /// <returns></returns> + public List<Room> GetFloorSortRoom(string i_floorKeys, bool getShard = true) + { + Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>(); + //璇诲彇鎴块棿椤哄簭 + string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile); + var strData = UserCenterLogic.LoadFileContent(fullName); + if (strData != null) + { + dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData); + } + + var listRoomSort = new List<string>(); + if (dicAllSort.ContainsKey(i_floorKeys) == true) + { + listRoomSort = dicAllSort[i_floorKeys]; + } + else + { + dicAllSort[i_floorKeys] = listRoomSort; + } + + var dicRoom = new Dictionary<string, Common.Room>(); + foreach (var room in Common.Room.Lists) + { + if (room.FloorId != i_floorKeys) + { + //涓嶆槸鍚屼竴涓ゼ灞� + continue; + } + if (listRoomSort.Contains(room.Id) == false) + { + //鏂版坊鍔犵殑鎴块棿 + listRoomSort.Add(room.Id); + } + if (getShard == false && room.IsSharedRoom == true) + { + //涓嶈鍒嗕韩鐨勬埧闂� + continue; + } + dicRoom[room.Id] = room; + } + + var listSortRoom = new List<Room>(); + for (int i = 0; i < listRoomSort.Count; i++) + { + if (dicRoom.ContainsKey(listRoomSort[i]) == true) + { + listSortRoom.Add(dicRoom[listRoomSort[i]]); + } + } + + //淇濆瓨椤哄簭 + UserCenterLogic.SaveFileContent(fullName, dicAllSort); + return listSortRoom; + } + + /// <summary> + /// 淇濆瓨鎴块棿鐨勯『搴� + /// </summary> + /// <param name="i_floorKeys">妤煎眰涓婚敭</param> + /// <param name="listSort">鎴块棿椤哄簭(鎴块棿鐨勪富閿�)</param> + public void SaveRoomSort(string i_floorKeys, List<string> listSort) + { + Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>(); + //璇诲彇鎴块棿椤哄簭 + string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile); + var strData = UserCenterLogic.LoadFileContent(fullName); + if (strData != null) + { + dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData); + } + + //淇濆瓨椤哄簭 + dicAllSort[i_floorKeys] = listSort; + UserCenterLogic.SaveFileContent(fullName, dicAllSort); + dicAllSort.Clear(); + } + + /// <summary> + /// 鑾峰彇鎺掑簭鍚庣殑妤煎眰 + /// </summary> + /// <returns></returns> + public Dictionary<string, string> GetFloorSortList() + { + //璇诲彇妤煎眰椤哄簭 + var listFloorSort = new List<string>(); + string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile); + var strData = UserCenterLogic.LoadFileContent(fullName); + if (strData != null) + { + listFloorSort = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(strData); + } + foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys) + { + 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]]; + } + } + + //淇濆瓨椤哄簭 + UserCenterLogic.SaveFileContent(fullName, listFloorSort); + return dic; + } + + /// <summary> + /// 淇濆瓨妤煎眰鐨勯『搴� + /// </summary> + /// <param name="listSort">妤煎眰鐨勪富閿�</param> + public void SaveFloorSort(List<string> listSort) + { + string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile); + //淇濆瓨椤哄簭 + UserCenterLogic.SaveFileContent(fullName, listSort); + } + + #endregion + #region 鈼� 鍏嬮殕鎴块棿瀵硅薄_____________________ /// <summary> @@ -1162,6 +1236,7 @@ var newRoom = new Room(); //鍏嬮殕灞炴�� newRoom.Id = this.Id; + newRoom.FloorId = this.FloorId; newRoom.Name = this.Name; newRoom.BackgroundImage = this.BackgroundImage; newRoom.BackgroundImageType = this.BackgroundImageType; -- Gitblit v1.8.0