using System; using System.Collections.Generic; namespace HDL_ON.Entity { /// /// 读取服务器空间信息返回到数据包 /// public class RoomApiPack { public List list = new List(); public string totalCount = "0"; public string totalPage = "0"; public string pageNo = "0"; public string pageSize = "0"; } /// /// 空间信息基础类 /// 包含楼层/房间 /// 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() { this }); } else if (string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) { pm.DeleteRoom(new List() { roomId }); } else if (!string.IsNullOrEmpty(createTime) && !string.IsNullOrEmpty(modifyTime)) { pm.UpdateRoom(new List() { this }); } } /// /// 更新楼层信息 /// 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("更新楼层信息"); } } } /// /// 房间对象 /// [Serializable] 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"; /// /// 楼层列表 /// List floors; public List 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>(floorsDataString); if (floors == null) { floors = new List(); } } } catch (Exception ex) { MainPage.Log($"楼层数据初始化失败:{ex.Message}"); } } return floors; } } /// /// 增加楼层 /// /// public void AddFloor(Floor floor) { ins_Floor.floors.Add(floor); floor.SaveFloorData(); } /// /// 删除楼层 /// /// 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; } /// /// 保存楼层数据 /// 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_" + uid; } } /// /// 楼层 /// [Newtonsoft.Json.JsonIgnore] public string floorName { get { if (Floor.InsFloor.Floors.Count > 0) { var f = Floor.InsFloor.Floors.Find((obj) => obj.uid == parentId); if (f != null) { return f.roomName + " "; } } return ""; } } /// /// 房间功能列表 /// List functions = new List(); /// /// 获取房间功能列表 /// public List GetRoomFunctions(bool needRefresh) { if (needRefresh) { functions = new List(); } if (functions.Count == 0) { foreach (var f in DB_ResidenceData.functionList.GetAllFunction()) { if (f.roomIds.Contains(uid) && uid != null) { functions.Add(f); } } } return functions; } /// /// 增加房间功能 /// 操作的是缓存数据,不用保存 /// public void AddRoomFunction(Function function) { functions.Add(function); } /// /// 删除房间功能 /// 操作的是缓存数据,不用保存 /// public void RemoveRoomFunction(Function function) { functions.Remove(functions.Find((obj) => obj.sid == function.sid)); } /// /// 房间场景列表 /// List scenes = new List(); /// /// 获取场景列表 /// /// public List GetRoomScenes(bool needRefresh) { if (needRefresh) { scenes = new List(); } if (scenes.Count == 0) { foreach (var s in DB_ResidenceData.functionList.scenes) { if (s.roomIds.Contains(uid) && uid != null) { scenes.Add(s); } } } return scenes; } /// /// 增加房间场景 /// 操作的是缓存数据,不用保存 /// /// public void AddRoomScene(Scene scene) { scenes.Add(scene); } /// /// 移除房间场景 /// 操作的是缓存数据,不用保存 /// /// public void RemoveRoomScene(Scene scene) { scenes.Remove(scenes.Find((obj) => obj.sid == scene.sid)); } /// /// 保存房间数据 /// public void SaveRoomData() { var ssd = System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)); FileUtils.WriteFileByBytes(roomSavePath, ssd); MainPage.Log($"Save Room Data {roomName} : {this.uid}"); base.SaveSpatialInfo(); } } }