| | |
| | | BackgroundColor = SkinStyle.Current.MainColor; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 加载备份文件列表页面 |
| | | /// </summary> |
| | | public void DatabackupShow () |
| | | { |
| | | this.RemoveAll (); |
| | |
| | | topView.AddChidren (ItemButton); |
| | | |
| | | ItemButton.MouseUpEventHandler += (sender, e) => { |
| | | Dialog dialog = new Dialog (); |
| | | |
| | | FrameLayout dialogBodyView = new FrameLayout () { |
| | | Gravity = Gravity.Center, |
| | | Width = Application.GetRealWidth (500), |
| | | Height = Application.GetRealHeight (500), |
| | | BackgroundColor = SkinStyle.Current.DialogColor, |
| | | Radius = 5, |
| | | BorderColor = SkinStyle.Current.Transparent, |
| | | BorderWidth = 0, |
| | | Action finishAction = () => { |
| | | GetHomeDataBackupList (); |
| | | }; |
| | | dialog.AddChidren (dialogBodyView); |
| | | |
| | | Button btnTitle = new Button () { |
| | | Height = Application.GetRealHeight (80), |
| | | BackgroundColor = SkinStyle.Current.DialogTitle, |
| | | TextAlignment = TextAlignment.Center, |
| | | TextID = R.MyInternationalizationString.Backup, |
| | | TextColor = SkinStyle.Current.DialogTextColor |
| | | }; |
| | | dialogBodyView.AddChidren (btnTitle); |
| | | |
| | | Button btnackupRemark = new Button () { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = Application.GetRealHeight (100), |
| | | Width = Application.GetRealWidth (400), |
| | | Height = Application.GetRealHeight (80), |
| | | TextID = R.MyInternationalizationString.Remark, |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | TextColor = SkinStyle.Current.TextColor, |
| | | }; |
| | | dialogBodyView.AddChidren (btnackupRemark); |
| | | |
| | | EditText etBackupRemark = new EditText () { |
| | | Gravity = Gravity.CenterHorizontal, |
| | | Y = btnackupRemark.Bottom, |
| | | Width = Application.GetRealWidth (400), |
| | | Height = Application.GetRealHeight (80), |
| | | TextAlignment = TextAlignment.Center, |
| | | Radius = 5, |
| | | BorderColor = SkinStyle.Current.BorderColor, |
| | | BorderWidth = 1, |
| | | TextColor = SkinStyle.Current.TextColor, |
| | | }; |
| | | dialogBodyView.AddChidren (etBackupRemark); |
| | | etBackupRemark.EditorEnterAction += (obj) => { |
| | | Application.HideSoftInput (); |
| | | }; |
| | | |
| | | FrameLayout bottomView = new FrameLayout () { |
| | | Y = Application.GetRealHeight (420), |
| | | Height = Application.GetRealHeight (85), |
| | | BackgroundColor = SkinStyle.Current.DialogTitle |
| | | }; |
| | | dialogBodyView.AddChidren (bottomView); |
| | | |
| | | Button btnClose = new Button () { |
| | | Width = Application.GetRealWidth (249), |
| | | TextID = R.MyInternationalizationString.Close, |
| | | TextAlignment = TextAlignment.Center |
| | | }; |
| | | bottomView.AddChidren (btnClose); |
| | | btnClose.MouseUpEventHandler += (send2er, e2) => { |
| | | dialog.Close (); |
| | | }; |
| | | |
| | | Button btnBottomLine = new Button () { |
| | | X = btnClose.Right, |
| | | Width = 1, |
| | | BackgroundColor = SkinStyle.Current.Black50Transparent, |
| | | }; |
| | | bottomView.AddChidren (btnBottomLine); |
| | | |
| | | Button btnSave = new Button () { |
| | | X = btnBottomLine.Right, |
| | | Width = Application.GetRealWidth (249), |
| | | TextID = R.MyInternationalizationString.SAVE, |
| | | TextAlignment = TextAlignment.Center |
| | | }; |
| | | bottomView.AddChidren (btnSave); |
| | | |
| | | btnSave.MouseUpEventHandler += (sender2, e2) => { |
| | | if (etBackupRemark.Text.Trim () == "") { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.InputNewBakeUpFilesName), |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | return; |
| | | } |
| | | if (MainPage.LoginUser == null) { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.PleaseLoginSystem), |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | return; |
| | | } |
| | | userBakeupFile (etBackupRemark.Text.Trim ()); |
| | | dialog.Close (); |
| | | }; |
| | | dialog.Show (); |
| | | //弹窗提示上传备份Dialog |
| | | CommonUtlis.Current.ShowUploadToAutomaticBackupDialog (finishAction); |
| | | }; |
| | | |
| | | var back = new Button () { |
| | |
| | | VerticalScrolViewMiddle.RemoveAll (); |
| | | FrameLayoutView.AddChidren (VerticalScrolViewMiddle); |
| | | |
| | | GetHomeDataBackupList (); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取住宅备份数据列表 |
| | | /// </summary> |
| | | void GetHomeDataBackupList () |
| | | { |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Start ("Please wait..."); |
| | | VerticalScrolViewMiddle.RemoveAll (); |
| | | MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); |
| | | }); |
| | | var requestObj = new GetHomeDataBackupPaggerObj () { |
| | | HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | LoginAccessToken = MainPage.LoginUser.LoginTokenString |
| | | }; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (requestObj.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | |
| | | //GetUserFolderObj requestObj = new GetUserFolderObj () { LevelID = UserConfig.Instance.CurrentRegion.Id }; |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); |
| | | var revertObj = MainPage.RequestHttps (API.GetHomeDataBackupPagger, requestJson, urlHead); |
| | | if (revertObj.StateCode.ToUpper () == StateCode.SUCCESS) { |
| | | var data = Newtonsoft.Json.JsonConvert.DeserializeObject<GetBackupListResult> (revertObj.ResponseData.ToString ()); |
| | | //var list = new List<BackupListNameInfo> (); |
| | | //foreach (var data2 in data.PageData) { |
| | | // if (ZigbeeUniqueId != null && data2.GatewayUniqueId != ZigbeeUniqueId) { |
| | | // continue; |
| | | // } |
| | | // if (getLogBackup == false && data2.BackupName == LogBackupName) { |
| | | // //不获取Log备份 |
| | | // continue; |
| | | // } |
| | | // list.Add (data2); |
| | | //} |
| | | |
| | | |
| | | //var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<FolderRes>> (revertObj.ResponseData.ToString ()); |
| | | var revertObj = HttpServerRequest.Current.GetHomeDataBackupList (); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | var data = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupListNameInfoRes>> (revertObj.Data.ToString ()); |
| | | if (data == null) return; |
| | | |
| | | Application.RunOnMainThread (() => { |
| | | foreach (var folder in data.PageData) { |
| | | addRow (folder.BackupName, folder.Id); |
| | | foreach (var folder in data) { |
| | | AddRowView (folder); |
| | | } |
| | | }); |
| | | } else { |
| | | //2020-01-11 刷新一次MasterToken |
| | | if (requestObj.IsOtherAccountCtrl) { |
| | | //if (revertObj.StateCode == "ParameterOrEmpty" || revertObj.StateCode == "NoLogin" || revertObj.StateCode == "HomeIdAndTokenNoConsistent") { |
| | | if (revertObj.StateCode != ErrorCode.NetworkError) { |
| | | UserConfig.Instance.CheckIfNeedGetMasterAccountToken (); |
| | | } |
| | | } |
| | | MainPage.ShowAlertOnMainThread ("Failed to get backup data list!"); |
| | | //提示错误 |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | //var groupNames = service_backup.GetUserGroup (MainPage.LoginUser.MasterID, 0); |
| | | //Application.RunOnMainThread (() => { |
| | | // foreach (UserBackup groupName in groupNames) { |
| | | // addRow (groupName.UserGroup); |
| | | // } |
| | | //}); |
| | | |
| | | } catch { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | } finally { |
| | | Application.RunOnMainThread (() => { |
| | |
| | | }); |
| | | } |
| | | |
| | | void addRow (string groupName, string folderID) |
| | | /// <summary> |
| | | /// 加载view |
| | | /// </summary> |
| | | /// <param name="groupName"></param> |
| | | /// <param name="folderID"></param> |
| | | void AddRowView (BackupListNameInfoRes mBackupFile) |
| | | { |
| | | var rowView = new RowLayout () { |
| | | Height = Application.GetRealHeight (110), |
| | |
| | | BackgroundColor = SkinStyle.Current.DelColor |
| | | }; |
| | | btnDelFile.MouseUpEventHandler += (sender, e) => { |
| | | Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); |
| | | Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.AreYouSureToDeleteFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); |
| | | alert.ResultEventHandler += (sender2, e2) => { |
| | | if (e2) { |
| | | DeleteFolderData (folderID); |
| | | DeleteFolderData (mBackupFile.id); |
| | | } |
| | | }; |
| | | alert.Show (); |
| | | }; |
| | | |
| | | //if (MainPage.LoginUser.AccountType != 1) { |
| | | // rowView.AddRightView (btnDelFile); |
| | | //} |
| | | |
| | | //2020-07-01 当前住宅属于自己的 允许删除备份 |
| | | if (!MainPage.IsAdministrator) { |
| | | //分享住宅隐藏删除备份按钮 |
| | | if (UserConfig.Instance.CurrentRegion.IsOthreShare == false) { |
| | | rowView.AddRightView (btnDelFile); |
| | | } |
| | | |
| | | var btnPoint = new Button () { |
| | | Width = Application.GetRealWidth (10), |
| | | Height = Application.GetRealWidth (10), |
| | | Height = Application.GetRealHeight (10), |
| | | X = Application.GetRealWidth (25), |
| | | Gravity = Gravity.CenterVertical, |
| | | UnSelectedImagePath = "Item/Point.png", |
| | |
| | | var btnName = new Button () { |
| | | Width = Application.GetRealWidth (342), |
| | | Height = LayoutParams.MatchParent, |
| | | Text = groupName.Trim (), |
| | | Text = mBackupFile.folderName.Trim (), |
| | | TextAlignment = TextAlignment.CenterLeft, |
| | | X = Application.GetRealWidth (50), |
| | | TextColor = SkinStyle.Current.TextColor1, |
| | | }; |
| | | rowView.AddChidren (btnName); |
| | | |
| | | 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) => { |
| | | if (e2) { |
| | | DeleteFolderData (folderID); |
| | | } |
| | | }; |
| | | alert.Show (); |
| | | //保存事件 |
| | | Action<string> renameAction = (newName) => { |
| | | RenameFileName (newName, mBackupFile, btnName); |
| | | }; |
| | | |
| | | |
| | | btnName.MouseUpEventHandler += (sender, e) => { |
| | | CommonUtlis.Current.ShowEditTextDialog (mBackupFile.folderName, renameAction, Language.StringByID (R.MyInternationalizationString.rename)); |
| | | }; |
| | | |
| | | var backupIcon = new Button () { |
| | | Width = Application.GetRealWidth (72), |
| | |
| | | Height = Application.GetMinRealAverage (57), |
| | | X = backupIcon.Right + Application.GetRealWidth (20), |
| | | UnSelectedImagePath = "Register/Backup_ restores.png", |
| | | SelectedImagePath = "Register/Backup_ restores_on.png", |
| | | SelectedImagePath = "Register/Backup_ restores.png", |
| | | Gravity = Gravity.CenterVertical, |
| | | }; |
| | | rowView.AddChidren (Backup_restores); |
| | |
| | | }; |
| | | Backup_restores.MouseUpEventHandler += (sender, e) => { |
| | | Backup_restores.IsSelected = false; |
| | | UserBakeupFileDetailedInformation (folderID); |
| | | UserBakeupFileDetailedInformation (mBackupFile.id); |
| | | }; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 请求修改备注 |
| | | /// </summary> |
| | | /// <param name="newName"></param> |
| | | /// <param name="mAlexa"></param> |
| | | /// <param name="btnName"></param> |
| | | void RenameFileName (string newName, BackupListNameInfoRes mBackupFile, Button btnName) |
| | | { |
| | | MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | |
| | | var revertObj = HttpServerRequest.Current.UpdateBackupFolderName (newName, mBackupFile); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | //AmendTheSuccess 修改成功 |
| | | Application.RunOnMainThread (() => { |
| | | mBackupFile.folderName = newName; |
| | | btnName.Text = newName; |
| | | Utlis.ShowAlertOnMainThread (Language.StringByID (R.MyInternationalizationString.AmendTheSuccess)); |
| | | }); |
| | | } else { |
| | | //提示错误 |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | } catch { |
| | | |
| | | } finally { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | | }); |
| | | } |
| | | }); |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 删除某个备份 |
| | | /// </summary> |
| | | /// <param name="folderID"></param> |
| | | void DeleteFolderData (string folderID) |
| | | void DeleteFolderData (string folderId) |
| | | { |
| | | MainPage.Loading.Start ("Please wait..."); |
| | | MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load)); |
| | | |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | var requestObj = new DelHomeAppGatewayNameObj () { |
| | | BackupClassId = folderID, |
| | | HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | LoginAccessToken = MainPage.LoginUser.LoginTokenString |
| | | }; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (requestObj.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | |
| | | //DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID }; |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); |
| | | var revertObj = MainPage.RequestHttps (API.DelHomeAppGatewayName, requestJson, urlHead); |
| | | if (revertObj.StateCode.ToUpper () == StateCode.SUCCESS) { |
| | | Application.RunOnMainThread (() => { |
| | | DatabackupShow (); |
| | | }); |
| | | |
| | | var revertObj = HttpServerRequest.Current.DeleteBackupFolder (folderId); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | GetHomeDataBackupList (); |
| | | } else { |
| | | ShowDelErrorInfo (revertObj.StateCode); |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | } catch { } finally { |
| | | Application.RunOnMainThread (() => { |
| | |
| | | |
| | | } |
| | | |
| | | //2020-01-11 |
| | | /// <summary> |
| | | /// 删除某个备份 |
| | | /// </summary> |
| | | /// <param name="folderID"></param> |
| | | void DeleteFolderDataAfterUploadFailed (string folderID) |
| | | { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Start ("Please wait..."); |
| | | }); |
| | | |
| | | |
| | | try { |
| | | var requestObj = new DelHomeAppGatewayNameObj () { |
| | | BackupClassId = folderID, |
| | | HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | LoginAccessToken = MainPage.LoginUser.LoginTokenString |
| | | }; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (requestObj.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | requestObj.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | |
| | | //DeleteFolderDataObj requestObj = new DeleteFolderDataObj () { Id = folderID }; |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (requestObj); |
| | | var revertObj = MainPage.RequestHttps (API.DelHomeAppGatewayName, requestJson, urlHead); |
| | | if (revertObj.StateCode.ToUpper () == StateCode.SUCCESS) { |
| | | //删除成功 |
| | | } else { |
| | | //删除失败 |
| | | } |
| | | } catch { } finally { |
| | | Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// (2)ParameterOrEmpty,则响应字段中[ErrorInfo]为错误信息,ResponseData则为null |
| | | //3)NoLogin,则响应字段中 [ErrorInfo] 为错误信息为 [无效登录Token!] |
| | | //(5)NoRecord,则响应字段中 [ErrorInfo] 为错误信息为 [确保您所提交 [项目 (住宅)Id不存在!] |
| | | //(6)BackupClassIdNoIsYou, 则响应字段中 [ErrorInfo]为错误信息为 [您所备注名主键 = XXXX并不属于您当前住宅:XXXX] |
| | | //(7)NoPermission, 则响应字段中 [ErrorInfo]为错误信息为 [您并不具有此分享者此住宅的权限!] |
| | | //(8)InsufficientAuthority, 则响应字段中 [ErrorInfo]为错误信息为 [您并不具有此分享者此住宅的完全控制权限!] |
| | | //(9)HomeIdAndTokenNoConsistent, 则响应字段中 [ErrorInfo]为错误信息为 [您当前Token与你当前控制的HomeId不一致!] |
| | | //(10)DeliveryBackNoUpdateDel, 则响应字段中 [ErrorInfo]为错误信息为 [此前提交文件夹Id是属于交付备份, 不能进行更新删除!] |
| | | /// </summary> |
| | | /// <param name="stateCodeStr"></param> |
| | | void ShowDelErrorInfo (string stateCodeStr) |
| | | { |
| | | string mes = ""; |
| | | if (stateCodeStr == "HomeIdAndTokenNoConsistent") { |
| | | //Token 验证失败 |
| | | mes = ErrorCode.HomeIdAndTokenNoConsistent; |
| | | } else if (stateCodeStr == "DeliveryBackNoUpdateDel") { |
| | | //交付备份, 不能删除! |
| | | mes = ErrorCode.DeliveryBackNoUpdateDel; |
| | | } else if (stateCodeStr == ErrorCode.NetworkError) { |
| | | mes = ErrorCode.NetworkError; |
| | | } else { |
| | | mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr; |
| | | |
| | | } |
| | | if (!string.IsNullOrEmpty (mes)) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 用户备份文件 |
| | | /// </summary> |
| | | void userBakeupFile (string groupName) |
| | | { |
| | | //确定要备份该文件的数据 |
| | | //Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureToBackupYourthisFile), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); |
| | | |
| | | //alert.ResultEventHandler += (object sender2, bool e2) => { |
| | | //if (e2) { |
| | | MainPage.Loading.Start ("Upload..."); |
| | | |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | |
| | | //if (string.IsNullOrEmpty (UserConfig.Instance.GatewayMAC)) return; |
| | | //2020-01-11 没绑定MAC不允许上传备份 |
| | | if (!UserConfig.Instance.CheckHomeGatewaysNotEmpty()) { |
| | | MainPage.ShowAlertOnMainThread (ErrorCode.BindGatewayFirst); |
| | | return; |
| | | } |
| | | |
| | | var requestObj = new AddHomeAppGatewayNameObj () { |
| | | HomeId = UserConfig.Instance.CurrentRegion.Id, |
| | | BackupName = groupName, |
| | | LoginAccessToken = MainPage.LoginUser.LoginTokenString, |
| | | GatewayUniqueId = UserConfig.Instance.GatewayMAC |
| | | }; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | 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 () == StateCode.SUCCESS) { |
| | | var DATA = Newtonsoft.Json.JsonConvert.DeserializeObject<AddBackupNameResult> (revertObj.ResponseData.ToString ()); |
| | | var addFolderID = DATA.BackupClassId; |
| | | //UpLoadBackupFileToDB (addFolderID); |
| | | UpLoadBackupFileToDBNew (addFolderID); |
| | | |
| | | |
| | | } else { |
| | | ShowAddHomeAppGatewayNameErrorInfo (revertObj.StateCode); |
| | | |
| | | } |
| | | |
| | | } catch (Exception ex) { |
| | | Shared.Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet), |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | Utlis.WriteLine (ex.Message); |
| | | }); |
| | | } finally { |
| | | Shared.Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | | DatabackupShow (); |
| | | }); |
| | | } |
| | | }); |
| | | // } |
| | | //}; |
| | | //alert.Show (); |
| | | } |
| | | |
| | | /// <summary> |
| | | ///(1)Success 则[调用此接口操作成功],ResponseData则为null |
| | | //(2)ParameterOrEmpty,则响应字段中 [ErrorInfo] 为错误信息, ResponseData则为null |
| | | //(3)NoLogin,则响应字段中 [ErrorInfo] 为错误信息为 [无效登录Token!] |
| | | //(4)NoRecord,则响应字段中 [ErrorInfo] 为错误信息为 [确保您所提交 [项目 (住宅)Id不存在!] |
| | | //(5)Exist, 则响应字段中 [ErrorInfo]为错误信息为 [您在住宅: XXX, 当前备份名: XXXX已存在, 请换个备份再提交!] |
| | | //(6)NoBind, 则响应字段中 [ErrorInfo]为错误信息为 [网关的唯一Id = XXX,与住宅: XXXX并不存在绑定关系!] |
| | | //(7)NoPermission, 则响应字段中 [ErrorInfo]为错误信息为 [您并不具有此分享者此住宅的权限!] |
| | | |
| | | //(8)InsufficientAuthority, 则响应字段中 [ErrorInfo]为错误信息为 [您并不具有此分享者此住宅的完全控制权限!] |
| | | //(9)HomeIdAndTokenNoConsistent, 则响应字段中 [ErrorInfo]为错误信息为 [您当前Token与你当前控制的HomeId不一致!] |
| | | /// </summary> |
| | | /// <param name="stateCodeStr"></param> |
| | | void ShowAddHomeAppGatewayNameErrorInfo (string stateCodeStr) |
| | | { |
| | | string mes = ""; |
| | | if (stateCodeStr == "Exist") { |
| | | //备份名已存在 |
| | | mes = ErrorCode.NameExist; |
| | | } else if (stateCodeStr == "HomeIdAndTokenNoConsistent") { |
| | | //Token 验证失败 |
| | | mes = ErrorCode.HomeIdAndTokenNoConsistent; |
| | | } else if (stateCodeStr == ErrorCode.NetworkError) { |
| | | mes = ErrorCode.NetworkError; |
| | | } else { |
| | | mes = ErrorCode.OperationFailed + ErrorCode.Reason + stateCodeStr; |
| | | |
| | | } |
| | | if (!string.IsNullOrEmpty (mes)) { |
| | | Application.RunOnMainThread (() => { |
| | | new Alert ("", mes, Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | ///// <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 list = new List<FileInfoData> (); |
| | | // list.Add (datainfo); |
| | | |
| | | // var upData = new UploadHomeAppGatewaySubFilesObj (); |
| | | // upData.HomeId = UserConfig.Instance.CurrentRegion.Id; |
| | | // upData.BackupClassId = mBackupClassId; |
| | | // upData.UploadSubFileLists = list; |
| | | // //获取控制主人账号的Token |
| | | // 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 () == StateCode.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 (); |
| | | // // } |
| | | |
| | | // // MainPage.Loading.Hide (); |
| | | // //}); |
| | | //} |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 用户恢复文件 |
| | | /// </summary> |
| | | public void UserBakeupFileDetailedInformation (string BackupClassId) |
| | | public void UserBakeupFileDetailedInformation (string folderId) |
| | | { |
| | | //是否确定恢复该文件数据信息 |
| | | Alert alert = new Alert ("", Language.StringByID (R.MyInternationalizationString.SureToRestoreFileInformation), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); |
| | | Alert alert = new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.SureToRestoreFileInformation), Language.StringByID (R.MyInternationalizationString.Cancel), Language.StringByID (R.MyInternationalizationString.Confrim)); |
| | | alert.ResultEventHandler += (sender2, e2) => { |
| | | if (e2) { |
| | | MainPage.Loading.Start ("Download..."); |
| | | System.Threading.Tasks.Task.Run (() => { |
| | | try { |
| | | var fileNames = IO.FileUtils.ReadFiles (); |
| | | foreach (var fileName in fileNames) { |
| | | if (fileName == UserInfo.GlobalRegisterFile) { |
| | | continue; |
| | | } |
| | | IO.FileUtils.DeleteFile (fileName); |
| | | } |
| | | ReadFilesAndDelete (); |
| | | |
| | | var requestObj2 = new GetHomeDataBackupUploadListPaggerObj (); |
| | | requestObj2.HomeId = UserConfig.Instance.CurrentRegion.Id; |
| | | requestObj2.BackupClassId = BackupClassId; |
| | | requestObj2.PageSetting.PageSize = 999999; |
| | | requestObj2.PageSetting.Page = 1; |
| | | //获取控制主人账号的Token |
| | | requestObj2.LoginAccessToken = MainPage.LoginUser.LoginTokenString; |
| | | string urlHead = MainPage.RequestHttpsHost; |
| | | if (requestObj2.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | requestObj2.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | var revertObj = HttpServerRequest.Current.GetBackupFolderAllFileList (folderId); |
| | | if (revertObj.Code == StateCode.SUCCESS) { |
| | | |
| | | //获取所有文件组名 |
| | | //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 () == StateCode.SUCCESS) { |
| | | var fileListData = Newtonsoft.Json.JsonConvert.DeserializeObject<LoadBackInfoResult> (revertObj2.ResponseData.ToString ()); |
| | | var responseDataObj = fileListData.PageData; |
| | | ////获取文件名字 |
| | | //List<string> listFileName = new List<string> (); |
| | | //foreach (LoadBackupFileNameInfo file in fileListData.PageData) { |
| | | // listFileName.Add (file.BackupFileName); |
| | | //} |
| | | //var responseDataObj = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupInfoRes>> (revertObj2.ResponseData.ToString ()); |
| | | var fileListData = Newtonsoft.Json.JsonConvert.DeserializeObject<List<BackupFileInfoRes>> (revertObj.Data.ToString ()); |
| | | |
| | | var mDownLoad = new DownloadSomeDataBackupObj (); |
| | | mDownLoad.HomeId = UserConfig.Instance.CurrentRegion.Id; |
| | | mDownLoad.BackupClassId = BackupClassId; |
| | | //获取控制主人账号的Token |
| | | mDownLoad.LoginAccessToken = MainPage.LoginUser.LoginTokenString; |
| | | string mUrlHead = MainPage.RequestHttpsHost; |
| | | if (mDownLoad.IsOtherAccountCtrl) { |
| | | urlHead = UserConfig.Instance.MasterAccountRequestBaseUrl; |
| | | mDownLoad.LoginAccessToken = UserConfig.Instance.MasterAccountToken; |
| | | } |
| | | MultiThreadDownload (fileListData, folderId); |
| | | |
| | | MultiThreadDownload (responseDataObj, mDownLoad, mUrlHead); |
| | | |
| | | |
| | | //int index = 0; |
| | | |
| | | //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); |
| | | // } |
| | | |
| | | // MainPage.ShowAlertOnMainThread ("Download failed!"); |
| | | |
| | | // 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 (); |
| | | //} |
| | | } else { |
| | | //提示错误 |
| | | IMessageCommon.Current.ShowErrorInfoAlter (revertObj.Code); |
| | | } |
| | | } catch (Exception ex) { |
| | | Shared.Application.RunOnMainThread (() => { |
| | | new Alert ("", Language.StringByID (R.MyInternationalizationString.CheckInternet), |
| | | new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.CheckInternet), |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | Utlis.WriteLine (ex.ToString ()); |
| | | Shared.Utlis.WriteLine (ex.ToString ()); |
| | | } finally { |
| | | Shared.Application.RunOnMainThread (() => { |
| | | MainPage.Loading.Hide (); |
| | |
| | | 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.RequestHttpsReturnByteNew (API.DownloadSomeDataBackup, requestJson3, 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) { |
| | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | private readonly object SendLocker = new object (); |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | private readonly object DownloadLocker = new object (); |
| | | |
| | | /// <summary> |
| | | /// 多线程下载 |
| | | /// </summary> |
| | | void MultiThreadDownload (List<LoadBackupFileNameInfo> dataList, DownloadSomeDataBackupObj mDownLoad, string mUrlHead, int maxThreads = 5) |
| | | void MultiThreadDownload (List<BackupFileInfoRes> dataList, string folderId, 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" && obj.BackupFileName != CommonConfig.ConfigFile); |
| | | var mFileList = dataList.FindAll ((obj) => obj.fileName != "null" && obj.fileName != UserConfig.configFile && obj.fileName != UserInfo.GlobalRegisterFile && obj.fileName != "AccountListDB" && obj.fileName != CommonConfig.ConfigFile); |
| | | if (maxThreads > mFileList.Count) { |
| | | maxThreads = mFileList.Count; |
| | | } |
| | | |
| | | if (mFileList.Count <= 0) return; |
| | | |
| | | |
| | | int resultCount = mFileList.Count / maxThreads; |
| | | |
| | |
| | | |
| | | for (var j = startIndex1; j <= endIndex1; j++) { |
| | | try { |
| | | //如果失败重新下载,重复3次 |
| | | int errorCount = 0; |
| | | while (errorCount < 3) { |
| | | var result = DownloadSomeDataBackup (mDownLoad, mUrlHead, mFileList [j]); |
| | | if (result) { |
| | | lock (DownloadLocker) { |
| | | index++; |
| | | } |
| | | Application.RunOnMainThread (() => { |
| | | int pro = (int)(index * 1.0 / mFileList.Count * 100); |
| | | MainPage.Loading.Text = pro.ToString () + "%"; |
| | | }); |
| | | errorCount = 3; |
| | | } else { |
| | | errorCount++; |
| | | Utlis.WriteLine ($"下载失败: {mFileList [j].BackupFileName} 次数:{errorCount}"); |
| | | var result = DownloadSomeDataBackup (folderId, mFileList [j]); |
| | | if (result) { |
| | | lock (DownloadLocker) { |
| | | index++; |
| | | } |
| | | |
| | | //index++; |
| | | |
| | | Application.RunOnMainThread (() => { |
| | | int pro = (int)(index * 1.0 / mFileList.Count * 100); |
| | | MainPage.Loading.Text = pro.ToString () + "%"; |
| | | }); |
| | | |
| | | } |
| | | } catch { } finally { |
| | | lock (SendLocker) { |
| | | indexCount++; |
| | | } |
| | | } |
| | | |
| | | //var t1 = DateTime.Now.Second; |
| | | //var result = DownloadSomeDataBackup (mDownLoad, mUrlHead, mFileList [j]); |
| | | //if (result) { |
| | | // index++; |
| | | // Application.RunOnMainThread (() => { |
| | | // int pro = (int)(index * 1.0 / mFileList.Count * 100); |
| | | // MainPage.Loading.Text = pro.ToString () + "%"; |
| | | // }); |
| | | |
| | | //} else { |
| | | // Utlis.WriteLine ($"下载失败: {mFileList [j].BackupFileName} 时间:{DateTime.Now.Second - t1}S"); |
| | | //} |
| | | //indexCount++; |
| | | //Utlis.WriteLine ($"下载线程:{id} 完成index:{j} indexCount: {indexCount}"); |
| | | } |
| | | |
| | |
| | | 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 () == StateCode.SUCCESS) { |
| | | return true; |
| | | } else { |
| | | //提示错误 |
| | | return false; |
| | | } |
| | | } catch { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 上传备份文件 |
| | | /// 多次上传多个文件 |
| | | /// </summary> |
| | | /// <param name="mBackupClassId"></param> |
| | | void UpLoadBackupFileToDBNew (string mBackupClassId, int maxThreads = 20) |
| | | { |
| | | var backuplist = IO.FileUtils.ReadFiles (); |
| | | var mFileList = backuplist.FindAll ((obj) => obj != "null" && obj != UserConfig.configFile && obj != UserInfo.GlobalRegisterFile && obj != "AccountListDB" && obj != CommonConfig.ConfigFile); |
| | | 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; |
| | | //获取控制主人账号的Token |
| | | 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; |
| | | //2020-06-10 修改大图片大文件处理 |
| | | var result = UploadDataBackupNew (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 (); |
| | | }); |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 2020-06-05 需要等待云端增加接口 |
| | | /// 处理大文件和图片上传 |
| | | /// |
| | | /// </summary> |
| | | /// <param name="upData"></param> |
| | | /// <param name="mUrlHead"></param> |
| | | /// <param name="fileList"></param> |
| | | /// <param name="startIndex1"></param> |
| | | /// <param name="endIndex1"></param> |
| | | /// <returns></returns> |
| | | bool UploadDataBackupNew (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]); |
| | | |
| | | if (datainfo.BackupFileContent.Length > 1024 * 10) { |
| | | var upDataBig = new UploadHomeAppGatewaySubFilesBigObj (); |
| | | upDataBig.RequestVersion = upData.RequestVersion; |
| | | upDataBig.HomeId = upData.HomeId; |
| | | upDataBig.BackupClassId = upData.BackupClassId; |
| | | upDataBig.FileName = fileList [j]; |
| | | upDataBig.IsOtherAccountCtrl = upData.IsOtherAccountCtrl; |
| | | |
| | | var revertObj5 = MainPage.RequestHttpsNewBig (API.UploadHomeAppGatewaySingleSubFile, datainfo.BackupFileContent, upDataBig, mUrlHead); |
| | | |
| | | } else { |
| | | 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 () == StateCode.SUCCESS) { |
| | | // return true; |
| | | //} else { |
| | | // //提示错误 |
| | | // return false; |
| | | //if (CommonPage.IsRemote) { |
| | | // SmartHome.MqttCommon.DisConnectRemote("UserBakeupFileDetailedInformation"); |
| | | //} |
| | | this.RemoveFromParent (); |
| | | UserMiddle.Init (true, true); |
| | | EquipmentPublicClass.CheckLinkRemote (UserConfig.Instance.internetStatus); |
| | | new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.RestoreFileIsSuccessfull), |
| | | Language.StringByID (R.MyInternationalizationString.Close)).Show (); |
| | | }); |
| | | |
| | | //2020-11-16 如果失败重新上传,重复3次 |
| | | int errorCount = 0; |
| | | var result = false; |
| | | while (errorCount < 3) { |
| | | var requestJson2 = Newtonsoft.Json.JsonConvert.SerializeObject (mUpData); |
| | | var revertObj2 = MainPage.RequestHttps (API.UploadHomeAppGatewaySubFiles, requestJson2, mUrlHead, MainPage.TIME_OUT_20); |
| | | if (revertObj2.StateCode.ToUpper () == StateCode.SUCCESS) { |
| | | result = true; |
| | | errorCount = 3; |
| | | } else { |
| | | errorCount++; |
| | | //Utlis.WriteLine ($"上传失败({startIndex1}-{endIndex1}),次数:{errorCount}"); |
| | | } |
| | | } |
| | | return result; |
| | | } catch { |
| | | |
| | | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 下载单个备份文件 |
| | | /// </summary> |
| | | /// <param name="mmDownLoad"></param> |
| | | /// <param name="mUrlHead"></param> |
| | | /// <param name="file"></param> |
| | | /// <returns></returns> |
| | | bool DownloadSomeDataBackup (string folderId, BackupFileInfoRes file) |
| | | { |
| | | var requestJson = Newtonsoft.Json.JsonConvert.SerializeObject (new BackupFileDownObj () { |
| | | folderId = folderId, |
| | | fileId = file.id, |
| | | homeId = UserConfig.Instance.CurrentRegion.Id |
| | | }); |
| | | var revertObj = HttpUtil.RequestHttpsDownload (NewAPI.API_POST_File_Down, requestJson, null, UserConfig.Instance.CurrentRegion.regionUrl); |
| | | |
| | | if (revertObj != null) { |
| | | Utlis.WriteLine ("DownloadSomeDataBackup: " + file.fileName); |
| | | IO.FileUtils.WriteFileByBytes (file.fileName, revertObj); |
| | | return true; |
| | | } else { |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | #region 备上传和下载相关接口封装 |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |