123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269 |
- //
- // boxSaveFileManager.m
- // Private-X
- //
- // Created by xd h on 2024/5/23.
- //
- #import "boxSaveFileManager.h"
- @implementation boxSaveFileManager
- static boxSaveFileManager * cur_boxSaveFileShareInstance = nil;
- +(boxSaveFileManager *)shareInstance;
- {
- static dispatch_once_t onceToken;
-
- dispatch_once(&onceToken, ^{
- cur_boxSaveFileShareInstance = [[boxSaveFileManager alloc] init];
-
- });
-
- return cur_boxSaveFileShareInstance;
- }
- - (id)init
- {
- self = [super init];
-
- if (self) {
- //[self initManager];
- }
-
- return self;
- }
- //添加保存记录
- - (void)addBoxSaveRecordFunBy:(NSArray*)arr complete:(custom_complete_B)complete{
- if(arr && arr.count >0 ){
-
- NSString * boxSaveDefaultPath = [HWDataManager getStringWithKey:stringKeyAddSn(Const_box_save_default_path)];
- if(!boxSaveDefaultPath || boxSaveDefaultPath.length == 0){
- boxSaveDefaultPath = Const_default_save_path;
- }
-
- for (ShareFileDataModel*model in arr) {
- model.bg_tableName = share_box_save_tableName;
-
- model.boxSavePath = boxSaveDefaultPath;
- }
-
- //[ShareFileDataModel bg_saveOrUpdateArray:arr];
- [ShareFileDataModel bg_saveOrUpdateArrayAsync:arr complete:^(BOOL isSuccess) {
- complete(isSuccess);
- }];
- }
- }
- #pragma mark 读取数据库数据
- - (void)getDataInDatabaseFun:(BOOL)isReGet complete:(custom_complete_Arr)complete
- {
- if(_databaseArr && _databaseArr.count == 3 && !isReGet){
- complete(_databaseArr);
- return;
- }
-
- if(!_databaseArr)
- {
- _databaseArr = [NSMutableArray new];
- }
-
- //KWeakSelf
- //dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^{
- // NSLock *lock = [NSLock new];
- // [lock lock];
- [ShareFileDataModel bg_findAsync:share_box_save_tableName limit:0 orderBy:nil desc:YES complete:^(NSArray * _Nullable array) {
- NSMutableArray *failArr = [NSMutableArray new];
- NSMutableArray *doneArr = [NSMutableArray new];
- NSMutableArray *otherArr = [NSMutableArray new];
- if(array && array.count >0){
- for (ShareFileDataModel * curModel in array) {
-
- if(curModel.saveboxStateType == saveBoxStateFail){
- [failArr addObject:curModel];
- }
- else if(curModel.saveboxStateType == saveBoxStateDone){
- [doneArr addObject:curModel];
- }
- else{
- [otherArr addObject:curModel];
- }
- }
- }
- NSLock *lock = [NSLock new];
- [lock lock];
-
- NSMutableArray *newArr = [NSMutableArray new];
- [newArr addObject:otherArr];
- [newArr addObject:doneArr];
- [newArr addObject:failArr];
- self->_databaseArr = newArr;
-
- [lock unlock];
-
- complete(self->_databaseArr);
- }];
- // [lock unlock];
- //});
- }
- - (void)handleDatabaseArrByDelete:(ShareFileDataModel*)delModel
- {
- if(_databaseArr && _databaseArr.count == 3 ){
-
- if(delModel.saveboxStateType == saveBoxStateDone)
- {
- NSMutableArray *arr = _databaseArr[1];
- [self deteleModel:delModel inArr:arr];
- }
- else if(delModel.saveboxStateType == saveBoxStateFail){
- NSMutableArray *arr = _databaseArr[2];
- [self deteleModel:delModel inArr:arr];
- }
- else{
- NSMutableArray *arr = _databaseArr[0];
- [self deteleModel:delModel inArr:arr];
- }
- }
- }
- #pragma mark 处理删除内存数据
- - (void)deteleModel:(ShareFileDataModel*)delModel inArr:(NSMutableArray*)delArr{
-
- for (ShareFileDataModel *dataModel in delArr) {
- if(delModel.bg_id.integerValue == dataModel.bg_id.integerValue){
- [delArr removeObject:dataModel];
- break;;
- }
- }
-
- }
- #pragma mark 删除本地数据库记录
- - (void)deleteBoxSaveFileRecordBy:(NSMutableArray *)delArr{
-
- NSMutableArray *curDelArr = [NSMutableArray arrayWithArray:delArr];
- for (ShareFileDataModel *dataModel in curDelArr) {
-
- //1.内存数据删除
- [self handleDatabaseArrByDelete:dataModel];
-
- //2.删除数据量
- NSMutableString* where = [[NSMutableString alloc] initWithString:@"where "];
-
- NSString *curStr = [NSString stringWithFormat:@"%@=%@ ",bg_sqlKey(@"bg_id"),bg_sqlValue(dataModel.bg_id)];
- [where appendString:curStr];
-
- [ShareFileDataModel bg_deleteAsync:share_box_save_tableName where:where complete:^(BOOL isSuccess) {
- if(isSuccess){
-
- }
- }];
-
- }
-
- }
- #pragma mark 更新本地数据库记录
- - (void)updataBoxSaveDataBy:(downStatusModel*)downStatusMod
- {
-
- //1.修改数据库
- NSMutableArray *firstArr = [NSMutableArray arrayWithArray:_databaseArr[0]];
- NSMutableArray *needUpdatArr = [NSMutableArray new];
-
- for (downStatusDataModel*updataModel in downStatusMod.data) {
- for (ShareFileDataModel* model in firstArr) {
- //HLog(@"%@\n%@",updataModel.url,model.fileUrl);
-
- //去掉空格判断
- //model.fileUrl = [model.fileUrl stringByReplacingOccurrencesOfString:@" " withString:@""];
- if ([updataModel.url isEqualToString:model.fileUrl]) {
- if (updataModel.curStatus == 0
- || updataModel.curStatus == 3) {
- //msg = download complied; msg = progress=0.48;
- NSString *ProgressMsg = updataModel.msg;
-
- if([ProgressMsg containsString:@"msg = progress="]){
- ProgressMsg = [ProgressMsg stringByReplacingOccurrencesOfString:@"msg = progress=" withString:@""];
-
- model.saveProgress = ProgressMsg.floatValue;
- }
-
- }
- else if (updataModel.curStatus == 1) {
-
- [self handleDatabaseArrByDelete:model];
-
- //成功
- model.saveboxStateType = saveBoxStateDone;
- [needUpdatArr addObject:model];
-
- NSMutableArray *doneArr = _databaseArr[1];
- [doneArr addObject:model];
-
- }
- else{
- [self handleDatabaseArrByDelete:model];
-
- //失败
- model.saveboxStateType = saveBoxStateFail;
- [needUpdatArr addObject:model];
-
- NSMutableArray *failArr = _databaseArr[2];
- [failArr addObject:model];
- }
- break;
- }
- }
- }
-
- if(needUpdatArr.count > 0){
- [ShareFileDataModel bg_saveOrUpdateArrayAsync:needUpdatArr complete:^(BOOL isSuccess) {
- if (isSuccess) {
-
- }
- }];
- }
-
-
- }
- #pragma mark 更新本地数据库记录
- - (void)updataBoxSaveDataByFail:(ShareFileDataModel*)updataModel
- {
- //1.修改数据库
- NSMutableArray *firstArr = [NSMutableArray arrayWithArray:_databaseArr[0]];
- NSMutableArray *needUpdatArr = [NSMutableArray new];
-
- for (ShareFileDataModel* model in firstArr) {
- //HLog(@"%@\n%@",updataModel.url,model.fileUrl);
-
- //去掉空格判断
- //model.fileUrl = [model.fileUrl stringByReplacingOccurrencesOfString:@" " withString:@""];
- if ([updataModel.fileUrl isEqualToString:model.fileUrl]) {
- [self handleDatabaseArrByDelete:model];
-
- //失败
- model.saveboxStateType = saveBoxStateFail;
- [needUpdatArr addObject:model];
-
- NSMutableArray *failArr = _databaseArr[2];
- [failArr addObject:model];
- break;
- }
- }
- if(needUpdatArr.count > 0){
- [ShareFileDataModel bg_saveOrUpdateArrayAsync:needUpdatArr complete:^(BOOL isSuccess) {
- if (isSuccess) {
-
- }
- }];
- }
-
- }
- @end
|