From 4f0ab0ad21ce450b7856d50f98322a7899361386 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期二, 22 九月 2020 10:30:01 +0800
Subject: [PATCH] 不要下载这个备份
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs | 601 +++++++++++++++++++++++++++--------------------------
1 files changed, 306 insertions(+), 295 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs
index 766493a..938c65c 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlShardLogic.cs
@@ -5,7 +5,6 @@
using System.IO;
using System.Net;
using System.Text;
-using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter
@@ -53,7 +52,7 @@
/// </summary>
/// <param name="listDistributedMark"></param>
/// <returns></returns>
- private async Task<List<string>> SetShardFileToLocation(List<string> listDistributedMark)
+ private List<string> SetShardFileToLocation(List<string> listDistributedMark)
{
if (listDistributedMark.Count == 0)
{
@@ -63,36 +62,36 @@
List<string> listFile = new List<string>();
//鏂囦欢澶�
- string strDir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory);
+ string strDir = DirNameResourse.DownLoadShardDirectory;
//涓嶅厑璁告寜绯荤粺鐨勮繑鍥為敭
Shared.Common.CommonPage.BackKeyCanClick = false;
- UserCenterResourse.Option.AppCanSignout = false;
+ UserCenterResourse.AccountOption.AppCanSignout = false;
for (int i = 0; i < listDistributedMark.Count; i++)
{
string keys = listDistributedMark[i];
- var dataPra = new { DistributedMark = keys, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.isAdministrator };
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetOneShareData", false, dataPra);
- if (result == null)
+ var dataPra = new { DistributedMark = keys, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.Home.IsOthreShare };
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetOneShareData", false, dataPra, null, true);
+ if (string.IsNullOrEmpty(result) == true)
{
//鍏佽鎸夌郴缁熺殑杩斿洖閿�
Shared.Common.CommonPage.BackKeyCanClick = true;
- UserCenterResourse.Option.AppCanSignout = true;
+ UserCenterResourse.AccountOption.AppCanSignout = true;
return null;
}
var dataResult = Newtonsoft.Json.JsonConvert.DeserializeObject<GetShardInfoResult>(result);
//鏂囦欢鍚嶅瓧
listFile.Add(dataResult.ShareName);
//淇濆瓨鍒版寚瀹氭枃浠跺す涓�
- Global.WriteFileToDirectoryByBytes(strDir, dataResult.ShareName, dataResult.ShareDataBytes);
+ HdlFileLogic.Current.SaveByteToFile(System.IO.Path.Combine(strDir, dataResult.ShareName), dataResult.ShareDataBytes);
//璁剧疆杩涘害鍊�
ProgressFormBar.Current.SetValue(i + 1, listMarkCount);
}
//鍏佽鎸夌郴缁熺殑杩斿洖閿�
Shared.Common.CommonPage.BackKeyCanClick = true;
- UserCenterResourse.Option.AppCanSignout = true;
+ UserCenterResourse.AccountOption.AppCanSignout = true;
return listFile;
}
@@ -104,13 +103,13 @@
/// <returns></returns>
public byte[] GetShardFileContent(string fileName)
{
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
if (System.IO.File.Exists(fullName) == false)
{
return null;
}
- string path = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory);
- var varByte = Global.ReadFileByDirectory(path, fileName);
+ string path = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
+ var varByte = HdlFileLogic.Current.ReadFileByteContent(path);
return varByte;
}
@@ -120,10 +119,7 @@
/// <returns></returns>
public List<string> GetLocalAllShardFile()
{
- string path = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory);
- var listFile = HdlAutoBackupLogic.GetFileFromDirectory(path);
-
- return listFile;
+ return HdlFileLogic.Current.GetFileFromDirectory(DirNameResourse.DownLoadShardDirectory);
}
/// <summary>
@@ -133,7 +129,7 @@
/// <returns></returns>
public bool IsFileExists(string fileName)
{
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
if (System.IO.File.Exists(fullName) == false)
{
return false;
@@ -155,9 +151,9 @@
{
return;
}
- string oldName = UserCenterLogic.CombinePath(fileName);
- string newName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
- System.IO.File.Copy(oldName, newName, true);
+ string oldName = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
+ string newName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
+ HdlFileLogic.Current.CopyFile(oldName, newName);
}
/// <summary>
@@ -167,12 +163,9 @@
public void AddShardFile(Common.Room room)
{
room.IsSharedRoom = true;
- var data = Newtonsoft.Json.JsonConvert.SerializeObject(room);
- var byteData = System.Text.Encoding.UTF8.GetBytes(data);
-
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, room.FileName);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, room.FileName);
//鍐欏叆鍐呭
- Shared.IO.FileUtils.WriteFileByBytes(fullName, byteData);
+ HdlFileLogic.Current.SaveFileContent(fullName, room);
}
/// <summary>
@@ -182,12 +175,9 @@
public void AddShardFile(Common.SceneUI scene)
{
scene.IsSharedScene = true;
- var data = Newtonsoft.Json.JsonConvert.SerializeObject(scene);
- var byteData = System.Text.Encoding.UTF8.GetBytes(data);
-
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, scene.FileName);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, scene.FileName);
//鍐欏叆鍐呭
- Shared.IO.FileUtils.WriteFileByBytes(fullName, byteData);
+ HdlFileLogic.Current.SaveFileContent(fullName, scene);
}
/// <summary>
@@ -196,12 +186,9 @@
/// <param name="dic">妤煎眰</param>
public void AddShardFile(Dictionary<string, string> dic)
{
- var data = Newtonsoft.Json.JsonConvert.SerializeObject(dic);
- var byteData = System.Text.Encoding.UTF8.GetBytes(data);
-
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, DirNameResourse.ShardFloorFile);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, DirNameResourse.ShardFloorFile);
//鍐欏叆鍐呭
- Shared.IO.FileUtils.WriteFileByBytes(fullName, byteData);
+ HdlFileLogic.Current.SaveFileContent(fullName, dic);
}
#endregion
@@ -214,11 +201,8 @@
/// <param name="fileName">鎸囧畾鏂囦欢鍚嶅瓧</param>
public void DeleteShardFile(string fileName)
{
- fileName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
- if (System.IO.File.Exists(fileName) == true)
- {
- System.IO.File.Delete(fileName);
- }
+ fileName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
+ HdlFileLogic.Current.DeleteFile(fileName);
}
/// <summary>
@@ -228,8 +212,7 @@
{
this.dicShardDeviceFile.Clear();
//鍒涘缓鏂囦欢澶�
- string strDir = System.IO.Path.Combine(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory);
- Global.CreateEmptyDirectory(strDir, true);
+ HdlFileLogic.Current.CreateDirectory(DirNameResourse.DownLoadShardDirectory, true);
}
#endregion
@@ -239,7 +222,7 @@
/// <summary>
/// 鍚屾鏈嶅姟鍣ㄧ殑鍒嗕韩鍐呭(閲岄潰鍙礋璐f妸涓滆タ瀛樺叆鏈湴)
/// </summary>
- public async Task<bool> SynchronizeDbSharedContent()
+ public bool SynchronizeDbSharedContent()
{
if (UserCenterResourse.UserInfo.AuthorityNo != 3)
{
@@ -248,9 +231,8 @@
}
//鑾峰彇涓讳汉鍒嗕韩缁欐垚鍛樼殑鏂囦欢鍒楄〃
- var infoPra = new { DistributedMark = Config.Instance.Guid, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.isAdministrator };
- var listNotShow = new List<string>() { "NotSetAgain" };
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra, listNotShow);
+ var infoPra = new { DistributedMark = Config.Instance.Guid, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.Home.IsOthreShare };
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra);
if (string.IsNullOrEmpty(result) == true)
{
return false;
@@ -291,7 +273,7 @@
//灏嗗垎浜殑鏁版嵁瀛樺叆鏈湴(鑾峰彇鐨勬槸鏈湴娌℃湁鐨�)
this.ClearShardDirectory();
- var listDbFile = await this.SetShardFileToLocation(listAddMark);
+ var listDbFile = this.SetShardFileToLocation(listAddMark);
if (listDbFile == null)
{
//鍏抽棴
@@ -302,22 +284,16 @@
//鐢熸垚鏂囦欢
foreach (string fileName in listDbFile)
{
- var oldPath = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
+ var oldPath = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
var newPath = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
- System.IO.File.Copy(oldPath, newPath, true);
-
- if (fileName.StartsWith("Room_") == true)
- {
- //鎴块棿鏂囦欢鐗规畩澶勭悊
- Config.Instance.Home.AddRoomListFilePath(fileName);
- }
+ HdlFileLogic.Current.CopyFile(oldPath, newPath);
}
//娓呯┖鍏变韩鏂囦欢澶�
this.ClearShardDirectory();
}
//鍚屾鏈嶅姟鍣ㄧ殑鍙栨秷浜嗙殑鍒嗕韩鍐呭
- return await this.SynchronizeDeleteSharedContent(listShardFile, dicUpdateTime);
+ return this.SynchronizeDeleteSharedContent(listShardFile, dicUpdateTime);
}
/// <summary>
@@ -326,7 +302,7 @@
/// <param name="listShardFile">浜戠涓婇潰鍒嗕韩鐨勬枃浠�,涓篘ull鏃朵粠鏂拌幏鍙�</param>
/// <param name="dicUpdateTime">鍒嗕韩鏂囦欢鐨勬洿鏂版椂闂�,涓篘ull鏃朵粠鏂拌幏鍙�</param>
/// <returns></returns>
- public async Task<bool> SynchronizeDeleteSharedContent(HashSet<string> listShardFile = null, Dictionary<string, string> dicUpdateTime = null)
+ public bool SynchronizeDeleteSharedContent(HashSet<string> listShardFile = null, Dictionary<string, string> dicUpdateTime = null)
{
if (UserCenterResourse.UserInfo.AuthorityNo != 3)
{
@@ -348,9 +324,8 @@
{
listShardFile = new HashSet<string>();
//鑾峰彇涓讳汉鍒嗕韩缁欐垚鍛樼殑鏂囦欢鍒楄〃
- var infoPra = new { DistributedMark = Config.Instance.Guid, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.isAdministrator };
- var listNotShow = new List<string>() { "NotSetAgain" };
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra, listNotShow);
+ var infoPra = new { DistributedMark = Config.Instance.Guid, HouseDistributedMark = Common.Config.Instance.Home.Id, IsOtherAccountControl = Common.Config.Instance.Home.IsOthreShare };
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra);
if (string.IsNullOrEmpty(result) == true)
{
//鍏抽棴
@@ -365,8 +340,10 @@
}
}
+ //娓呯┖妤煎眰鏁版嵁
+ Common.Config.Instance.Home.FloorDics.Clear();
//鐒跺悗妫�娴嬫湰鍦扮殑鏂囦欢
- var listLocalFile = Global.FileListByHomeId();
+ var listLocalFile = HdlFileLogic.Current.GetRootPathListFile();
foreach (string fileName in listLocalFile)
{
if (fileName == DirNameResourse.ShardFloorFile)
@@ -375,8 +352,7 @@
var varData = Global.ReadFileByHomeId(fileName);
var dicFloor = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(Encoding.UTF8.GetString(varData));
Common.Config.Instance.Home.FloorDics = dicFloor;
- Common.Config.Instance.Home.Save(false);
-
+ //鏆傛椂涓嶄繚瀛�,鐣欏湪鏈�鍚庨潰鎵嶄繚瀛�
Global.DeleteFilebyHomeId(fileName);
}
@@ -407,10 +383,6 @@
//鍒犻櫎鎺夎繖涓埧闂存枃浠�
Global.DeleteFilebyHomeId(fileName);
dicUpdateTime.Remove(fileName);
- if (Config.Instance.Home.RoomFilePathList.Contains(fileName) == true)
- {
- Config.Instance.Home.RemoveRoomListFilePath(fileName);
- }
}
//妫�娴嬫湰鍦板満鏅枃浠�,鏄惁瀛樺湪宸茬粡鍙栨秷浜嗗叡浜簡鐨�
else if (fileName.StartsWith("Scene_") == true)
@@ -427,6 +399,10 @@
dicUpdateTime.Remove(fileName);
}
}
+
+ //淇濆瓨妤煎眰鏁版嵁
+ Common.Config.Instance.Home.Save(false);
+
//缃戝叧鏂囦欢闈炲悎娉曟�ф槸鍒锋柊璁惧鍒楄〃鐨勫嚱鏁伴噷闈㈠疄鐜�
//淇濆瓨鍏ㄩ儴鍒嗕韩鏂囦欢鐨勬洿鏂版棩鏈�
@@ -448,7 +424,7 @@
private Dictionary<string, string> GetAllShardFileAgoUpdateTime()
{
var dicTime = new Dictionary<string, string>();
- var data = Global.ReadFileByDirectory(DirNameResourse.LocalMemoryDirectory, DirNameResourse.ShardFileUpdateFile);
+ var data = HdlFileLogic.Current.ReadFileByteContent(DirNameResourse.ShardFileUpdateTimeFile);
if (data == null)
{
//鐩爣鏂囦欢涓嶅瓨鍦�
@@ -464,9 +440,7 @@
/// <param name="dicTime"></param>
private void SaveAllShardFileAgoUpdateTime(Dictionary<string, string> dicTime)
{
- var data = Newtonsoft.Json.JsonConvert.SerializeObject(dicTime);
- var byteData = System.Text.Encoding.UTF8.GetBytes(data);
- Global.WriteFileToDirectoryByBytes(DirNameResourse.LocalMemoryDirectory, DirNameResourse.ShardFileUpdateFile, byteData);
+ HdlFileLogic.Current.SaveFileContent(DirNameResourse.ShardFileUpdateTimeFile, dicTime);
}
#endregion
@@ -484,7 +458,7 @@
/// <para>New鐨勬椂鍊欒寰楀SubAccountDistributedMark璧嬪��,瀹冩槸鎴愬憳鍒楄〃鎺ュ彛杩斿洖鐨凷ubAccountDistributedMark</para>
/// </param>
/// <returns></returns>
- public async Task<bool> GetMemberShardContentListAndSetToLocation(MemberShardInfoData memberShardInfo)
+ public bool GetMemberShardContentListAndSetToLocation(MemberShardInfoData memberShardInfo)
{
if (memberShardInfo.Refresh == false)
{
@@ -502,10 +476,10 @@
{
DistributedMark = memberShardInfo.SubAccountDistributedMark,
HouseDistributedMark = Shared.Common.Config.Instance.HomeId,
- IsOtherAccountControl = Common.Config.Instance.isAdministrator
+ IsOtherAccountControl = Common.Config.Instance.Home.IsOthreShare
};
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra);
- if (result == null)
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/GetShareDataBySubAccount", false, infoPra);
+ if (string.IsNullOrEmpty(result) == true)
{
//鍏抽棴杩涘害鏉�
ProgressFormBar.Current.Close();
@@ -539,7 +513,7 @@
}
//灏嗗垎浜殑鏁版嵁瀛樺叆鏈湴,杩斿洖鐨勬槸鏂囦欢鍚嶅瓧(寮傚父鏃惰繑鍥瀗ull)
- var listFile = await this.SetShardFileToLocation(listMark);
+ var listFile = this.SetShardFileToLocation(listMark);
if (listFile == null)
{
//鍏抽棴杩涘害鏉�
@@ -565,90 +539,99 @@
memberShardInfo.dicShardRoom = new Dictionary<string, Common.Room>();
this.dicShardDeviceFile.Clear();
- var listDeviceFile = new HashSet<string>();
- var listSceneFile = new HashSet<string>();
+ //keys:涓婚敭 value:鏂囦欢鍚�
+ var dicDeviceFile = new Dictionary<string, string>();
+ //keys:鍦烘櫙id value:鏂囦欢鍚�
+ var dicSceneFile = new Dictionary<int, string>();
var listFile = this.GetLocalAllShardFile();
//鍏堝垵濮嬪寲鎴块棿
foreach (string fileName in listFile)
{
- if (fileName.StartsWith("Room_") == true)
+ try
{
- //鎴块棿鏂囦欢
- var byteData = this.GetShardFileContent(fileName);
- if (byteData != null)
+ if (fileName.StartsWith("Room_") == true)
{
- string valueData = System.Text.Encoding.UTF8.GetString(byteData);
- var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
- memberShardInfo.dicShardRoom[fileName] = roomTemp;
+ //鎴块棿鏂囦欢
+ var byteData = this.GetShardFileContent(fileName);
+ if (byteData != null)
+ {
+ string valueData = System.Text.Encoding.UTF8.GetString(byteData);
+ var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
+ memberShardInfo.dicShardRoom[fileName] = roomTemp;
+ }
}
- }
- else if (fileName == DirNameResourse.ShardFloorFile)
- {
- //妤煎眰鏂囦欢
- var byteData = this.GetShardFileContent(fileName);
- if (byteData != null)
+ else if (fileName == DirNameResourse.ShardFloorFile)
{
- string valueData = System.Text.Encoding.UTF8.GetString(byteData);
- memberShardInfo.dicShardFloor = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(valueData);
+ //妤煎眰鏂囦欢
+ var byteData = this.GetShardFileContent(fileName);
+ if (byteData != null)
+ {
+ string valueData = System.Text.Encoding.UTF8.GetString(byteData);
+ memberShardInfo.dicShardFloor = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, string>>(valueData);
+ }
}
- }
- else if (fileName.StartsWith("Device_") == true)
- {
- string[] Arry = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
- string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(Arry[2], Convert.ToInt32(Arry[3]));
- this.dicShardDeviceFile[mainKeys] = fileName;
+ else if (fileName.StartsWith("Device_") == true)
+ {
+ string[] Arry = fileName.Split(new string[] { "_" }, StringSplitOptions.RemoveEmptyEntries);
+ string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(Arry[2], Convert.ToInt32(Arry[3]));
+ this.dicShardDeviceFile[mainKeys] = fileName;
- //璁惧鏂囦欢
- listDeviceFile.Add(fileName);
+ //璁惧鏂囦欢
+ dicDeviceFile[mainKeys] = fileName;
+ }
+ else if (fileName.StartsWith("Scene_") == true)
+ {
+ //鍦烘櫙鏂囦欢
+ dicSceneFile[(Convert.ToInt32(fileName.Replace("Scene_", string.Empty).Replace(".json", string.Empty)))] = fileName;
+ }
}
- else if (fileName.StartsWith("Scene_") == true)
- {
- //鍦烘櫙鏂囦欢
- listSceneFile.Add(fileName);
- }
+ catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
}
- //璁剧疆鎴块棿閲岄潰璁惧鐨刄I瀵硅薄(鍥犱负杩欎釜涓滆タ鏄弽搴忓垪鍖栧嚭鏉ョ殑,璁惧UI瀵硅薄鏄笉搴忓垪鍖栧璞�)
+ //妫�鏌ヨ澶囩殑鍖归厤鎯呭喌
foreach (var tempRoom in memberShardInfo.dicShardRoom.Values)
{
- //杩樺師璁惧瀵硅薄
- tempRoom.DeviceUIList.Clear();
- for (int i = 0; i < tempRoom.DeviceUIFilePathList.Count; i++)
+ //妫�鏌ヨ澶�
+ for (int i = 0; i < tempRoom.ListDevice.Count; i++)
{
- string deviceFile = tempRoom.DeviceUIFilePathList[i];
- //杩欎釜璁惧鏂囦欢鍖归厤寰楀埌鎴块棿
- listDeviceFile.Remove(deviceFile);
- if (this.IsFileExists(deviceFile) == false)
+ string deviceKeys = tempRoom.ListDevice[i];
+ if (dicDeviceFile.ContainsKey(deviceKeys) == false)
{
//绉婚櫎鎺夎繖涓笉瀵瑰姴鐨勮矾寰�
- tempRoom.DeviceUIFilePathList.RemoveAt(i);
+ tempRoom.ListDevice.RemoveAt(i);
i--;
continue;
}
- tempRoom.DeviceUIList.Add(Common.LocalDevice.Current.GetDeviceUI(deviceFile));
+ //杩欎釜璁惧鏂囦欢鍖归厤寰楀埌鎴块棿
+ dicDeviceFile.Remove(deviceKeys);
}
- //杩樺師鍦烘櫙瀵硅薄
- tempRoom.SceneUIList.Clear();
- for (int i = 0; i < tempRoom.SceneUIFilePathList.Count; i++)
+ //妫�鏌ュ満鏅�
+ for (int i = 0; i < tempRoom.ListSceneId.Count; i++)
{
- string uiPath = tempRoom.SceneUIFilePathList[i];
+ int intId = tempRoom.ListSceneId[i];
+ if (dicSceneFile.ContainsKey(intId) == false)
+ {
+ //绉婚櫎鎺夎繖涓笉瀵瑰姴鐨勮矾寰�
+ tempRoom.ListSceneId.RemoveAt(i);
+ i--;
+ continue;
+ }
+ var byteData = this.GetShardFileContent(dicSceneFile[intId]);
//杩欎釜鍦烘櫙鏂囦欢鍖归厤寰楀埌鎴块棿
- listSceneFile.Remove(uiPath);
- var byteData = this.GetShardFileContent(uiPath);
+ dicSceneFile.Remove(intId);
if (byteData == null)
{
//绉婚櫎鎺夎繖涓笉瀵瑰姴鐨勮矾寰�
- tempRoom.SceneUIFilePathList.RemoveAt(i);
+ tempRoom.ListSceneId.RemoveAt(i);
i--;
continue;
}
string valueData = System.Text.Encoding.UTF8.GetString(byteData);
var tempUi = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.SceneUI>(valueData);
- tempRoom.SceneUIList.Add(tempUi);
//鑾峰彇鍦烘櫙閲岄潰鐨勫叏閮ㄧ洰鏍�(2019.11.05杩藉姞鎿嶄綔,鏈夊彲鑳介偅涓澶囨槸鐢卞満鏅祵濂楁潵鐨�,鎵�浠ュ畠鏈夊彲鑳戒笉灞炰簬浠讳綍鎴块棿)
- foreach (var data in tempUi.AddSceneMemberDataList)
+ foreach (var data in tempUi.AdjustTargetList)
{
//璁惧
if (data.Type == 0)
@@ -657,21 +640,19 @@
if (dicShardDeviceFile.ContainsKey(mainkey) == true )
{
//杩欎釜璁惧鏂囦欢鍖归厤寰楀埌
- listDeviceFile.Remove(dicShardDeviceFile[mainkey]);
+ dicDeviceFile.Remove(mainkey);
}
}
if (data.Type == 1)
{
- var temp = new SceneUI();
- temp.Id = data.ElseScenesId;
//杩欎釜鍦烘櫙鏂囦欢鍖归厤寰楀埌
- listSceneFile.Remove(temp.FileName);
+ dicSceneFile.Remove(data.ElseScenesId);
}
}
}
}
//濡傛灉瀛樺湪鍖归厤涓嶄笂鐨勬枃浠�
- if (listDeviceFile.Count != 0 || listSceneFile.Count != 0)
+ if (dicDeviceFile.Count != 0 || dicSceneFile.Count != 0)
{
//鍒涘缓涓�涓复鏃舵埧闂存潵瀛樺偍
var roomTemp = new Room();
@@ -680,22 +661,36 @@
memberShardInfo.dicShardRoom[roomTemp.FileName] = roomTemp;
roomTemp.Name = Language.StringByID(R.MyInternationalizationString.uUnallocated);
//杩樺師璁惧瀵硅薄
- foreach (string deviceFile in listDeviceFile)
+ foreach (string deviceKeys in dicDeviceFile.Keys)
{
- roomTemp.DeviceUIFilePathList.Add(deviceFile);
- roomTemp.DeviceUIList.Add(Common.LocalDevice.Current.GetDeviceUI(deviceFile));
+ roomTemp.ListDevice.Add(deviceKeys);
}
//杩樺師鍦烘櫙瀵硅薄
- foreach (string uiPath in listSceneFile)
+ foreach (int intId in dicSceneFile.Keys)
{
- var byteData = this.GetShardFileContent(uiPath);
- string valueData = System.Text.Encoding.UTF8.GetString(byteData);
- var tempUi = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.SceneUI>(valueData);
- roomTemp.SceneUIList.Add(tempUi);
+ roomTemp.ListSceneId.Add(intId);
}
}
}
+
+ #endregion
+
+ #region 鈻� 鑾峰彇璁惧鏂囦欢鍚峗____________________
+
+ /// <summary>
+ /// 鑾峰彇璁惧鏂囦欢鍚�,涓嶅瓨鍦ㄦ椂,杩斿洖绌哄瓧绗︿覆(浠呴檺鍒嗕韩浜嗙殑璁惧)
+ /// </summary>
+ /// <param name="deviceKeys">璁惧涓婚敭</param>
+ /// <returns></returns>
+ public string GetShardDeviceFileName(string deviceKeys)
+ {
+ if (this.dicShardDeviceFile.ContainsKey(deviceKeys) == true)
+ {
+ return this.dicShardDeviceFile[deviceKeys];
+ }
+ return string.Empty;
+ }
#endregion
@@ -712,7 +707,7 @@
/// <param name="listScene">閫夋嫨涓婁紶鐨勫満鏅�(涓嶈鑾峰彇瀹冮噷闈㈢殑缁戝畾鍒楄〃)</param>
/// <param name="BarMaxValue">杩涘害鏉$殑鏈�澶у��,濡傛灉涓嶄负-1,鍒欏唴閮ㄤ笉浼氳嚜鍔ㄥ脊鍑鸿繘搴︽潯</param>
/// <param name="listCheckFile">鏂囦欢閲嶅涓婁紶妫�娴�</param>
- public async Task<bool> DoUploadSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
+ public bool DoUploadSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
List<CommonDevice> listDevice, List<Common.SceneUI> listScene, int BarMaxValue = -1, HashSet<string> listCheckFile = null)
{
if (listDevice.Count == 0 && listScene.Count == 0)
@@ -740,7 +735,7 @@
}
//闃叉鍑虹幇閿欒,鏆傛椂淇濆瓨涓や釜鍒楄〃(铏界劧娌¢偅涔堥夯鐑︼紝涓嶈繃鏃㈢劧宸茬粡杩欐牱鍐欎簡灏辫繖鏍蜂簡)
var dicBackDevice = new Dictionary<string, List<string>>();
- var dicBackScene = new Dictionary<string, List<string>>();
+ var dicBackScene = new Dictionary<string, List<int>>();
//涓存椂澶囦唤鎴块棿璁惧鍒楄〃
this.BackupRoomDevicelistTemporary(memberShardInfo, dicBackDevice, dicBackScene);
@@ -750,7 +745,7 @@
//涓嶅厑璁告寜绯荤粺鐨勮繑鍥為敭
Shared.Common.CommonPage.BackKeyCanClick = false;
- UserCenterResourse.Option.AppCanSignout = false;
+ UserCenterResourse.AccountOption.AppCanSignout = false;
if (BarMaxValue == -1)
{
@@ -766,11 +761,11 @@
}
//涓婁紶鍒嗕韩
- var result = await this.DoUploadShardContent(memberShardInfo, listFile, listCheckFile);
+ var result = this.DoUploadShardContent(memberShardInfo, listFile, listCheckFile);
if (result == true)
{
//鍒犻櫎鎸囧畾鑷畾涔夊浘鐗�
- result = await this.DoDeleteSharedContent(memberShardInfo, listDelPic);
+ result = this.DoDeleteSharedContent(memberShardInfo, listDelPic);
}
if (BarMaxValue == -1)
{
@@ -780,7 +775,7 @@
//鍏佽鎸夌郴缁熺殑杩斿洖閿�
Shared.Common.CommonPage.BackKeyCanClick = true;
- UserCenterResourse.Option.AppCanSignout = true;
+ UserCenterResourse.AccountOption.AppCanSignout = true;
if (result == false)
{
@@ -825,15 +820,14 @@
if (memberShardInfo.dicShardRoom.ContainsKey(nowRoom.FileName) == false)
{
//鍏嬮殕涓�涓璞�
- roomTemp = nowRoom.CloneRoomClass();
+ roomTemp = HdlRoomLogic.Current.CloneRoomClass(nowRoom);
memberShardInfo.TempRoom = roomTemp;
- //鏂板垎浜殑鎴块棿,濡傛灉鍥剧墖鏄嚜瀹氫箟鐨�,鍒欎笂浼犲浘鐗�
- if (roomTemp.BackgroundImageType != 0)
+ //鏂板垎浜殑鎴块棿,濡傛灉鍥剧墖鏄嚜瀹氫箟鐨�,骞朵笖杩欎釜鍥剧墖鏄瓨鍦ㄧ殑,鍒欎笂浼犲浘鐗�
+ if (roomTemp.BackgroundImageType != 0 && Common.Global.IsExistsByHomeId(roomTemp.BackgroundImage) == true)
{
//鑷畾涔夌殑鍥剧墖,瀹冨瓨鍦ㄤ簬鏈湴,浣嗘槸瀹冩槸鍏ㄨ矾寰�
- string[] Arry = roomTemp.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
- listFile.Add(Arry[Arry.Length - 1]);
- this.AddShardFile(Arry[Arry.Length - 1]);
+ listFile.Add(roomTemp.BackgroundImage);
+ this.AddShardFile(roomTemp.BackgroundImage);
}
}
else
@@ -845,15 +839,13 @@
if (roomTemp.BackgroundImageType != 0)
{
//鍒犻櫎鑷畾涔夊浘鐗�
- string[] Arry = roomTemp.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
- listDelPic.Add(Arry[Arry.Length - 1]);
+ listDelPic.Add(roomTemp.BackgroundImage);
}
- if (nowRoom.BackgroundImageType != 0)
+ if (nowRoom.BackgroundImageType != 0 && Common.Global.IsExistsByHomeId(nowRoom.BackgroundImage) == true)
{
//鑷畾涔夌殑鍥剧墖,瀹冨瓨鍦ㄤ簬鏈湴,浣嗘槸瀹冩槸鍏ㄨ矾寰�
- string[] Arry = nowRoom.BackgroundImage.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
- listFile.Add(Arry[Arry.Length - 1]);
- this.AddShardFile(Arry[Arry.Length - 1]);
+ listFile.Add(nowRoom.BackgroundImage);
+ this.AddShardFile(nowRoom.BackgroundImage);
}
//鍙樻洿鍥剧墖璁剧疆
roomTemp.BackgroundImageType = nowRoom.BackgroundImageType;
@@ -868,13 +860,12 @@
this.AddShardFile(device.FilePath);
//鍔犵偣缂撳瓨
- this.dicShardDeviceFile[LocalDevice.Current.GetDeviceMainKeys(device)] = device.FilePath;
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device);
+ this.dicShardDeviceFile[mainKeys] = device.FilePath;
- //璁惧鐨刄I
- var deviceUi = device.FilePath;
- if (roomTemp.DeviceUIFilePathList.Contains(deviceUi) == false)
+ if (roomTemp.ListDevice.Contains(mainKeys) == false)
{
- roomTemp.DeviceUIFilePathList.Add(deviceUi);
+ roomTemp.ListDevice.Add(mainKeys);
}
}
//閫掑綊鑾峰彇鐨勮澶囦笉闇�瑕佸姞鍏ュ埌鎴块棿
@@ -891,20 +882,19 @@
//鍦烘櫙
foreach (var secene in listScene)
{
- if (secene.IconPathType != 0)
+ if (secene.IconPathType != 0 && Common.Global.IsExistsByHomeId(secene.IconPath) == true)
{
- //鑷畾涔夌殑鍥剧墖,瀹冨瓨鍦ㄤ簬鏈湴,浣嗘槸瀹冩槸鍏ㄨ矾寰�
- string[] Arry = secene.IconPath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
- listFile.Add(Arry[Arry.Length - 1]);
- this.AddShardFile(Arry[Arry.Length - 1]);
+ //鑷畾涔夌殑鍥剧墖,瀹冨瓨鍦ㄤ簬鏈湴
+ listFile.Add(secene.IconPath);
+ this.AddShardFile(secene.IconPath);
}
listFile.Add(secene.FileName);
this.AddShardFile(secene);
- if (roomTemp.SceneUIFilePathList.Contains(secene.FileName) == false)
+ if (roomTemp.ListSceneId.Contains(secene.Id) == false)
{
- roomTemp.SceneUIFilePathList.Add(secene.FileName);
+ roomTemp.ListSceneId.Add(secene.Id);
}
}
//閫掑綊鑾峰彇鐨勫満鏅笉闇�瑕佸姞鍏ュ埌鎴块棿
@@ -920,7 +910,7 @@
//鍙嶆妤煎眰鏂囦欢寰堝皬,涓�璧风粰杩囧幓鍚�
if (roomTemp.FloorId != string.Empty)
{
- memberShardInfo.dicShardFloor[roomTemp.FloorId] = roomTemp.FloorName; ;
+ memberShardInfo.dicShardFloor[roomTemp.FloorId] = HdlResidenceLogic.Current.GetFloorNameById(roomTemp.FloorId);
}
this.AddShardFile(memberShardInfo.dicShardFloor);
listFile.Add(DirNameResourse.ShardFloorFile);
@@ -938,7 +928,7 @@
/// <returns></returns>
public void GetSceneDeviceList(Common.SceneUI scene, HashSet<string> listCheck, List<Common.SceneUI> listSceneUI, List<CommonDevice> listDevice)
{
- foreach (var data in scene.AddSceneMemberDataList)
+ foreach (var data in scene.AdjustTargetList)
{
//璁惧
if (data.Type == 0)
@@ -969,7 +959,7 @@
listCheck.Add(mainKeys);
//鑾峰彇鍦烘櫙瀵硅薄
- var sceneUi = Room.CurrentRoom.GetSceneUIBySceneId(data.ElseScenesId);
+ var sceneUi = HdlSceneLogic.Current.GetSceneUIBySceneId(data.ElseScenesId);
if (sceneUi != null)
{
listSceneUI.Add(sceneUi);
@@ -989,7 +979,7 @@
/// <param name="listFile">涓婁紶鐨勬枃浠跺悕</param>
/// <param name="listCheckFile">閲嶅鏂囦欢涓婁紶妫�娴�</param>
/// <returns></returns>
- private async Task<bool> DoUploadShardContent(MemberShardInfoData memberShardInfo, List<string> listFile, HashSet<string> listCheckFile)
+ private bool DoUploadShardContent(MemberShardInfoData memberShardInfo, List<string> listFile, HashSet<string> listCheckFile)
{
var dicKeys = new Dictionary<string, string>();
for (int i = 0; i < listFile.Count; i++)
@@ -1024,7 +1014,7 @@
//杩藉姞鍏变韩
if (memberShardInfo.dicAllShardKeys.ContainsKey(fileName) == false)
{
- var result = await UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/AddShareData", false, info);
+ var result = UserCenterLogic.GetResponseDataByRequestHttps("ZigbeeDataShare/AddShareData", false, info, null, true);
if (string.IsNullOrEmpty(result) == true)
{
return false;
@@ -1035,7 +1025,7 @@
else
{
info.DistributedMark = memberShardInfo.dicAllShardKeys[fileName];
- var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info);
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info, null, true);
if (result == false)
{
return false;
@@ -1063,7 +1053,7 @@
/// <returns></returns>
private string UpLoadBigBackupFileToDB(MemberShardInfoData memberShardInfo, string fileName)
{
- string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.DownLoadShardDirectory, fileName);
+ string fullName = System.IO.Path.Combine(DirNameResourse.DownLoadShardDirectory, fileName);
if (System.IO.File.Exists(fullName) == false)
{
return null;
@@ -1073,24 +1063,19 @@
nvc.Add("HouseDistributedMark", Common.Config.Instance.Home.Id);
nvc.Add("SubAccountDistributedMark", memberShardInfo.SubAccountDistributedMark);
nvc.Add("ShareDataBytes", Convert.ToBase64String(this.GetShardFileContent(fileName)));
- nvc.Add("IsOtherAccountCtrl", Common.Config.Instance.isAdministrator.ToString());
//杩藉姞鍏变韩
if (memberShardInfo.dicAllShardKeys.ContainsKey(fileName) == false)
{
- var result = this.UpLoadBigBackupFileToDB("ZigbeeDataShare/AddShareData", fullName, nvc);
- if (string.IsNullOrEmpty(result) == true)
- {
- return null;
- }
//杩欓噷鏈夌偣鐗规畩锛屾帴鍙f槸鐩存帴杩斿洖涓婚敭鍥炴潵鐨勶紝鑰屼笉鏄疛soin
+ var result = this.DoUpLoadBigBackupFileToDB("ZigbeeDataShare/AddShareData", fullName, nvc);
return result;
}
else
{
nvc.Add("DistributedMark", memberShardInfo.dicAllShardKeys[fileName]);
- var result = this.UpLoadBigBackupFileToDB("ZigbeeDataShare/EditShareData", fullName, nvc);
- if (result != "1")
+ var result = this.DoUpLoadBigBackupFileToDB("ZigbeeDataShare/EditShareData", fullName, nvc);
+ if (result == null)
{
return null;
}
@@ -1099,26 +1084,17 @@
}
/// <summary>
- /// 涓婁紶澶ф枃浠�
+ /// 鎵ц涓婁紶澶ф枃浠�
/// </summary>
/// <param name="RequestName">璇锋眰鎺ュ彛</param>
/// <param name="fullFileName">鏂囦欢鍚嶅瓧(鍚矾寰�)</param>
/// <param name="nvc"></param>
/// <returns></returns>
- private string UpLoadBigBackupFileToDB(string RequestName, string fullFileName, NameValueCollection nvc)
+ private string DoUpLoadBigBackupFileToDB(string RequestName, string fullFileName, NameValueCollection nvc)
{
string paramName = "file";
string contentType = "application/octet-stream";
string requestUrl = $"{CommonPage.RequestHttpsHost}/{RequestName}";
- //鍚敤绠$悊鍛樻潈闄�
- //if (Config.Instance.isAdministrator == true)
- //{
- // requestUrl = $"{Config.Instance.AdminRequestBaseUrl}/{RequestName}";
- //}
- //else
- //{
- // requestUrl = $"{CommonPage.RequestHttpsHost}/{RequestName}";
- //}
string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x");
byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("\r\n--" + boundary + "\r\n");
@@ -1128,6 +1104,8 @@
wr.Method = "POST";
wr.KeepAlive = true;
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
+
+ wr.Headers.Add(HttpRequestHeader.Authorization, Config.Instance.Token);
var rs = wr.GetRequestStream();
@@ -1167,23 +1145,24 @@
StreamReader reader2 = new StreamReader(stream2);
string result = reader2.ReadToEnd();
- if (RequestName == "ZigbeeDataShare/AddShareData")
- {
- return result;
- }
var data = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResponsePack>(result);
bool flage = UserCenterLogic.CheckNotEorrorMsg(data, requestUrl);
if (flage == true)
{
- return "1";
+ //缂栬緫鐨勬椂鍊欙紝杩欎釜涓滆タ浼氭槸null
+ return data.ResponseData == null ? "1" : data.ResponseData.ToString();
}
- return "0";
+
+ //Log鍑哄姏
+ IMessageCommon.Current.GetMsgByRequestName(RequestName, data, nvc);
+
+ return null;
}
catch
{
- return "-1";
+ return null;
}
finally
{
@@ -1208,15 +1187,15 @@
/// <param name="dicBackDevice">绌虹殑璁惧澶囦唤鍒楄〃</param>
/// <param name="dicBackScene">绌虹殑鍦烘櫙澶囦唤鍒楄〃</param>
private void BackupRoomDevicelistTemporary(MemberShardInfoData memberShardInfo, Dictionary<string, List<string>> dicBackDevice,
- Dictionary<string, List<string>> dicBackScene)
+ Dictionary<string, List<int>> dicBackScene)
{
foreach (var roomKeys in memberShardInfo.dicShardRoom.Keys)
{
dicBackDevice[roomKeys] = new List<string>();
- dicBackScene[roomKeys] = new List<string>();
+ dicBackScene[roomKeys] = new List<int>();
- dicBackDevice[roomKeys].AddRange(memberShardInfo.dicShardRoom[roomKeys].DeviceUIFilePathList);
- dicBackScene[roomKeys].AddRange(memberShardInfo.dicShardRoom[roomKeys].SceneUIFilePathList);
+ dicBackDevice[roomKeys].AddRange(memberShardInfo.dicShardRoom[roomKeys].ListDevice);
+ dicBackScene[roomKeys].AddRange(memberShardInfo.dicShardRoom[roomKeys].ListSceneId);
}
}
@@ -1228,7 +1207,7 @@
/// <param name="dicBackScene">涓存椂澶囦唤鐨勫満鏅浠藉垪琛�</param>
/// <param name="listFile">涓婁紶鐨勬枃浠跺悕</param>
private void RecoverRoomDevicelistTemporary(MemberShardInfoData memberShardInfo, Dictionary<string, List<string>> dicBackDevice,
- Dictionary<string, List<string>> dicBackScene, List<string> listFile)
+ Dictionary<string, List<int>> dicBackScene, List<string> listFile)
{
foreach (string fileName in listFile)
{
@@ -1242,11 +1221,11 @@
{
continue;
}
- memberShardInfo.dicShardRoom[roomKeys].DeviceUIFilePathList.Clear();
- memberShardInfo.dicShardRoom[roomKeys].DeviceUIFilePathList.AddRange(dicBackDevice[roomKeys]);
+ memberShardInfo.dicShardRoom[roomKeys].ListDevice.Clear();
+ memberShardInfo.dicShardRoom[roomKeys].ListDevice.AddRange(dicBackDevice[roomKeys]);
- memberShardInfo.dicShardRoom[roomKeys].SceneUIFilePathList.Clear();
- memberShardInfo.dicShardRoom[roomKeys].SceneUIFilePathList.AddRange(dicBackScene[roomKeys]);
+ memberShardInfo.dicShardRoom[roomKeys].ListSceneId.Clear();
+ memberShardInfo.dicShardRoom[roomKeys].ListSceneId.AddRange(dicBackScene[roomKeys]);
//瑕嗙洊鎴块棿鏂囦欢
this.AddShardFile(memberShardInfo.dicShardRoom[roomKeys]);
@@ -1267,31 +1246,31 @@
/// <param name="listDevice">瑕佸彇娑堢殑璁惧</param>
/// <param name="listSceneUI">瑕佸彇娑堢殑鍦烘櫙</param>
/// <returns></returns>
- public async Task<bool> DoDeleteSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
+ public bool DoDeleteSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
List<CommonDevice> listDevice, List<SceneUI> listSceneUI)
{
var roomTemp = memberShardInfo.dicShardRoom[nowRoom.FileName];
//闃叉鍑洪敊,鍏堝浠藉垪琛�
var listBackDevice = new List<string>();
- listBackDevice.AddRange(roomTemp.DeviceUIFilePathList);
- var listBackScene = new List<string>();
- listBackScene.AddRange(roomTemp.SceneUIFilePathList);
+ listBackDevice.AddRange(roomTemp.ListDevice);
+ var listBackScene = new List<int>();
+ listBackScene.AddRange(roomTemp.ListSceneId);
var listMark = new List<string>();
//瑕佸垹闄ょ殑鏂囦欢鍚嶅瓧
var listDeleteFile = new List<string>();
//闄や簡瑕佸垹闄ょ殑鐩爣澶栵紝杩樺垎浜殑鏁版嵁
- var listHadShard = this.GetAllShardedFileNameFromDictionary(memberShardInfo, nowRoom, listDevice, listSceneUI);
+ var listHadShardKeys = this.GetAllShardedKeysFromDictionary(memberShardInfo, nowRoom, listDevice, listSceneUI);
//鍏堝紕璁惧
foreach (var device in listDevice)
{
string deviceFileName = device.FilePath;
-
+ string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device);
//绉婚櫎璺緞鍒楄〃
- roomTemp.DeviceUIFilePathList.Remove(device.FilePath);
- if (listHadShard.Contains(deviceFileName) == true)
+ roomTemp.ListDevice.Remove(mainKeys);
+ if (listHadShardKeys.Contains(mainKeys) == true)
{
//鍏朵粬鍦烘櫙鍒嗕韩鏈夎繖涓澶�,鎵�浠ヤ笉鍒犻櫎杩欎釜璁惧鐨勬牴婧愭枃浠�,鍙槸鎶婃埧闂寸殑璁惧鍒楄〃璺緞绉婚櫎
continue;
@@ -1304,16 +1283,15 @@
}
listDeleteFile.Add(device.FilePath);
}
-
//鍐嶅紕鍦烘櫙
foreach (var sceneUI in listSceneUI)
{
//绉婚櫎缂撳瓨
- roomTemp.SceneUIFilePathList.Remove(sceneUI.FileName);
+ roomTemp.ListSceneId.Remove(sceneUI.Id);
//鍏朵粬鍦烘櫙杩樺祵濂楃潃杩欎釜鍦烘櫙,鎵�浠ヤ笉鍒犻櫎杩欎釜鍦烘櫙鐨勬牴婧愭枃浠�,鍙槸鎶婃埧闂寸殑鍦烘櫙鍒楄〃璺緞绉婚櫎
//浣嗘槸瀹冪粦瀹氱殑璁惧鐩爣瑕佸垹闄�
- if (listHadShard.Contains(sceneUI.FileName) == true)
+ if (listHadShardKeys.Contains(sceneUI.Id.ToString()) == true)
{
continue;
}
@@ -1337,26 +1315,31 @@
}
//鎵ц鍒犻櫎宓屽鐨勮澶�
- var listTemp = new HashSet<string>();
- var dicBindScene = new Dictionary<string, SceneUI>();
- this.GetSceneBindFileName(sceneUI, ref listTemp, ref dicBindScene);
- foreach (var fileName in listTemp)
+ var dicDeviceKeys = new Dictionary<string, string>();
+ var listBindScene = new List<SceneUI>();
+ this.GetSceneBindListKeys(sceneUI, ref dicDeviceKeys, ref listBindScene);
+ //璁惧鐨�
+ foreach (var myKeys in dicDeviceKeys.Keys)
{
- if (listHadShard.Contains(fileName) == true)
+ if (listHadShardKeys.Contains(myKeys) == true)
{
continue;
}
//鑾峰彇瑕佸垹闄ょ殑鍒嗕韩涓婚敭
+ string fileName = dicDeviceKeys[myKeys];
if (memberShardInfo.dicAllShardKeys.ContainsKey(fileName) == true)
{
listMark.Add(memberShardInfo.dicAllShardKeys[fileName]);
}
listDeleteFile.Add(fileName);
-
- if (dicBindScene.ContainsKey(fileName) == true && dicBindScene[fileName].IconPathType != 0)
+ }
+ //鍦烘櫙鐨�
+ foreach (var seceUi in listBindScene)
+ {
+ if (seceUi.IconPathType != 0)
{
//鍒犻櫎鑷畾涔夊満鏅浘鐗�,瀹冨瓨鍦ㄤ簬鏈湴,浣嗘槸瀹冩槸鍏ㄨ矾寰�
- string[] Arry = dicBindScene[fileName].IconPath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
+ string[] Arry = seceUi.IconPath.Split(new string[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
string sceneFile = Arry[Arry.Length - 1];
listDeleteFile.Add(sceneFile);
if (memberShardInfo.dicAllShardKeys.ContainsKey(sceneFile) == true)
@@ -1368,7 +1351,7 @@
}
//濡傛灉杩欎釜鎴块棿鐨勫垎浜澶囧拰鍦烘櫙鍏ㄩ儴鍒犻櫎鐨勮瘽,鎶婂垎浜埧闂存枃浠朵篃涓�璧峰垹闄�
- if (roomTemp.DeviceUIFilePathList.Count == 0 && roomTemp.SceneUIFilePathList.Count == 0)
+ if (roomTemp.ListDevice.Count == 0 && roomTemp.ListSceneId.Count == 0)
{
//鎴块棿鍒犻櫎
if (memberShardInfo.dicAllShardKeys.ContainsKey(nowRoom.FileName) == true)
@@ -1391,12 +1374,12 @@
}
//鎵ц绉婚櫎鍒嗕韩鏁版嵁
- var result = await this.DoDeleteSharedContent(memberShardInfo, nowRoom, listMark, listDeleteFile);
+ var result = this.DoDeleteSharedContent(memberShardInfo, nowRoom, listMark, listDeleteFile);
//鍚屾鎴块棿鏂囦欢
if (result == true && listDeleteFile.Contains(roomTemp.FileName) == false)
{
//鎵ц涓婁紶鎴块棿瀵硅薄
- result = await this.DoUploadRoomObject(memberShardInfo, roomTemp);
+ result = this.DoUploadRoomObject(memberShardInfo, roomTemp);
}
//鍚屾妤煎眰鏁版嵁
if (result == true && listDeleteFile.Contains(roomTemp.FileName) == true)
@@ -1404,26 +1387,29 @@
int floorCount = 0;
foreach (var myRoom in memberShardInfo.dicShardRoom.Values)
{
- if (myRoom.FloorId == roomTemp.FloorId) { floorCount++; }
+ //2020.03.24杩藉姞:涓嶈兘鏄嚜韬埧闂�
+ if (myRoom.FloorId == roomTemp.FloorId && myRoom.Id != roomTemp.Id)
+ {
+ floorCount++;
+ }
}
if (floorCount == 0)
{
//濡傛灉璇ユゼ灞傚凡缁忓垹瀹屾埧闂翠簡,鍒欐洿鏂版ゼ灞�
memberShardInfo.dicShardFloor.Remove(roomTemp.FloorId);
//鎵ц涓婁紶瀵硅薄
- result = await this.DoUploadFloorObject(memberShardInfo);
+ result = this.DoUploadFloorObject(memberShardInfo);
}
-
}
if (result == false)
{
//鎭㈠
- roomTemp.DeviceUIFilePathList.Clear();
- roomTemp.DeviceUIFilePathList.AddRange(listBackDevice);
+ roomTemp.ListDevice.Clear();
+ roomTemp.ListDevice.AddRange(listBackDevice);
- roomTemp.SceneUIFilePathList.Clear();
- roomTemp.SceneUIFilePathList.AddRange(listBackScene);
+ roomTemp.ListSceneId.Clear();
+ roomTemp.ListSceneId.AddRange(listBackScene);
}
return result;
}
@@ -1440,7 +1426,7 @@
/// <param name="listMark">瑕佺Щ闄ょ殑涓婚敭</param>
/// <param name="listDeleteFile">瑕佸垹闄ょ殑鏂囦欢(鎴块棿鏂囦欢闇�瑕佸垹闄ょ殑璇�,蹇呴』鏀惧湪鏈�鍚�)</param>
/// <returns></returns>
- private async Task<bool> DoDeleteSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
+ private bool DoDeleteSharedContent(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
List<string> listMark, List<string> listDeleteFile)
{
if (listMark.Count == 0)
@@ -1461,7 +1447,7 @@
info.DistributedMark = markKeys;
//鎵ц鍒犻櫎
- var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/DeleteShareData", false, info);
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/DeleteShareData", false, info, null, true);
if (result == false)
{
//鍏抽棴杩涘害鏉�
@@ -1492,7 +1478,7 @@
/// <param name="memberShardInfo">鎴愬憳鐨勫垎浜唴瀹�</param>
/// <param name="listDelFile">鍒犻櫎鐨勬枃浠�</param>
/// <returns></returns>
- private async Task<bool> DoDeleteSharedContent(MemberShardInfoData memberShardInfo, List<string> listDelFile)
+ private bool DoDeleteSharedContent(MemberShardInfoData memberShardInfo, List<string> listDelFile)
{
if (listDelFile.Count == 0)
{
@@ -1510,7 +1496,7 @@
info.DistributedMark = memberShardInfo.dicAllShardKeys[fileName];
//鎵ц鍒犻櫎
- var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/DeleteShareData", false, info);
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/DeleteShareData", false, info, null, true);
if (result == false)
{
return false;
@@ -1536,7 +1522,7 @@
/// <param name="memberShardInfo">鎴愬憳鐨勫叡浜唴瀹�</param>
/// <param name="upDateRoom">闇�瑕佷笂浼犲埌浜戠鐨勬埧闂村璞�</param>
/// <returns></returns>
- private async Task<bool> DoUploadRoomObject(MemberShardInfoData memberShardInfo, Common.Room upDateRoom)
+ private bool DoUploadRoomObject(MemberShardInfoData memberShardInfo, Common.Room upDateRoom)
{
if (upDateRoom.Id == "Other")
{
@@ -1550,7 +1536,7 @@
var data = Newtonsoft.Json.JsonConvert.SerializeObject(upDateRoom);
var byteData = System.Text.Encoding.UTF8.GetBytes(data);
info.ShareDataBytes = byteData;
- var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info);
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info, null, true);
if (result == false)
{
return false;
@@ -1570,7 +1556,7 @@
/// </summary>
/// <param name="memberShardInfo">鎴愬憳鐨勫叡浜唴瀹�</param>
/// <returns></returns>
- private async Task<bool> DoUploadFloorObject(MemberShardInfoData memberShardInfo)
+ private bool DoUploadFloorObject(MemberShardInfoData memberShardInfo)
{
var info = new EditorShardContent();
info.DistributedMark = memberShardInfo.dicAllShardKeys[DirNameResourse.ShardFloorFile];
@@ -1580,7 +1566,7 @@
var data = Newtonsoft.Json.JsonConvert.SerializeObject(memberShardInfo.dicShardFloor);
var byteData = System.Text.Encoding.UTF8.GetBytes(data);
info.ShareDataBytes = byteData;
- var result = await UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info);
+ var result = UserCenterLogic.GetResultStatuByRequestHttps("ZigbeeDataShare/EditShareData", false, info, null, true);
if (result == false)
{
return false;
@@ -1596,119 +1582,144 @@
#region 鈻� 绉婚櫎鍏变韩鐨勪竴鑸柟娉昣________________
/// <summary>
- /// 浠庣紦瀛樺瓧鍏镐腑鑾峰彇宸茬粡鍒嗕韩浜嗙殑鍏ㄩ儴璁惧鏂囦欢鍜屽満鏅殑鏂囦欢鍚嶅瓧
+ /// 浠庣紦瀛樺瓧鍏镐腑鑾峰彇宸茬粡鍒嗕韩浜嗙殑鍏ㄩ儴璁惧涓婚敭鍜屽満鏅殑ID
/// </summary>
/// <param name="memberShardInfo">鎴愬憳鐨勫垎浜俊鎭�</param>
/// <param name="nowRoom">褰撳墠鎴块棿</param>
/// <param name="listDeleteDevice">瑕佸垹闄ょ殑璁惧鍒楄〃</param>
/// <param name="listDeleteScene">瑕佸垹闄ょ殑鍦烘櫙鍒楄〃</param>
/// <returns></returns>
- private HashSet<string> GetAllShardedFileNameFromDictionary(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
+ private HashSet<string> GetAllShardedKeysFromDictionary(MemberShardInfoData memberShardInfo, Common.Room nowRoom,
List<CommonDevice> listDeleteDevice, List<Common.SceneUI> listDeleteScene)
{
//鑾峰彇鍏ㄩ儴瑕佸垹闄ょ殑鏂囦欢鍚嶅瓧
- var listDeleteFile = new HashSet<string>();
+ var dicDeleteDeviceFile = new Dictionary<string, string>();
foreach (var device in listDeleteDevice)
{
- listDeleteFile.Add(device.FilePath);
+ dicDeleteDeviceFile[LocalDevice.Current.GetDeviceMainKeys(device)] = device.FilePath;
}
+ var dicDeleteSceneFile = new Dictionary<int, string>();
foreach (var scene in listDeleteScene)
{
- listDeleteFile.Add(scene.FileName);
+ dicDeleteSceneFile[scene.Id] = scene.FileName;
}
- var listShardFile = new HashSet<string>();
- //鑾峰彇杩樺浜庡垎浜姸鎬佺殑鏂囦欢
+ var listShardKeys = new HashSet<string>();
+ //鑾峰彇杩樺浜庡垎浜姸鎬佺殑涓婚敭
foreach (var roomTemp in memberShardInfo.dicShardRoom.Values)
{
//璁惧
- foreach (var deviceUi in roomTemp.DeviceUIFilePathList)
+ foreach (var deviceKeys in roomTemp.ListDevice)
{
- string deviceFile = deviceUi;
- if (listDeleteFile.Contains(deviceFile) == true)
+ if (dicDeleteDeviceFile.ContainsKey(deviceKeys) == true)
{
//鍥犱负涓�涓洖璺彧鑳藉垎閰嶄竴涓尯鍩�,鎵�浠ュ彲浠ョ洿鎺ュ垽鏂�
continue;
}
- if (listShardFile.Contains(deviceFile) == false)
+ if (listShardKeys.Contains(deviceKeys) == false)
{
//杩欎釜鏂囦欢杩樺垎浜潃
- listShardFile.Add(deviceFile);
+ listShardKeys.Add(deviceKeys);
}
}
//鍦烘櫙
- foreach (var scene in roomTemp.SceneUIList)
+ foreach (var sceneId in roomTemp.ListSceneId)
{
- if (roomTemp.SceneUIFilePathList.Contains(scene.FileName) == false)
- {
- //杩欎釜鍦烘櫙宸茬粡琚垹闄�
- continue;
- }
if (roomTemp.FileName == nowRoom.FileName)
{
//濡傛灉寰幆鍒颁簡褰撳墠鎴块棿
- if (listDeleteFile.Contains(scene.FileName) == true)
+ if (dicDeleteSceneFile.ContainsKey(sceneId) == true)
{
//濡傛灉鏄垹闄ょ洰鏍囷紝鍒欎笉娣诲姞
continue;
}
}
- //鑾峰彇鍦烘櫙閲岄潰鐨勫叏閮ㄧ洰鏍�
- var listTemp = new HashSet<string>();
- var dicTemp = new Dictionary<string, SceneUI>();
- this.GetSceneBindFileName(scene, ref listTemp, ref dicTemp);
-
- if (listShardFile.Contains(scene.FileName) == false)
+ var byteData = this.GetShardFileContent($"Scene_{sceneId}.json");
+ if (byteData == null)
{
- //鍦烘櫙鑷韩鐨勬枃浠�
- listShardFile.Add(scene.FileName);
+ continue;
}
- foreach (string file in listTemp)
+ string valueData = System.Text.Encoding.UTF8.GetString(byteData);
+ var sceneTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.SceneUI>(valueData);
+
+ //鑾峰彇鍦烘櫙閲岄潰鐨勫叏閮ㄧ洰鏍�
+ var listTempKeys = new HashSet<string>();
+ //浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勪富閿�(杩欓噷闈㈢殑涓滆タ蹇呴』浠庡垎浜暟鎹腑鑾峰彇)
+ this.GetSceneBindListKeys(sceneTemp, ref listTempKeys);
+
+ if (listShardKeys.Contains(sceneId.ToString()) == false)
{
- if (listShardFile.Contains(file) == false)
+ //鍦烘櫙鑷韩
+ listShardKeys.Add(sceneId.ToString());
+ }
+ foreach (string myKeys2 in listTempKeys)
+ {
+ if (listShardKeys.Contains(myKeys2) == false)
{
- listShardFile.Add(file);
+ listShardKeys.Add(myKeys2);
}
}
}
}
- return listShardFile;
+ return listShardKeys;
}
/// <summary>
- /// 浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勬枃浠跺悕瀛�(杩欓噷闈㈢殑涓滆タ蹇呴』浠庡垎浜暟鎹腑鑾峰彇)
+ /// 浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勪富閿�(杩欓噷闈㈢殑涓滆タ蹇呴』浠庡垎浜暟鎹腑鑾峰彇)
/// </summary>
/// <param name="scene">鍦烘櫙</param>
- /// <param name="listFile">鏂囦欢鍒楄〃(閲岄潰瀛樼殑鏄澶嘦I鏂囦欢鍜岃澶囨枃浠跺拰鍦烘櫙鏂囦欢)</param>
- /// <param name="dicBindScene">缁戝畾鐨勫満鏅璞�</param>
- private void GetSceneBindFileName(Common.SceneUI scene, ref HashSet<string> listFile,ref Dictionary<string, SceneUI> dicBindScene)
+ /// <param name="dicDeviceKeys">璁惧涓婚敭鍒楄〃(閲岄潰娌℃湁鍦烘櫙),keys:涓婚敭,value:鏂囦欢鍚�</param>
+ /// <param name="listBindScene">缁戝畾鐨勫満鏅璞�</param>
+ private void GetSceneBindListKeys(Common.SceneUI scene, ref Dictionary<string, string> dicDeviceKeys, ref List<SceneUI> listBindScene)
{
- foreach (var data in scene.AddSceneMemberDataList)
+ foreach (var data in scene.AdjustTargetList)
{
//璁惧
if (data.Type == 0)
{
string mainkey = LocalDevice.Current.GetDeviceMainKeys(data.DeviceAddr, data.Epoint);
- if (dicShardDeviceFile.ContainsKey(mainkey) == true && listFile.Contains(dicShardDeviceFile[mainkey]) == false)
+ if (dicShardDeviceFile.ContainsKey(mainkey) == true && dicDeviceKeys.ContainsKey(mainkey) == false)
{
- listFile.Add(dicShardDeviceFile[mainkey]);
+ dicDeviceKeys[mainkey] = dicShardDeviceFile[mainkey];
}
}
if (data.Type == 1)
{
- var temp = new SceneUI();
- temp.Id = data.ElseScenesId;
- var byteData = this.GetShardFileContent(temp.FileName);
+ var byteData = this.GetShardFileContent($"Scene_{data.ElseScenesId}.json");
if (byteData != null)
{
string valueData = System.Text.Encoding.UTF8.GetString(byteData);
- var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.SceneUI>(valueData);
- dicBindScene[roomTemp.FileName] = roomTemp;
- if (listFile.Contains(roomTemp.FileName) == false)
- {
- listFile.Add(roomTemp.FileName);
- }
+ var sceneTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.SceneUI>(valueData);
+ listBindScene.Add(sceneTemp);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// 浠庡満鏅璞¢噷闈㈣幏鍙栧叏閮ㄧ殑缁戝畾鐩爣鐨勪富閿�(杩欓噷闈㈢殑涓滆タ蹇呴』浠庡垎浜暟鎹腑鑾峰彇)
+ /// </summary>
+ /// <param name="scene">鍦烘櫙</param>
+ /// <param name="listKeys">涓婚敭鍒楄〃(璁惧鍜屽満鏅�)</param>
+ private void GetSceneBindListKeys(Common.SceneUI scene, ref HashSet<string> listKeys)
+ {
+ foreach (var data in scene.AdjustTargetList)
+ {
+ //璁惧
+ if (data.Type == 0)
+ {
+ string mainkey = LocalDevice.Current.GetDeviceMainKeys(data.DeviceAddr, data.Epoint);
+ if (listKeys.Contains(mainkey) == false)
+ {
+ listKeys.Add(mainkey);
+ }
+ }
+ if (data.Type == 1)
+ {
+ if (listKeys.Contains(data.ElseScenesId.ToString()) == false)
+ {
+ listKeys.Add(data.ElseScenesId.ToString());
}
}
}
--
Gitblit v1.8.0