diff --git a/YuMi/Modules/YMRoom/Api/Api+Room.h b/YuMi/Modules/YMRoom/Api/Api+Room.h index e7aa7242..1b5b0307 100644 --- a/YuMi/Modules/YMRoom/Api/Api+Room.h +++ b/YuMi/Modules/YMRoom/Api/Api+Room.h @@ -223,6 +223,10 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 /// @param roomUid 房间id +(void)getUnlockRoomAlbumPhotoList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; +///获取踢人列表 +/// @param completion 完成 +/// @param roomUid 房间id ++(void)getKickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Api/Api+Room.m b/YuMi/Modules/YMRoom/Api/Api+Room.m index a8f941e9..1e2a7028 100644 --- a/YuMi/Modules/YMRoom/Api/Api+Room.m +++ b/YuMi/Modules/YMRoom/Api/Api+Room.m @@ -310,4 +310,11 @@ +(void)getUnlockRoomAlbumPhotoList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ [self makeRequest:@"roomAlbum/listUnlockPhoto" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil]; } + +///获取踢人列表 +/// @param completion 完成 +/// @param roomUid 房间id ++(void)getKickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ + [self makeRequest:@"room/kick/" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__,roomUid,nil]; +} @end diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h index 6bb22066..2c4d5103 100644 --- a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.h @@ -26,11 +26,11 @@ NS_ASSUME_NONNULL_BEGIN /// @param backPic 房间背景 /// @param mgId 小游戏的id - (void)openRoom:(NSString *)title - type:(RoomType)type - roomPwd:(NSString *)roomPwd - roomDesc:(NSString *)roomDesc - backPic:(NSString *)backPic - mgId:(NSString *)mgId; + type:(RoomType)type + roomPwd:(NSString *)roomPwd + roomDesc:(NSString *)roomDesc + backPic:(NSString *)backPic + mgId:(NSString *)mgId; ///福袋礼物爆出的礼物的bug ///进入房间的时候需要获取一次礼物信息 因为如果有人送礼物的话 如果是福袋礼物的话 爆出的礼物需要从礼物列表中获取 会导致公屏不显示那个礼物 @@ -73,6 +73,9 @@ NS_ASSUME_NONNULL_BEGIN /// 获取已解锁照片id列表 /// @param roomUid 房间id -(void)getUnlockRoomAlbumPhotoListWithRoomUid:(NSString *)roomUid; +///得到踢人名单 +/// @param roomUid 房间id +-(void)getKickUserListWithRoomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m index a5a5a37d..c44e4b52 100644 --- a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m @@ -297,4 +297,13 @@ [[self getView]getUnlockRoomAlbumPhotoListSuccessWithList:data.data]; } showLoading:NO errorToast:NO] roomUid:roomUid]; } +///得到踢人名单 +/// @param roomUid 房间id +-(void)getKickUserListWithRoomUid:(NSString *)roomUid{ + + [Api getKickUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + [[self getView]getKickUserListSuccessWithList:data.data]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + } showLoading:NO errorToast:NO] roomUid:roomUid]; +} @end diff --git a/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h b/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h index 126b338a..f59d79fb 100644 --- a/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h +++ b/YuMi/Modules/YMRoom/Protocol/XPRoomProtocol.h @@ -39,6 +39,8 @@ NS_ASSUME_NONNULL_BEGIN -(void)getFreeGiftDataSuccess:(XPFreeGiftModel *)freeModel; ///获取已解锁照片id列表 -(void)getUnlockRoomAlbumPhotoListSuccessWithList:(NSArray *)list; +///获取踢人房间列表 +-(void)getKickUserListSuccessWithList:(NSArray *)list; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h index aa3e5389..e46fca12 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.h @@ -54,6 +54,12 @@ NS_ASSUME_NONNULL_BEGIN /// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 /// @param isSet true 设置,false 取消设置 + (void)superAdminHandleUser:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid targetUid:(NSString *)targetUid opt:(NSString *)opt isSet:(NSNumber *)isSet; + +/// 记录踢人名单列表 +/// @param completion 完成 +/// @param roomUid 房间id +/// @param uid 用户id ++(void)recordskickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m index 9130c560..ad9e4a09 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m +++ b/YuMi/Modules/YMRoom/View/UserCard/Api/Api+UserCard.m @@ -62,5 +62,11 @@ NSString * fang = [NSString stringFromBase64String:@"c3VwZXIvc2V0L2NoYXRyb29tL3JvbGU="];///super/set/chatroom/role [self makeRequest:fang method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, targetUid, opt,isSet, nil]; } - +/// 记录踢人名单列表 +/// @param completion 完成 +/// @param roomUid 房间id +/// @param uid 用户id ++(void)recordskickUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid uid:(NSString *)uid{ + [self makeRequest:@"room/kick/" method:HttpRequestHelperMethodPOST completion:completion, __FUNCTION__, roomUid, uid, nil]; +} @end diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h index 1e940612..9174c8a1 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.h @@ -89,6 +89,11 @@ NS_ASSUME_NONNULL_BEGIN /// @param opt 1: 设置为管理员;2:设置普通等级用户;-1:设为黑名单用户;-2:设为禁言用户 /// @param roomUid 房主的uid - (void)superAdminHandleUser:(NSString *)targetUid opt:(NSString *)opt roomUid:(NSString *)roomUid isSet:(BOOL)isSet; +/// 记录踢人名单列表 + +/// @param roomUid 房间id +/// @param uid 用户id +-(void)recordsKickUserListWithRoomUid:(NSString *)roomUid uid:(NSString *)uid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m index 15b731dd..69e338d4 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m +++ b/YuMi/Modules/YMRoom/View/UserCard/Presenter/XPUserCardPresenter.m @@ -451,7 +451,7 @@ [[NIMSDK sharedSDK].chatroomManager kickMember:request completion:^(NSError * _Nullable error) { - [[self getView] makeKickUserFinish:error]; + [[self getView] makeKickUserFinish:error uid:targetUid]; }]; } @@ -602,7 +602,16 @@ return nil; }]; } - +/// 记录踢人名单列表 +/// @param roomUid 房间id +/// @param uid 用户id +-(void)recordsKickUserListWithRoomUid:(NSString *)roomUid uid:(NSString *)uid{ + [Api recordskickUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + + } fail:^(NSInteger code, NSString * _Nullable msg) { + + } showLoading:NO errorToast:NO] roomUid:roomUid uid:uid ]; +} #pragma mark - Getters And Setters - (NSMutableArray *)functionArray { if (!_functionArray) { diff --git a/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h index f75cb785..0717047f 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h +++ b/YuMi/Modules/YMRoom/View/UserCard/Protocol/XPUserCardProtocol.h @@ -24,7 +24,7 @@ NS_ASSUME_NONNULL_BEGIN ///设置管理 取消管理员 成功 - (void)markUserManagerFinish:(XPUserCardItemModel *)item error:(NSError *)error; /// 踢出房间 -- (void)makeKickUserFinish:(NSError *)error; +- (void)makeKickUserFinish:(NSError *)error uid:(NSString *)uid; ///超管踢管理出房间 - (void)superAdminKickUserFinish:(NSError *)error; ///抱下麦成功 diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m index 31847cc6..a6ddf9e9 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m @@ -643,10 +643,12 @@ [self.collectionView reloadData]; } -- (void)makeKickUserFinish:(NSError *)error { +- (void)makeKickUserFinish:(NSError *)error uid:(NSString *)uid{ if (error == nil && self.targetUserInfo) { + NSString * roomUid = [NSString stringWithFormat:@"%ld", self.cardInfo.roomInfo.uid]; [self dismissViewControllerAnimated:YES completion:nil]; [self sendCustomMessageKickOrBlackUser:CustomMessageType_Kick_User second:Custom_Message_Sub_Kick_BeKicked]; + [self.presenter recordsKickUserListWithRoomUid:roomUid uid:uid]; } else if (error.code == 404) { [self showErrorToast:YMLocalizedString(@"XPUserCardViewController0")]; } diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index afe36d0f..3c529d63 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -1001,7 +1001,18 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 } [[NSNotificationCenter defaultCenter]postNotificationName:@"kGetgetUnlockRoomAlbumPhotoListNot" object:nil]; } - +///获取踢人房间列表 +-(void)getKickUserListSuccessWithList:(NSArray *)list{ + NSString *uid = [[AccountInfoStorage instance]getUid]; + for (id obj in list) { + if([obj integerValue] == [uid integerValue]){ + [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomViewController0")]; + [self dismissViewControllerAnimated:YES completion:nil]; + break; + } + } + +} - (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo { [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view]; [XPSkillCardPlayerManager shareInstance].roomUid = @(roomInfo.uid).stringValue; @@ -1019,14 +1030,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 }); - //判断5分钟内是否被踢出过房间 - NSString *currentUid = [AccountInfoStorage instance].getUid; - NSString *key = [NSString stringWithFormat:@"kKickedOutRoom_%@_%ld", currentUid, roomInfo.uid]; - if ([self isKictOutLatest:key mainKey:@"kKickedOutRoomList"] == YES) { - [XNDJTDDLoadingTool showErrorWithMessage:YMLocalizedString(@"XPRoomViewController0")]; - [self dismissViewControllerAnimated:YES completion:nil]; - return; - } + if (roomInfo.type == RoomType_Anchor) {//个播房,获取下一个房间 [self handleInitAnchorRoom]; [self showAnchorScrollTipView]; @@ -1391,33 +1395,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 #pragma mark - NIMChatroomManagerDelegate - (void)chatroomBeKicked:(NIMChatroomBeKickedResult *)result { - if (result.reason == 2) { - [self showErrorToast:YMLocalizedString(@"XPRoomViewController8")]; - ///保存被踢出时的时间 - NSDate* date = [NSDate dateWithTimeIntervalSinceNow:0];//获取当前时间0秒后的时间 - NSTimeInterval time = [date timeIntervalSince1970]; - NSString *currentTime = [NSString stringWithFormat:@"%.0f", time]; - NSString *key = [NSString stringWithFormat:@"kKickedOutRoom_%@_%ld", [AccountInfoStorage instance].getUid, self.roomInfo.uid]; - NSMutableDictionary *kickedList = [[NSUserDefaults standardUserDefaults]valueForKey:@"kKickedOutRoomList"]; - if([kickedList isKindOfClass:[NSString class]]){ - kickedList = nil; - } - if(kickedList == nil){ - kickedList = [NSMutableDictionary dictionary]; - }else{ - kickedList = [[NSMutableDictionary alloc]initWithDictionary:kickedList]; - } - NSMutableDictionary *copyList = [[NSMutableDictionary alloc]initWithDictionary:kickedList]; - for (NSString *timeKey in copyList.allKeys) { - if([self isKictOutLatest:timeKey mainKey:@"kKickedOutRoomList"] == NO){ - [kickedList removeObjectForKey:timeKey]; - } - } - [kickedList setValue:currentTime forKey:key]; - [[NSUserDefaults standardUserDefaults] setObject:kickedList forKey:@"kKickedOutRoomList"]; - [[NSUserDefaults standardUserDefaults] synchronize]; - } else if (result.reason == 5) { + if (result.reason == 5) { [self showErrorToast:YMLocalizedString(@"XPRoomViewController9")]; } [self.presenter exitNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId]]; @@ -1548,9 +1527,14 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 break; case NIMChatroomEventTypeEnter: { + if (content.source.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue){ + [self.presenter getKickUserListWithRoomUid:@(self.roomInfo.uid).stringValue]; + } if (content.source.userId.integerValue != [AccountInfoStorage instance].getUid.integerValue && self.userInfo.platformRole != 1) { onLineNumber += 1; - }else {///如果是自己的话 如果有坐骑的话 + }else { + + ///如果是自己的话 如果有坐骑的话 [self userEnterRoomSuccess]; ///在活动页面 判断是否显示 相亲加入的按钮 所以需要等用户进房成功之后才能获取 房间角色 [self.activityContainerView onRoomUpdate];