From 30b5770f56f99c1f92e933ad31cf7d2af58b033c Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期三, 02 十二月 2020 16:31:48 +0800
Subject: [PATCH] 20201202

---
 HDL_ON/Entity/Room.cs |  242 +++++++++++++++++++++++++++++++++++------------
 1 files changed, 179 insertions(+), 63 deletions(-)

diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs
index d339869..5c0cdcb 100644
--- a/HDL_ON/Entity/Room.cs
+++ b/HDL_ON/Entity/Room.cs
@@ -4,52 +4,192 @@
 namespace HDL_ON.Entity
 {
     /// <summary>
-    /// 鎴块棿瀵硅薄
+    /// 璇诲彇鏈嶅姟鍣ㄧ┖闂翠俊鎭繑鍥炲埌鏁版嵁鍖�
     /// </summary>
-    [Serializable]
-    public class Floor
+    public class RoomApiPack
     {
-        /// <summary>
-        /// 妤煎眰鍚嶇О
-        /// </summary>
-        public string name = "1F";
-        /// <summary>
-        /// 妤煎眰ID
-        /// </summary>
-        public string sid;
-    }
+        public List<SpatialInfo> list = new List<SpatialInfo>();
 
+        public string totalCount = "0";
+
+        public string totalPage = "0";
+
+        public string pageNo = "0";
+
+        public string pageSize = "0";
+
+    }
+    /// <summary>
+    /// 绌洪棿淇℃伅鍩虹绫�
+    /// 鍖呭惈妤煎眰/鎴块棿
+    /// </summary>
+    public class SpatialInfo
+    {
+        public string roomId = "";
+        public string roomName = "";
+        public string roomImage = "";
+        public string roomType = "";
+        public string parentId = "";
+        public string uid = Guid.NewGuid().ToString();
+
+        public string createTime = "";
+        public string modifyTime = "";
+
+        protected void SaveSpatialInfo()
+        {
+            var pm = new DAL.Server.HttpServerRequest();
+            if (string.IsNullOrEmpty(createTime) && string.IsNullOrEmpty(modifyTime))
+            {
+                pm.AddRoom(new List<SpatialInfo>() { this });
+            }
+            else if (string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
+            {
+                pm.DeleteRoom(new List<string>() { roomId });
+            }
+            else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime))
+            {
+                pm.UpdateRoom(new List<SpatialInfo>() { this });
+            }
+        }
+
+        /// <summary>
+        /// 鏇存柊妤煎眰淇℃伅
+        /// </summary>
+        public void UpdateSpatialInfoData()
+        {
+            if (roomType == "ROOM")
+            {
+
+            }
+            else if (roomType == "FLOOR")
+            {
+                var tempFloor = Floor.InsFloor.Floors.Find((obj) => obj.roomId == roomId);
+                if (tempFloor == null)
+                {
+                    Floor.InsFloor.Floors.Add(this as Floor);
+                }
+                else
+                {
+                    tempFloor = this as Floor;
+                }
+                var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(Floor.InsFloor.Floors));
+                FileUtils.WriteFileByBytes(Floor.InsFloor.FloorDataSavePath, ssd);
+                MainPage.Log("鏇存柊妤煎眰淇℃伅");
+            }
+        }
+    }
 
     /// <summary>
     /// 鎴块棿瀵硅薄
     /// </summary>
     [Serializable]
