// // 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]; 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; } } #pragma mark 获取本地数据库数据 - (void)getAllDataFun{ [self getBoxDownLoadDataFun]; [self getBoxSaveDataFun]; } #pragma mark 读取保存到盒子的数据库 - (void)getBoxSaveDataFun { KWeakSelf [[boxSaveFileManager shareInstance] getDataInDatabaseFun:YES 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) { //检测文件是否存在 [self checkBoxSaveFileUrlStateBy:model]; } 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:YES complete:^(NSMutableArray * _Nonnull Arr) { [weakSelf AferGetBoxDownloadDataBy:Arr]; }]; } - (void)AferGetBoxDownloadDataBy:(NSMutableArray*)arr { _downloadRecordTableView.outSideDataArr = arr; [_downloadRecordTableView reDownLoadAgainFun]; } #pragma mark 检测保存盒子的url是否存在 - (void)checkBoxSaveFileUrlStateBy:(ShareFileDataModel*)dataModel{ KWeakSelf [[netWorkManager shareInstance] cloudPhoneGETCallBackCode:dataModel.fileUrl success:^(id _Nonnull responseObject) { SuperModel *model = [[SuperModel alloc] initWithDictionary:responseObject error:nil]; if(model && model.status == 0){ } } failure:^(NSError * _Nonnull error) { HLog(@"%@",error); }]; } @end