Quellcode durchsuchen

1.文件上传与本地数据库处理

huangxiaodong vor 1 Jahr
Ursprung
Commit
d430a60222

+ 8 - 0
创维盒子/双子星云手机.xcodeproj/project.pbxproj

@@ -161,6 +161,8 @@
 		6B0582812B01C67400D37290 /* uoloadFileRecordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B05827F2B01C67400D37290 /* uoloadFileRecordViewController.m */; };
 		6B0582852B0457C400D37290 /* uploadFileManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0582832B0457C400D37290 /* uploadFileManager.h */; };
 		6B0582862B0457C400D37290 /* uploadFileManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B0582842B0457C400D37290 /* uploadFileManager.m */; };
+		6B0582892B045E0B00D37290 /* uploadFileDataModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B0582872B045E0B00D37290 /* uploadFileDataModel.h */; };
+		6B05828A2B045E0B00D37290 /* uploadFileDataModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B0582882B045E0B00D37290 /* uploadFileDataModel.m */; };
 		6B3F96342AD2A15A008E349E /* netWorkManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3F96322AD2A15A008E349E /* netWorkManager.h */; };
 		6B3F96352AD2A15A008E349E /* netWorkManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3F96332AD2A15A008E349E /* netWorkManager.m */; };
 		6B3F963A2AD2AD0B008E349E /* newWorkInterface.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B3F96392AD2AD0B008E349E /* newWorkInterface.h */; };
@@ -506,6 +508,8 @@
 		6B05827F2B01C67400D37290 /* uoloadFileRecordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uoloadFileRecordViewController.m; sourceTree = "<group>"; };
 		6B0582832B0457C400D37290 /* uploadFileManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploadFileManager.h; sourceTree = "<group>"; };
 		6B0582842B0457C400D37290 /* uploadFileManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uploadFileManager.m; sourceTree = "<group>"; };
+		6B0582872B045E0B00D37290 /* uploadFileDataModel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = uploadFileDataModel.h; sourceTree = "<group>"; };
+		6B0582882B045E0B00D37290 /* uploadFileDataModel.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = uploadFileDataModel.m; sourceTree = "<group>"; };
 		6B3F96322AD2A15A008E349E /* netWorkManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = netWorkManager.h; sourceTree = "<group>"; };
 		6B3F96332AD2A15A008E349E /* netWorkManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = netWorkManager.m; sourceTree = "<group>"; };
 		6B3F96392AD2AD0B008E349E /* newWorkInterface.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = newWorkInterface.h; sourceTree = "<group>"; };
@@ -1151,6 +1155,8 @@
 			children = (
 				6B0582762AFF7C6D00D37290 /* TZAssetModel+imageData.h */,
 				6B0582772AFF7C6D00D37290 /* TZAssetModel+imageData.m */,
+				6B0582872B045E0B00D37290 /* uploadFileDataModel.h */,
+				6B0582882B045E0B00D37290 /* uploadFileDataModel.m */,
 			);
 			path = model;
 			sourceTree = "<group>";
@@ -1624,6 +1630,7 @@
 				18FCE53E2AD136670020F623 /* PlayerViewController+AdjustBtnFrame.h in Headers */,
 				6B05815B2AFC851E00D37290 /* mySetHeadView.h in Headers */,
 				6BF52CAD2AD82EA500A617DB /* PlayerControlButTipView.h in Headers */,
+				6B0582892B045E0B00D37290 /* uploadFileDataModel.h in Headers */,
 				6BF52C972AD5546500A617DB /* SimplePing.h in Headers */,
 				6B3F96342AD2A15A008E349E /* netWorkManager.h in Headers */,
 				184C8ADD2A949DBD00F26650 /* HWVersionModel.h in Headers */,
@@ -2025,6 +2032,7 @@
 				A003F6E327D8428200715CBF /* SceneDelegate.m in Sources */,
 				183AE6552A8A2CF000B11CB0 /* AFHTTPSessionManager.m in Sources */,
 				183AE6582A8A2CF000B11CB0 /* AFNetworkReachabilityManager.m in Sources */,
+				6B05828A2B045E0B00D37290 /* uploadFileDataModel.m in Sources */,
 				18E557322A3C6151005CC84B /* UITextField+SPExtension.m in Sources */,
 				184C8AD12A94980D00F26650 /* CustomerWebViewController.m in Sources */,
 				A08A94FD27E9A4E400C544BB /* NSObject+BGModel.m in Sources */,

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

@@ -0,0 +1,29 @@
+//
+//  uploadFileDataModel.h
+//  隐私保护
+//
+//  Created by xd h on 2023/11/15.
+//
+
+#import "JSONModel.h"
+#import "BGFMDB.h" //添加该头文件,本类就具有了存储功能.
+NS_ASSUME_NONNULL_BEGIN
+
+typedef enum{
+    uploadStateWait = 0,
+    uploadStateUploading,
+    uploadStateSuspend,
+    uploadStateFail,
+    uploadStateDone,//需要去掉imageData
+}uploadStateType;
+
+//self.fileName = [assetModel.asset valueForKey:@"filename"];
+@interface uploadFileDataModel : JSONModel
+//目前上传用到的字段有
+@property (nonatomic, copy)  NSString *filename;
+@property (nonatomic, retain) NSData *_Nullable imageData;
+@property (nonatomic, assign)  uploadStateType uploadType;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 12 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/model/uploadFileDataModel.m

