// // MODataManager.m // MiMoLive // // Created by SuperC on 2023/10/15. // #import "MODataManager.h" #import "LKDBHelper.h" @implementation MODataManager + (void)saveUserInfo:(id)data{ NSDictionary *baseDict = data[@"data"]; MOMeDataInfo *baseModel = [MOMeDataInfo modelObjectWithDictionary:baseDict]; [[MODataCache sharedYYCache] setObject:baseModel forKey:kMineUserInfo]; [MOSvgaSourceManage shareManager].myDataInfo = baseModel; //token //请求token NSString *tokenString = [self objectOrNilForKey:@"token" fromDictionary:baseDict]; if(tokenString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:tokenString forKey:kToken]; } //IM Token NSString *imTokenString = [self objectOrNilForKey:@"imToken" fromDictionary:baseDict]; if(imTokenString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:imTokenString forKey:kImToken]; } //Tencent IM Token NSString *t_imTokenString = [self objectOrNilForKey:@"timToken" fromDictionary:baseDict]; if(t_imTokenString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:t_imTokenString forKey:kTent_ImToken]; //是否只使用 Tim (腾讯IM) BOOL isUseTim = [[self objectOrNilForKey:@"onlyUseTim" fromDictionary:baseDict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isUseTim forKey:kOnlyUseTimIM]; } //Level NSInteger level = [[self objectOrNilForKey:@"level" fromDictionary:baseDict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(level) forKey:kUserLevel]; //profile NSDictionary *profileDict = baseDict[@"profile"]; [MODataManager updataUserProfileWith:profileDict AndNeedSynchronize:NO]; //vip NSDictionary *vipDict = baseDict[@"vip"]; [MODataManager updateVipInfoWith:vipDict AndNeedSynchronize:NO]; //status NSDictionary *statusDict = baseDict[@"status"]; [MODataManager updataUserInfoBoolWith:statusDict AndNeedSynchronize:NO]; //wallet NSDictionary *walletDict = baseDict[@"wallet"]; [MODataManager updataWalletInfoWith:walletDict AndNeedSynchronize:NO]; [[NSUserDefaults standardUserDefaults] synchronize]; //登录数据缓存到YYCache [[MODataCache sharedYYCache] setObject:baseDict forKey:kUserInfo]; } + (void)updataWalletInfoWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{ NSInteger consumeDiamond = [[self objectOrNilForKey:@"consumeDiamond" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(consumeDiamond) forKey:kUserConsumeDiamond]; if(synchronize){ [[NSUserDefaults standardUserDefaults] synchronize]; } } + (void)updateVipInfoWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{ NSInteger type = [[self objectOrNilForKey:@"type" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(type) forKey:kUserVipType]; NSInteger expireTime = [[self objectOrNilForKey:@"expireTime" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(expireTime) forKey:kUserVipExpirTime]; if(synchronize){ [[NSUserDefaults standardUserDefaults] synchronize]; } } + (void)updataUserProfileWith:(NSDictionary *)profileDict AndNeedSynchronize:(BOOL)synchronize{ //头像 NSString *avatarString = [self objectOrNilForKey:@"avatar" fromDictionary:profileDict]; if(avatarString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:avatarString forKey:kAvatar]; } //用户ID NSString *userIdString = [self objectOrNilForKey:@"id" fromDictionary:profileDict]; if(userIdString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:userIdString forKey:kUserId]; } //用户No NSString *userNoString = [self objectOrNilForKey:@"userNo" fromDictionary:profileDict]; if(userNoString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:userNoString forKey:kUserNo]; } //用户昵称 NSString *nicknameString = [self objectOrNilForKey:@"nickname" fromDictionary:profileDict]; if(nicknameString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:nicknameString forKey:kNickName]; } //用户性别 NSInteger gender = [[self objectOrNilForKey:@"gender" fromDictionary:profileDict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(gender) forKey:kGender]; //声网ID NSInteger agoraId = [[self objectOrNilForKey:@"agoraId" fromDictionary:profileDict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(agoraId) forKey:kAgoraId]; //装扮 NSDictionary *adornment = profileDict[@"adornment"]; //气泡 NSString *bubbleString = [self objectOrNilForKey:@"bubble" fromDictionary:adornment]; if(bubbleString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:bubbleString forKey:kUserBubble]; } else{ [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:kUserBubble]; } //头饰 NSString *headdressString = [self objectOrNilForKey:@"headgearRes" fromDictionary:adornment]; if(headdressString.length > 0){ [[NSUserDefaults standardUserDefaults] setObject:headdressString forKey:kUserHeaddress]; } else{ [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:kUserHeaddress]; } //头饰类型(0=无资源文件,1=动态webp,2=SVGA,3=VAP) NSInteger headgearType = [[self objectOrNilForKey:@"headgearType" fromDictionary:adornment] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(headgearType) forKey:kUserHeaddressType]; //座驾 NSInteger enterBar = [[self objectOrNilForKey:@"enterBar" fromDictionary:adornment] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(enterBar) forKey:kUserEnterBar]; //装饰类 - 所有装饰Code NSDictionary *dressingDict = profileDict[@"dressing"]; [self updateAllDressingCodeWith:dressingDict]; //是否神秘人 BOOL isMysterious = [[self objectOrNilForKey:@"mysterious" fromDictionary:profileDict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isMysterious forKey:kIsMysterious]; if(synchronize){ [[NSUserDefaults standardUserDefaults] synchronize]; } } + (void)updateAllDressingCodeWith:(NSDictionary *)dict{ //气泡 NSInteger bubble = [[self objectOrNilForKey:@"bubble" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(bubble) forKey:kUserBubbleCode]; //入场座驾Code NSInteger enterBar = [[self objectOrNilForKey:@"entryBar" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(enterBar) forKey:kUserEnterBar]; //名片框 Code NSInteger cardFrame = [[self objectOrNilForKey:@"cardFrame" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(cardFrame) forKey:kCardFrameCode]; //进场飘屏 Code NSInteger enterFloating = [[self objectOrNilForKey:@"enterFloating" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(enterFloating) forKey:kEnterFloatingCode]; //打赏横幅 Code NSInteger rewardBanner = [[self objectOrNilForKey:@"rewardBanner" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(rewardBanner) forKey:kRewardBannerCode]; //连麦边框 Code NSInteger linkMicFrame = [[self objectOrNilForKey:@"linkMicFrame" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(linkMicFrame) forKey:kLinkMicFrameCode]; //直播弹幕 Code NSInteger liveBarrage = [[self objectOrNilForKey:@"liveBarrage" fromDictionary:dict] integerValue]; [[NSUserDefaults standardUserDefaults] setObject:@(liveBarrage) forKey:kLiveBarrageCode]; } + (void)updataUserInfoBoolWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{ //是否绑定手机 BOOL isHaveMobile = [[self objectOrNilForKey:@"mobile" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isHaveMobile forKey:kIsMobile]; //是否主播 BOOL isAnchor = [[self objectOrNilForKey:@"anchor" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isAnchor forKey:kIsAnchor]; //是否拥有工会 BOOL isHaveGuild = [[self objectOrNilForKey:@"guild" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isHaveGuild forKey:kIsHaveGuild]; //是否创建粉丝团 BOOL isCreateClub = [[self objectOrNilForKey:@"fansClub" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:isCreateClub forKey:kIsCreatFansClub]; //关闭自动加入粉丝团 BOOL closeFansClub = [[self objectOrNilForKey:@"joinFansClub" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:closeFansClub forKey:kCloseJoinFansClub]; //是否享受直播新人打折 BOOL liveDiscount = [[self objectOrNilForKey:@"liveDiscount" fromDictionary:dict] boolValue]; [[NSUserDefaults standardUserDefaults] setBool:liveDiscount forKey:kLiveDiscount]; if(synchronize){ [[NSUserDefaults standardUserDefaults] synchronize]; } } #pragma mark -- 删除用户信息 -- ///删除关键信息, 一般用于退出登录 + (void)deleteUserDefaultsExceptApp{ NSArray *languaArr = (NSArray *)[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]; NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier]; // 删除UserDefaults所有数据 [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain]; if(languaArr){ if(languaArr.count > 0){ [[NSUserDefaults standardUserDefaults] setObject:languaArr forKey:@"AppleLanguages"]; } } [[NSUserDefaults standardUserDefaults] synchronize]; } + (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict { id object = [dict objectForKey:aKey]; return [object isEqual:[NSNull null]] ? nil : object; } #pragma mark - FMDB - Save + (void)saveUserBaseWith:(MOUserBase *)model{ NSString *currentUserId = GetUserId; if(currentUserId.length == 0){ return; } model.myUserId = currentUserId; NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId]; LKDBHelper *helper = [MOUserBase getUsingLKDBHelper]; model.db_tableName = tableName; LKDBQueryParams *queryParams = [LKDBQueryParams new]; queryParams.tableName = tableName; queryParams.toClass = [MOUserBase class]; queryParams.whereDic = @{@"model_id":model.model_id}; queryParams.count = 1; NSMutableArray *searchArr = [helper searchWithParams:queryParams]; if(searchArr.count == 0){ BOOL result = [model saveToDB]; if(!result){ MOLogV(@"savePersonListWith 存储失败"); } } else{ BOOL result = [helper updateToDB:model where:nil]; if(!result){ MOLogV(@"savePersonListWith 更新失败"); } } } #pragma mark - FMDB - Search //同步查询自己所有的好友 + (void)searchAllUserBaseCompleted:(void(^)(NSArray *data))completedCallback{ NSString *currentUserId = GetUserId; if(currentUserId.length == 0){ return; } NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId]; NSString *where = [NSString stringWithFormat:@"SELECT * FROM %@",tableName]; NSMutableArray *searchArr = [MOUserBase searchWithSQL:where]; completedCallback(searchArr); } + (MOUserBase *)searchMOUserBaseWith:(NSString *)userId{ if(userId.length == 0){ return nil; } NSString *currentUserId = GetUserId; if(currentUserId.length == 0){ return nil; } MOUserBase *model = [[MOUserBase alloc] init]; model.myUserId = currentUserId; NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId]; LKDBHelper *helper = [MOUserBase getUsingLKDBHelper]; model.db_tableName = tableName; model.model_id = userId; LKDBQueryParams *queryParams = [LKDBQueryParams new]; queryParams.tableName = tableName; queryParams.toClass = [MOUserBase class]; queryParams.whereDic = @{@"model_id":model.model_id}; queryParams.count = 1; NSMutableArray *searchArr = [helper searchWithParams:queryParams]; if(searchArr.count > 0){ return searchArr.lastObject; } return nil; } + (MOUserProfile *)searchMOUserProfileWith:(NSString *)userId{ if(userId.length == 0){ return nil; } NSMutableArray *searchArr = [MOUserProfile searchWithWhere:@{@"id":userId}]; if(searchArr.count > 0){ return searchArr.lastObject; } return nil; } @end