Browse Source

1.实现失败处理

huangxiaodong 1 year ago
parent
commit
b4935c44aa

+ 82 - 58
创维盒子/双子星云手机/Class/Set/uploadFile/receiveView/receiveDownloadRecordTableView.m

@@ -69,6 +69,10 @@
     _outSideDataArr = outSideDataArr;
     
     _downloadingArr = [NSMutableArray arrayWithArray:outSideDataArr[0]];
+    for (ShareFileDataModel*model in _downloadingArr) {
+        model.downloadBoxStateType = downloadBoxStateDownloadloading;
+    }
+    
     _downloadDoneArr = [NSMutableArray arrayWithArray:outSideDataArr[1]];
     _downloadfailArr = [NSMutableArray arrayWithArray:outSideDataArr[2]];
     
@@ -154,17 +158,17 @@
             };
 
             cell.didTapPressClick = ^{
-//                if(model.curDownloadStateType == downloadStateUploading){
-//                    model.curDownloadStateType = downloadStateSuspend;
-//                    [weakSelf handleDownloadingStateTapFunBy:YES with:model];
-//                }
-//                else if(model.curDownloadStateType == downloadStateSuspend){
-//                    model.curDownloadStateType = downloadStateUploading;
-//                    [weakSelf handleDownloadingStateTapFunBy:NO with:model];
-//                }
-//                else if(model.curDownloadStateType == downloadStateFail){
-//                    [weakSelf handleUploadFailStateWith:model];
-//                }
+                if(model.downloadBoxStateType == downloadBoxStateDownloadloading){
+                    model.downloadBoxStateType = downloadBoxStateSuspend;
+                    [weakSelf handleDownloadingStateTapFunBy:YES with:model];
+                }
+                else if(model.downloadBoxStateType == downloadStateSuspend){
+                    model.downloadBoxStateType = downloadBoxStateDownloadloading;
+                    [weakSelf handleDownloadingStateTapFunBy:NO with:model];
+                }
+                else if(model.downloadBoxStateType == downloadStateFail){
+                    [weakSelf handleUploadFailStateWith:model];
+                }
             };
         }
     }
@@ -481,36 +485,32 @@
 
 
 #pragma mark 处理上传中的 状态点击事件
-- (void)handleDownloadingStateTapFunBy:(BOOL)isSuspendType with:(couldPhoneFileModel*)model
+- (void)handleDownloadingStateTapFunBy:(BOOL)isSuspendType with:(ShareFileDataModel*)model
 {
-//    if (isSuspendType) {
-//        [[downloadManager shareInstance] suspendDownloadFileFun:NO withModel:model];
-//    }
-//    else{
-//        NSMutableArray*arr = [NSMutableArray new];
-//        [arr addObject:model];
-//        [[downloadManager shareInstance] reDownloadFileFunBy:arr withAll:NO];
-//    }
-//    
-//    [self reloadDataFun];
+    NSString *urlString = model.fileUrl;
+    NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    
+    if (isSuspendType) {
+        [[SGDownloadManager shareManager] supendDownloadWithUrl:requestURLEncodedString];
+    }
+    else{
+        [[SGDownloadManager shareManager] startDownLoadWithUrl:requestURLEncodedString];
+    }
+    
+    [self reloadDataFun];
 }
 
 #pragma mark 处理上传中的 状态点击事件
-- (void)handleUploadFailStateWith:(couldPhoneFileModel*)model{
+- (void)handleUploadFailStateWith:(ShareFileDataModel*)model{
     
-//    [_downloadfailArr removeObject:model];
-//    [_downloadingArr addObject:model];
-//    
-//    [self RefreshAllDataFun];
-//
-//    if(_didClickReUploadBlock){
-//        _didClickReUploadBlock(model);
-//    }
-//
-//    NSMutableArray*arr = [NSMutableArray new];
-//    model.curDownloadStateType = downloadStateWait;
-//    [arr addObject:model];
-//    [[downloadManager shareInstance] reDownloadFileFunBy:arr withAll:NO];
+    [_downloadfailArr removeObject:model];
+    model.downloadBoxStateType = downloadBoxStateDownloadloading;
+    [_downloadingArr addObject:model];
+    [self RefreshAllDataFun];
+    
+    NSString *urlString = model.fileUrl;
+    NSString *requestURLEncodedString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+    [[SGDownloadManager shareManager] startDownLoadWithUrl:requestURLEncodedString];
     
 }
 
@@ -523,16 +523,12 @@
         [weakSelf handldDownloadingDataBy:model];
     });
     
+    //[[SGDownloadManager shareManager] supendDownloadWithUrl:model.url];
 }
 
 - (void)downloadTaskExeSupend:(NSNotification *)notification
 {
-    SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
-
-    //KWeakSelf
-    mainBlock(^{
-        //[weakSelf handldDownloadingDataBy:model];
-    });
+    //SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
     HLog(@"暂停/下载等待中");
 }
 
