From d95196ffdf89ecde072ca11e1c491921743673f6 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期三, 01 二月 2023 11:11:25 +0800 Subject: [PATCH] 多备份迁移 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs | 151 +++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 131 insertions(+), 20 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs index 90e9c7c..e92f561 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/MigrationServer.cs @@ -34,6 +34,7 @@ EditText etPwd; string pwd; string newUserId; + string newHomeId; Button btnSave; Button btnClose; @@ -372,32 +373,36 @@ /// </summary> /// <param name="newHomeId"></param> /// <returns></returns> - private string moveFolder2New (string newHomeId) + private string moveFolder2New (string newHomeId,string folderName = "") { - Dictionary<string, object> dic = new Dictionary<string, object> (); - dic.Add ("backupDataType", "HDL_ON"); - dic.Add ("homeId",newHomeId); - dic.Add ("userId",newUserId); - dic.Add ("backupClassify", "USER_DEFINED_BACKUP"); - dic.Add ("folderName", "MigrateBackup" + DateTime.Now.ToString ()); - dic.Add ("tenantId", "202106"); - var requestJson = HttpUtil.GetSignRequestJson (dic); - var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/folder/save", requestJson, false, false, SeverAddr); - if(revertObj!= null) { - if(revertObj.code == "0") { - var resultObj = Newtonsoft.Json.JsonConvert.DeserializeObject<FolderObj> (revertObj.data.ToString ()); - - return resultObj.id; + try { + Dictionary<string, object> dic = new Dictionary<string, object> (); + dic.Add ("backupDataType", "HDL_ON"); + dic.Add ("homeId", newHomeId); + dic.Add ("userId", newUserId); + dic.Add ("backupClassify", "USER_DEFINED_BACKUP"); + dic.Add ("folderName", folderName == "" ? "MigrateBackup" + DateTime.Now.ToString () : folderName); + dic.Add ("tenantId", "202106"); + var requestJson = HttpUtil.GetSignRequestJson (dic); + var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/folder/save", requestJson, false, false, SeverAddr); + if (revertObj != null) { + if (revertObj.code == "0") { + var resultObj = Newtonsoft.Json.JsonConvert.DeserializeObject<FolderObj> (revertObj.data.ToString ()); + + return resultObj.id; + } } + return ""; + } catch { + return ""; } - return ""; } - private string MoveFile2New(string newHomeId,string backupId) + private string MoveFile2New(string backupId) { Dictionary<string, object> dic = new Dictionary<string, object> (); - dic.Add ("backupId", backupId);//1534728347497418754//1534728860322385922 + dic.Add ("backupId", backupId); dic.Add ("homeId", newHomeId); dic.Add ("userId", newUserId); dic.Add ("backupClassify", "USER_DEFINED_BACKUP"); @@ -446,6 +451,107 @@ } return ""; } + + /// <summary> + /// 杩佺Щ鏃т簯绔浠藉垪琛ㄥ埌鏂颁簯绔� + /// </summary> + /// <returns></returns> + private void MoveOldBackupList () + { + try { + GetUserFolderObj requestObj = new GetUserFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.RegionID }; + var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); + var revertObj = MainPage.RequestHttps ("GetUserFolder", requestJson, true, false);//鑾峰彇鏃ф湇鍔″櫒澶囦唤鍒楄〃 + if (revertObj.StateCode == "SUCCESS") { + var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderRes>> (revertObj.ResponseData.ToString ()); + int index = 1; + foreach (var folder in responseDataObj) { + Application.RunOnMainThread (() => { + try { + btnTipMsg.Text = $"Migrating server backup {index} / {responseDataObj.Count + 1}."; + btnTipMsg.TextColor = SkinStyle.Current.TextColor; + } catch { } + }); + try { + var requestObj2 = new UserBackupListObj () { LevelID = folder.FolderID }; + var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); + var revertObj2 = MainPage.RequestHttps ("UserBackupList", requestJson2);//涓嬭浇鏃ф湇鍔″櫒鐨勫浠芥枃浠跺垪琛� + if (revertObj2.StateCode == "SUCCESS") { + var newFolderId = moveFolder2New (newHomeId, folder.FolderName);//鍦ㄦ柊鏈嶅姟鍣ㄥ垱寤烘柊鐨勫浠�,鑾峰彇澶囦唤ID + if (string.IsNullOrEmpty (newFolderId)) {//濡傛灉鏂版湇鍔″櫒澶囦唤ID涓虹┖锛屽彲鑳芥姤閿欎簡锛屾柊鏈嶅姟鍣ㄥ彲鑳藉凡缁忓瓨鍦ㄨ繖涓浠� + var backupInfoRes = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupInfoRes>> (revertObj2.ResponseData.ToString ()); + MoveOldBackupFile2New (newFolderId, backupInfoRes); + } + } + } catch { } + } + } + } catch { + } + } + + /// <summary> + /// 杩佺Щ鏃ф湇鍔″櫒澶囦唤鏂囦欢鍒版柊鏈嶅姟鍣� + /// </summary> + /// <param name="backupId"></param> + /// <returns></returns> + private string MoveOldBackupFile2New ( string backupId, List<BackupInfoRes> responseDataObj) + { + Dictionary<string, object> dic = new Dictionary<string, object> (); + dic.Add ("backupId", backupId); + dic.Add ("homeId", newHomeId); + dic.Add ("userId", newUserId); + dic.Add ("backupClassify", "USER_DEFINED_BACKUP"); + dic.Add ("tenantId", "202106"); + + List<BackupFileObj> fileObjs = new List<BackupFileObj> (); + + int index = 0; + foreach (var file in responseDataObj) { + var fileName = file.FileName; + if (fileName == "null" || "UserConfig" == fileName || fileName == UserInfo.GlobalRegisterFile) { + continue; + } + index++; + var requestObj3 = new BackupDetailObj () { Id = file.Id }; + var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj3); + var revertObj3 = MainPage.RequestHttps ("BackupDetail", requestJson3);//涓嬭浇鏃ф湇鍔″櫒鐨勫浠芥枃浠� + if (revertObj3.StateCode == "SUCCESS") { + var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject (revertObj3.ResponseData); + var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte []> (jsonBytes); + BackupFileObj backupFileObj = new BackupFileObj () { fileName = fileName, content = byresss }; + fileObjs.Add (backupFileObj); + + if (fileObjs.Count > 9) { + if (!dic.ContainsKey ("list")) { + dic.Add ("list", fileObjs); + } + var json = HttpUtil.GetSignRequestJson (dic); + var revertObj_foreach = MainPage.RequestHttps ("/home-wisdom/data/move/file/save", json, false, false, SeverAddr); + if (revertObj_foreach != null) { + if (revertObj_foreach.code == "0") { + fileObjs.Clear (); + continue; + } + } + } + } + } + if (!dic.ContainsKey ("list")) { + dic.Add ("list", fileObjs); + } + var requestJson = HttpUtil.GetSignRequestJson (dic); + var revertObj = MainPage.RequestHttps ("/home-wisdom/data/move/file/save", requestJson, false, false, SeverAddr); + if (revertObj != null) { + if (revertObj.code == "0") { + return "true"; + } + } + return ""; + } + + + /// <summary> /// 鑾峰彇瀹氭椂鍣ㄥ垪琛� /// </summary> @@ -732,7 +838,7 @@ return; } //杩佺Щ浣忓畢锛岃幏鍙栨柊鐨刪omeid - var newHomeId = Home2New (); + newHomeId = Home2New (); if (newHomeId == "") { Application.RunOnMainThread (() => { btnTipMsg.Text = "Home migration failed. Please try again."; @@ -823,7 +929,12 @@ //鍒涘缓杩佺Щ澶囦唤鏂囦欢澶� var backId = moveFolder2New (newHomeId); //杩佺Щ澶囦唤鏂囦欢 - var moveFileResult = MoveFile2New (newHomeId, backId); + var moveFileResult = MoveFile2New (backId); + Application.RunOnMainThread (() => { + btnTipMsg.Text = "Migrating server backup."; + btnTipMsg.TextColor = SkinStyle.Current.TextColor; + }); + MoveOldBackupList (); if (moveFileResult == "true") { Application.RunOnMainThread (() => { btnTipMsg.Text = "Migration backup succeeded, migrating Schedule data."; -- Gitblit v1.8.0