wei
2020-12-06 427ca74954126ce0d9aced18752442d064851863
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
    }