@@ -555,7 +551,7 @@
 
     KWeakSelf
     mainBlock(^{
-        //[weakSelf handldDownloadingDataBy:model];
+        [weakSelf handldDownloadFailDataBy:model];
     });
     HLog(@"下载失败");
 }
@@ -567,41 +563,69 @@
         return;
     }
     else{
-        _reDownLoadAgainType = YES;
-        [[SGDownloadManager shareManager] startAllDownloadTask];
+        //_reDownLoadAgainType = YES;
     }
     
     //重新下载
-//    NSMutableArray *handleDownloadArr = [NSMutableArray new];
-//    for (ShareFileDataModel * curModel in _downloadingArr) {
-//        if(curModel.downloadBoxStateType != downloadBoxStateSuspend)
-//        {
-//            [handleDownloadArr addObject:curModel];
-//        }
-//    }
-//    
-//    if(handleDownloadArr.count >0){
-//        [[boxDownloadFileManager shareInstance] beginDownloadFilesByUrls:handleDownloadArr];
-//    }
+    NSMutableArray *handleDownloadArr = [NSMutableArray new];
+    for (ShareFileDataModel * curModel in _downloadingArr) {
+        if(curModel.downloadBoxStateType != downloadBoxStateSuspend)
+        {
+            [handleDownloadArr addObject:curModel];
+        }
+    }
+    
+    if(handleDownloadArr.count >0){
+        [[boxDownloadFileManager shareInstance] beginDownloadFilesByUrls:handleDownloadArr];
+    }
 }
 
+#pragma mark 下载失败数据回调处理
+- (void)handldDownloadFailDataBy:(SGDownloadOperation*)model
+{
+    //解码
+    NSString * urlString = [model.url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+
+    for (ShareFileDataModel*dataModel in _downloadingArr) {
+        //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+        if([urlString isEqualToString:dataModel.fileUrl]){
+            dataModel.totalSize = model.totalSize;
+            dataModel.currentSize = model.currentSize;
+            dataModel.downloadBoxStateType = downloadBoxStateFail;
+            
+            [_downloadfailArr insertObject:dataModel atIndex:0];
+            [_downloadingArr removeObject:dataModel];
+            
+            break;
+        }
+    }
+    [self RefreshAllDataFun];
+}
+
+
 #pragma mark 下载中数据回调处理
 - (void)handldDownloadingDataBy:(SGDownloadOperation*)model
 {
+    BOOL canReloadData = YES;
     //解码
     NSString * urlString = [model.url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
 
     for (ShareFileDataModel*dataModel in _downloadingArr) {
         //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
         if([urlString isEqualToString:dataModel.fileUrl]){
-            dataModel.downloadBoxStateType = downloadBoxStateDownloadloading;
             dataModel.totalSize = model.totalSize;
             dataModel.currentSize = model.currentSize;
+            if(dataModel.downloadBoxStateType == downloadBoxStateSuspend){
+                canReloadData = NO;
+            }
+            
             break;
         }
     }
     
-    [self reloadData];
+    if (canReloadData) {
+        [self reloadData];
+    }
 }
 
 #pragma mark 下载完成数据回调处理

+ 0 - 46
创维盒子/双子星云手机/Class/Set/uploadFile/receiveView/receiveView.m

@@ -156,52 +156,6 @@
     [self getBoxDownLoadDataFun];
     [self getBoxSaveDataFun];
     
-//    NSString *urlstr = @"https://media.w3.org/2010/05/sintel/trailer.mp4";
-//    NSString *url2 = @"http://transfertest.armclouding.com:11010/getFile?path=/mnt/media_rw/B80050B2005078F8/电影/IMG_0914.MP4";
-//    
-//    NSString* encodedUrl = [url2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-//    NSURL *url = [NSURL URLWithString:encodedUrl];
-//    
-//    // 创建下载任务
-//    [[SGDownloadManager shareManager] downloadWithURL:url fileType:1 fileSize:0 complete:^(NSDictionary *respose, NSError *error) {
-//        HLog(@"%@---%@",respose, error);
-//    }];
-    
-//    [[netWorkManager shareInstance] cloudPhoneDownloadCallBackCode:url success:^(id  _Nonnull responseObject) {
-//        
-//    } failure:^(NSError * _Nonnull error) {
-//        
-//    }];
-    
-//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-//    NSString *documentDir = [paths lastObject];
-//    
-//    
-//    NSString* encodedUrl = [url2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
-//    NSURL *url = [NSURL URLWithString:encodedUrl];
-//    
-//    NSURLRequest *request = [NSURLRequest requestWithURL:url];
-//    NSURLSessionDownloadTask *task = [[AFHTTPSessionManager manager] downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
-//          NSLog(@"%@", [NSString stringWithFormat:@"当前下载进度:%.2f%%",100.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount]);
-//        } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
-//            NSLog(@"临时文件路径: %@", targetPath);
-//            
-//            NSString *downloadPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent: @"Download"];
-//            //打开文件管理器
-//            NSFileManager *fileManager = [NSFileManager defaultManager];
-//            //创建Download目录
-//            [fileManager createDirectoryAtPath:downloadPath withIntermediateDirectories:YES attributes:nil error:nil];
-//            //拼接文件路径
-//            NSString *filePath = [downloadPath stringByAppendingPathComponent:response.suggestedFilename];
-//            
-//            NSURL *path = [NSURL fileURLWithPath:filePath];
-//            [path URLByAppendingPathComponent:response.suggestedFilename];
-//            return path;
-//        } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
-//            NSLog(@"本地存储路径: %@", filePath);
-//        }];
-//    
-//    [task resume];
 }
 
 #pragma mark 读取保存到盒子的数据库

