123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371 |
- //
- // 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"
- @interface receiveView ()
- {
- }
- @property(nonatomic,assign) BOOL isFirstCheckSaveFile;//首次进来 需要检测保存文件的状态
- @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];
- };
-
- _saveRecordTableView.didClickReSaveBlock = ^(ShareFileDataModel * _Nonnull model) {
- weakSelf.isFirstCheckSaveFile = YES;
- [weakSelf PollingCheckSaveFileToBoxStateFun];
- };
- }
- #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;
-
- _isFirstCheckSaveFile = YES;
- KWeakSelf
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [weakSelf 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.boxSaveingArr;
- 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];
- }
-
- [weakSelf PollingCheckSaveFileToBoxStateFun];
-
- } failure:^(NSError * _Nonnull error) {
- [weakSelf PollingCheckSaveFileToBoxStateFun];
- if([AFNetworkReachabilityManager sharedManager].networkReachabilityStatus == AFNetworkReachabilityStatusNotReachable)
- {
- [[iToast makeText:NSLocalizedString(@"phone_network_fail_Tips",nil)] show];
-
- }
- else{
- [[iToast makeText:NSLocalizedString(@"netWork_error_show_tip",nil)] show];
- }
- }];
- }
- #pragma mark 5秒轮询一次查询保存状态
- - (void)PollingCheckSaveFileToBoxStateFun
- {
- KWeakSelf
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [weakSelf checkSaveFileToBoxStateFun];
- });
- }
- #pragma mark 查询保存到盒子的下载状态后更新数据
- - (void)updateDataAfterCheckDownStatus:(downStatusModel*)downStatusMod
- {
- [[boxSaveFileManager shareInstance] updataBoxSaveDataBy:downStatusMod];
- [self updataBoxSaveDataBy:downStatusMod];
- }
- #pragma mark 更新本地数据
- - (void)updataBoxSaveDataBy:(downStatusModel*)downStatusMod
- {
- for (downStatusDataModel*updataModel in downStatusMod.data) {
-
- NSString *ProgressMsg = updataModel.msg;
- CGFloat saveProgress = 0.0;
- NSArray *strArr = [ProgressMsg componentsSeparatedByString:@"="];
- if(strArr.count >= 2){
- NSString*lastProgressMsg = strArr.lastObject;
- saveProgress = lastProgressMsg.floatValue;
- }
-
- NSInteger downloadStatus = updataModel.status;
-
- for (ShareFileDataModel* model in _saveRecordTableView.boxSaveingArr) {
- if ([updataModel.url isEqualToString:model.fileUrl]) {
-
- model.downloadStatus = downloadStatus;
-
- if (updataModel.curStatus == 0
- || updataModel.curStatus == 3) {
-
- model.saveProgress = saveProgress;
- if(_isFirstCheckSaveFile){
- //检测文件是否存在
- [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];
-
- _isFirstCheckSaveFile = NO;
-
- }
- #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] cloudPhoneCheckUrlCallBackCode:dataModel.fileUrl success:^(id _Nonnull responseObject) {
-
- SuperModel *model = responseObject;
- if(model){
- if( model.status == -1){
- [weakSelf updataBoxSaveDataByFail:dataModel];
- }
- }
-
-
- } failure:^(NSError * _Nonnull error) {
- HLog(@"%@",error);
- }];
- }
- #pragma mark 更新本地数据
- - (void)updataBoxSaveDataByFail:(ShareFileDataModel*)updataModel
- {
- for (ShareFileDataModel* model in _saveRecordTableView.boxSaveingArr)
- {
- if ([updataModel.fileUrl isEqualToString:model.fileUrl]) {
-
- //失败
- model.saveboxStateType = saveBoxStateFail;
- model.downloadStatus = -1;
- [[boxSaveFileManager shareInstance] updataBoxSaveDataByFail:model];
-
- [_saveRecordTableView.boxSavefailArr addObject:model];
- [_saveRecordTableView.boxSaveingArr removeObject:model];
- break;
- }
- }
-
-
- [_saveRecordTableView RefreshAllDataFun];
- }
- @end
|