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/HdlResidenceLogic.cs | 257 ++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 221 insertions(+), 36 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
index c60d868..da123a1 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlResidenceLogic.cs
@@ -39,13 +39,13 @@
/// 鍒涘缓鏂扮殑浣忓畢(杩斿洖浣忓畢id,null浠h〃澶辫触)
/// </summary>
/// <param name="residenceName">浣忓畢鍚嶇О</param>
- public async System.Threading.Tasks.Task<string> CreatNewResidence(string residenceName)
+ public string CreatNewResidence(string residenceName)
{
var Pra = new AddResidencePra();
Pra.Name = residenceName;
//娣诲姞浣忓畢
- string resultData = await UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
- if (resultData == null)
+ string resultData = UserCenterLogic.GetResponseDataByRequestHttps("App/AddHome", false, Pra);
+ if (string.IsNullOrEmpty(resultData) == true)
{
return null;
}
@@ -96,7 +96,7 @@
/// </summary>
/// <param name="residenceId"></param>
/// <returns></returns>
- public async System.Threading.Tasks.Task SwitchResidence(string residenceId)
+ public bool SwitchResidence(string residenceId)
{
//鎵撳紑杩涘害鏉�
ProgressBar.Show();
@@ -106,10 +106,12 @@
Config.Instance.Home = this.GetHouseByHouseId(residenceId);
Config.Instance.Save();
//鍒锋柊涓汉涓績鐨勫唴瀛樺強绾跨▼
- await UserCenterLogic.InitUserCenterMenmoryAndThread(false);
+ bool result = UserCenterLogic.InitUserCenterMenmoryAndThread(false);
//鍏抽棴杩涘害鏉�
ProgressBar.Close();
+
+ return result;
}
#endregion
@@ -122,7 +124,7 @@
/// <param name="residenceId">浣忓畢id</param>
/// <param name="residenceName">浣忓畢鍚嶇О</param>
/// <returns></returns>
- public async System.Threading.Tasks.Task<bool> EditorResidenceName(string residenceId, string residenceName)
+ public bool EditorResidenceName(string residenceId, string residenceName)
{
var Pra = new EditorResidencePra();
Pra.HomeId = residenceId;
@@ -131,7 +133,7 @@
Pra.LoginAccessToken = Config.Instance.Token;
//缂栬緫浣忓畢
- bool flage = await UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra);
+ bool flage = UserCenterLogic.GetResultStatuByRequestHttps("App/EditHome", false, Pra);
if (flage == true)
{
//鍒锋柊鍐呭瓨鐨勪綇瀹呭悕
@@ -160,7 +162,7 @@
home.Name = residenceName;
home.Save();
//浣忓畢淇敼鍚嶇О鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
- UserView.UserPage.Instance.RefreshForm = true;
+ UserView.UserPage.Instance.RefreshAllForm = true;
}
@@ -176,7 +178,7 @@
public House GetHouseByHouseId(string houseId)
{
var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, houseId, $"House_{houseId}.json");
- var file = Shared.IO.FileUtils.ReadFile(path);
+ var file = HdlFileLogic.Current.ReadFileByteContent(path);
if (file == null)
{
return null;
@@ -192,7 +194,7 @@
public House GetHouseByFilePath(string filePath)
{
var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, GetHouseIdByFilePath(filePath), filePath);
- var file = Shared.IO.FileUtils.ReadFile(path);
+ var file = HdlFileLogic.Current.ReadFileByteContent(path);
if (file == null)
{
return null;
@@ -206,27 +208,28 @@
/// <summary>
/// 鑾峰彇浜戠浣忓畢鍒楄〃
/// </summary>
- public async System.Threading.Tasks.Task<List<string>> GetHomeListsFromDb()
+ /// <param name="checkNetwork">鏄惁妫�娴嬬綉缁�,濡傛灉璁剧疆妫�娴嬬殑璇�,褰撲笉鑳借仈缃戞椂,鐩存帴杩斿洖鏈湴浣忓畢</param>
+ /// <returns></returns>
+ public List<string> GetHomeListsFromDb(bool checkNetwork)
{
- var pageSetting = new SendDataToServer.ResidenceListPageSettingObj()
+ if (checkNetwork == true && HdlWifiLogic.Current.CanAccessHttp == false)
{
- PageSize = CommonPage.PageSize
- };
-
- var reqDto = new SendDataToServer.ResidenceListObj()
- {
- LoginAccessToken = Config.Instance.Token,
- PageSetting = pageSetting
- };
+ //褰撳墠鏃犳硶鑱旂綉
+ return Config.Instance.HomeFilePathList;
+ }
var requestObj = new SendDataToServer.ResidenceListReqDto()
{
- ReqDto = reqDto,
RequestVersion = CommonPage.RequestVersion,
+ ReqDto = new SendDataToServer.ResidenceListObj()
+ {
+ LoginAccessToken = Config.Instance.Token,
+ PageSetting = new SendDataToServer.ResidenceListPageSettingObj { PageSize = 999 }
+ }
};
try
{
var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject(requestObj);
- var revertObj = await CommonPage.Instance.RequestHttpsZigbeeAsync("App/GetHomePager", System.Text.Encoding.UTF8.GetBytes(requestJson));
+ var revertObj = CommonPage.Instance.RequestHttpsZigbeeAsync("App/GetHomePager", System.Text.Encoding.UTF8.GetBytes(requestJson), 5);
if (revertObj == null)
{
return null;
@@ -234,7 +237,7 @@
if (revertObj.StateCode.ToUpper() == "SUCCESS")
{
var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<Shared.Common.ResponseEntity.ResidenceRes>(revertObj.ResponseData.ToString());
- if(responseDataObj.TotalCount>0)
+ if (responseDataObj.TotalCount > 0)
{
//娓呯┖褰撳墠浣忓畢鍒楄〃
Config.Instance.HomeFilePathList.Clear();
@@ -270,20 +273,26 @@
house.Save(false);
listHouse.Add(house);
}
+ //妫�娴嬫湰鍦扮殑浣忓畢鏂囦欢鏄惁鍚堟硶
+ var listLocal = this.GetAllLocalResidenceListByDirectory();
+ foreach (var myHouse in listLocal)
+ {
+ //濡傛灉鏈湴瀛樺湪涓嶅睘浜庝粬鐨勪綇瀹呮枃浠�,鍒欏垹闄�
+ if (myHouse.HouseDataDiv == 1 && Config.Instance.HomeFilePathList.Contains(myHouse.FileName) == false)
+ {
+ string housePath = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath, Config.Instance.Guid, myHouse.Id);
+ HdlFileLogic.Current.DeleteDirectory(housePath);
+ }
+ }
//濡傛灉鍒囨崲浜嗚处鍙�,鎴栬�呭師鏉ョ殑id涓嶅瓨鍦�,鍒欓噸缃綇瀹匢D
if (Config.Instance.TheSameLoginAccount == false ||
- Config.Instance.HomeFilePathList.Find((obj) => obj == $"House_{Config.Instance.HomeId}.json") == null)
+ Config.Instance.HomeFilePathList.Contains($"House_{Config.Instance.HomeId}.json") == false)
{
Config.Instance.HomeId = listHouse[0].Id;
- foreach (var house in listHouse)
+ if (listHouse.Count > 0)
{
- //鍒濆閫夋嫨瀹冭嚜宸辩殑浣忓畢
- if (house.IsOthreShare == false)
- {
- Config.Instance.HomeId = house.Id;
- Config.Instance.Home = GetHouseByHouseId(house.Id);
- break;
- }
+ Config.Instance.HomeId = listHouse[0].Id;
+ Config.Instance.Home = GetHouseByHouseId(listHouse[0].Id);
}
}
Config.Instance.Save();
@@ -317,14 +326,14 @@
var listHome = new List<Common.House>();
foreach (var housePath in Common.Config.Instance.HomeFilePathList)
{
- var home =this.GetHouseByFilePath(housePath);
+ var home = this.GetHouseByFilePath(housePath);
if (home == null)
{
continue;
}
listHome.Add(home);
}
- return listHome;
+ return this.SortHouse(listHome);
}
/// <summary>
@@ -351,7 +360,7 @@
if (arryHouse.Length > 0)
{
//璇诲彇鏂囦欢鍐呭
- var textValue = UserCenterLogic.LoadFileContent(System.IO.Path.Combine(nowPath, arryHouse[0]));
+ var textValue = HdlFileLogic.Current.ReadFileTextContent(System.IO.Path.Combine(nowPath, arryHouse[0]));
if (textValue == null)
{
continue;
@@ -360,7 +369,183 @@
listHome.Add(myHouse);
}
}
- return listHome;
+ return this.SortHouse(listHome);
+ }
+
+ #endregion
+
+ #region 鈻� 浣忓畢鎺掑簭___________________________
+
+ /// <summary>
+ /// 浣忓畢鎺掑簭
+ /// </summary>
+ /// <param name="i_listHouse"></param>
+ /// <returns></returns>
+ public List<House> SortHouse(List<House> i_listHouse)
+ {
+ //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴�
+ var listName = new List<string>();
+ foreach (var house in i_listHouse)
+ {
+ listName.Add(house.Name);
+ }
+ int numberLength = this.GetNumberMaxLength(listName);
+
+ var listSort = new List<string[]>();
+ var dicHouse = new Dictionary<string, House>();
+ foreach (var house in i_listHouse)
+ {
+ //涓存椂缂撳瓨
+ dicHouse[house.Id] = house;
+
+ var strArry = new string[2];
+ strArry[0] = house.Id;
+ strArry[1] = string.Empty;
+
+ string value = string.Empty;
+ foreach (var c in house.Name)
+ {
+ if (char.IsNumber(c) == true)
+ {
+ //鏁板瓧
+ value += c.ToString();
+ continue;
+ }
+ else if (value != string.Empty)
+ {
+ //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰�
+ strArry[1] += value.PadLeft(numberLength, '0');
+ value = string.Empty;
+ }
+ strArry[1] += c.ToString();
+ }
+ if (value != string.Empty)
+ {
+ //浠ユ暟瀛楃粨灏剧殑璇�
+ strArry[1] += value.PadLeft(numberLength, '0');
+ }
+ listSort.Add(strArry);
+ }
+ //鎺掑簭
+ listSort.Sort((obj1, obj2) =>
+ {
+ if (obj1[1].CompareTo(obj2[1]) > 0)
+ {
+ return 1;
+ }
+ return -1;
+ });
+ var listSortHouse = new List<House>();
+ foreach (var strArry in listSort)
+ {
+ listSortHouse.Add(dicHouse[strArry[0]]);
+ }
+ return listSortHouse;
+ }
+
+ /// <summary>
+ /// 浜戠浣忓畢鎺掑簭
+ /// </summary>
+ /// <param name="i_listData"></param>
+ /// <returns></returns>
+ public List<Common.ResponseEntity.ResidenceObj> SortHouse(List<Common.ResponseEntity.ResidenceObj> i_listData)
+ {
+ //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴�
+ var listName = new List<string>();
+ foreach (var house in i_listData)
+ {
+ listName.Add(house.Name);
+ }
+ int numberLength = this.GetNumberMaxLength(listName);
+
+ var listSort = new List<string[]>();
+ var dicHouse = new Dictionary<string, Common.ResponseEntity.ResidenceObj>();
+ foreach (var house in i_listData)
+ {
+ //涓存椂缂撳瓨
+ dicHouse[house.Id] = house;
+
+ var strArry = new string[2];
+ strArry[0] = house.Id;
+ strArry[1] = string.Empty;
+
+ string value = string.Empty;
+ foreach (var c in house.Name)
+ {
+ if (char.IsNumber(c) == true)
+ {
+ //鏁板瓧
+ value += c.ToString();
+ continue;
+ }
+ else if (value != string.Empty)
+ {
+ //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰�
+ strArry[1] += value.PadLeft(numberLength, '0');
+ value = string.Empty;
+ }
+ strArry[1] += c.ToString();
+ }
+ if (value != string.Empty)
+ {
+ //浠ユ暟瀛楃粨灏剧殑璇�
+ strArry[1] += value.PadLeft(numberLength, '0');
+ }
+ listSort.Add(strArry);
+ }
+ //鎺掑簭
+ listSort.Sort((obj1, obj2) =>
+ {
+ if (obj1[1].CompareTo(obj2[1]) > 0)
+ {
+ return 1;
+ }
+ return -1;
+ });
+ var listSortHouse = new List<Common.ResponseEntity.ResidenceObj>();
+ foreach (var strArry in listSort)
+ {
+ listSortHouse.Add(dicHouse[strArry[0]]);
+ }
+ return listSortHouse;
+ }
+
+ /// <summary>
+ /// 浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴�
+ /// </summary>
+ /// <param name="listText"></param>
+ /// <returns></returns>
+ private int GetNumberMaxLength(List<string> listText)
+ {
+ int maxLength = 0;
+ foreach (var text in listText)
+ {
+ string value = string.Empty;
+ foreach (var c in text)
+ {
+ if (char.IsNumber(c) == true)
+ {
+ //鏁板瓧
+ value += c.ToString();
+ continue;
+ }
+ else if (value != string.Empty)
+ {
+ //鍒ゆ柇鏁板瓧闀垮害
+ if (maxLength <= value.Length)
+ {
+ maxLength = value.Length;
+ }
+ value = string.Empty;
+ }
+ }
+ //鍒ゆ柇鏁板瓧闀垮害
+ if (maxLength <= value.Length)
+ {
+ maxLength = value.Length;
+ }
+ }
+ return maxLength;
}
#endregion
--
Gitblit v1.8.0