boxSaveFileManager.m 6.7 KB

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