KSRCIMDataSource.m 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. //
  2. // KSRCIMDataSource.m
  3. // StudentDaya
  4. //
  5. // Created by Kyle on 2019/8/12.
  6. // Copyright © 2019 DayaMusic. All rights reserved.
  7. //
  8. #import "KSRCIMDataSource.h"
  9. @implementation KSRCIMDataSource
  10. + (KSRCIMDataSource *)shareInstance {
  11. static KSRCIMDataSource *manager = nil;
  12. static dispatch_once_t onceToken;
  13. dispatch_once(&onceToken, ^{
  14. manager = [[[self class] alloc] init];
  15. });
  16. return manager;
  17. }
  18. #pragma mark --- groupInfo
  19. - (void)getGroupInfoWithGroupId:(NSString *)groupId completion:(void (^)(RCGroup *))completion {
  20. if ([NSString isEmptyString:groupId]) {
  21. completion(nil);
  22. }
  23. [KSNetworkingManager queryGroupDetail:KS_POST groupId:groupId success:^(NSDictionary * _Nonnull dic) {
  24. if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
  25. NSDictionary *result = [dic dictionaryValueForKey:@"data"];
  26. RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:[result stringValueForKey:@"name"] portraitUri:[result stringValueForKey:@"img"]];
  27. completion(groupInfo);
  28. }
  29. else {
  30. RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
  31. completion(groupInfo);
  32. }
  33. } faliure:^(NSError * _Nonnull error) {
  34. RCGroup *groupInfo = [[RCGroup alloc] initWithGroupId:groupId groupName:@"" portraitUri:@""];
  35. completion(groupInfo);
  36. }];
  37. }
  38. // 获取群组中所有的用户uid
  39. - (void)getAllMembersOfGroup:(NSString *)groupId result:(void (^)(NSArray<NSString *> *))resultBlock {
  40. if ([NSString isEmptyString:groupId]) {
  41. resultBlock(nil);
  42. return;
  43. }
  44. [KSNetworkingManager imGroupMemberAllRequest:KS_POST groupId:groupId success:^(NSDictionary * _Nonnull dic) {
  45. if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
  46. NSArray *sourceArray = [dic arrayValueForKey:@"data"];
  47. NSMutableArray *ret = [[NSMutableArray alloc] init];
  48. for (NSDictionary *parm in sourceArray) {
  49. [ret addObject:[parm stringValueForKey:@"userId"]];
  50. }
  51. resultBlock(ret);
  52. }
  53. else {
  54. resultBlock(nil);
  55. }
  56. } faliure:^(NSError * _Nonnull error) {
  57. resultBlock(nil);
  58. }];
  59. }
  60. #pragma mark -- userInfo
  61. - (void)getUserInfoWithUserId:(NSString *)userId completion:(void (^)(RCUserInfo *))completion {
  62. RCUserInfo *user = [RCUserInfo new];
  63. if (userId == nil || [userId length] == 0) {
  64. user.userId = userId;
  65. user.portraitUri = @"";
  66. user.name = @"";
  67. completion(user);
  68. return;
  69. }
  70. if (![userId isEqualToString:[RCIM sharedRCIM].currentUserInfo.userId]) {
  71. [KSNetworkingManager imUserFriendQueryDetail:KS_POST userId:userId success:^(NSDictionary * _Nonnull dic) {
  72. if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
  73. NSDictionary *userDic = [dic dictionaryValueForKey:@"data"];
  74. RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:[userDic stringValueForKey:@"friendNickname"] portrait:[userDic stringValueForKey:@"friendAvatar"]];
  75. completion(user);
  76. }
  77. else {
  78. RCUserInfo *user = [RCUserInfo new];
  79. completion(user);
  80. }
  81. } faliure:^(NSError * _Nonnull error) {
  82. RCUserInfo *user = [RCUserInfo new];
  83. completion(user);
  84. }];
  85. }
  86. else {
  87. RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:UserDefault(UIDKey) name:UserDefault(NicknameKey) portrait:UserDefault(AvatarUrlKey)];
  88. return completion(user);
  89. }
  90. }
  91. #pragma mark --- group userInfo
  92. - (void)getUserInfoWithUserId:(NSString *)userId inGroup:(NSString *)groupId completion:(void (^)(RCUserInfo *))completion {
  93. RCUserInfo *user = [RCUserInfo new];
  94. if (userId == nil || [userId length] == 0) {
  95. user.userId = userId;
  96. user.portraitUri = @"";
  97. user.name = @"";
  98. completion(user);
  99. return;
  100. }
  101. [KSNetworkingManager imGroupMemberQueryUser:KS_POST groupId:groupId userId:userId success:^(NSDictionary * _Nonnull dic) {
  102. if ([dic integerValueForKey:@"code"] == 200 && [dic boolValueForKey:@"status"]) {
  103. NSDictionary *result = [dic dictionaryValueForKey:@"data"];
  104. NSString *name = [result stringValueForKey:@"nickname"];
  105. NSString *title = [result stringValueForKey:@"roleType"];
  106. if (![NSString isEmptyString:title]) {
  107. name = [NSString stringWithFormat:@"%@(%@)", name, title];
  108. }
  109. NSDictionary *userDic = [result dictionaryValueForKey:@"user"];
  110. RCUserInfo *user = [[RCUserInfo alloc] initWithUserId:userId name:name portrait:[userDic stringValueForKey:@"avatar"]];
  111. completion(user);
  112. }
  113. else {
  114. RCUserInfo *user = [RCUserInfo new];
  115. completion(user);
  116. }
  117. } faliure:^(NSError * _Nonnull error) {
  118. RCUserInfo *user = [RCUserInfo new];
  119. completion(user);
  120. }];
  121. }
  122. @end