@@ -0,0 +1,12 @@
+//
+//  uploadFileDataModel.m
+//  隐私保护
+//
+//  Created by xd h on 2023/11/15.
+//
+
+#import "uploadFileDataModel.h"
+
+@implementation uploadFileDataModel
+
+@end

+ 4 - 7
创维盒子/双子星云手机/Class/Set/uploadFile/uoloadFileRecordViewController.m

@@ -6,6 +6,8 @@
 //
 
 #import "uoloadFileRecordViewController.h"
+#import "uploadFileManager.h"
+#import "uploadFileDataModel.h"
 
 @interface uoloadFileRecordViewController ()
 
@@ -32,14 +34,9 @@
 
 -(void)gotoUploadFile:(NSMutableArray*)indexPathsForSelectedItems
 {
-    _indexPathsForSelectedItems = indexPathsForSelectedItems;
     
-    if(indexPathsForSelectedItems.count > 0){
-        TZAssetModel* model = _indexPathsForSelectedItems[0];
-        
-        [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileBeginNotification object:model];
-    }
-
+    _indexPathsForSelectedItems = [[uploadFileManager shareInstance] handlTZAssetModelToUploadFileDataFunBy:indexPathsForSelectedItems];
+    
 }
 
 @end

+ 20 - 0
创维盒子/双子星云手机/Class/Set/uploadFile/uploadFileManager/uploadFileManager.h

@@ -6,12 +6,32 @@
 //
 
 #import <Foundation/Foundation.h>
+#import "uploadFileDataModel.h"
+#import "TZImageManager.h"
+#import "TZAssetModel+imageData.h"
+
+#define upLoadFile_image_tableName @"upLoadFile_image_tableName"
+#define upLoadFile_Video_tableName @"upLoadFile_Video_tableName"
 
 NS_ASSUME_NONNULL_BEGIN
 
+#define custom_complete_B void(^_Nullable)(BOOL isSuccess)
+
 @interface uploadFileManager : NSObject
 +(uploadFileManager *)shareInstance;
 
+//排队等待上传的文件列表
+@property (nonatomic, strong) NSMutableArray * _Nullable fileModelDataArr;
+@property (nonatomic, strong) uploadFileDataModel *curUploadFileDataModel;//当前上传的文件
+
+//把TZAssetModel 转成 我们需要上传的model
+- (NSMutableArray*)handlTZAssetModelToUploadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems;
+
+//文件上传完成
+- (void)uploadFileDoneFun;
+
+//修改文件上传的状态
+- (void)changeUploadFileState:(uploadStateType)curUploadStateType complete:(custom_complete_B)complete;
 @end
 
 NS_ASSUME_NONNULL_END

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

@@ -32,4 +32,97 @@ static uploadFileManager * cur_uploadFileShareInstance = nil;
     return self;
 }
 
