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 +++++++++++++++++++++++++++++++++++++++++++------
Crabtree/ON/Properties/AndroidManifest.xml | 2
Crabtree/SmartHome/UI/SimpleControl/MainPage.cs | 4
3 files changed, 134 insertions(+), 23 deletions(-)
diff --git a/Crabtree/ON/Properties/AndroidManifest.xml b/Crabtree/ON/Properties/AndroidManifest.xml
index 300d6e6..60d1691 100644
--- a/Crabtree/ON/Properties/AndroidManifest.xml
+++ b/Crabtree/ON/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
锘�<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtree" android:versionCode="202206241" android:versionName="2.706241">
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.hdl.crabtree" android:versionCode="202302011" android:versionName="2.802011">
<uses-sdk android:minSdkVersion="26" android:targetSdkVersion="28" />
<!-- 鍦ㄥ畨鍗揚鐗堟湰涔嬪悗锛屽繀椤昏鎺堜簣FOREGROUND_SERVICE鏉冮檺锛屾墠鑳藉浣跨敤鍓嶅彴鏈嶅姟 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
diff --git a/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs b/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs
index 6b1e6a2..8c6c116 100644
--- a/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs
+++ b/Crabtree/SmartHome/UI/SimpleControl/MainPage.cs
@@ -39,7 +39,7 @@
//public static Button LogoButton = new Button ();
- public static string CodeIDString = "20220616";
+ public static string CodeIDString = "20230201";
/// <summary>
/// 缃戝叧鐘舵��
/// </summary>
@@ -199,7 +199,7 @@
#region
var webClient = new WebClient ();
if (urlHead == "") {
- urlHead = $"{"https://homeautomation.havells.com"}/WebApi/";
+ urlHead = "https://homeautomation.havells.com/WebApi/";
} else {
webClient.Headers.Add ("CONTENT-TYPE", "application/json");
}
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