MODataManager.m 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. //
  2. // MODataManager.m
  3. // MiMoLive
  4. //
  5. // Created by SuperC on 2023/10/15.
  6. //
  7. #import "MODataManager.h"
  8. #import "LKDBHelper.h"
  9. @implementation MODataManager
  10. + (void)saveUserInfo:(id)data{
  11. NSDictionary *baseDict = data[@"data"];
  12. MOMeDataInfo *baseModel = [MOMeDataInfo modelObjectWithDictionary:baseDict];
  13. [[MODataCache sharedYYCache] setObject:baseModel forKey:kMineUserInfo];
  14. [MOSvgaSourceManage shareManager].myDataInfo = baseModel;
  15. //token
  16. //请求token
  17. NSString *tokenString = [self objectOrNilForKey:@"token" fromDictionary:baseDict];
  18. if(tokenString.length > 0){
  19. [[NSUserDefaults standardUserDefaults] setObject:tokenString forKey:kToken];
  20. }
  21. //IM Token
  22. NSString *imTokenString = [self objectOrNilForKey:@"imToken" fromDictionary:baseDict];
  23. if(imTokenString.length > 0){
  24. [[NSUserDefaults standardUserDefaults] setObject:imTokenString forKey:kImToken];
  25. }
  26. //Tencent IM Token
  27. NSString *t_imTokenString = [self objectOrNilForKey:@"timToken" fromDictionary:baseDict];
  28. if(t_imTokenString.length > 0){
  29. [[NSUserDefaults standardUserDefaults] setObject:t_imTokenString forKey:kTent_ImToken];
  30. //是否只使用 Tim (腾讯IM)
  31. BOOL isUseTim = [[self objectOrNilForKey:@"onlyUseTim" fromDictionary:baseDict] boolValue];
  32. [[NSUserDefaults standardUserDefaults] setBool:isUseTim forKey:kOnlyUseTimIM];
  33. }
  34. //Level
  35. NSInteger level = [[self objectOrNilForKey:@"level" fromDictionary:baseDict] integerValue];
  36. [[NSUserDefaults standardUserDefaults] setObject:@(level) forKey:kUserLevel];
  37. //profile
  38. NSDictionary *profileDict = baseDict[@"profile"];
  39. [MODataManager updataUserProfileWith:profileDict AndNeedSynchronize:NO];
  40. //vip
  41. NSDictionary *vipDict = baseDict[@"vip"];
  42. [MODataManager updateVipInfoWith:vipDict AndNeedSynchronize:NO];
  43. //status
  44. NSDictionary *statusDict = baseDict[@"status"];
  45. [MODataManager updataUserInfoBoolWith:statusDict AndNeedSynchronize:NO];
  46. //wallet
  47. NSDictionary *walletDict = baseDict[@"wallet"];
  48. [MODataManager updataWalletInfoWith:walletDict AndNeedSynchronize:NO];
  49. [[NSUserDefaults standardUserDefaults] synchronize];
  50. //登录数据缓存到YYCache
  51. [[MODataCache sharedYYCache] setObject:baseDict forKey:kUserInfo];
  52. }
  53. + (void)updataWalletInfoWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{
  54. NSInteger consumeDiamond = [[self objectOrNilForKey:@"consumeDiamond" fromDictionary:dict] integerValue];
  55. [[NSUserDefaults standardUserDefaults] setObject:@(consumeDiamond) forKey:kUserConsumeDiamond];
  56. if(synchronize){
  57. [[NSUserDefaults standardUserDefaults] synchronize];
  58. }
  59. }
  60. + (void)updateVipInfoWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{
  61. NSInteger type = [[self objectOrNilForKey:@"type" fromDictionary:dict] integerValue];
  62. [[NSUserDefaults standardUserDefaults] setObject:@(type) forKey:kUserVipType];
  63. NSInteger expireTime = [[self objectOrNilForKey:@"expireTime" fromDictionary:dict] integerValue];
  64. [[NSUserDefaults standardUserDefaults] setObject:@(expireTime) forKey:kUserVipExpirTime];
  65. if(synchronize){
  66. [[NSUserDefaults standardUserDefaults] synchronize];
  67. }
  68. }
  69. + (void)updataUserProfileWith:(NSDictionary *)profileDict AndNeedSynchronize:(BOOL)synchronize{
  70. //头像
  71. NSString *avatarString = [self objectOrNilForKey:@"avatar" fromDictionary:profileDict];
  72. if(avatarString.length > 0){
  73. [[NSUserDefaults standardUserDefaults] setObject:avatarString forKey:kAvatar];
  74. }
  75. //用户ID
  76. NSString *userIdString = [self objectOrNilForKey:@"id" fromDictionary:profileDict];
  77. if(userIdString.length > 0){
  78. [[NSUserDefaults standardUserDefaults] setObject:userIdString forKey:kUserId];
  79. }
  80. //用户No
  81. NSString *userNoString = [self objectOrNilForKey:@"userNo" fromDictionary:profileDict];
  82. if(userNoString.length > 0){
  83. [[NSUserDefaults standardUserDefaults] setObject:userNoString forKey:kUserNo];
  84. }
  85. //用户昵称
  86. NSString *nicknameString = [self objectOrNilForKey:@"nickname" fromDictionary:profileDict];
  87. if(nicknameString.length > 0){
  88. [[NSUserDefaults standardUserDefaults] setObject:nicknameString forKey:kNickName];
  89. }
  90. //用户性别
  91. NSInteger gender = [[self objectOrNilForKey:@"gender" fromDictionary:profileDict] integerValue];
  92. [[NSUserDefaults standardUserDefaults] setObject:@(gender) forKey:kGender];
  93. //声网ID
  94. NSInteger agoraId = [[self objectOrNilForKey:@"agoraId" fromDictionary:profileDict] integerValue];
  95. [[NSUserDefaults standardUserDefaults] setObject:@(agoraId) forKey:kAgoraId];
  96. //装扮
  97. NSDictionary *adornment = profileDict[@"adornment"];
  98. //气泡
  99. NSString *bubbleString = [self objectOrNilForKey:@"bubble" fromDictionary:adornment];
  100. if(bubbleString.length > 0){
  101. [[NSUserDefaults standardUserDefaults] setObject:bubbleString forKey:kUserBubble];
  102. }
  103. else{
  104. [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:kUserBubble];
  105. }
  106. //头饰
  107. NSString *headdressString = [self objectOrNilForKey:@"headgearRes" fromDictionary:adornment];
  108. if(headdressString.length > 0){
  109. [[NSUserDefaults standardUserDefaults] setObject:headdressString forKey:kUserHeaddress];
  110. }
  111. else{
  112. [[NSUserDefaults standardUserDefaults] setObject:@"" forKey:kUserHeaddress];
  113. }
  114. //头饰类型(0=无资源文件,1=动态webp,2=SVGA,3=VAP)
  115. NSInteger headgearType = [[self objectOrNilForKey:@"headgearType" fromDictionary:adornment] integerValue];
  116. [[NSUserDefaults standardUserDefaults] setObject:@(headgearType) forKey:kUserHeaddressType];
  117. //座驾
  118. NSInteger enterBar = [[self objectOrNilForKey:@"enterBar" fromDictionary:adornment] integerValue];
  119. [[NSUserDefaults standardUserDefaults] setObject:@(enterBar) forKey:kUserEnterBar];
  120. //装饰类 - 所有装饰Code
  121. NSDictionary *dressingDict = profileDict[@"dressing"];
  122. [self updateAllDressingCodeWith:dressingDict];
  123. //是否神秘人
  124. BOOL isMysterious = [[self objectOrNilForKey:@"mysterious" fromDictionary:profileDict] boolValue];
  125. [[NSUserDefaults standardUserDefaults] setBool:isMysterious forKey:kIsMysterious];
  126. if(synchronize){
  127. [[NSUserDefaults standardUserDefaults] synchronize];
  128. }
  129. }
  130. + (void)updateAllDressingCodeWith:(NSDictionary *)dict{
  131. //气泡
  132. NSInteger bubble = [[self objectOrNilForKey:@"bubble" fromDictionary:dict] integerValue];
  133. [[NSUserDefaults standardUserDefaults] setObject:@(bubble) forKey:kUserBubbleCode];
  134. //入场座驾Code
  135. NSInteger enterBar = [[self objectOrNilForKey:@"entryBar" fromDictionary:dict] integerValue];
  136. [[NSUserDefaults standardUserDefaults] setObject:@(enterBar) forKey:kUserEnterBar];
  137. //名片框 Code
  138. NSInteger cardFrame = [[self objectOrNilForKey:@"cardFrame" fromDictionary:dict] integerValue];
  139. [[NSUserDefaults standardUserDefaults] setObject:@(cardFrame) forKey:kCardFrameCode];
  140. //进场飘屏 Code
  141. NSInteger enterFloating = [[self objectOrNilForKey:@"enterFloating" fromDictionary:dict] integerValue];
  142. [[NSUserDefaults standardUserDefaults] setObject:@(enterFloating) forKey:kEnterFloatingCode];
  143. //打赏横幅 Code
  144. NSInteger rewardBanner = [[self objectOrNilForKey:@"rewardBanner" fromDictionary:dict] integerValue];
  145. [[NSUserDefaults standardUserDefaults] setObject:@(rewardBanner) forKey:kRewardBannerCode];
  146. //连麦边框 Code
  147. NSInteger linkMicFrame = [[self objectOrNilForKey:@"linkMicFrame" fromDictionary:dict] integerValue];
  148. [[NSUserDefaults standardUserDefaults] setObject:@(linkMicFrame) forKey:kLinkMicFrameCode];
  149. //直播弹幕 Code
  150. NSInteger liveBarrage = [[self objectOrNilForKey:@"liveBarrage" fromDictionary:dict] integerValue];
  151. [[NSUserDefaults standardUserDefaults] setObject:@(liveBarrage) forKey:kLiveBarrageCode];
  152. }
  153. + (void)updataUserInfoBoolWith:(NSDictionary *)dict AndNeedSynchronize:(BOOL)synchronize{
  154. //是否绑定手机
  155. BOOL isHaveMobile = [[self objectOrNilForKey:@"mobile" fromDictionary:dict] boolValue];
  156. [[NSUserDefaults standardUserDefaults] setBool:isHaveMobile forKey:kIsMobile];
  157. //是否主播
  158. BOOL isAnchor = [[self objectOrNilForKey:@"anchor" fromDictionary:dict] boolValue];
  159. [[NSUserDefaults standardUserDefaults] setBool:isAnchor forKey:kIsAnchor];
  160. //是否拥有工会
  161. BOOL isHaveGuild = [[self objectOrNilForKey:@"guild" fromDictionary:dict] boolValue];
  162. [[NSUserDefaults standardUserDefaults] setBool:isHaveGuild forKey:kIsHaveGuild];
  163. //是否创建粉丝团
  164. BOOL isCreateClub = [[self objectOrNilForKey:@"fansClub" fromDictionary:dict] boolValue];
  165. [[NSUserDefaults standardUserDefaults] setBool:isCreateClub forKey:kIsCreatFansClub];
  166. //关闭自动加入粉丝团
  167. BOOL closeFansClub = [[self objectOrNilForKey:@"joinFansClub" fromDictionary:dict] boolValue];
  168. [[NSUserDefaults standardUserDefaults] setBool:closeFansClub forKey:kCloseJoinFansClub];
  169. //是否享受直播新人打折
  170. BOOL liveDiscount = [[self objectOrNilForKey:@"liveDiscount" fromDictionary:dict] boolValue];
  171. [[NSUserDefaults standardUserDefaults] setBool:liveDiscount forKey:kLiveDiscount];
  172. if(synchronize){
  173. [[NSUserDefaults standardUserDefaults] synchronize];
  174. }
  175. }
  176. #pragma mark -- 删除用户信息 --
  177. ///删除关键信息, 一般用于退出登录
  178. + (void)deleteUserDefaultsExceptApp{
  179. NSArray *languaArr = (NSArray *)[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
  180. NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
  181. // 删除UserDefaults所有数据
  182. [[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
  183. if(languaArr){
  184. if(languaArr.count > 0){
  185. [[NSUserDefaults standardUserDefaults] setObject:languaArr forKey:@"AppleLanguages"];
  186. }
  187. }
  188. [[NSUserDefaults standardUserDefaults] synchronize];
  189. }
  190. + (id)objectOrNilForKey:(id)aKey fromDictionary:(NSDictionary *)dict
  191. {
  192. id object = [dict objectForKey:aKey];
  193. return [object isEqual:[NSNull null]] ? nil : object;
  194. }
  195. #pragma mark - FMDB - Save
  196. + (void)saveUserBaseWith:(MOUserBase *)model{
  197. NSString *currentUserId = GetUserId;
  198. if(currentUserId.length == 0){
  199. return;
  200. }
  201. model.myUserId = currentUserId;
  202. NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId];
  203. LKDBHelper *helper = [MOUserBase getUsingLKDBHelper];
  204. model.db_tableName = tableName;
  205. LKDBQueryParams *queryParams = [LKDBQueryParams new];
  206. queryParams.tableName = tableName;
  207. queryParams.toClass = [MOUserBase class];
  208. queryParams.whereDic = @{@"model_id":model.model_id};
  209. queryParams.count = 1;
  210. NSMutableArray *searchArr = [helper searchWithParams:queryParams];
  211. if(searchArr.count == 0){
  212. BOOL result = [model saveToDB];
  213. if(!result){
  214. MOLogV(@"savePersonListWith 存储失败");
  215. }
  216. }
  217. else{
  218. BOOL result = [helper updateToDB:model where:nil];
  219. if(!result){
  220. MOLogV(@"savePersonListWith 更新失败");
  221. }
  222. }
  223. }
  224. #pragma mark - FMDB - Search
  225. //同步查询自己所有的好友
  226. + (void)searchAllUserBaseCompleted:(void(^)(NSArray<MOUserBase *> *data))completedCallback{
  227. NSString *currentUserId = GetUserId;
  228. if(currentUserId.length == 0){
  229. return;
  230. }
  231. NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId];
  232. NSString *where = [NSString stringWithFormat:@"SELECT * FROM %@",tableName];
  233. NSMutableArray *searchArr = [MOUserBase searchWithSQL:where];
  234. completedCallback(searchArr);
  235. }
  236. + (MOUserBase *)searchMOUserBaseWith:(NSString *)userId{
  237. if(userId.length == 0){
  238. return nil;
  239. }
  240. NSString *currentUserId = GetUserId;
  241. if(currentUserId.length == 0){
  242. return nil;
  243. }
  244. MOUserBase *model = [[MOUserBase alloc] init];
  245. model.myUserId = currentUserId;
  246. NSString *tableName = [NSString stringWithFormat:@"MOUserBase_%@",currentUserId];
  247. LKDBHelper *helper = [MOUserBase getUsingLKDBHelper];
  248. model.db_tableName = tableName;
  249. model.model_id = userId;
  250. LKDBQueryParams *queryParams = [LKDBQueryParams new];
  251. queryParams.tableName = tableName;
  252. queryParams.toClass = [MOUserBase class];
  253. queryParams.whereDic = @{@"model_id":model.model_id};
  254. queryParams.count = 1;
  255. NSMutableArray *searchArr = [helper searchWithParams:queryParams];
  256. if(searchArr.count > 0){
  257. return searchArr.lastObject;
  258. }
  259. return nil;
  260. }
  261. + (MOUserProfile *)searchMOUserProfileWith:(NSString *)userId{
  262. if(userId.length == 0){
  263. return nil;
  264. }
  265. NSMutableArray *searchArr = [MOUserProfile searchWithWhere:@{@"id":userId}];
  266. if(searchArr.count > 0){
  267. return searchArr.lastObject;
  268. }
  269. return nil;
  270. }
  271. @end