Ver código fonte

1.文件上传

huangxiaodong 2 anos atrás
pai
commit
39aa69bd92

+ 2 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordTableView.h

@@ -7,6 +7,7 @@
 
 #import <UIKit/UIKit.h>
 #import "uploadFileRecordTableViewHeadView.h"
+#import "uploadFileDataModel.h"
 
 NS_ASSUME_NONNULL_BEGIN
 
@@ -16,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (nonatomic,assign) BOOL isSelectAllType;
 
 @property (nonatomic,copy) void (^didLongPressClick)(void);
+@property (nonatomic,copy) void (^didClickReUploadBlock)(uploadFileDataModel* model);
 
 -(void)reloadDataFun;
 #pragma mark 单个点击选中后删除

+ 17 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/photoView/uploadFileRecordTableView.m

@@ -108,6 +108,9 @@
             else if(model.curUploadStateType == uploadStateSuspend){
                 [weakSelf handleUploadingStateTapFunBy:NO with:model];
             }
+            else if(model.curUploadStateType == uploadStateFail){
+                [weakSelf handleUploadFailStateWith:model];
+            }
         };
     }
     
@@ -276,4 +279,18 @@
     }
     
 }
+
+#pragma mark 处理上传中的 状态点击事件
+- (void)handleUploadFailStateWith:(uploadFileDataModel*)model{
+    NSMutableArray*arr = [NSMutableArray new];
+    [arr addObject:model];
+    [[uploadFileManager shareInstance] reUploadFileFunBy:arr];
+    
+    [_curDataArr removeObject:model];
+    [self reloadDataFun];
+    
+    if(_didClickReUploadBlock){
+        _didClickReUploadBlock(model);
+    }
+}
 @end

+ 81 - 57
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.m

@@ -35,7 +35,7 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 #pragma mark 读取数据库数据
 - (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete
 {
-    if(_databaseArr && !isReGet){
+    if(_databaseArr && _databaseArr.count == 3 && !isReGet){
         complete(_databaseArr);
         return;
     }
@@ -43,45 +43,47 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
     _databaseArr = [NSMutableArray new];
     
     KWeakSelf
-    [uploadFileDataModel bg_findAllAsync:upLoadFile_image_tableName complete:^(NSArray * _Nullable array) {
-        NSMutableArray *failArr = [NSMutableArray new];
-        NSMutableArray *doneArr = [NSMutableArray new];
-        NSMutableArray *otherArr = [NSMutableArray new];
-        
-            for (uploadFileDataModel * curModel in array) {
-                
-                //图片 和视频 还原
-                if(curModel.curUploadFileType == uploadFileTypeImage){
-                    NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeImage];
-                    curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
-                }
-                else if(curModel.curUploadFileType == uploadFileTypeVideo){
-                    NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.videoFirstImageName type:uploadFileTypeImage];
-                    curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
+    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+        [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+            NSMutableArray *failArr = [NSMutableArray new];
+            NSMutableArray *doneArr = [NSMutableArray new];
+            NSMutableArray *otherArr = [NSMutableArray new];
+            
+                for (uploadFileDataModel * curModel in array) {
                     
-                    if(curModel.curUploadStateType != uploadStateDone){
-                        NSString*videoPathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeVideo];
-                        curModel.videoData = [NSData dataWithContentsOfFile:videoPathStr];
+                    //图片 和视频 还原
+                    if(curModel.curUploadFileType == uploadFileTypeImage){
+                        NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeImage];
+                        curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
+                    }
+                    else if(curModel.curUploadFileType == uploadFileTypeVideo){
+                        NSString*pathStr = [cachesFileManager getFilePathWithName:curModel.videoFirstImageName type:uploadFileTypeImage];
+                        curModel.imageData = [NSData dataWithContentsOfFile:pathStr];
+                        
+                        if(curModel.curUploadStateType != uploadStateDone){
+                            NSString*videoPathStr = [cachesFileManager getFilePathWithName:curModel.filename type:uploadFileTypeVideo];
+                            curModel.videoData = [NSData dataWithContentsOfFile:videoPathStr];
+                        }
+                    }
+                    
+                    if(curModel.curUploadStateType == uploadStateFail){
+                        [failArr addObject:curModel];
+                    }
+                    else if(curModel.curUploadStateType == uploadStateDone){
+                        [doneArr addObject:curModel];
+                    }
+                    else{
+                        [otherArr addObject:curModel];
                     }
                 }
-                
-                if(curModel.curUploadStateType == uploadStateFail){
-                    [failArr addObject:curModel];
-                }
-                else if(curModel.curUploadStateType == uploadStateDone){
-                    [doneArr addObject:curModel];
-                }
-                else{
-                    [otherArr addObject:curModel];
-                }
-            }
-        
-        [self->_databaseArr addObject:otherArr];
-        [self->_databaseArr addObject:doneArr];
-        [self->_databaseArr addObject:failArr];
-        
-        complete(self->_databaseArr);
-    }];
+            
+            [self->_databaseArr addObject:otherArr];
+            [self->_databaseArr addObject:doneArr];
+            [self->_databaseArr addObject:failArr];
+            
+            complete(self->_databaseArr);
+        }];
+    });
 
 }
 
