Bladeren bron

1.修复备份相关bug

huangxiaodong 1 jaar geleden
bovenliggende
commit
847ec5cb4d

+ 5 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/model/photosBackupsTaskModel.h

@@ -57,6 +57,11 @@ typedef enum{
 @property (nonatomic, assign) NSTimeInterval  preTimeInterval;//计算速度用
 @property (nonatomic, assign) NSTimeInterval  curTimeInterval;//计算速度用
 @property (nonatomic, copy) NSString *backupsPath;//备份路径
+
+//1.4.2
+@property (nonatomic, copy) NSString *failTaskLocalIdentifier;//失败的
+@property (nonatomic, assign) NSInteger oneFileFailCount;//单个文件尝试上次失败 次数
+@property (nonatomic, copy) NSString *curFileLocalIdentifier;//当前要上传的文件
 @end
 
 NS_ASSUME_NONNULL_END

+ 3 - 0
创维盒子/双子星云手机/NAS/nasBackupsManager/nasBackupsManager.h

@@ -21,7 +21,10 @@ NS_ASSUME_NONNULL_BEGIN
 - (void)AutohandlePhotosBackupsFun;
 - (void)handlePhotosBackupsFun;
 - (void)getDataWrongToChangeFailFun;
+//1.4.2之前
 - (void)changeBackupsFileStateToFailWith:(NSString*)errorStr;
+//1.4.2之后
+- (void)changeBackupsFileStateToFailWithAfter142:(NSString*)errorStr;
 
 //文件备份完成
 - (void)backupsFileDoneFun;

+ 46 - 5
创维盒子/双子星云手机/NAS/nasBackupsManager/nasBackupsManager.m

@@ -140,15 +140,20 @@
             if(self->_lastModel
                && self->_lastModel.totalLocalIdentifier
                && (self->_lastModel.backupsPath && [self->_lastModel.backupsPath isEqualToString:taskModel.backupsPath])){//相册备份排重
-                taskModel.curTaskLocalIdentifier = [weakSelf AlbumBackupsHandleNew:taskModel];
-                
                 taskModel.PreDidBackupsCount = self->_lastModel.PreDidBackupsCount + self->_lastModel.didBackupsCount;
+                taskModel.curTaskLocalIdentifier = [weakSelf AlbumBackupsHandleNew:taskModel];
             }
             else{
                 taskModel.curTaskLocalIdentifier = allLocalIdentifier;
             }
             
-            taskModel.count = [taskModel.curTaskLocalIdentifier componentsSeparatedByString:@"&"].count;
+            
+            if(taskModel.curTaskLocalIdentifier.length == 0){
+                taskModel.count = 0;
+            }
+            else{
+                taskModel.count = [taskModel.curTaskLocalIdentifier componentsSeparatedByString:@"&"].count;
+            }
             
             HLog(@"2 bg_id:%@",taskModel.bg_id);
             
@@ -171,7 +176,7 @@
     NSArray* preLocalIdentifierArr = [_lastModel.totalLocalIdentifier componentsSeparatedByString:@"&"];
     
     //处理异常 (上次没有备份完成)
-    NSInteger totalBackupNum = _lastModel.PreDidBackupsCount + _lastModel.failCount;
+    NSInteger totalBackupNum = _lastModel.PreDidBackupsCount + _lastModel.didBackupsCount + _lastModel.failCount;
     if(totalBackupNum < preLocalIdentifierArr.count){//preLocalIdentifierArr 改为已经备份过的
         preLocalIdentifierArr = [preLocalIdentifierArr subarrayWithRange:NSMakeRange(0,totalBackupNum)];
     }
@@ -195,6 +200,14 @@
         [allLocalIdentifier appendString:newlocalIdentifier];
     }
     
+    //把上传失败的再次加上处理
+    if (_lastModel.failTaskLocalIdentifier) {
+        [allLocalIdentifier appendString:@"&"];
+        [allLocalIdentifier appendString:_lastModel.failTaskLocalIdentifier];
+        //清空
+        _lastModel.failTaskLocalIdentifier = @"";
+    }
+    
     return allLocalIdentifier;
 }
 
@@ -206,7 +219,7 @@
     
     _curPhotosBackupsTaskMod.LocalIdentifierArr = [backupsTaskModel.curTaskLocalIdentifier componentsSeparatedByString:@"&"];
     
-    if(_curPhotosBackupsTaskMod.LocalIdentifierArr.count == 0){
+    if(_curPhotosBackupsTaskMod.LocalIdentifierArr.count == 0 ||_curPhotosBackupsTaskMod.curTaskLocalIdentifier.length == 0){
         
         _curPhotosBackupsTaskMod.didBackupsCount = 0;
         _curPhotosBackupsTaskMod.curBackupsState = backupsStateDone;
@@ -255,6 +268,7 @@
     }
     
     NSString *curLocalIdentifier = _curPhotosBackupsTaskMod.LocalIdentifierArr[index];
+    _curPhotosBackupsTaskMod.curFileLocalIdentifier = curLocalIdentifier;
     
     if(!curLocalIdentifier || curLocalIdentifier.length == 0)
     {
@@ -350,6 +364,31 @@
     [self changeBackupsFileStateFun];
 }
 
+#pragma mark 1.4.2的失败处理
+- (void)changeBackupsFileStateToFailWithAfter142:(NSString*)errorStr
+{
+    if(_curPhotosBackupsTaskMod.oneFileFailCount <= 3){
+        _curPhotosBackupsTaskMod.oneFileFailCount ++;
+        [[nasMixBackupsManager shareManager] cancelUploadAllTaskFun];
+        
+        //重新开始
+        [self beginBackupsFileFun];
+    }
+    else{
+        
+        NSString * failTaskLocalIdentifier = nil;
+        if(_curPhotosBackupsTaskMod.failTaskLocalIdentifier && _curPhotosBackupsTaskMod.failTaskLocalIdentifier.length > 0){
+            failTaskLocalIdentifier = [[NSString alloc] initWithFormat:@"%@&%@",_curPhotosBackupsTaskMod.failTaskLocalIdentifier,_curPhotosBackupsTaskMod.curFileLocalIdentifier];
+        }
+        else{
+            failTaskLocalIdentifier = [[NSString alloc] initWithFormat:@"%@",_curPhotosBackupsTaskMod.curFileLocalIdentifier];
+        }
+        
+        _curPhotosBackupsTaskMod.oneFileFailCount = 0;
+        [self getDataWrongToChangeFailFun];
+    }
+}
+
 - (void)RefreshDatabaseFun
 {
     HLog(@"3 bg_id:%@",_curPhotosBackupsTaskMod.bg_id);
@@ -429,6 +468,8 @@
     [self deleteVideoFun];
     _curPhotosBackupsTaskMod.didBackupsCount += 1;
     
+    _curPhotosBackupsTaskMod.oneFileFailCount = 0;
+    
 //    if(!_curPhotosBackupsTaskMod.didBackupsOneFileType)
 //    {
 //        _curPhotosBackupsTaskMod.curTaskBackupsCount += 1;