boxDownloadFileManager.m 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. //
  2. // boxDownloadFileManager.m
  3. // 双子星云手机
  4. //
  5. // Created by xd h on 2024/5/24.
  6. //
  7. #import "boxDownloadFileManager.h"
  8. @implementation boxDownloadFileManager
  9. static boxDownloadFileManager * cur_boxDownloadFileShareInstance = nil;
  10. +(boxDownloadFileManager *)shareInstance;
  11. {
  12. static dispatch_once_t onceToken;
  13. dispatch_once(&onceToken, ^{
  14. cur_boxDownloadFileShareInstance = [[boxDownloadFileManager alloc] init];
  15. });
  16. return cur_boxDownloadFileShareInstance;
  17. }
  18. - (id)init
  19. {
  20. self = [super init];
  21. if (self) {
  22. //[self initManager];
  23. }
  24. return self;
  25. }
  26. //添加保存记录
  27. - (void)addBoxDownloadRecordFunBy:(NSArray*)arr{
  28. if(arr && arr.count >0 ){
  29. for (ShareFileDataModel*model in arr) {
  30. model.bg_tableName = share_box_download_tableName;
  31. }
  32. //[ShareFileDataModel bg_saveOrUpdateArray:arr];
  33. [ShareFileDataModel bg_saveOrUpdateArrayAsync:arr complete:^(BOOL isSuccess) {
  34. }];
  35. }
  36. }
  37. #pragma mark 读取数据库数据
  38. - (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete
  39. {
  40. if(_databaseArr && _databaseArr.count == 3 && !isReGet){
  41. complete(_databaseArr);
  42. return;
  43. }
  44. if(!_databaseArr)
  45. {
  46. _databaseArr = [NSMutableArray new];
  47. }
  48. //KWeakSelf
  49. //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
  50. // NSLock *lock = [NSLock new];
  51. // [lock lock];
  52. [ShareFileDataModel bg_findAsync:share_box_download_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
  53. NSMutableArray *failArr = [NSMutableArray new];
  54. NSMutableArray *doneArr = [NSMutableArray new];
  55. NSMutableArray *otherArr = [NSMutableArray new];
  56. if(array && array.count >0){
  57. for (ShareFileDataModel * curModel in array) {
  58. if(curModel.saveboxStateType == saveBoxStateFail){
  59. [failArr addObject:curModel];
  60. }
  61. else if(curModel.saveboxStateType == saveBoxStateDone){
  62. [doneArr addObject:curModel];
  63. }
  64. else{
  65. [otherArr addObject:curModel];
  66. }
  67. }
  68. }
  69. NSLock *lock = [NSLock new];
  70. [lock lock];
  71. NSMutableArray *newArr = [NSMutableArray new];
  72. [newArr addObject:otherArr];
  73. [newArr addObject:doneArr];
  74. [newArr addObject:failArr];
  75. self->_databaseArr = newArr;
  76. [lock unlock];
  77. complete(self->_databaseArr);
  78. }];
  79. // [lock unlock];
  80. //});
  81. }
  82. - (void)handleDatabaseArrByDelete:(ShareFileDataModel*)delModel
  83. {
  84. if(_databaseArr && _databaseArr.count == 3 ){
  85. if(delModel.downloadBoxStateType == downloadBoxStateDone)
  86. {
  87. NSMutableArray *arr = _databaseArr[1];
  88. [self deteleModel:delModel inArr:arr];
  89. }
  90. else if(delModel.downloadBoxStateType == downloadBoxStateFail){
  91. NSMutableArray *arr = _databaseArr[2];
  92. [self deteleModel:delModel inArr:arr];
  93. }
  94. else{
  95. NSMutableArray *arr = _databaseArr[0];
  96. [self deteleModel:delModel inArr:arr];
  97. }
  98. }
  99. }
  100. #pragma mark 处理删除内存数据
  101. - (void)deteleModel:(ShareFileDataModel*)delModel inArr:(NSMutableArray*)delArr{
  102. for (ShareFileDataModel *dataModel in delArr) {
  103. if(delModel.bg_id.integerValue == dataModel.bg_id.integerValue){
  104. [delArr removeObject:dataModel];
  105. break;;
  106. }
  107. }
  108. }
  109. #pragma mark 删除本地数据库记录
  110. - (void)deleteBoxSaveFileRecordBy:(NSMutableArray *)delArr{
  111. NSMutableArray *curDelArr = [NSMutableArray arrayWithArray:delArr];
  112. for (ShareFileDataModel *dataModel in curDelArr) {
  113. //1.内存数据删除
  114. [self handleDatabaseArrByDelete:dataModel];
  115. //2.删除数据量
  116. NSMutableString* where = [[NSMutableString alloc] initWithString:@"where "];
  117. NSString *curStr = [NSString stringWithFormat:@"%@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(dataModel.bg_id)];
  118. [where appendString:curStr];
  119. [ShareFileDataModel bg_deleteAsync:share_box_download_tableName where:where complete:^(BOOL isSuccess) {
  120. if(isSuccess){
  121. }
  122. }];
  123. }
  124. }
  125. #pragma mark 更新本地数据库记录
  126. //- (void)updataBoxSaveDataBy:(downStatusModel*)downStatusMod
  127. //{
  128. //
  129. // //1.修改数据库
  130. // NSMutableArray *firstArr = [NSMutableArray arrayWithArray:_databaseArr[0]] ;
  131. // NSMutableArray *needUpdatArr = [NSMutableArray new];
  132. //
  133. // for (downStatusDataModel*updataModel in downStatusMod.data) {
  134. //
  135. // for (ShareFileDataModel* model in firstArr) {
  136. // if ([updataModel.url isEqualToString:model.fileUrl]) {
  137. // if (updataModel.curStatus == 0
  138. // || updataModel.curStatus == 3) {
  139. // //不用处理
  140. // }
  141. // else if (updataModel.curStatus == 1) {
  142. //
  143. // [self handleDatabaseArrByDelete:model];
  144. //
  145. // //成功
  146. // model.saveboxStateType = saveBoxStateDone;
  147. // [needUpdatArr addObject:model];
  148. //
  149. // NSMutableArray *doneArr = _databaseArr[1];
  150. // [doneArr addObject:model];
  151. //
  152. // }
  153. // else{
  154. // [self handleDatabaseArrByDelete:model];
  155. //
  156. // //失败
  157. // model.saveboxStateType = saveBoxStateFail;
  158. // [needUpdatArr addObject:model];
  159. //
  160. // NSMutableArray *failArr = _databaseArr[2];
  161. // [failArr addObject:model];
  162. // }
  163. // break;
  164. // }
  165. // }
  166. // }
  167. //
  168. // if(needUpdatArr.count > 0){
  169. // [ShareFileDataModel bg_saveOrUpdateArrayAsync:needUpdatArr complete:^(BOOL isSuccess) {
  170. //
  171. // }];
  172. // }
  173. //
  174. //
  175. //}
  176. @end