Bläddra i källkod

1.文件传说列表删除上传中的任务 实现任务取消操作

huangxiaodong 10 månader sedan
förälder
incheckning
18221b2bd1

+ 97 - 30
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadFileManager.m

@@ -461,6 +461,14 @@
     }
     else if(dataModel.curUploadStateType == uploadStateFail){
         //[_fileModelDataArr removeObject:dataModel];
+        
+        //删除操作导致的失败
+        NSMutableArray *ingArr = _databaseArr[0];
+        NSInteger count = ingArr.count;
+        if(count == 0){
+            return;
+        }
+        
         [self handleDatabaseArrDeleteObjectInUploading:dataModel];
         [self handleDatabaseArrAddObjectInFail:dataModel];
     }
@@ -666,39 +674,49 @@
         }
         
         if(!isDelCache){//上传报云机已经存在文件了 查询本地是否有任务记录
-            //[self handleRetryUploadAndDelRecordFun:uploadFileDataMod];
+            [self handleRetryUploadAndDelRecordFun:uploadFileDataMod];
         }
         
         //是否在删除上传中的任务
-//       if(_fileModelDataArr && _fileModelDataArr.count >0)
-//       {
-//           for (uploadFileDataModel *curUploadFileDataMod in _fileModelDataArr)
-//           {
-//               if(curUploadFileDataMod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
-//                   [_fileModelDataArr removeObject:curUploadFileDataMod];
-//                   break;
-//               }
-//           }
-//       }
-//        
-//        if(!isDelUploadingModel){
-//            if(_curUploadFileDataModel.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
-//                isDelUploadingModel = YES;
-//                //[[webSocketManager shareInstance] suspendUploadFileFun];
-//            }
-//        }
-    }
-    
-//    if(isDelUploadingModel){
-//        _isUploadIngType = NO;
-//        if(_fileModelDataArr.count >=1){
-//            [self beginUploadFileFun];
-//        }
-//        else{
-//            _curUploadFileDataModel = nil;
-//            _isSuspendType = NO;
-//        }
-//    }
+       if(_fileModelDataArr && _fileModelDataArr.count >0)
+       {
+           for (uploadFileDataModel *curUploadFileDataMod in _fileModelDataArr)
+           {
+               if(curUploadFileDataMod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
+                   [_fileModelDataArr removeObject:curUploadFileDataMod];
+                   break;
+               }
+           }
+       }
+        
+        if(!isDelUploadingModel){
+            if(_uploadingModelArr && _uploadingModelArr.count >0)
+            {
+                for (uploadFileDataModel *curUploadFileDataMod in _uploadingModelArr)
+                {
+                    if(curUploadFileDataMod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
+                        isDelUploadingModel = YES;
+                        [[nasUploadManager shareInstance] cancelUploadTaskFun];
+                        break;
+                    }
+                }
+            }
+        }
+    }
+    
+    if(isDelUploadingModel){
+        if(!_uploadingModelArr || _uploadingModelArr.count ==0){
+            _isUploadIngType = NO;
+        }
+        
+        if(_fileModelDataArr.count >=1){
+            [self beginUploadFileFun];
+        }
+        else{
+            _curUploadFileDataModel = nil;
+            _isSuspendType = NO;
+        }
+    }
         
     uploadFileDataModel *RefreshUploadFileDataMod = nil;
     if(delArr.count >=  1){
@@ -710,6 +728,55 @@
     
 }
 
+#pragma mark 处理重复上传文件的问题
+- (void)handleRetryUploadAndDelRecordFun:(uploadFileDataModel *)uploadFileDataMod
+{
+    NSLock *lock = [NSLock new];
+    [lock lock];
+    
+    if(!_databaseArr && _databaseArr.count != 3){
+        return;
+    }
+    
+    NSMutableArray * doneArr = _databaseArr[1];
+    NSMutableArray * failArr = _databaseArr[2];
+    
+    BOOL isNeedDelType = YES;
+    
+    for (uploadFileDataModel *doneModel in doneArr) {
+        if([doneModel.localIdentifier isEqualToString:uploadFileDataMod.localIdentifier]){
+            isNeedDelType = NO;
+            break;
+        }
+    }
+    
+    if(isNeedDelType){
+        for (uploadFileDataModel *failModel in failArr) {
+            if([failModel.localIdentifier isEqualToString:uploadFileDataMod.localIdentifier]){
+                isNeedDelType = NO;
+                break;
+            }
+        }
+    }
+    
+    if(isNeedDelType){
+        if(uploadFileDataMod.curUploadFileType == uploadFileTypeVideo){
+            [cachesFileManager removeItemAtPath:uploadFileDataMod.videoFirstImageName type:uploadFileTypeImage error:nil];
+            
+            [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeVideo error:nil];
+        }
+        else{
+            [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeImage error:nil];
+        }
+    }
+    else{//视频文件是要删除的
+        if(uploadFileDataMod.curUploadFileType == uploadFileTypeVideo){
+            [cachesFileManager removeItemAtPath:uploadFileDataMod.filename type:uploadFileTypeVideo error:nil];
+        }
+    }
+    
+    [lock unlock];
+}
 
 - (void)checkHadUploadTaskWithComplete:(custom_complete_B)complete
 {

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

@@ -14,6 +14,10 @@ NS_ASSUME_NONNULL_BEGIN
 +(instancetype)shareInstance;
 
 - (void)beginUploadDataBy:(uploadFileDataModel*)dataModel success:(netWork_Success)success faild:(netWork_Faild)faildStr;
+
+
+#pragma mark 取消任务
+- (void)cancelUploadTaskFun;
 @end
 
 NS_ASSUME_NONNULL_END

+ 6 - 0
创维盒子/双子星云手机/NAS/nasUploadManager/nasUploadManager.m

@@ -327,4 +327,10 @@
     return data;
 }
 
+
+#pragma mark 取消任务
+- (void)cancelUploadTaskFun
+{
+    [self.uploadTask cancel];
+}
 @end