receiveView.m 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334
  1. //
  2. // receiveView.m
  3. // 双子星云手机
  4. //
  5. // Created by xd h on 2024/5/23.
  6. //
  7. #import "receiveView.h"
  8. #import "receiveHeadView.h"
  9. #import "receiveDownloadRecordTableView.h"
  10. #import "receiveSaveRecordTableView.h"
  11. #import "boxSaveFileManager.h"
  12. #import "downStatusModel.h"
  13. #import "boxDownloadFileManager.h"
  14. #import "AFHTTPSessionManager.h"
  15. #import "SGDownloadManager.h"
  16. @interface receiveView ()
  17. {
  18. }
  19. @property(nonatomic,strong) receiveHeadView * curReceiveHeadView;
  20. @property(nonatomic,strong) receiveDownloadRecordTableView * downloadRecordTableView;
  21. @property(nonatomic,strong) receiveSaveRecordTableView * saveRecordTableView;
  22. @end
  23. @implementation receiveView
  24. - (id)initWithFrame:(CGRect)frame{
  25. self = [super initWithFrame:frame];
  26. [self setBackgroundColor:[UIColor whiteColor]];
  27. _isReceiveType = 1;
  28. [self drawAnyView];
  29. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(downloadTaskExeIng:) name:SGDownloadTaskExeing object:nil];
  30. return self;
  31. }
  32. - (void)drawAnyView{
  33. _curReceiveHeadView = [[receiveHeadView alloc] init];
  34. [self addSubview:_curReceiveHeadView];
  35. [_curReceiveHeadView mas_makeConstraints:^(MASConstraintMaker *make) {
  36. make.left.mas_equalTo(0);
  37. make.right.mas_equalTo(0);
  38. make.top.mas_equalTo(0);
  39. make.height.mas_equalTo(40);
  40. }];
  41. KWeakSelf
  42. #pragma mark 点击接收的下载或者保存
  43. _curReceiveHeadView.didClickbuttonFun = ^(NSInteger tag) {
  44. [weakSelf didClickHeadButtonFun:tag];
  45. };
  46. _downloadRecordTableView = [[receiveDownloadRecordTableView alloc] init];
  47. [self addSubview:_downloadRecordTableView];
  48. [_downloadRecordTableView mas_makeConstraints:^(MASConstraintMaker *make) {
  49. make.left.mas_equalTo(0);
  50. make.right.mas_equalTo(0);
  51. make.top.equalTo(_curReceiveHeadView.mas_bottom).offset(0);
  52. make.bottom.mas_equalTo(40);
  53. }];
  54. _downloadRecordTableView.didLongPressClick = ^{
  55. [weakSelf handleLongPressClickFun];
  56. };
  57. _saveRecordTableView = [[receiveSaveRecordTableView alloc] init];
  58. _saveRecordTableView.hidden = YES;
  59. [self addSubview:_saveRecordTableView];
  60. [_saveRecordTableView mas_makeConstraints:^(MASConstraintMaker *make) {
  61. make.left.mas_equalTo(0);
  62. make.right.mas_equalTo(0);
  63. make.top.equalTo(_curReceiveHeadView.mas_bottom).offset(0);
  64. make.bottom.mas_equalTo(40);
  65. }];
  66. _saveRecordTableView.didLongPressClick = ^{
  67. [weakSelf handleLongPressClickFun];
  68. };
  69. }
  70. #pragma mark 长按事件传出去
  71. - (void)handleLongPressClickFun
  72. {
  73. if(self->_didLongPressClick){
  74. self->_didLongPressClick();
  75. }
  76. }
  77. #pragma mark 点击下载和接收
  78. - (void)didClickHeadButtonFun:(NSInteger)tag
  79. {
  80. _isReceiveType = tag;
  81. if(tag == 1){
  82. _downloadRecordTableView.hidden = NO;
  83. _saveRecordTableView.hidden = YES;
  84. }
  85. else if(tag == 2){
  86. _downloadRecordTableView.hidden = YES;
  87. _saveRecordTableView.hidden = NO;
  88. }
  89. }
  90. - (void)setIsReceiveType:(NSInteger)isReceiveType
  91. {
  92. _isReceiveType = isReceiveType;
  93. if(isReceiveType == 2){
  94. [_curReceiveHeadView didClickButFun:_curReceiveHeadView.saveButton];
  95. }
  96. }
  97. - (void)setIsEditType:(BOOL)isEditType{
  98. _isEditType = isEditType;
  99. if(_isReceiveType == 1){
  100. _downloadRecordTableView.isEditType = isEditType;
  101. }
  102. else{
  103. _saveRecordTableView.isEditType = isEditType;
  104. }
  105. }
  106. #pragma mark 点击全选
  107. - (void)setIsSelectAllType:(BOOL)isSelectAllType
  108. {
  109. if(_isReceiveType == 1){
  110. _downloadRecordTableView.isSelectAllType = isSelectAllType;
  111. }
  112. else{
  113. _saveRecordTableView.isSelectAllType = isSelectAllType;
  114. }
  115. }
  116. - (void)downloadTaskExeIng:(NSNotification *)notification
  117. {
  118. SGDownloadOperation *model = notification.userInfo.allValues.firstObject;
  119. mainBlock(^{
  120. //[self refreshUIWithModel:model];
  121. });
  122. HLog(@"下载中 %lld",model.currentSize);
  123. }
  124. #pragma mark 获取本地数据库数据
  125. - (void)getAllDataFun{
  126. [self getBoxDownLoadDataFun];
  127. [self getBoxSaveDataFun];
  128. // NSString *urlstr = @"https://media.w3.org/2010/05/sintel/trailer.mp4";
  129. // NSString *url2 = @"http://transfertest.armclouding.com:11010/getFile?path=/mnt/media_rw/B80050B2005078F8/电影/IMG_0914.MP4";
  130. //
  131. // NSString* encodedUrl = [url2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  132. // NSURL *url = [NSURL URLWithString:encodedUrl];
  133. //
  134. // // 创建下载任务
  135. // [[SGDownloadManager shareManager] downloadWithURL:url fileType:1 fileSize:0 complete:^(NSDictionary *respose, NSError *error) {
  136. // HLog(@"%@---%@",respose, error);
  137. // }];
  138. // [[netWorkManager shareInstance] cloudPhoneDownloadCallBackCode:url success:^(id _Nonnull responseObject) {
  139. //
  140. // } failure:^(NSError * _Nonnull error) {
  141. //
  142. // }];
  143. // NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
  144. // NSString *documentDir = [paths lastObject];
  145. //
  146. //
  147. // NSString* encodedUrl = [url2 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  148. // NSURL *url = [NSURL URLWithString:encodedUrl];
  149. //
  150. // NSURLRequest *request = [NSURLRequest requestWithURL:url];
  151. // NSURLSessionDownloadTask *task = [[AFHTTPSessionManager manager] downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
  152. // NSLog(@"%@", [NSString stringWithFormat:@"当前下载进度:%.2f%%",100.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount]);
  153. // } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
  154. // NSLog(@"临时文件路径: %@", targetPath);
  155. //
  156. // NSString *downloadPath = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent: @"Download"];
  157. // //打开文件管理器
  158. // NSFileManager *fileManager = [NSFileManager defaultManager];
  159. // //创建Download目录
  160. // [fileManager createDirectoryAtPath:downloadPath withIntermediateDirectories:YES attributes:nil error:nil];
  161. // //拼接文件路径
  162. // NSString *filePath = [downloadPath stringByAppendingPathComponent:response.suggestedFilename];
  163. //
  164. // NSURL *path = [NSURL fileURLWithPath:filePath];
  165. // [path URLByAppendingPathComponent:response.suggestedFilename];
  166. // return path;
  167. // } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
  168. // NSLog(@"本地存储路径: %@", filePath);
  169. // }];
  170. //
  171. // [task resume];
  172. }
  173. #pragma mark 读取保存到盒子的数据库
  174. - (void)getBoxSaveDataFun
  175. {
  176. KWeakSelf
  177. [[boxSaveFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) {
  178. [weakSelf AferGetBoxSaveDataBy:Arr];
  179. }];
  180. }
  181. - (void)AferGetBoxSaveDataBy:(NSMutableArray*)arr
  182. {
  183. _saveRecordTableView.outSideDataArr = arr;
  184. [self checkSaveFileToBoxStateFun];
  185. }
  186. - (NSMutableArray*)selectModelArr
  187. {
  188. if(_isReceiveType == 1){
  189. return _downloadRecordTableView.selectModelArr;
  190. }
  191. else{
  192. return _saveRecordTableView.selectModelArr;
  193. }
  194. return [NSMutableArray new];
  195. }
  196. #pragma mark 单个点击选中后删除
  197. - (void)deleteModelOneByOneFun{
  198. if(_isReceiveType == 1){
  199. [_downloadRecordTableView deleteModelOneByOneFun];
  200. }
  201. else{
  202. [_saveRecordTableView deleteModelOneByOneFun];
  203. }
  204. }
  205. #pragma mark 查询保存到盒子的下载状态
  206. - (void)checkSaveFileToBoxStateFun
  207. {
  208. NSMutableArray *checkArr = _saveRecordTableView.outSideDataArr.firstObject;
  209. if(!checkArr || checkArr.count == 0){
  210. return;
  211. }
  212. NSMutableDictionary*paraDict = [NSMutableDictionary new];
  213. NSMutableArray *pathArr = [NSMutableArray new];
  214. for (ShareFileDataModel*dataModel in checkArr){
  215. NSString *pathStr = dataModel.fileUrl;
  216. [pathArr addObject: pathStr ];
  217. }
  218. HLog(@"%@",pathArr);
  219. if (pathArr) {
  220. NSString *jsonStr = [iTools toJsonStrWithArray:pathArr];
  221. if(jsonStr){
  222. [paraDict setValue:jsonStr forKey:@"urls"];
  223. }
  224. }
  225. KWeakSelf
  226. [[netWorkManager shareInstance] cloudPhoneGETCallBackCode:@"downStatus" Parameters:paraDict success:^(id _Nonnull responseObject) {
  227. downStatusModel *model = [[downStatusModel alloc] initWithDictionary:responseObject error:nil];
  228. if(model && model.status == 0){
  229. [weakSelf updateDataAfterCheckDownStatus:model];
  230. }
  231. } failure:^(NSError * _Nonnull error) {
  232. }];
  233. }
  234. #pragma mark 查询保存到盒子的下载状态后更新数据
  235. - (void)updateDataAfterCheckDownStatus:(downStatusModel*)downStatusMod
  236. {
  237. [self updataBoxSaveDataBy:downStatusMod];
  238. [[boxSaveFileManager shareInstance] updataBoxSaveDataBy:downStatusMod];
  239. }
  240. #pragma mark 更新本地数据
  241. - (void)updataBoxSaveDataBy:(downStatusModel*)downStatusMod
  242. {
  243. for (downStatusDataModel*updataModel in downStatusMod.data) {
  244. for (ShareFileDataModel* model in _saveRecordTableView.boxSaveingArr) {
  245. if ([updataModel.url isEqualToString:model.fileUrl]) {
  246. if (updataModel.curStatus == 0
  247. || updataModel.curStatus == 3) {
  248. //不用处理
  249. }
  250. else if (updataModel.curStatus == 1) {
  251. //成功
  252. model.saveboxStateType = saveBoxStateDone;
  253. [_saveRecordTableView.boxSaveDoneArr addObject:model];
  254. [_saveRecordTableView.boxSaveingArr removeObject:model];
  255. }
  256. else{
  257. //失败
  258. model.saveboxStateType = saveBoxStateFail;
  259. [_saveRecordTableView.boxSavefailArr addObject:model];
  260. [_saveRecordTableView.boxSaveingArr removeObject:model];
  261. }
  262. break;
  263. }
  264. }
  265. }
  266. [_saveRecordTableView RefreshAllDataFun];
  267. }
  268. #pragma mark 读取盒子下载的数据库
  269. - (void)getBoxDownLoadDataFun
  270. {
  271. KWeakSelf
  272. [[boxDownloadFileManager shareInstance] getDataInDatabaseFun:NO complete:^(NSMutableArray * _Nonnull Arr) {
  273. [weakSelf AferGetBoxDownloadDataBy:Arr];
  274. }];
  275. }
  276. - (void)AferGetBoxDownloadDataBy:(NSMutableArray*)arr
  277. {
  278. _downloadRecordTableView.outSideDataArr = arr;
  279. }
  280. @end