// // receiveView.m // 双子星云手机 // // Created by xd h on 2024/5/23. // #import "receiveView.h" #import "receiveHeadView.h" #import "receiveDownloadRecordTableView.h" #import "receiveSaveRecordTableView.h" #import "boxSaveFileManager.h" #import "downStatusModel.h" #import "boxDownloadFileManager.h" #import "AFHTTPSessionManager.h" #import "SGDownloadManager.h" @interface receiveView () { } @property(nonatomic,strong) receiveHeadView * curReceiveHeadView; @property(nonatomic,strong) receiveDownloadRecordTableView * downloadRecordTableView; @property(nonatomic,strong) receiveSaveRecordTableView * saveRecordTableView; @end @implementation receiveView - (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; [self setBackgroundColor:[UIColor whiteColor]]; _isReceiveType = 1; [self drawAnyView]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadTaskExeIng:) name:SGDownloadTaskExeing object:nil]; return self; } - (void)drawAnyView{ _curReceiveHeadView = [[receiveHeadView alloc] init]; [self addSubview:_curReceiveHeadView]; [_curReceiveHeadView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0); make.right.mas_equalTo(0); make.top.mas_equalTo(0); make.height.mas_equalTo(40); }]; KWeakSelf #pragma mark 点击接收的下载或者保存 _curReceiveHeadView.didClickbuttonFun = ^(NSInteger tag) { [weakSelf didClickHeadButtonFun:tag]; }; _downloadRecordTableView = [[receiveDownloadRecordTableView alloc] init]; [self addSubview:_downloadRecordTableView]; [_downloadRecordTableView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0); make.right.mas_equalTo(0); make.top.equalTo(_curReceiveHeadView.mas_bottom).offset(0); make.bottom.mas_equalTo(40); }]; _downloadRecordTableView.didLongPressClick = ^{ [weakSelf handleLongPressClickFun]; }; _saveRecordTableView = [[receiveSaveRecordTableView alloc] init]; _saveRecordTableView.hidden = YES; [self addSubview:_saveRecordTableView]; [_saveRecordTableView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.mas_equalTo(0); make.right.mas_equalTo(0); make.top.equalTo(_curReceiveHeadView.mas_bottom).offset(0); make.bottom.mas_equalTo(40); }]; _saveRecordTableView.didLongPressClick = ^{ [weakSelf handleLongPressClickFun]; }; } #pragma mark 长按事件传出去 - (void)handleLongPressClickFun { if(self->_didLongPressClick){ self->_didLongPressClick(); } } #pragma mark 点击下载和接收 - (void)didClickHeadButtonFun:(NSInteger)tag { _isReceiveType = tag; if(tag == 1){ _downloadRecordTableView.hidden = NO; _saveRecordTableView.hidden = YES; } else if(tag == 2){ _downloadRecordTableView.hidden = YES; _saveRecordTableView.hidden = NO; } } - (void)setIsReceiveType:(NSInteger)isReceiveType { _isReceiveType = isReceiveType; if(isReceiveType == 2){ [_curReceiveHeadView didClickButFun:_curReceiveHeadView.saveButton]; } } - (void)setIsEditType:(BOOL)isEditType{ _isEditType = isEditType; if(_isReceiveType == 1){ _downloadRecordTableView.isEditType = isEditType; } else{ _saveRecordTableView.isEditType = isEditType; } } #pragma mark 点击全选 - (void)setIsSelectAllType:(BOOL)isSelectAllType { if(_isReceiveType == 1){ _downloadRecordTableView.isSelectAllType = isSelectAllType; } else{ _saveRecordTableView.isSelectAllType = isSelectAllType; } } - (void)downloadTaskExeIng:(NSNotification *)notification { SGDownloadOperation *model = notification.userInfo.allValues.firstObject; mainBlock(^{ //[self refreshUIWithModel:model]; }); HLog(@"下载中 %lld",model.currentSize); } #pragma mark 获取本地数据库数据 - (void)getAllDataFun{ [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 读取保存到盒子的数据库 - (void)getBoxSaveDataFun { KWeakSelf [[boxSaveFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) { [weakSelf AferGetBoxSaveDataBy:Arr]; }]; } - (void)AferGetBoxSaveDataBy:(NSMutableArray*)arr { _saveRecordTableView.outSideDataArr = arr; [self checkSaveFileToBoxStateFun]; } - (NSMutableArray*)selectModelArr { if(_isReceiveType == 1){ return _downloadRecordTableView.selectModelArr; } else{ return _saveRecordTableView.selectModelArr; } return [NSMutableArray new]; } #pragma mark 单个点击选中后删除 - (void)deleteModelOneByOneFun{ if(_isReceiveType == 1){ [_downloadRecordTableView deleteModelOneByOneFun]; } else{ [_saveRecordTableView deleteModelOneByOneFun]; } } #pragma mark 查询保存到盒子的下载状态 - (void)checkSaveFileToBoxStateFun { NSMutableArray *checkArr = _saveRecordTableView.outSideDataArr.firstObject; if(!checkArr || checkArr.count == 0){ return; } NSMutableDictionary*paraDict = [NSMutableDictionary new]; NSMutableArray *pathArr = [NSMutableArray new]; for (ShareFileDataModel*dataModel in checkArr){ NSString *pathStr = dataModel.fileUrl; [pathArr addObject: pathStr ]; } HLog(@"%@",pathArr); if (pathArr) { NSString *jsonStr = [iTools toJsonStrWithArray:pathArr]; if(jsonStr){ [paraDict setValue:jsonStr forKey:@"urls"]; } } KWeakSelf [[netWorkManager shareInstance] cloudPhoneGETCallBackCode:@"downStatus" Parameters:paraDict success:^(id _Nonnull responseObject) { downStatusModel *model = [[downStatusModel alloc] initWithDictionary:responseObject error:nil]; if(model && model.status == 0){ [weakSelf updateDataAfterCheckDownStatus:model]; } } failure:^(NSError * _Nonnull error) { }]; } #pragma mark 查询保存到盒子的下载状态后更新数据 - (void)updateDataAfterCheckDownStatus:(downStatusModel*)downStatusMod { [self updataBoxSaveDataBy:downStatusMod]; [[boxSaveFileManager shareInstance] updataBoxSaveDataBy:downStatusMod]; } #pragma mark 更新本地数据 - (void)updataBoxSaveDataBy:(downStatusModel*)downStatusMod { for (downStatusDataModel*updataModel in downStatusMod.data) { for (ShareFileDataModel* model in _saveRecordTableView.boxSaveingArr) { if ([updataModel.url isEqualToString:model.fileUrl]) { if (updataModel.curStatus == 0 || updataModel.curStatus == 3) { //不用处理 } else if (updataModel.curStatus == 1) { //成功 model.saveboxStateType = saveBoxStateDone; [_saveRecordTableView.boxSaveDoneArr addObject:model]; [_saveRecordTableView.boxSaveingArr removeObject:model]; } else{ //失败 model.saveboxStateType = saveBoxStateFail; [_saveRecordTableView.boxSavefailArr addObject:model]; [_saveRecordTableView.boxSaveingArr removeObject:model]; } break; } } } [_saveRecordTableView RefreshAllDataFun]; } #pragma mark 读取盒子下载的数据库 - (void)getBoxDownLoadDataFun { KWeakSelf [[boxDownloadFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) { [weakSelf AferGetBoxDownloadDataBy:Arr]; }]; } - (void)AferGetBoxDownloadDataBy:(NSMutableArray*)arr { _downloadRecordTableView.outSideDataArr = arr; } @end