-    public class Room
+    public class Floor : SpatialInfo
     {
+        #region 妤煎眰鏁版嵁鐩稿叧
+        static Floor ins_Floor ;
+        public static Floor InsFloor {
+            get {
+                if(ins_Floor== null)
+                {
+                    ins_Floor = new Floor();
+                }
+                return ins_Floor;
+            }
+        }
+        public string FloorDataSavePath = "FloorsData";
         /// <summary>
-        /// 鎴块棿鍚�
+        /// 妤煎眰鍒楄〃
         /// </summary>
-        public string name = "Room";
+        List<Floor> floors;
+        public List<Floor> Floors
+        {
+            get
+            {
+                if (floors == null)
+                {
+                    try
+                    {
+                        var floorsDataBytes = FileUtils.ReadFile(FloorDataSavePath);
+                        if (floorsDataBytes != null)
+                        {
+                            var floorsDataString = System.Text.Encoding.UTF8.GetString(floorsDataBytes);
+                            MainPage.Log(floorsDataString);
+                            floors = Newtonsoft.Json.JsonConvert.DeserializeObject<List<Floor>>(floorsDataString);
+                            if (floors == null)
+                            {
+                                floors = new List<Floor>();
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        MainPage.Log($"妤煎眰鏁版嵁鍒濆鍖栧け璐ワ細{ex.Message}");
+                    }
+                }
+                return floors;
+            }
+        }
 
+        /// <summary>
+        /// 澧炲姞妤煎眰
+        /// </summary>
+        /// <param name="floor"></param>
+        public void AddFloor(Floor floor)
+        {
+            ins_Floor.floors.Add(floor);
+            floor.SaveFloorData();
+        }
+        /// <summary>
+        /// 鍒犻櫎妤煎眰
+        /// </summary>
+        /// <param name="floor"></param>
+        public void DelFloor(Floor floor)
+        {
+            var tRoom = ins_Floor.floors.Find((obj) => obj.uid == floor.uid);
+            if (tRoom != null)
+            {
+                ins_Floor.floors.Remove(floor);
+                floor.modifyTime = "";
+            }
+            SaveFloorData();
+        }
+
+        #endregion
+
+        public Floor()
+        {
+            roomType = "FLOOR";
+            parentId = DB_ResidenceData.residenceData.CurReginID;
+        }
+        /// <summary>
+        /// 淇濆瓨妤煎眰鏁版嵁
+        /// </summary>
+        public void SaveFloorData()
+        {
+            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(ins_Floor.floors));
+            FileUtils.WriteFileByBytes(FloorDataSavePath, ssd);
+            MainPage.Log($"Save floor Data");
+            base.SaveSpatialInfo();
+        }
+
+    }
+
+    [Serializable]
+    public class Room : SpatialInfo
+    {
+        public Room()
+        {
+            roomType = "ROOM";
+            roomName = "Room";
+        }
+        public string backgroundImage = "Classification/Room/Roombg.png";
         public string roomSavePath
         {
             get
             {
-                return "RoomPath_" + sid;
+                return "RoomPath_" + uid;
             }
         }
-        /// <summary>
-        /// 鎴块棿ID
-        /// </summary>
-        public string sid;
-        /// <summary>
-        /// 鎴块棿鑳屾櫙
-        /// </summary>
-        public string backgroundImage = "Classification/Room/Roombg.png";
-        /// <summary>
-        /// 妤煎眰绱㈠紩
-        /// </summary>
-        public string floorId = "";
         /// <summary>
         /// 妤煎眰
         /// </summary>
@@ -58,17 +198,18 @@
         {
             get
             {
-                if (DB_ResidenceData.residenceData.floors.Count > 0)
+                if (Floor.InsFloor.Floors.Count > 0)
                 {
-                    var f = DB_ResidenceData.residenceData.floors.Find((obj) => obj.sid == floorId);
+                    var f = Floor.InsFloor.Floors.Find((obj) => obj.uid == parentId);
                     if (f != null)
                     {
-                        return f.name + " ";
+                        return f.roomName + " ";
                     }
                 }
                 return "";
             }
         }
+
         /// <summary>
         /// 鎴块棿鍔熻兘鍒楄〃
         /// </summary>
@@ -78,7 +219,7 @@
         /// </summary>
         public List<Function> GetRoomFunctions(bool needRefresh)
         {
-            if(needRefresh)
+            if (needRefresh)
             {
                 functions = new List<Function>();
             }
@@ -86,7 +227,7 @@
             {
                 foreach (var f in DB_ResidenceData.functionList.GetAllFunction())
                 {
-                    if (f.roomIds.Contains(sid) && sid != null)
+                    if (f.roomIds.Contains(uid) && uid != null)
                     {
                         functions.Add(f);
                     }
@@ -128,7 +269,7 @@
             {
                 foreach (var s in DB_ResidenceData.functionList.scenes)
                 {
-                    if (s.roomIds.Contains(sid) && sid != null)
+                    if (s.roomIds.Contains(uid) && uid != null)
                     {
                         scenes.Add(s);
                     }
@@ -160,35 +301,10 @@
         public void SaveRoomData()
         {
             var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
-            FileUtils.WriteFileByBytes("RoomData_" + this.sid, ssd);
-            MainPage.Log($"Save FunctionData {name} : {this.sid}");
+            FileUtils.WriteFileByBytes(roomSavePath, ssd);
+            MainPage.Log($"Save Room Data {roomName} : {this.uid}");
+            base.SaveSpatialInfo();
         }
-
-
     }
-
-    /// <summary>
-    /// 鏈嶅姟杩斿洖鐨勬埧闂村璞�
-    /// </summary>
-    public class ServerReplyRoom
-    {
-        //浜戠鎴块棿ID
-        public string roomId = "";
-        /// <summary>
-        /// 鎴块棿鍚嶇О
-        /// </summary>
-        public string roomName = "";
-        /// <summary>
-        /// 鎴块棿鍥剧墖
-        /// </summary>
-        public string roomImage = "";
-        /// <summary>
-        /// 鎴块棿鍏ㄥ悕
-        /// </summary>
-        public string roomFullName = "";
-        /// <summary>
-        /// 璋冭瘯杞欢\app鐢熸垚鐨勫敮涓�ID
-        /// </summary>
-        public string uid = "";
-    }
+  
 }
\ No newline at end of file

--
Gitblit v1.8.0