Files
yuyin_ios/SweetParty/主类/RCMic/Room/BaoMaiView/BJRoomBaomaiAlert.m

420 lines
14 KiB
Mathematica
Raw Normal View History

2025-08-08 11:05:33 +08:00
//
// RoomFluctuationOfWheatView.m
// QiaoYuYueWan
//
// Created by feifei on 2019/9/2.
// Copyright © 2019 QiaoYuYueWan. All rights reserved.
//
#import "BJRoomBaomaiAlert.h"
#import "BJRoomBaomaiCell.h"
#import "YYXQPickTimeAlert.h"
@interface BJRoomBaomaiAlert ()<UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate>
@property (nonatomic, strong) RCMicRoomViewModel *roomModel;
@property (nonatomic, strong) UIView *mainView;
@property (nonatomic, strong) UILabel *titelLB;
@property (nonatomic, strong) UITextField *searchTF;
@property (nonatomic, strong) UIButton *searchBtn;
@property (nonatomic, strong) UITableView *tableView;
@property (nonatomic, assign) BOOL haveSearchTf; //
@property (nonatomic, assign) BOOL isSearching; //section
@property (nonatomic, strong) NSMutableArray<BJRoomBaomaiModel *> *mic_user;
@property (nonatomic, strong) NSMutableArray<BJRoomBaomaiModel *> *room_user;
@property (nonatomic, strong) NSMutableArray<BJRoomBaomaiModel *> *searchArry;
@end
@implementation BJRoomBaomaiAlert
- (NSMutableArray<BJRoomBaomaiModel *> *)mic_user {
if (!_mic_user) {
_mic_user = NSMutableArray.array;
}
return _mic_user;
}
- (NSMutableArray<BJRoomBaomaiModel *> *)room_user {
if (!_room_user) {
_room_user = NSMutableArray.array;
}
return _room_user;
}
- (NSMutableArray<BJRoomBaomaiModel *> *)searchArry {
if (!_searchArry) {
_searchArry = NSMutableArray.array;
}
return _searchArry;
}
#pragma mark - Intial
- (instancetype)initWithRoomModel:(RCMicRoomViewModel *)viewModel {
if (self = [super initWithFrame:UIScreen.mainScreen.bounds]) {
self.roomModel = viewModel;
self.backgroundColor = HEXCOLORA(0x000000, 0.5);
[self setUpUI];
}
return self;
}
- (void)setUpUI {
//
UIButton *clearBtn = [UIButton buttonWithType:UIButtonTypeCustom];
clearBtn.frame = self.bounds;
clearBtn.backgroundColor = UIColor.clearColor;
[clearBtn setTitle:@"" forState:UIControlStateNormal];
[clearBtn addTarget:self action:@selector(removeAction) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:clearBtn];
//
self.mainView.frame = CGRectMake(0, APPH-400-yb_HomeIndicator_H, APPW, 400+yb_HomeIndicator_H); // 400+
[self addSubview:self.mainView];
self.titelLB.frame = CGRectMake(0, 15, APPW, 20);
[self.mainView addSubview:self.titelLB];
self.searchTF.frame = CGRectMake(22, _titelLB.bottom+14, APPW-44-80, 35);
[self.mainView addSubview:self.searchTF];
self.searchBtn.frame = CGRectMake(_searchTF.right+30, 0, 50, 30);
self.searchBtn.centerY = _searchTF.centerY;
[self.mainView addSubview:self.searchBtn];
self.tableView.frame = CGRectMake(0, _searchTF.bottom, APPW, 400-_searchTF.bottom);
[self.mainView addSubview:self.tableView];
}
- (void)showOnView:(UIView *)parent haveSearchTf:(BOOL)haveSearch {
_haveSearchTf = haveSearch;
[parent addSubview:self];
//
_searchTF.hidden = haveSearch==NO;
if (haveSearch) {
_searchTF.hidden = _searchBtn.hidden = NO;
_titelLB.text = @"抱麦";
self.tableView.frame = CGRectMake(0, _searchTF.bottom, APPW, 400-_searchTF.bottom);
}else {
_titelLB.text = @"成员";
_searchTF.hidden = _searchBtn.hidden = YES;
self.tableView.frame = CGRectMake(0, _titelLB.bottom, APPW, 400-_titelLB.bottom);
}
_mainView.y = APPH;
[self layoutIfNeeded];
//
[UIView animateWithDuration:0.2 animations:^{
self.mainView.y = APPH-400-yb_HomeIndicator_H;
}];
//
[self loadListData];
}
- (void)loadListData {
NSDictionary *dict = @{@"rid":C_string(_roomModel.roomInfo.roomId),
@"page":C_string(@"1"),
@"page_limit":C_string(@"999"),
};
NSMutableDictionary *paras = [NSMutableDictionary dictionary];
[paras addEntriesFromDictionary:dict];
//uid
_isSearching = _searchTF.text.length > 0;
if (_searchTF.text.length > 0) {
[paras setObject:_searchTF.text forKey:@"uid"];
}
// [SVProgressHUD showWithStatus:nil];
[RCMicHTTP postWithURLString:@"/api/room/get_room_user_list" parameters:paras response:^(RCMicHTTPResult *result) {
// [SVProgressHUD dismiss];
if (result.success) {
if (result.errorCode == 200 && [result.content isKindOfClass:NSDictionary.class]) {
[self checkResult:result.content];
}else {
[SVProgressHUD showInfoWithStatus:result.message];
}
}else {
[SVProgressHUD showInfoWithStatus:@"网络错误"];
}
}];
}
- (void)checkResult:(NSDictionary *)result {
[self.searchArry removeAllObjects];
if (_isSearching) {
// NSArray *upArr = [result safeArrayForKey:@"micro_user_list"];
// if (upArr.count > 0) {
// NSArray *models = [BJRoomBaomaiModel mj_objectArrayWithKeyValuesArray:upArr];
// [self.searchArry addObjectsFromArray:models];
// }
NSArray *downArr = [result safeArrayForKey:@"unmicro_user_list"];
if (downArr.count > 0) {
NSArray *models = [BJRoomBaomaiModel mj_objectArrayWithKeyValuesArray:downArr];
[self.searchArry addObjectsFromArray:models];
}
}
else {
[self.mic_user removeAllObjects];
[self.room_user removeAllObjects];
NSArray *upArr = [result safeArrayForKey:@"micro_user_list"];
if (upArr.count > 0) {
NSArray *models = [BJRoomBaomaiModel mj_objectArrayWithKeyValuesArray:upArr];
[self.mic_user addObjectsFromArray:models];
}
NSArray *downArr = [result safeArrayForKey:@"unmicro_user_list"];
if (downArr.count > 0) {
NSArray *models = [BJRoomBaomaiModel mj_objectArrayWithKeyValuesArray:downArr];
[self.room_user addObjectsFromArray:models];
}
}
[self.tableView reloadData];
}
#pragma mark - action
- (void)removeAction {
[self removeFromSuperview];
}
- (void)tfValueChanged {
NSLog(@"%@", _searchTF.text);
if (_searchTF.text.length == 0) {
_isSearching = NO;
[_tableView reloadData];
}
}
- (void)inviteUserWith:(BJRoomBaomaiModel *)model {
__weak typeof(self) weakSelf = self;
[_roomModel bj_inviteParticipant:model.uid error:^(BOOL isOk) {
if (isOk) {
// [SVProgressHUD showInfoWithStatus:@"上麦成功"];
V2TIMMessage *message = [[V2TIMManager sharedInstance] createCustomMessage:[@(BJIMMsgType_BeUpMic).stringValue mj_JSONData]];
[[V2TIMManager sharedInstance] sendMessage:message
receiver:model.uid
groupID:nil
priority:V2TIM_PRIORITY_DEFAULT
onlineUserOnly:YES
offlinePushInfo:nil
progress:nil
succ:^{
//
} fail:^(int code, NSString *desc) {
//
}];
[weakSelf loadListData];
}
}];
}
- (void)xq_baomaiWith:(BJRoomBaomaiModel *)model time:(NSString *)time {
NSDictionary *params = @{@"uid":model.uid, @"rid":C_string(self.roomModel.roomInfo.roomId), @"micro_id":C_string(GVUSER.position), @"time":time};
[[AFNetworkRequset shared] postRequestWithParams:params Path:@"/api/room/room_owner_up_micro" Loading:YES Hud:YES Success:^(id _Nonnull responseDic) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self removeFromSuperview];
});
} Failure:^(id _Nonnull errorData) {
}];
}
- (void)doSearch {
if (_searchTF.text.length > 0) {
[self loadListData];
}
[self endEditing:YES];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[self doSearch];
return YES;
}
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
if (_isSearching) {
return 1;
}
return 2;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
if (_isSearching) {
return self.searchArry.count;
}else{
if (section == 0) {
return self.mic_user.count;
}else if (section == 1) {
return self.room_user.count;
}
}
return 0;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
BJRoomBaomaiCell *cell = [BJRoomBaomaiCell cellWithTableView:tableView];
cell.timeLabel.hidden = YES;
if (_haveSearchTf) {
if (indexPath.section == 0) {
cell.quDingButton.hidden = YES;
}else {
cell.quDingButton.hidden = NO;
}
}else {
cell.quDingButton.hidden = YES;
}
//model
BJRoomBaomaiModel *model;
if (_isSearching) {
model = self.searchArry[indexPath.row];
}else{
if (indexPath.section == 0) {
model = self.mic_user[indexPath.row];
}else{
model = self.room_user[indexPath.row];
}
}
cell.model = model;
__weak typeof(self) weakSelf = self;
cell.quDingButtonClickBlock = ^(BJRoomBaomaiModel *model) {
NSLog(@"------------------%@", GVUSER.position);
if (weakSelf.roomModel.roomInfo.is_blind_date == 1 && [GVUSER.position integerValue] < 6) {
YYXQPickTimeAlert *view = LoadNib(@"YYXQPickTimeAlert");
view.frame = [UIScreen mainScreen].bounds;
[KEYWINDOW addSubview:view];
view.onConfirmBlock = ^(NSString * _Nonnull time) {
[weakSelf xq_baomaiWith:model time:time];
};
}else {
[weakSelf inviteUserWith:model];
}
// [weakSelf inviteUserWith:model];
};
return cell;
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headerView = [ControlCreator createView:nil rect:CGRectMake(0, 0, ScreenViewWidth, 40) backguoundColor:[UIColor whiteColor]];
UILabel *headerLB = [ControlCreator createLabel:headerView rect:CGRectMake(12, 10, ScreenViewWidth, 20) text:@"" font:Font(14) color:mainViceColor backguoundColor:[UIColor clearColor] align:NSTextAlignmentLeft lines:1];
if (_isSearching) {
return nil;
}
if (section == 0) {
headerLB.text = NSStringFormat(@"麦上用户%ld/8", (long)self.mic_user.count);
}else{
headerLB.text = NSStringFormat(@"麦下用户%ld人", (long)self.room_user.count);
}
return headerView;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return nil;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//model
BJRoomBaomaiModel *model;
if (_isSearching) {
model = self.searchArry[indexPath.row];
}else{
if (indexPath.section == 0) {
model = self.mic_user[indexPath.row];
}else{
model = self.room_user[indexPath.row];
}
}
if (self.onClickUserBlock) {
self.onClickUserBlock(model.uid);
}
}
#pragma mark Table view delegate
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
return 90;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
if (_isSearching) {
return 0.001;
}
return 40;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 0.00001;
}
#pragma mark - getter methodsb
- (UIView *)mainView{
if (!_mainView) {
_mainView = [ControlCreator createView:nil rect:CGRectZero backguoundColor:[UIColor whiteColor]];
_mainView.layer.masksToBounds = YES;
_mainView.layer.cornerRadius = 7;
}
return _mainView;
}
- (UILabel *)titelLB{
if (!_titelLB) {
_titelLB = [ControlCreator createLabel:nil rect:CGRectZero text:@"抱麦" font:Font(15) color:[UIColor blackColor] backguoundColor:[UIColor clearColor] align:NSTextAlignmentCenter lines:1];
}
return _titelLB;
}
- (UITextField *)searchTF{
if (!_searchTF) {
_searchTF = [ControlCreator createTextField:nil rect:CGRectMake(0, 0, 0, 0) placeholder:@"输入用户ID" placeholderColor:nil text:@"" font:Font(12) color:mainViceColor backguoundColor:MHColorFromHexString(@"#F8F8F8")];
_searchTF.layer.masksToBounds = YES;
_searchTF.layer.cornerRadius = 17.5;
_searchTF.keyboardType = UIKeyboardTypeNumberPad;
UIView *leftTFView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 15, 35)];
leftTFView.backgroundColor = [UIColor clearColor];
_searchTF.leftView = leftTFView;
_searchTF.leftViewMode = UITextFieldViewModeAlways;
[_searchTF addTarget:self action:@selector(tfValueChanged) forControlEvents:UIControlEventEditingChanged];
_searchTF.delegate = self;
}
return _searchTF;
}
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStyleGrouped];
_tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
_tableView.dataSource = self;
_tableView.delegate = self;
_tableView.backgroundView = nil;
_tableView.showsVerticalScrollIndicator = NO;
_tableView.backgroundColor = [UIColor whiteColor];
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_tableView.separatorColor=[UIColor clearColor];
}
return _tableView;
}
- (UIButton *)searchBtn {
if (!_searchBtn) {
_searchBtn = [ControlCreator createButton:nil rect:CGRectZero text:@"确定" font:YBFont(14) color:UIColor.whiteColor backguoundColor:MLControlsColor imageName:nil target:self action:@selector(doSearch)];
_searchBtn.layer.masksToBounds = YES;
_searchBtn.layer.cornerRadius = 15;
}
return _searchBtn;
}
@end