+ 71 - 9
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/boxDownloadFileManager.m

@@ -78,10 +78,10 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
             if(array && array.count >0){
                 for (ShareFileDataModel * curModel in array) {
                     
-                    if(curModel.saveboxStateType == saveBoxStateFail){
+                    if(curModel.downloadBoxStateType == downloadBoxStateFail){
                         [failArr addObject:curModel];
                     }
-                    else if(curModel.saveboxStateType == saveBoxStateDone){
+                    else if(curModel.downloadBoxStateType == downloadBoxStateDone){
                         [doneArr addObject:curModel];
                     }
                     else{
@@ -220,12 +220,12 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
 #pragma mark 开始下载文件
 - (void)beginDownloadFilesByUrls:(NSArray *)urlArr{
     
-    NSMutableArray*arr =  [[SGDownloadManager shareManager] getAllOperation];
-    if(arr && arr.count > 0){
-        HLog(@"有任务正在下载");
-        [[SGDownloadManager shareManager] startAllDownloadTask];
-        return;
-    }
+//    NSMutableArray*arr =  [[SGDownloadManager shareManager] getAllOperation];
+//    if(arr && arr.count > 0){
+//        HLog(@"有任务正在下载");
+//        [[SGDownloadManager shareManager] startAllDownloadTask];
+//        return;
+//    }
     
     for (ShareFileDataModel *fileModel in urlArr) {
 
@@ -248,6 +248,12 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
 
 }
 
+- (void)downloadTaskExeIng:(NSNotification *)notification
+{
+    SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
+    [self handldDownloadingDataBy:model];
+}
+
 - (void)downloadTaskExeEnd:(NSNotification *)notification
 {
     SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
@@ -259,10 +265,36 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
 - (void)downloadTaskExeError:(NSNotification *)notification
 {
     SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
-
+    [self handldDownloadFailDataBy:model];
     HLog(@"下载失败");
 }
 
+#pragma mark 下载中数据回调处理
+- (void)handldDownloadingDataBy:(SGDownloadOperation*)model
+{
+    //解码
+    NSString * urlString = [model.url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *ingArr = _databaseArr[0];
+        for (ShareFileDataModel*dataModel in ingArr) {
+            //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+            if([urlString isEqualToString:dataModel.fileUrl]){
+                dataModel.downloadBoxStateType = downloadBoxStateDownloadloading;
+                dataModel.totalSize = model.totalSize;
+                dataModel.currentSize = model.currentSize;
+                
+                //更新数据库
+                [dataModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+                                    
+                }];
+                break;
+            }
+        }
+    }
+   
+}
+
 #pragma mark 下载完成数据回调处理
 - (void)handldDownloadDoneDataBy:(SGDownloadOperation*)model
 {
@@ -292,4 +324,34 @@ static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
 
 }
 
+
+#pragma mark 下载失败数据回调处理
+- (void)handldDownloadFailDataBy:(SGDownloadOperation*)model
+{
+    //解码
+    NSString * urlString = [model.url stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+
+    if(_databaseArr && _databaseArr.count == 3 ){
+        NSMutableArray *ingArr = _databaseArr[0];
+        for (ShareFileDataModel*dataModel in ingArr) {
+            //HLog(@"22222222 %@\n%@",urlString,dataModel.fileUrl);
+            if([urlString isEqualToString:dataModel.fileUrl]){
+                [self handleDatabaseArrByDelete:dataModel];
+                
+                dataModel.downloadBoxStateType = downloadBoxStateFail;
+                
+                NSMutableArray *failArr = _databaseArr[2];
+                [failArr insertObject:dataModel atIndex:0];
+                
+                //更新数据库
+                [dataModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+                                    
+                }];
+                break;
+            }
+        }
+    }
+
+}
+
 @end