From 525d4d5c18ad5f8a7976f1fd20cef7f1d7e82831 Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期五, 17 四月 2020 11:22:20 +0800 Subject: [PATCH] 2020-04-17 1.项目引用库更新。 2.备份上传和下载速度优化。 --- Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs | 513 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 356 insertions(+), 157 deletions(-) diff --git a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs index 968c699..a096120 100644 --- a/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs +++ b/Crabtree/SmartHome/UI/SimpleControl/Phone/Register/Databackup.cs @@ -184,8 +184,8 @@ }; dialog.AddChidren (dialogBodyView); - Button btnTitle = new Button () { - Height = Application.GetRealHeight(80), + Button btnTitle = new Button () { + Height = Application.GetRealHeight (80), BackgroundColor = SkinStyle.Current.DialogTitle, TextAlignment = TextAlignment.Center, TextID = R.MyInternationalizationString.Backup, @@ -206,7 +206,7 @@ EditText etBackupRemark = new EditText () { Gravity = Gravity.CenterHorizontal, - Y = btnackupRemark.Bottom , + Y = btnackupRemark.Bottom, Width = Application.GetRealWidth (400), Height = Application.GetRealHeight (80), TextAlignment = TextAlignment.Center, @@ -219,10 +219,10 @@ etBackupRemark.EditorEnterAction += (obj) => { Application.HideSoftInput (); }; - - FrameLayout bottomView = new FrameLayout () { - Y = Application.GetRealHeight(420), - Height = Application.GetRealHeight(85), + + FrameLayout bottomView = new FrameLayout () { + Y = Application.GetRealHeight (420), + Height = Application.GetRealHeight (85), BackgroundColor = SkinStyle.Current.DialogTitle }; dialogBodyView.AddChidren (bottomView); @@ -237,16 +237,16 @@ dialog.Close (); }; - Button btnBottomLine = new Button () { + Button btnBottomLine = new Button () { X = btnClose.Right, - Width =1, + Width = 1, BackgroundColor = SkinStyle.Current.Black50Transparent, }; bottomView.AddChidren (btnBottomLine); - Button btnSave = new Button () { + Button btnSave = new Button () { X = btnBottomLine.Right, - Width = Application.GetRealWidth(249), + Width = Application.GetRealWidth (249), TextID = R.MyInternationalizationString.SAVE, TextAlignment = TextAlignment.Center }; @@ -352,7 +352,7 @@ //}); } catch { Application.RunOnMainThread (() => { - new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet),Language.StringByID (R.MyInternationalizationString.Close)).Show (); + new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); } finally { Application.RunOnMainThread (() => { @@ -382,7 +382,7 @@ }; btnDelFile.MouseUpEventHandler += (sender, e) => { Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); - alert.ResultEventHandler += ( sender2, e2) => { + alert.ResultEventHandler += (sender2, e2) => { if (e2) { DeleteFolderData (folderID); } @@ -416,7 +416,7 @@ btnName.MouseLongEventHandler += (sender, e) => { Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); - alert.ResultEventHandler += ( sender2, e2) => { + alert.ResultEventHandler += (sender2, e2) => { if (e2) { DeleteFolderData (folderID); } @@ -500,7 +500,7 @@ Application.RunOnMainThread (() => { MainPage.Loading.Start ("Please wait..."); }); - + try { var requestObj = new DelHomeAppGatewayNameObj () { @@ -599,15 +599,16 @@ if (requestObj.IsOtherAccountCtrl) { urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; - } + } //AddFolderObj requestObj = new AddFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.Id ,Name = groupName }; var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); var revertObj = MainPage.RequestHttps (API.AddHomeAppGatewayName, requestJson, urlHead); if (revertObj.StateCode.ToUpper () == "SUCCESS") { - var DATA = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBackupNameResult> (revertObj.ResponseData.ToString()); + var DATA = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBackupNameResult> (revertObj.ResponseData.ToString ()); var addFolderID = DATA.BackupClassId; - UpLoadBackupFileToDB (addFolderID); + //UpLoadBackupFileToDB (addFolderID); + UpLoadBackupFileToDBNew (addFolderID); } else { @@ -670,75 +671,75 @@ } - /// <summary> - /// 涓婁紶澶囦唤鏂囦欢 - /// </summary> - /// <param name="mBackupClassId"></param> - void UpLoadBackupFileToDB (string mBackupClassId) - { + ///// <summary> + ///// 涓婁紶澶囦唤鏂囦欢 + ///// </summary> + ///// <param name="mBackupClassId"></param> + //void UpLoadBackupFileToDB (string mBackupClassId) + //{ - var backuplist = IO.FileUtils.ReadFiles (); - int index = 0; - foreach (var fileName in backuplist) { - index++; - /// <summary> - /// 濡傛灉鏄壒娈婄殑娉ㄥ唽鐧婚檰鏂囦欢锛屽垯涓嶉渶瑕佸浠藉埌鏈嶅姟鍣� - /// </summary> - if (fileName == UserInfo.GlobalRegisterFile) { - continue; - } - //鏁寸悊鏁版嵁 - var datainfo = new FileInfoData (); - datainfo.BackupFileName = fileName; - datainfo.BackupFileContent = Shared.IO.FileUtils.ReadFile (fileName); + // var backuplist = IO.FileUtils.ReadFiles (); + // int index = 0; + // foreach (var fileName in backuplist) { + // index++; + // /// <summary> + // /// 濡傛灉鏄壒娈婄殑娉ㄥ唽鐧婚檰鏂囦欢锛屽垯涓嶉渶瑕佸浠藉埌鏈嶅姟鍣� + // /// </summary> + // if (fileName == UserInfo.GlobalRegisterFile) { + // continue; + // } + // //鏁寸悊鏁版嵁 + // var datainfo = new FileInfoData (); + // datainfo.BackupFileName = fileName; + // datainfo.BackupFileContent = Shared.IO.FileUtils.ReadFile (fileName); - var list = new List<FileInfoData> (); - list.Add (datainfo); + // var list = new List<FileInfoData> (); + // list.Add (datainfo); - var upData = new UploadHomeAppGatewaySubFilesObj (); - upData.HomeId = UserConfig.Instance.CurrentRegion.Id; - upData.BackupClassId = mBackupClassId; - upData.UploadSubFileLists = list; - //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken - upData.LoginAccessToken = MainPage.LoginUser.LoginTokenString; - string urlHead = MainPage.RequestHttpsHost; - if (upData.IsOtherAccountCtrl) { - urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; - upData.LoginAccessToken = UserConfig.Instance.MasterAccountToken; - } + // var upData = new UploadHomeAppGatewaySubFilesObj (); + // upData.HomeId = UserConfig.Instance.CurrentRegion.Id; + // upData.BackupClassId = mBackupClassId; + // upData.UploadSubFileLists = list; + // //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + // upData.LoginAccessToken = MainPage.LoginUser.LoginTokenString; + // string urlHead = MainPage.RequestHttpsHost; + // if (upData.IsOtherAccountCtrl) { + // urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; + // upData.LoginAccessToken = UserConfig.Instance.MasterAccountToken; + // } - //AddUserBackupObj requestObj2 = new AddUserBackupObj () { LevelID = Convert.ToInt32 (revertObj.ResponseData), Name = fileName, DetailByte = IO.FileUtils.ReadFile (fileName) }; - var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (upData); - var revertObj2 = MainPage.RequestHttps (API.UploadHomeAppGatewaySubFiles, requestJson2, urlHead); - if (revertObj2.StateCode.ToUpper () == "SUCCESS") { - //index++; - Application.RunOnMainThread (() => { - int pro = (int)(index * 1.0 / backuplist.Count * 100); - MainPage.Loading.Text = pro.ToString () + "%"; - }); - } else { - //鎻愮ず閿欒 - break; - } - } - if (index != backuplist.Count) { - //2020-01-11 - DeleteFolderDataAfterUploadFailed (mBackupClassId); - Shared.Application.RunOnMainThread (() => { - new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - MainPage.Loading.Hide (); - }); + // //AddUserBackupObj requestObj2 = new AddUserBackupObj () { LevelID = Convert.ToInt32 (revertObj.ResponseData), Name = fileName, DetailByte = IO.FileUtils.ReadFile (fileName) }; + // var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (upData); + // var revertObj2 = MainPage.RequestHttps (API.UploadHomeAppGatewaySubFiles, requestJson2, urlHead); + // if (revertObj2.StateCode.ToUpper () == "SUCCESS") { + // //index++; + // Application.RunOnMainThread (() => { + // int pro = (int)(index * 1.0 / backuplist.Count * 100); + // MainPage.Loading.Text = pro.ToString () + "%"; + // }); + // } else { + // //鎻愮ず閿欒 + // break; + // } + // } + // if (index != backuplist.Count) { + // //2020-01-11 + // DeleteFolderDataAfterUploadFailed (mBackupClassId); + // Shared.Application.RunOnMainThread (() => { + // new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + // MainPage.Loading.Hide (); + // }); - } + // } - //Shared.Application.RunOnMainThread (() => { - // if (index == 0) { - // new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); - // } + // //Shared.Application.RunOnMainThread (() => { + // // if (index == 0) { + // // new Alert ("", "Upload failed!", Language.StringByID (R.MyInternationalizationString.Close)).Show (); + // // } - // MainPage.Loading.Hide (); - //}); - } + // // MainPage.Loading.Hide (); + // //}); + //} @@ -750,7 +751,7 @@ { //鏄惁纭畾鎭㈠璇ユ枃浠舵暟鎹俊鎭� Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureToRestoreFileInformation), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); - alert.ResultEventHandler += ( sender2, e2) => { + alert.ResultEventHandler += (sender2, e2) => { if (e2) { MainPage.Loading.Start ("Download..."); System.Threading.Tasks.Task.Run (() => { @@ -780,7 +781,7 @@ //var requestObj2 = new UserBackupListObj () { LevelID = folderID }; var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj2); var revertObj2 = MainPage.RequestHttps (API.GetHomeDataBackupUploadListPagger, requestJson2, urlHead); - if (revertObj2.StateCode.ToUpper() == "SUCCESS") { + if (revertObj2.StateCode.ToUpper () == "SUCCESS") { var fileListData = Newtonsoft.Json.JsonConvert.DeserializeObject<LoadBackInfoResult> (revertObj2.ResponseData.ToString ()); var responseDataObj = fileListData.PageData; ////鑾峰彇鏂囦欢鍚嶅瓧 @@ -801,8 +802,13 @@ mDownLoad.LoginAccessToken = UserConfig.Instance.MasterAccountToken; } - int index = 0; + MultiThreadDownload (responseDataObj, mDownLoad, mUrlHead); + + + //int index = 0; + //foreach (var file in responseDataObj) { + // index++; // if (file.BackupFileName == "null" || "UserConfig" == file.BackupFileName) { // continue; // } @@ -811,100 +817,56 @@ // var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (mDownLoad); // var revertObj3 = MainPage.RequestHttpsReturnByte (API.DownloadSomeDataBackup, requestJson3, false, mUrlHead); // if (revertObj3 != null) { - // index++; + // IO.FileUtils.WriteFileByBytes (file.BackupFileName, revertObj3); // Application.RunOnMainThread (() => { // int pro = (int)(index * 1.0 / responseDataObj.Count * 100); // MainPage.Loading.Text = pro.ToString () + "%"; // }); // } else { - - + // break; // } - // //if (revertObj3.StateCode.ToUpper() == "SUCCESS") { - // // var jsonBytes = Newtonsoft.Json.JsonConvert.SerializeObject (revertObj3.ResponseData); - // // var byresss = Newtonsoft.Json.JsonConvert.DeserializeObject<byte[]> (jsonBytes); - // // index++; - // // //鏂板鍔犱簡浣忓畢鍖哄煙锛屾棫鐨勫浠芥暟鎹病鏈夊尯鍩熷睘鎬э紝褰撹幏鍙栧埌杩欎釜鏂囦欢鏃讹紝鎶婂綋鍓嶅埌浣忓畢淇℃伅鏇村埌褰撳墠澶囦唤鍒版暟鎹噷闈� - // // if ("UserConfig" == file.BackupFileName){ - // // //var regionTemp = UserConfig.Instance.CurrentRegion; - // // //UserConfig.Instance.RefreshUserConfig (); - // // //UserConfig.Instance.CurrentRegion = regionTemp; - // // //UserConfig.Instance.SaveUserConfig (); - // // ////UserConfig.Instance.GatewayList - // // continue; - // // } - // // IO.FileUtils.WriteFileByBytes (file.BackupFileName, byresss); - // // Application.RunOnMainThread (() => { - // // int pro = (int)(index * 1.0 / responseDataObj.Count * 100); - // // MainPage.Loading.Text = pro.ToString () + "%"; - // // }); - // //} else { - // // //閿欒鎻愮ず - - // //} //} - foreach (var file in responseDataObj) { - index++; - if (file.BackupFileName == "null" || "UserConfig" == file.BackupFileName) { - continue; - } - mDownLoad.BackupFileName = file.BackupFileName; - //var requestObj3 = new BackupDetailObj () { Id = file.Id }; - var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (mDownLoad); - var revertObj3 = MainPage.RequestHttpsReturnByte (API.DownloadSomeDataBackup, requestJson3, false, mUrlHead); - if (revertObj3 != null) { - - IO.FileUtils.WriteFileByBytes (file.BackupFileName, revertObj3); - Application.RunOnMainThread (() => { - int pro = (int)(index * 1.0 / responseDataObj.Count * 100); - MainPage.Loading.Text = pro.ToString () + "%"; - }); - } else { - break; - } - - } - if (index != responseDataObj.Count) { - //鍒犻櫎宸茬粡涓嬭浇鐨勬枃浠朵釜鏁伴敊璇� - var fileNames2 = IO.FileUtils.ReadFiles (); - foreach (var fileName in fileNames2) { - if (fileName == UserInfo.GlobalRegisterFile) { - continue; - } - IO.FileUtils.DeleteFile (fileName); - } + //if (index != responseDataObj.Count) { + // //鍒犻櫎宸茬粡涓嬭浇鐨勬枃浠朵釜鏁伴敊璇� + // var fileNames2 = IO.FileUtils.ReadFiles (); + // foreach (var fileName in fileNames2) { + // if (fileName == UserInfo.GlobalRegisterFile) { + // continue; + // } + // IO.FileUtils.DeleteFile (fileName); + // } - MainPage.ShowAlertOnMainThread ("Download failed!"); + // MainPage.ShowAlertOnMainThread ("Download failed!"); - return; - } + // return; + //} - MainPage.LoginUser.SaveUserInfo (); - Room.InitAllRoom (); - Application.RunOnMainThread (() => { - this.RemoveFromParent (); - CommonPage.IsRemote = false; - UserMiddle.Init (); - EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus); - new Alert ("", Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), - Language.StringByID (R.MyInternationalizationString.Close)).Show (); - }); - MainPage.LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo> (System.Text.Encoding.UTF8.GetString (Shared.IO.FileUtils.ReadFile (UserInfo.GlobalRegisterFile))); - if (MainPage.LoginUser != null) { - MainPage.LoginUser.LastTime = System.DateTime.Now; - MainPage.LoginUser.SaveUserInfo (); - } + //MainPage.LoginUser.SaveUserInfo (); + //Room.InitAllRoom (); + //Application.RunOnMainThread (() => { + // this.RemoveFromParent (); + // CommonPage.IsRemote = false; + // UserMiddle.Init (); + // EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus); + // new Alert ("", Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), + // Language.StringByID (R.MyInternationalizationString.Close)).Show (); + //}); + //MainPage.LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo> (System.Text.Encoding.UTF8.GetString (Shared.IO.FileUtils.ReadFile (UserInfo.GlobalRegisterFile))); + //if (MainPage.LoginUser != null) { + // MainPage.LoginUser.LastTime = System.DateTime.Now; + // MainPage.LoginUser.SaveUserInfo (); + //} } } catch (Exception ex) { Shared.Application.RunOnMainThread (() => { new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); }); - Utlis.WriteLine (ex.ToString()); + Utlis.WriteLine (ex.ToString ()); } finally { Shared.Application.RunOnMainThread (() => { MainPage.Loading.Hide (); @@ -915,5 +877,242 @@ }; alert.Show (); } + + + bool DownloadSomeDataBackup (DownloadSomeDataBackupObj mmDownLoad, string mUrlHead, LoadBackupFileNameInfo file) + { + DownloadSomeDataBackupObj mDownLoad = mmDownLoad; + mDownLoad.BackupFileName = file.BackupFileName; + //var requestObj3 = new BackupDetailObj () { Id = file.Id }; + var requestJson3 = Newtonsoft.Json.JsonConvert.SerializeObject (mDownLoad); + var revertObj3 = MainPage.RequestHttpsReturnByte (API.DownloadSomeDataBackup, requestJson3, false, mUrlHead); + if (revertObj3 != null) { + + IO.FileUtils.WriteFileByBytes (file.BackupFileName, revertObj3); + return true; + } else { + return false; + } + } + + /// <summary> + /// 鍒犻櫎鏈湴鏂囦欢 + /// </summary> + void ReadFilesAndDelete () + { + + var fileNames = IO.FileUtils.ReadFiles (); + foreach (var fileName in fileNames) { + if (fileName == UserInfo.GlobalRegisterFile || fileName == UserConfig.configFile) { + continue; + } + IO.FileUtils.DeleteFile (fileName); + } + + } + + /// <summary> + /// 澶氱嚎绋嬩笅杞� + /// </summary> + void MultiThreadDownload (List<LoadBackupFileNameInfo> dataList, DownloadSomeDataBackupObj mDownLoad, string mUrlHead, int maxThreads = 5) + { + + int index = 0; + int indexCount = 0; + + var mFileList = dataList.FindAll ((obj) => obj.BackupFileName != "null" && obj.BackupFileName != UserConfig.configFile && obj.BackupFileName != UserInfo.GlobalRegisterFile && obj.BackupFileName != "AccountListDB"); + if (maxThreads > mFileList.Count) { + maxThreads = mFileList.Count; + } + + if (mFileList.Count <= 0) return; + + + int resultCount = mFileList.Count / maxThreads; + + //int residue = mFileList.Count % maxThreads; + + /*寮�鍚嫢骞茬嚎绋嬶紝鍒嗗埆涓嬭浇瀵瑰簲鐨勮祫婧�*/ + for (int i = 1; i <= maxThreads; i++) { + int startIndex = ((i - 1) * resultCount + 0); + int endIndex = resultCount * i - 1; + if (i == maxThreads) { + /* + * 鏈�鍚庝竴涓嚎绋� + * */ + endIndex = mFileList.Count - 1; + } + var id = i; + var startIndex1 = startIndex; + var endIndex1 = endIndex; + //Utlis.WriteLine ($"涓嬭浇绾跨▼锛歿id} startIndex1:{startIndex1} endIndex1:{endIndex1}"); + new System.Threading.Thread (() => { + + for (var j = startIndex1; j <= endIndex1; j++) { + var result = DownloadSomeDataBackup (mDownLoad, mUrlHead, dataList [j]); + if (result) { + index++; + Application.RunOnMainThread (() => { + int pro = (int)(index * 1.0 / mFileList.Count * 100); + MainPage.Loading.Text = pro.ToString () + "%"; + }); + + } + indexCount++; + //Utlis.WriteLine ($"涓嬭浇绾跨▼锛歿id} 瀹屾垚index:{j} indexCount: {indexCount}"); + } + + }) { IsBackground = true }.Start (); + + System.Threading.Thread.Sleep (100); + + } + + while (indexCount < mFileList.Count) { + System.Threading.Thread.Sleep (200); + } + Utlis.WriteLine ($"涓嬭浇瀹屾垚"); + + if (index != mFileList.Count) { + //鍒犻櫎宸茬粡涓嬭浇鐨勬枃浠朵釜鏁伴敊璇� + ReadFilesAndDelete (); + + Application.RunOnMainThread (() => { + new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.DownloadFailed), + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + + + return; + } + + + MainPage.LoginUser.SaveUserInfo (); + Room.InitAllRoom (); + Application.RunOnMainThread (() => { + this.RemoveFromParent (); + CommonPage.IsRemote = false; + UserMiddle.Init (); + EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus); + new Alert ("", Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), + Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + MainPage.LoginUser = Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo> (System.Text.Encoding.UTF8.GetString (Shared.IO.FileUtils.ReadFile (UserInfo.GlobalRegisterFile))); + if (MainPage.LoginUser != null) { + MainPage.LoginUser.LastTime = System.DateTime.Now; + MainPage.LoginUser.SaveUserInfo (); + } + + + + } + + bool UploadDataBackup (UploadHomeAppGatewaySubFilesObj upData, string mUrlHead, List<string> fileList, int startIndex1, int endIndex1) + { + try { + + var list = new List<FileInfoData> (); + for (var j = startIndex1; j <= endIndex1; j++) { + var datainfo = new FileInfoData (); + datainfo.BackupFileName = fileList [j]; + datainfo.BackupFileContent = Shared.IO.FileUtils.ReadFile (fileList [j]); + list.Add (datainfo); + } + + //鏁寸悊鏁版嵁 + UploadHomeAppGatewaySubFilesObj mUpData = upData; + mUpData.UploadSubFileLists = list; + + var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (mUpData); + var revertObj2 = MainPage.RequestHttps (API.UploadHomeAppGatewaySubFiles, requestJson2, mUrlHead); + if (revertObj2.StateCode.ToUpper () == "SUCCESS") { + return true; + } else { + //鎻愮ず閿欒 + return false; + } + } catch { + return false; + } + } + + + + + /// <summary> + /// 涓婁紶澶囦唤鏂囦欢 + /// 澶氭涓婁紶澶氫釜鏂囦欢 + /// </summary> + /// <param name="mBackupClassId"></param> + void UpLoadBackupFileToDBNew (string mBackupClassId, int maxThreads = 30) + { + var backuplist = IO.FileUtils.ReadFiles (); + var mFileList = backuplist.FindAll ((obj) => obj != "null" && obj != UserConfig.configFile && obj != UserInfo.GlobalRegisterFile && obj != "AccountListDB"); + if (mFileList.Count <= 0) return; + + if (maxThreads > mFileList.Count) { + maxThreads = mFileList.Count; + } + + int index = 0; + int indexCount = 0; + int resultCount = mFileList.Count / maxThreads; + + var upData = new UploadHomeAppGatewaySubFilesObj (); + upData.HomeId = UserConfig.Instance.CurrentRegion.Id; + upData.BackupClassId = mBackupClassId; + //鑾峰彇鎺у埗涓讳汉璐﹀彿鐨凾oken + upData.LoginAccessToken = MainPage.LoginUser.LoginTokenString; + string urlHead = MainPage.RequestHttpsHost; + if (upData.IsOtherAccountCtrl) { + urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; + upData.LoginAccessToken = UserConfig.Instance.MasterAccountToken; + } + + + for (int i = 1; i <= resultCount; i++) { + int startIndex = ((i - 1) * maxThreads + 0); + int endIndex = maxThreads * i - 1; + if (i == resultCount) { + /*鏈�鍚庝竴涓嚎绋�* */ + endIndex = mFileList.Count - 1; + } + var id = i; + var startIndex1 = startIndex; + var endIndex1 = endIndex; + + var result = UploadDataBackup (upData, urlHead, mFileList, startIndex1, endIndex1); + if (result) { + index++; + Application.RunOnMainThread (() => { + int pro = (int)(index * 1.0 / resultCount * 100); + MainPage.Loading.Text = pro.ToString () + "%"; + }); + + } + indexCount++; + + } + + + Utlis.WriteLine ($"涓婁紶瀹屾垚"); + + if (index != resultCount) { + //2020-01-11 澶囦唤澶辫触 + DeleteFolderDataAfterUploadFailed (mBackupClassId); + Shared.Application.RunOnMainThread (() => { + new Alert ("", Language.StringByID (R.MyInternationalizationString.FailedToBackupFile), Language.StringByID (R.MyInternationalizationString.Close)).Show (); + MainPage.Loading.Hide (); + }); + return; + } + + Application.RunOnMainThread (() => { + //MainPage.Loading.Text = "100%"; + new Alert ("", Language.StringByID (R.MyInternationalizationString.BackupFileIsSuccessful), Language.StringByID (R.MyInternationalizationString.Close)).Show (); + }); + + } + } } \ No newline at end of file -- Gitblit v1.8.0