+
+//把TZAssetModel 转成 我们需要上传的model
+- (NSMutableArray*)handlTZAssetModelToUploadFileDataFunBy:(NSMutableArray*)indexPathsForSelectedItems
+{
+    _fileModelDataArr = [NSMutableArray new];
+    for (TZAssetModel * model in indexPathsForSelectedItems) {
+        uploadFileDataModel * curModel = [uploadFileDataModel new];
+        curModel.imageData = model.imageData;
+        curModel.filename = [model.asset valueForKey:@"filename"];
+        curModel.uploadType = uploadStateWait;
+        [_fileModelDataArr addObject:curModel];
+        
+        //保存到数据库
+        curModel.bg_tableName = upLoadFile_image_tableName;
+        [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+            HLog(@"%@ 写入 %@", curModel.filename, isSuccess ? @"成功":@"失败");
+        }];
+    }
+    
+    if(_fileModelDataArr.count > 0){
+        [self beginUploadFileFun];
+    }
+    
+    return _fileModelDataArr;
+}
+
+- (void)beginUploadFileFun
+{
+    _curUploadFileDataModel = _fileModelDataArr.firstObject;
+    
+    [[NSNotificationCenter defaultCenter] postNotificationName:uploadFileBeginNotification object:_curUploadFileDataModel];
+}
+
+//修改文件上传的状态
+- (void)changeUploadFileState:(uploadStateType)curUploadStateType complete:(custom_complete_B)complete
+{
+//    _curUploadFileDataModel.imageData = nil;
+//    _curUploadFileDataModel.uploadType = uploadStateDone;
+//
+    
+    NSNumber * numberUploadState = nil;
+    
+    if(curUploadStateType == uploadStateDone)
+    {
+        numberUploadState =  [NSNumber numberWithInt:uploadStateUploading];
+    }
+    else{
+        numberUploadState =  [NSNumber numberWithInt:uploadStateDone];
+    }
+    
+    NSString* where = nil;
+    
+    if(curUploadStateType == uploadStateDone)
+    {
+        where = [NSString stringWithFormat:@"where %@=%@ and %@=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"uploadType"),bg_sqlValue(numberUploadState)];
+    }
+    else
+    {
+        where = [NSString stringWithFormat:@"where %@=%@ and %@!=%@ ",bg_sqlKey(@"filename"),bg_sqlValue(_curUploadFileDataModel.filename),bg_sqlKey(@"uploadType"),bg_sqlValue(numberUploadState)];
+    }
+    
+    
+    
+    [uploadFileDataModel bg_findAsync:upLoadFile_image_tableName where:where complete:^(NSArray * _Nullable array) {
+        for (uploadFileDataModel * curModel in array) {
+            curModel.uploadType = curUploadStateType;
+            
+            if(curUploadStateType == uploadStateDone){
+                curModel.imageData = [NSData data];
+            }
+            
+            [curModel bg_saveOrUpdateAsync:^(BOOL isSuccess) {
+                HLog(@"%@ 写入 %@", self->_curUploadFileDataModel.filename, isSuccess ? @"成功":@"失败");
+            }];
+        }
+        
+        complete(YES);
+    }];
+    
+
+}
+
+- (void)uploadFileDoneFun
+{
+    [self changeUploadFileState:uploadStateDone complete:^(BOOL isSuccess) {
+        [self->_fileModelDataArr removeObject:self->_curUploadFileDataModel];
+         
+        if(self->_fileModelDataArr.count > 0){
+            [self beginUploadFileFun];
+        }
+    }];
+}
+
 @end

+ 2 - 3
创维盒子/双子星云手机/CloudPlayer/PlayerViewController+otherDelegate.h

@@ -6,9 +6,8 @@
 //
 
 #import "PlayerViewController.h"
-#import "TZImageManager.h"
-#import "TZAssetModel+imageData.h"
-
+#import "uploadFileDataModel.h"
+#import "uploadFileManager.h"
 NS_ASSUME_NONNULL_BEGIN
 
 @interface PlayerViewController (otherDelegate)

+ 28 - 10
创维盒子/双子星云手机/CloudPlayer/PlayerViewController+otherDelegate.mm

@@ -29,13 +29,18 @@
 #pragma mark 监听文件开始的的通知
 - (void)beginGotoUploadFileFun:(NSNotification *)notification
 {
-    TZAssetModel *assetModel = [notification object];
-    HLog(@"%@",assetModel);
+    uploadFileDataModel *uploadFileDataMod = [notification object];
+    HLog(@"%@",uploadFileDataMod);
+    
+    if(![uploadFileDataMod isKindOfClass:[uploadFileDataMod class]]){
+        HLog(@"上传的文件类型不对");
+        return;
+    }
     
     if(!self.taskUid){
         self.taskUid = [iTools getTaskUidStr];
-        self.fileName = [assetModel.asset valueForKey:@"filename"];
-        self.AllFileData = assetModel.imageData;
+        self.fileName = uploadFileDataMod.filename;
+        self.AllFileData = uploadFileDataMod.imageData;
         self.indexOfUploadFlie = 0;
         
         HLog(@"%@  %@",self.taskUid,self.fileName);
@@ -70,13 +75,14 @@
                         }
                         
                         if(taskUid &&  [taskUid isEqualToString:self.taskUid]){
+                            [[uploadFileManager shareInstance] changeUploadFileState:uploadStateUploading complete:^(BOOL isSuccess) {
+                                
+                            }];
                             //答复的taskUid 跟申请的一致 开发发送内容
                             [self upLoadFileFun];
                         }
                     }
-                    mainBlock(^{
-                        //申请成功;
-                    });
+                   
                 }
             }
         }
@@ -91,14 +97,26 @@
 
 - (void)upLoadFileFunServiceResponseFun:(NSDictionary *)dataDict
 {
-    if (self.indexOfUploadFlie < self.cutFileDataArr.count - 1) {
+    
+    if(self.indexOfUploadFlie == self.cutFileDataArr.count -1){
+        HLog(@"111");
+    }
+    
+    if (self.indexOfUploadFlie < self.cutFileDataArr.count -1) {
         self.indexOfUploadFlie ++;
         [self upLoadFileFun];
-        
-        
     }
     else{
         HLog(@"上传完成");
+        
+        //上传数据清空
+        self.taskUid = nil;
+        self.fileName = nil;
+        self.AllFileData = nil;
+        self.indexOfUploadFlie = 0;
+        self.cutFileDataArr = nil;
+        
+        [[uploadFileManager shareInstance] uploadFileDoneFun];
     }
 }
 //- (int)getBCC:(NSData*)data