@@ -117,9 +119,13 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         
         //保存到数据库
         curModel.bg_tableName = upLoadFile_image_tableName;
-        [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
-            HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
-        }];
+        
+        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
+            [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+                HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
+            }];
+        });
+        
     }
     
     KWeakSelf
@@ -127,29 +133,44 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
         
         [self getDataInDatabaseFun:YES complete:^(NSMutableArray * _Nonnull Arr) {
             complete(Arr);
+            [weakSelf handleUploadFileModelBg_idFun:Arr];
         }];
         
         //骚操作 重新查出来 拿到bg_id
-        [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName limit:_fileModelDataArr.count orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
-            
-            for (int i=0; i<array.count; i++) {
-                uploadFileDataModel *bg_mod  = array[i];
-                
-                for (uploadFileDataModel *data_mod in self->_fileModelDataArr) {
-                    if([data_mod.filename isEqualToString:bg_mod.filename]){
-                        data_mod.bg_id = bg_mod.bg_id;
-                        //HLog(@"bg_id:%@",data_mod.bg_id);
-                        break;
-                    }
-                }
-            }
-            
-            [weakSelf beginUploadFileFun];
-        }];
+//        [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName limit:_fileModelDataArr.count orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
+//
+//            for (int i=0; i<array.count; i++) {
+//                uploadFileDataModel *bg_mod  = array[i];
+//
+//                for (uploadFileDataModel *data_mod in self->_fileModelDataArr) {
+//                    if([data_mod.filename isEqualToString:bg_mod.filename]){
+//                        data_mod.bg_id = bg_mod.bg_id;
+//                        //HLog(@"bg_id:%@",data_mod.bg_id);
+//                        break;
+//                    }
+//                }
+//            }
+//
+//            [weakSelf beginUploadFileFun];
+//        }];
         
     }
 }
 
+#pragma mark 处理当前的model 加上bg_id
+- (void)handleUploadFileModelBg_idFun:(NSMutableArray*)totalArr
+{
+    if(!totalArr || totalArr.count != 3){
+        return;
+    }
+    
+    NSMutableArray *curArr = totalArr[0];
+    NSArray *UploadArr = [curArr subarrayWithRange:NSMakeRange(0, _fileModelDataArr.count-1)];
+    [_fileModelDataArr removeAllObjects];
+    [_fileModelDataArr addObjectsFromArray:UploadArr];
+    [self beginUploadFileFun];
+}
+
 - (void)beginUploadFileFun
 {
     _isSuspendType = NO;
@@ -252,7 +273,10 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
 //某个文件重新上传
 - (void)reUploadFileFunBy:(NSMutableArray*)Arr
 {
-    _fileModelDataArr = Arr;
+    if(!_fileModelDataArr){
+        _fileModelDataArr = [NSMutableArray new];
+    }
+    [_fileModelDataArr addObjectsFromArray:Arr];
     [self beginUploadFileFun];
 }
 

+ 34 - 1
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileRecordViewController.m

@@ -156,6 +156,10 @@
         weakSelf.isEditType = YES;
     };
     
+    _rightTableView.didClickReUploadBlock = ^(uploadFileDataModel * _Nonnull model) {
+        [weakSelf didClickReUploadFun:model];
+    };
+    
     _uploadFileRecordBgScorllV.contentSize = CGSizeMake(SCREEN_W*3.0, curHeight);
     
     _leftHeadView =  [[uploadFileRecordTableViewHeadView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_W, 40)];
@@ -325,6 +329,11 @@
     [[uploadFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) {
         //[weakSelf setRecordBodyDataFunBy:Arr];
         
+        if(!Arr ||Arr.count != 3){
+            HLog(@"数据库出错\n\n\n");
+            return;
+        }
+        
         NSMutableArray *curLoadIngArr = Arr[0];
         //不是上传视频和进来的  所以上传状态(上传中和等待)改为暂停
         if(self->_isNotUploadingType && ![uploadFileManager shareInstance].isUploadIngType){
@@ -435,7 +444,7 @@
         
         NSInteger index = 0;
         for (uploadFileDataModel*mod in curArr) {
-            HLog(@"bg_id:%@ ?=? %@",mod.bg_id,uploadFileDataMod.bg_id);
+            HLog(@"%@ bg_id:%@ ?=? %@",mod.filename,mod.bg_id,uploadFileDataMod.bg_id);
             
             if(mod.bg_id.integerValue == uploadFileDataMod.bg_id.integerValue){
                 
@@ -746,6 +755,30 @@
     }];
 }
 
+#pragma mark 失败重传
+- (void)didClickReUploadFun:(uploadFileDataModel*)model{
+    
+    if(![model isKindOfClass:[uploadFileDataModel class]]){
+        return;
+    }
+    
+    NSMutableArray *curArr = _leftTableView.curDataArr;
+    
+    BOOL isNeedToAdd = YES;
+    
+    for (uploadFileDataModel*mod in curArr) {
+        if(mod.bg_id.integerValue == model.bg_id.integerValue){
+            isNeedToAdd = NO;
+            break;
+        }
+    }
+    
+    if(isNeedToAdd){
+        [curArr addObject:model];
+    }
+    
+    [_leftTableView reloadDataFun];
+}
 
 //-(void)backBtnPressed{
 //    [super backBtnPressed];