wxr
2023-02-01 d95196ffdf89ecde072ca11e1c491921743673f6
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;
                                }
                                //迁移住宅,获取新的homeid
                                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.";