From 427ca74954126ce0d9aced18752442d064851863 Mon Sep 17 00:00:00 2001
From: wei <kaede@kaededeMacBook-Air.local>
Date: 星期日, 06 十二月 2020 14:27:35 +0800
Subject: [PATCH] 20201206

---
 HDL_ON/Entity/Room.cs |  116 ++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 89 insertions(+), 27 deletions(-)

diff --git a/HDL_ON/Entity/Room.cs b/HDL_ON/Entity/Room.cs
index 91e78cd..7d39796 100644
--- a/HDL_ON/Entity/Room.cs
+++ b/HDL_ON/Entity/Room.cs
@@ -122,15 +122,25 @@
                 {
                     foreach (var updateTemp in roomUpdateList)
                     {
+                        var localDelRoom = CurrentSpatial.needDeleteRooms.Find((obj) => obj.roomId == updateTemp.roomId);
+                        if(localDelRoom!= null)
+                        {
+                                    DelRoom(localDelRoom);
+                           
+                            continue;
+                        }
                         var localRoom = CurrentSpatial.RoomList.Find((obj) => obj.roomId == updateTemp.roomId);
                         if (localRoom != null)
                         {
-                            localRoom.roomName = updateTemp.roomName;
-                            localRoom.roomImage = updateTemp.roomImage;
-                            localRoom.parentId = updateTemp.parentId;
-                            localRoom.createTime = updateTemp.createTime;
-                            localRoom.modifyTime = updateTemp.modifyTime;
-                            localRoom.SaveRoomData();
+                            if (localRoom.modifyTime != updateTemp.modifyTime)
+                            {
+                                localRoom.roomName = updateTemp.roomName;
+                                localRoom.roomImage = updateTemp.roomImage;
+                                localRoom.parentId = updateTemp.parentId;
+                                localRoom.createTime = updateTemp.createTime;
+                                localRoom.modifyTime = updateTemp.modifyTime;
+                                localRoom.SaveRoomData();
+                            }
                         }else
                         {
                             updateTemp.SaveRoomData();
@@ -143,6 +153,8 @@
                     foreach(var newRoom in roomUpdateList)
                     {
                         newRoom.SaveRoomData();
+                        RoomList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(
+                            Newtonsoft.Json.JsonConvert.SerializeObject(newRoom)));
                     }
                 }
             }
@@ -194,7 +206,7 @@
                 {
                     try
                     {
-                        var floorsDataBytes = FileUtils.ReadFile(dataSavePath);
+                        var floorsDataBytes = FileUtils.ReadFile("FloorsData");
                         if (floorsDataBytes != null)
                         {
                             var floorsDataString = System.Text.Encoding.UTF8.GetString(floorsDataBytes);
@@ -262,7 +274,7 @@
             if (tRoom != null)
             {
                 FloorList.Remove(floor);
-                floor.modifyTime = "";
+                floor.DeleteSign = true;
             }
             SaveFloorData();
         }
@@ -278,16 +290,7 @@
             SaveSpatialInfo();
         }
 
-        /// <summary>
-        /// 淇濆瓨鎴块棿鏁版嵁
-        /// </summary>
-        public void SaveRoomData()
-        {
-            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
-            FileUtils.WriteFileByBytes(dataSavePath, ssd);
-            MainPage.Log($"Save Room Data {roomName} : {uid}");
-            SaveSpatialInfo();
-        }
+
         #endregion
 
         #region 鎴块棿鍒楄〃
@@ -316,11 +319,40 @@
                                 var roomDataBytes = FileUtils.ReadFile(filePath);
                                 var roomDataString = System.Text.Encoding.UTF8.GetString(roomDataBytes);
                                 var room = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(roomDataString);
-                                if (room != null)
+                                if (room != null )
                                 {
-                                    rooms.Add(room);
+                                    if(room.DeleteSign)
+                                    {
+                                        needDeleteRooms.Add(room);
+                                    }else
+                                    {
+                                        rooms.Add(room);
+                                    }
                                 }
                             }
+                        }
+                        if(needDeleteRooms.Count>0)
+                        {
+                            //鍒犻櫎宸茬粡鏍囪闇�瑕佸垹闄ょ殑鎴块棿
+                            new System.Threading.Thread(() =>
+                            {
+                                var delIds = new List<string>();
+                                foreach(var delTemp in needDeleteRooms)
+                                {
+                                    delIds.Add(delTemp.roomId);
+                                }
+                                var pm = new HttpServerRequest();
+                                var pack = pm.DeleteRoom(delIds);
+                                if (pack.Code == StateCode.SUCCESS)
+                                {
+                                    foreach (var delTemp in needDeleteRooms)
+                                    {
+                                        FileUtils.DeleteFile(delTemp.dataSavePath);
+                                    }
+                                    needDeleteRooms.Clear();
+                                }
+                            })
+                            { IsBackground = true }.Start();
                         }
                     }
                     catch (Exception ex)
@@ -331,6 +363,12 @@
                 return rooms;
             }
         }
+        /// <summary>
+        /// 闇�瑕佸垹闄ょ殑鎴块棿
+        /// 鏈湴鏍囪鍒犻櫎浜嗭紝浣嗘槸鏈嶅姟涓婃病鏈夊垹闄�
+        /// 鏃犳硶涓庢湇鍔″櫒閫氳閫犳垚鍒犻櫎涓嶆垚鍔燂紝閫氳鎴愬姛涔嬪悗瑕侀噸鏂板垹闄�
+        /// </summary>
+        List<Room> needDeleteRooms = new List<Room>();
         /// <summary>
         /// 澧炲姞鎴块棿
         /// </summary>
@@ -346,14 +384,29 @@
         /// <param name="room"></param>
         public void DelRoom(Room room)
         {
-            var tRoom = RoomList.Find((obj) => obj.uid == room.uid);
-            if (tRoom != null)
+            new System.Threading.Thread(() =>
             {
-                FileUtils.DeleteFile(room.dataSavePath);
-                RoomList.Remove(room);
                 room.DeleteSign = true;
-            }
-            room.SaveRoomData();
+                room.SaveRoomData();
+                var tRoom = RoomList.Find((obj) => obj.uid == room.uid);
+                if (tRoom != null)
+                {
+                    RoomList.Remove(room);
+                }
+                var temp = needDeleteRooms.Find((obj) => obj.uid == room.uid);
+                if (temp != null)
+                {
+                    needDeleteRooms.Add(room);
+                }
+                var pm = new HttpServerRequest();
+                var pack = pm.DeleteRoom(new List<string>() { room.roomId });
+                if (pack.Code == StateCode.SUCCESS)
+                {
+                    FileUtils.DeleteFile(room.dataSavePath);
+                    needDeleteRooms.Remove(room);
+                }
+            })
+            { IsBackground = true }.Start();
         }
         /// <summary>
         /// 鍒犻櫎鎵�鏈夋埧闂�
@@ -390,7 +443,16 @@
             { IsBackground = true }.Start();
         }
 
-
+        /// <summary>
+        /// 淇濆瓨鎴块棿鏁版嵁
+        /// </summary>
+        public void SaveRoomData()
+        {
+            var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this));
+            FileUtils.WriteFileByBytes(dataSavePath, ssd);
+            MainPage.Log($"Save Room Data {roomName} : {uid}");
+            SaveSpatialInfo();
+        }
         #endregion
 
     }

--
Gitblit v1.8.0