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/Common/House.cs |  540 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 540 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/House.cs b/ZigbeeApp/Shared/Common/House.cs
new file mode 100755
index 0000000..d8a2c06
--- /dev/null
+++ b/ZigbeeApp/Shared/Common/House.cs
@@ -0,0 +1,540 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Phone.UserCenter;
+
+namespace Shared.Common
+{
+    /// <summary>
+    /// 浣忓畢鏂囦欢
+    /// </summary>
+    [System.Serializable]
+    public class House
+    {
+        #region 鈼� 鍙橀噺____________________________
+        /// <summary>
+        /// 浣忓畢鏂囦欢
+        /// </summary>
+        /// <value>The file path.</value>
+        [Newtonsoft.Json.JsonIgnore]
+        public string FileName
+        {
+            get
+            {
+                return $"House_{Id}.json";
+            }
+        }
+
+        /// <summary>
+        /// 浣忓畢id--浣跨敤浜戠鎻愪緵鐨勪綇瀹呭敮涓�Id
+        /// </summary>
+        public string Id = string.Empty;
+
+        /// <summary>
+        /// 浣忓畢鍚嶇О
+        /// </summary>
+        public string Name = string.Empty;
+
+        /// <summary>
+        /// 鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�
+        /// </summary>
+        public bool IsOthreShare;
+        /// <summary>
+        /// 褰撳墠浣忓畢鏄叾浠栦富甯愬彿鍒嗕韩杩囨潵鐨勪富甯愬彿鐨勫垎甯冨紡Id
+        /// </summary>
+        public string MainUserDistributedMark;
+
+        /// <summary>
+        /// 浠呭瓙璐﹀彿鐧婚檰鐨勬椂鍊欎娇鐢�,褰撱�怚sOthreShare銆戜负"true"锛屽苟涓斻�怉ccountType銆戜负"1"鏃讹紝璇ヨ处鍙锋嫢鏈夌鐞嗗憳鏉冮檺
+        /// </summary>
+        public int AccountType;
+        /// <summary>
+        /// 缁忓害
+        /// </summary>
+        public double Longitude = 0;
+        /// <summary>
+        /// 绾害
+        /// </summary>
+        public double Latitude = 0;
+        /// <summary>
+        /// 浣忓畢鎵�鍦ㄧ殑鍦扮悊浣嶇疆鐨勫悕绉�
+        /// </summary>
+        public string ResidenceAddressName = string.Empty;
+
+        /// <summary>
+        /// 鎴块棿鍒楄〃(鎴块棿鐨処D)
+        /// </summary>
+        public List<string> ListRooms = new List<string>();
+
+        /// <summary>
+        /// 妤煎眰瀛楀吀
+        /// key:FloorId
+        /// value:FloorName
+        /// </summary>
+        public Dictionary<string,string> FloorDics = new Dictionary<string,string> { };
+        /// <summary>
+        /// 褰撳墠妤煎眰Id
+        /// </summary>
+        public string CurrentFloorId = string.Empty;
+
+        /// <summary>
+        /// 鍏ㄥ眬鍦烘櫙璺緞鍒楄〃---澶囩敤
+        /// </summary>
+        public List<string> SceneFilePathList = new List<string> { };
+        /// <summary>
+        /// 璁惧璺緞鍒楄〃---澶囩敤
+        /// </summary>
+        public List<string> DeviceFilePathList = new List<string> { };
+        /// <summary>
+        /// 鍔熻兘璺緞鍒楄〃---澶囩敤
+        /// </summary>
+        public List<string> FunctionFilePathList = new List<string> { };
+        /// <summary>
+        /// 閫氱敤鏍囪瘑--澶囩敤
+        /// </summary>
+        public object Tag;
+        /// <summary>
+        /// 鏈熴�佹爧銆佸眰绛夊尯鍩�---澶囩敤
+        /// </summary>
+        public Dictionary<string, string> LocationInfoList = new Dictionary<string, string> { };
+
+        #endregion
+
+        #region 鈼� 浣忓畢____________________________
+
+        #region 鈼� 娣诲姞浣忓畢_________________________
+
+        /// <summary>
+        /// 娣诲姞浣忓畢
+        /// </summary>
+        /// <param name="houseId">浣忓畢id</param>
+        /// <param name="houseName">浣忓畢鍚嶇О.</param>
+        /// <param name="numHomeId">浣忓畢鏁板瓧鍨媔d</param>
+        public static void AddHouse(string houseId, string houseName, int numHomeId)
+        {
+            AddHouse(houseId, houseName, false, 0);
+        }
+
+        /// <summary>
+        /// 娣诲姞浣忓畢
+        /// </summary>
+        /// <param name="houseId">浣忓畢id</param>
+        /// <param name="houseName">浣忓畢鍚嶇О.</param>
+        /// <param name="isOthreShare">鏄惁涓哄叾浠栦富鐢ㄦ埛鍒嗕韩杩囨潵鐨勪綇瀹�</param>
+        /// <param name="accountType">浠呭瓙璐﹀彿鐧婚檰鐨勬椂鍊欎娇鐢�,褰撱�怚sOthreShare銆戜负"true"锛屽苟涓斻�怉ccountType銆戜负"1"鏃讹紝璇ヨ处鍙锋嫢鏈夌鐞嗗憳鏉冮檺</param>
+        public static void AddHouse(string houseId, string houseName, bool isOthreShare, int accountType)
+        {
+            var home = new House
+            {
+                Id = houseId,
+                Name = houseName,
+                IsOthreShare = isOthreShare,
+                AccountType = accountType
+            };
+            //鍒涘缓鏂囦欢澶�
+            Global.CreateHomeDirectory(houseId);
+            home.Save();
+            Config.Instance.HomeFilePathList.Add(home.FileName);
+            Config.Instance.Save();
+        }
+
+
+        #endregion
+
+        #region 鈼� 鍒犻櫎浣忓畢_________________________
+
+        /// <summary>
+        /// 鍒犻櫎浣忓畢
+        /// </summary>
+        /// <param name="filePath">File path.</param>
+        public static void DeleteHouse(string filePath)
+        {
+            var delPath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, GetHouseIdByFilePath(filePath));
+            if (System.IO.Directory.Exists(delPath) == false)
+            {
+                return;
+            }
+            var fileList = GetHouseFileListByFilePath(filePath);
+            foreach (var file in fileList)
+            {
+                //鍒犻櫎鏂囦欢
+                System.IO.File.Delete(System.IO.Path.Combine(delPath, file));
+            }
+            //鍒犻櫎鏂囦欢澶�
+            System.IO.Directory.Delete(delPath, true);
+            //HomeFilePathList涓垹闄よ鍒楄〃
+            Common.Config.Instance.HomeFilePathList.RemoveAll((obj) => obj == filePath);
+            Config.Instance.Save();
+        }
+
+        /// <summary>
+        /// 鍒犻櫎浣忓畢
+        /// </summary>
+        /// <param name="houseId">House identifier.</param>
+        public static void DeleteHouseByHouseId(string houseId)
+        {
+            DeleteHouse(GetHouseFilePathByHouseId(houseId));
+        }
+
+        #endregion
+
+        #region 鈼� 淇敼浣忓畢_________________________
+
+        /// <summary>
+        /// 淇敼浣忓畢.
+        /// </summary>
+        /// <param name="houseId">House identifier.</param>
+        /// <param name="houseName">House name.</param>
+        public static void EditorHouseByHouseId(string houseId, string houseName)
+        {
+            var home = GetHouseByHouseId(houseId);
+            if (home == null)
+            {
+                return;
+            }
+            home.Name = houseName;
+            home.Save();
+            Config.Instance.Save();
+        }
+
+        #endregion
+
+        #region 鈼� 鑾峰彇浣忓畢_________________________
+        /// <summary>
+        /// 閫氳繃銆恑d銆戣幏鍙栦綇瀹�
+        /// </summary>
+        /// <returns>The house by house identifier.</returns>
+        /// <param name="houseId">浣忓畢id</param>
+        public static House GetHouseByHouseId(string houseId)
+        {
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, houseId, $"House_{houseId}.json");
+            var file = Shared.IO.FileUtils.ReadFile(path);
+            if (file == null)
+            {
+                return null;
+            }
+            return Newtonsoft.Json.JsonConvert.DeserializeObject<House>(System.Text.Encoding.UTF8.GetString(file));
+        }
+
+        /// <summary>
+        /// 閫氳繃銆愭枃浠惰矾寰勩�戣幏鍙栦綇瀹�
+        /// </summary>
+        /// <returns>The house by file path.</returns>
+        /// <param name="filePath">鏂囦欢璺緞</param>
+        public static House GetHouseByFilePath(string filePath)
+        {
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, GetHouseIdByFilePath(filePath), filePath);
+            var file = Shared.IO.FileUtils.ReadFile(path);
+            if (file == null)
+            {
+                return null;
+            }
+            return Newtonsoft.Json.JsonConvert.DeserializeObject<House>(System.Text.Encoding.UTF8.GetString(file));
+        }
+
+        #endregion
+
+        #region 鈼� 鑾峰彇浣忓畢鍒楄〃_____________________
+        /// <summary>
+        /// Gets the home lists.鑾峰彇浣忓畢鍒楄〃
+        /// </summary>
+        public static async System.Threading.Tasks.Task<List<string>> GetHomeLists()
+        {
+            var pageSetting = new SendDataToServer.ResidenceListPageSettingObj()
+            {
+                PageSize = CommonPage.PageSize
+            };
+
+            var reqDto = new SendDataToServer.ResidenceListObj()
+            {
+                LoginAccessToken = Config.Instance.Token,
+                PageSetting = pageSetting
+            };
+            var requestObj = new SendDataToServer.ResidenceListReqDto()
+            {
+                ReqDto = reqDto,
+                RequestVersion = CommonPage.RequestVersion,
+            };
+            try
+            {
+                var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
+                var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("App/GetHomePager", System.Text.Encoding.UTF8.GetBytes(requestJson));
+                if (revertObj == null)
+                {
+                    return null;
+                }
+                if (revertObj.StateCode.ToUpper() == "SUCCESS")
+                {
+                    var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResidenceRes>(revertObj.ResponseData.ToString());
+                    if (responseDataObj.TotalCount == 0)
+                    {
+                        //褰撲綇瀹呬负绌烘椂鍏堟彁绀虹敤鎴锋柊寤轰綇瀹�
+                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim));
+                        alert.Show();
+                        alert.ResultEventHandler += (sender, e) =>
+                        {
+                            if (e)
+                            {
+                                //
+                            }
+                        };
+                    }
+                    else
+                    {
+                        //娓呯┖褰撳墠浣忓畢鍒楄〃
+                        Config.Instance.HomeFilePathList.Clear();
+                        var listHouse = new List<House>();
+                        foreach (var residence in responseDataObj.PageData)
+                        {
+                            Config.Instance.HomeFilePathList.Add($"House_{residence.Id}.json");
+                            var house = GetHouseByHouseId(residence.Id);
+                            if (house == null)
+                            {
+                                house = new House
+                                {
+                                    Id = residence.Id,
+                                    Name = residence.Name,
+                                    IsOthreShare = residence.IsOthreShare,
+                                    AccountType = residence.AccountType,
+                                    MainUserDistributedMark = residence.MainUserDistributedMark,
+                                    Longitude = residence.Longitude,
+                                    Latitude = residence.Latitude
+                                };
+                            }
+                            else
+                            {
+                                house.Id = residence.Id;
+                                house.Name = residence.Name;
+                                house.IsOthreShare = residence.IsOthreShare;
+                                house.AccountType = residence.AccountType;
+                                house.MainUserDistributedMark = residence.MainUserDistributedMark;
+                                house.Longitude = residence.Longitude;
+                                house.Latitude = residence.Latitude;
+                            }
+                            Global.CreateHomeDirectory(residence.Id);
+                            house.Save(false);
+                            listHouse.Add(house);
+                        }
+                        //濡傛灉鍒囨崲浜嗚处鍙�,鎴栬�呭師鏉ョ殑id涓嶅瓨鍦�,鍒欓噸缃綇瀹匢D
+                        if (UserCenterResourse.ResidenceOption.TheSameLoginAccount == false ||
+                            Config.Instance.HomeFilePathList.Find((obj) => obj == $"House_{Config.Instance.HomeId}.json") == null)
+                        {
+                            Config.Instance.HomeId = listHouse[0].Id;
+                            foreach (var house in listHouse)
+                            {
+                                //鍒濆閫夋嫨瀹冭嚜宸辩殑浣忓畢
+                                if (house.IsOthreShare == false)
+                                {
+                                    Config.Instance.HomeId = house.Id;
+                                    Config.Instance.Home = House.GetHouseByHouseId(house.Id);
+                                    break;
+                                }
+                            }
+                        }
+                        Config.Instance.Save();
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                System.Console.WriteLine($"鑾峰彇澶辫触{ex.Message}");
+            }
+            finally
+            {
+            }
+            return Config.Instance.HomeFilePathList;
+        }
+
+        #endregion
+
+        #region 鈼� 鑾峰彇浣忓畢id_______________________
+        /// <summary>
+        /// 閫氳繃銆愭枃浠惰矾寰勩�戣幏鍙栦綇瀹卛d
+        /// </summary>
+        /// <returns>The house identifier by file path.</returns>
+        /// <param name="filePath">鏂囦欢璺緞</param>
+        public static string GetHouseIdByFilePath(string filePath)
+        {
+            string[] sArray = filePath.Split(new string[] { "House_", ".json" }, StringSplitOptions.RemoveEmptyEntries);
+            if (sArray.Length >= 1)
+            {
+                return sArray[0];
+            }
+            return null;
+        }
+
+        #endregion
+
+        #region 鈼� 鑾峰彇浣忓畢璺緞_____________________
+        /// <summary>
+        /// 閫氳繃銆愪綇瀹卛d銆戣幏鍙栦綇瀹呰矾寰�
+        /// </summary>
+        /// <returns>The house identifier by file path.</returns>
+        /// <param name="houseId">浣忓畢id</param>
+        public static string GetHouseFilePathByHouseId(string houseId)
+        {
+            if (string.IsNullOrEmpty(houseId))
+            {
+                return null;
+            }
+            return $"House_{houseId}.json";
+        }
+
+        #endregion
+
+        #region 鈼� 鑾峰彇璇ヤ綇瀹呯殑鏂囦欢鍒楄〃______________
+
+        /// <summary>
+        /// 閫氳繃銆恏ouseId銆戣幏鍙栬浣忓畢鐨勬枃浠跺垪琛�
+        /// </summary>
+        /// <returns>The house file list by home identifier.</returns>
+        /// <param name="houseId">House identifier.</param>
+        public static List<string> GetHouseFileListByHomeId(string houseId)
+        {
+            var list = new List<string> { };
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, houseId);
+            if (!System.IO.Directory.Exists(path))
+            {
+                return new List<string> { };
+            }
+            var files = System.IO.Directory.GetFiles(path);
+            foreach (var file in files)
+            {
+                var f = file.Substring(path.Length + 1);
+                System.Console.WriteLine(f);
+                list.Add(f);
+            }
+            return list;
+        }
+
+        /// <summary>
+        /// 閫氳繃銆愭枃浠惰矾寰勩�戣幏鍙栦綇瀹呬笅鏂囦欢鍒楄〃
+        /// </summary>
+        /// <returns>The house file list by file path.</returns>
+        /// <param name="filePath">File path.</param>
+        public static List<string> GetHouseFileListByFilePath(string filePath)
+        {
+            return GetHouseFileListByHomeId(GetHouseIdByFilePath(filePath));
+        }
+
+        #endregion
+
+        #endregion
+
+        #region 鈼� 妤煎眰____________________________
+
+        /// <summary>
+        /// GetCurrentFloorName
+        /// </summary>
+        /// <returns></returns>
+        public string GetCurrentFloorName
+        {
+            get
+            {
+                return GetFloorNameById(CurrentFloorId);
+            }
+        }
+
+        /// <summary>
+        /// 鑾峰彇妤煎眰鍚嶇О
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        public string GetFloorNameById(string floorId)
+        {
+            if (Config.Instance.Home.FloorDics.Count == 0)
+            {
+                return string.Empty;
+            }
+
+            foreach (var floor in Config.Instance.Home.FloorDics)
+            {
+                if (floorId == floor.Key)
+                {
+                    return floor.Value;
+                }
+            }
+            return string.Empty;
+        }
+
+        /// <summary>
+        /// 璁剧疆褰撳墠妤煎眰鐨処D
+        /// </summary>
+        public void SetCurrentFloorId()
+        {
+            if (Config.Instance.Home.FloorDics.Count > 0 && string.IsNullOrEmpty(CurrentFloorId))
+            {
+                foreach (var floor in Config.Instance.Home.FloorDics)
+                {
+                    CurrentFloorId = floor.Key;
+                    Save(false);
+                    return;
+                }
+            }
+        }
+
+        #endregion
+
+        #region 鈼� 鎴块棿____________________________
+
+        #region 鈼� 娣诲姞鎴块棿璺緞_________________________
+
+        /// <summary>
+        /// 娣诲姞鎴块棿ID
+        /// </summary>
+        /// <returns><c>true</c>, if room list file path was added, <c>false</c> otherwise.</returns>
+        /// <param name="roomFilePath">Room file path.</param>
+        public void AddRoomId(string roomId)
+        {
+            if (ListRooms.Contains(roomId) == false)
+            {
+                ListRooms.Add(roomId);
+                this.Save();
+            }
+        }
+
+        #endregion
+
+        #region 鈼� 鍒犻櫎鎴块棿璺緞_________________________
+
+        /// <summary>
+        /// 绉婚櫎鎴块棿Id
+        /// </summary>
+        /// <returns><c>true</c>, if room list file path was added, <c>false</c> otherwise.</returns>
+        /// <param name="roomFilePath">Room file path.</param>
+        public void RemoveRoomId(string roomId)
+        {
+            if (ListRooms.Contains(roomId)==true)
+            {
+                ListRooms.Remove(roomId);
+                Save();
+            }
+        }
+
+        #endregion
+
+        #endregion
+
+        #region 鈼� 淇濆瓨____________________________
+
+        /// <summary>
+        /// 淇濆瓨
+        /// </summary>
+        /// <param name="autoBackup">鏄惁澶囦唤</param>
+        public void Save(bool autoBackup = true)
+        {
+            var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, Id);
+            //濡傛灉娌℃湁瀛樺湪浣忓畢鐩綍锛屽厛鍒涘缓
+            if (!System.IO.Directory.Exists(path))
+            {
+                System.IO.Directory.CreateDirectory(path);
+            }
+            path = System.IO.Path.Combine(path, FileName);
+            Shared.IO.FileUtils.WriteFileByBytes(path, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
+            if (autoBackup == true && Id == Config.Instance.HomeId)
+            {
+                HdlAutoBackupLogic.AddOrEditorFile(FileName);
+            }
+        }
+        #endregion
+    }
+}

--
Gitblit v1.8.0