房间完成

This commit is contained in:
启星
2025-12-01 18:42:49 +08:00
parent 7eb4f8d3b8
commit 2d37ab6844
55 changed files with 653 additions and 41 deletions

View File

@@ -34,8 +34,8 @@
[self.seatContentView signDidEndWithUserInfo1:userInfo1 userInfo2:userInfo2 sign_value:sign_value];
}
///
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId{
[self.seatContentView signValueDidChangedWithSignUserInfo:signUserInfo sign_value:sign_value signId:signId];
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId sign_coin_list:(NSArray*)sign_coin_list{
[self.seatContentView signValueDidChangedWithSignUserInfo:signUserInfo sign_value:sign_value signId:signId sign_coin_list:sign_coin_list];
}
///
-(void)signTimeDelayWithEndTime:(NSString*)endTime{

View File

@@ -314,7 +314,9 @@ QXRoomUserInfoViewDelegate
weakSelf.roomModel = roomModel;
[self resetSubviews];
[self configRoomDataIsJoin:YES];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
} roomErrorBlock:^(NSString * _Nonnull roomId, NSString * _Nonnull msg) {
}failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
[[QXGlobal shareGlobal] quitRoomWithRoomId:self.roomId];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

View File

@@ -136,6 +136,7 @@
self.countLabel = [[UILabel alloc] init];
self.countLabel.textColor = [UIColor whiteColor];
self.countLabel.font = [UIFont systemFontOfSize:12];
self.countLabel.hidden = YES;
[self addSubview:self.countLabel];
[self.countLabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.mas_equalTo(ScaleWidth(40));

View File

@@ -30,6 +30,14 @@
@property (nonatomic,strong)UIImageView *bgImageView;
///
@property (nonatomic,strong)QXSeatHeaderView *headerImageView;
///
@property (nonatomic,strong)UIView *masterView;
///
@property (nonatomic,strong)QXSeatHeaderView *masterHeaderView;
///
@property (nonatomic,strong)UIImageView *masterViewIcon;
///
@property (nonatomic,strong)UIButton *masterViewButton;
///
@property (nonatomic,strong)CKShimmerLabel *nameLabel;
@property (nonatomic,strong)UIImageView *sexImageView;
@@ -123,8 +131,42 @@
make.size.mas_equalTo(CGSizeMake(ScaleWidth(66), ScaleWidth(79)));
}];
self.masterView = [[UIView alloc] init];
self.masterView.hidden = YES;
[self.bgView addSubview:self.masterView];
[self.masterView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.headerImageView);
make.left.equalTo(self.headerImageView.mas_right);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(45), ScaleWidth(45+16)));
}];
self.masterHeaderView = [[QXSeatHeaderView alloc] init];
self.masterHeaderView.contentMode = UIViewContentModeScaleAspectFill;
[self.masterView addSubview:self.masterHeaderView];
//
[self.masterHeaderView mas_makeConstraints:^(MASConstraintMaker *make) {
make.left.right.top.equalTo(self.masterView);
make.height.equalTo(self.masterHeaderView.mas_width);
}];
self.masterViewIcon = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_info_master_icon"]];
[self.masterView insertSubview:self.masterViewIcon aboveSubview:self.masterHeaderView];
[self.masterViewIcon mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.masterHeaderView.mas_bottom).offset(-8);
make.centerX.equalTo(self.masterView);
make.size.mas_equalTo(CGSizeMake(ScaleWidth(30), ScaleWidth(16)));
}];
self.masterViewButton = [[UIButton alloc] init];
[self.masterViewButton addTarget:self action:@selector(toMasterUserHome) forControlEvents:(UIControlEventTouchUpInside)];
[self.masterView addSubview:self.masterViewButton];
[self.masterViewButton mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.masterView);
}];
UIButton *headder = [[UIButton alloc] init];
[headder addTarget:self action:@selector(toHomePage) forControlEvents:(UIControlEventTouchUpInside)];
[headder addTarget:self action:@selector(toUserHome) forControlEvents:(UIControlEventTouchUpInside)];
[self.bgView addSubview:headder];
[headder mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.left.right.top.equalTo(self.headerImageView);
@@ -485,11 +527,22 @@
-(void)followAction{
[[QXGlobal shareGlobal] joinRoomWithRoomId:self.roomId isRejoin:NO navagationController:self.viewController.navigationController];
}
-(void)toMasterUserHome{
[self toHomePageIsMaster:YES];
}
-(void)toUserHome{
[self toHomePageIsMaster:NO];
}
-(void)toHomePage{
-(void)toHomePageIsMaster:(BOOL)isMaster{
[self hide];
QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init];
NSString *userId = self.userId;
if (isMaster) {
userId = self.userModel.master.user_id;
}else{
userId = self.userId;
}
vc.user_id = userId;
[self.viewController.navigationController pushViewController:vc animated:YES];
}
@@ -590,6 +643,12 @@
}else{
[weakSelf.nameLabel stopShimmer];
}
if (model.master) {
weakSelf.masterView.hidden = NO;
[weakSelf.masterHeaderView setHeadIcon:model.master.avatar dress:model.master.dress];
}else{
weakSelf.masterView.hidden = YES;
}
weakSelf.nameLabel.text = model.nickname;
[weakSelf.nameLabel.contentLabel sizeToFit];
[weakSelf.nameLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
@@ -920,6 +979,11 @@
}
if (sender == self.joinGuildBtn) {
QXLOG(@"加入公会");
[QXMineNetwork joinGuildWithGuildId:self.userModel.guild successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
return;
}
if (sender == self.focusBtn) {

View File

@@ -0,0 +1,21 @@
//
// QXSignAlertView.h
// QXLive
//
// Created by 启星 on 2025/12/1.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSInteger) {
QXSignAlerTypeStart = 0,
QXSignAlerTypeFail = 1,
QXSignAlerTypeSuccess = 2,
}QXSignAlerType;
@interface QXSignAlertView : UIView
-(instancetype)initWithType:(QXSignAlerType)type;
-(void)showInView:(UIView*)view;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,130 @@
//
// QXSignAlertView.m
// QXLive
//
// Created by on 2025/12/1.
//
#import "QXSignAlertView.h"
@interface QXSignAlertView()
@property (nonatomic,strong)UIView *bgView;
@property (nonatomic,strong)UIImageView *imageView;
@property (nonatomic,strong)UIButton *closeBtn;
@property (assign,nonatomic)QXSignAlerType type;
@end
@implementation QXSignAlertView
-(instancetype)initWithType:(QXSignAlerType)type{
self = [super init];
if (self) {
_type = type;
self.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
[self initSubviewsWithType:type];
}
return self;
}
-(void)initSubviewsWithType:(QXSignAlerType)type{
self.bgView = [[UIView alloc] init];
[self addSubview:self.bgView];
switch (type) {
case QXSignAlerTypeStart:{
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(222));
make.height.mas_equalTo(ScaleWidth(222));
make.centerX.centerY.equalTo(self);
}];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_sign_start"]];
self.imageView.contentMode = UIViewContentModeScaleToFill;
[self.bgView addSubview:self.imageView];
[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.bgView);
}];
}
break;
case QXSignAlerTypeFail:
{
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(272));
make.height.mas_equalTo(ScaleWidth(397));
make.centerX.centerY.equalTo(self);
}];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_sign_fail"]];
[self.bgView addSubview:self.imageView];
[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.bgView);
}];
self.closeBtn = [[UIButton alloc] init];
[self.closeBtn setBackgroundImage:[UIImage imageNamed:@"room_sign_fail_btn"] forState:(UIControlStateNormal)];
[self.closeBtn addTarget:self action:@selector(hide) forControlEvents:(UIControlEventTouchUpInside)];
[self.bgView addSubview:self.closeBtn];
[self.closeBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.bottom.mas_equalTo(ScaleWidth(-29));
make.width.mas_equalTo(ScaleWidth(139));
make.height.mas_equalTo(ScaleWidth(51));
make.centerX.equalTo(self.bgView);
}];
}
break;
case QXSignAlerTypeSuccess:
{
[self.bgView mas_makeConstraints:^(MASConstraintMaker *make) {
make.width.mas_equalTo(ScaleWidth(222));
make.height.mas_equalTo(ScaleWidth(222));
make.centerX.centerY.equalTo(self);
}];
self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_sign_success"]];
[self.bgView addSubview:self.imageView];
[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.bgView);
}];
}
break;
default:
break;
}
}
-(void)showInView:(UIView*)view{
[view addSubview:self];
self.bgView.alpha = 0;
[UIView animateWithDuration:0.3 animations:^{
self.bgView.alpha = 1;
}completion:^(BOOL finished) {
}];
[self performSelector:@selector(hide) afterDelay:1];
}
- (void)hide{
if (!self.superview) {
NSLog(@"⚠️ View already removed from superview");
return;
}
__weak typeof(self) weakSelf = self;
[UIView animateWithDuration:0.3 animations:^{
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
return;
}
self.bgView.alpha = 0;
}completion:^(BOOL finished) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
return;
}
if (self.superview) {
[self removeFromSuperview];
}
}];
}
@end

View File

@@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *signId;
@property (nonatomic,weak)id<QXSignCoinListViewDelegate>delegate;
@property (nonatomic,strong)QXRoomPitModel *pitModel;
-(void)refreshCoinList;
-(void)refreshCoinListWith:(NSArray*)coinList;
-(void)showInView:(UIView *)view;
-(void)hide;
@end

View File

@@ -210,11 +210,21 @@
[weakSelf.collectionView reloadData];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[weakSelf getCoinList];
});
}];
}
-(void)refreshCoinList{
[self getCoinList];
-(void)refreshCoinListWith:(NSArray *)coinList{
[self getMyWallet];
[self.dataArray removeAllObjects];
for (NSString*title in coinList) {
QXRoomRelationModel *md = [[QXRoomRelationModel alloc] init];
md.name = title;
[self.dataArray addObject:md];
}
[self.collectionView reloadData];
}
-(void)showInView:(UIView *)view{
[self getCoinList];

View File

@@ -79,7 +79,7 @@
NSInteger itemWidth = (SCREEN_WIDTH-16*2-12*3)/4;
layout.itemSize = CGSizeMake(itemWidth, 44);
layout.scrollDirection = UICollectionViewScrollDirectionVertical;
self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, self.titleLabel.bottom, self.bgView.width, self.commitBtn.top-self.titleLabel.bottom-10) collectionViewLayout:layout];
self.collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, self.titleLabel.bottom+10, self.bgView.width, self.commitBtn.top-self.titleLabel.bottom-20) collectionViewLayout:layout];
[self.collectionView registerClass:[QXSelectAuctionInfoCell class] forCellWithReuseIdentifier:@"QXSelectAuctionInfoCell"];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
@@ -100,8 +100,8 @@
showToast(@"请选择您要展示的才艺");
return;
}
[[QXRoomMessageManager shared] sendChatMessage:[NSString stringWithFormat:@"选择的才艺是 %@",self.selectedModel.name] messageType:(QXRoomMessageTypeText) needInsertMessage:YES];
[self hide];
}
-(void)getPlayList{

View File

@@ -40,7 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 签约结束
-(void)signDidEndWithUserInfo1:(QXUserHomeModel*)userInfo1 userInfo2:(QXUserHomeModel*)userInfo2 sign_value:(NSString*)sign_value;
/// 签约身价变化
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId;
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId sign_coin_list:(NSArray*)sign_coin_list;
/// 签约发生延时
-(void)signTimeDelayWithEndTime:(NSString*)endTime;

View File

@@ -11,6 +11,7 @@
#import "QXMineNetwork.h"
#import "QXCustomAlertView.h"
#import "QXRechargeView.h"
#import "QXSignAlertView.h"
@interface QXRoomSeatTypeSignView()<QXRoomSeatDelegate,QXSignCoinListViewDelegate>
@property (nonatomic,strong)UIImageView *bgImageView;
@@ -95,7 +96,7 @@
[self.compereView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.bgImageView).offset(5);
make.width.mas_equalTo(ScaleWidth(45));
make.height.mas_equalTo(ScaleWidth(45-10)+30);
make.height.mas_equalTo(ScaleWidth(45-10)+51);
make.left.equalTo(self.bgImageView).offset(5);
}];
@@ -287,7 +288,7 @@
make.left.equalTo(self.bgImageView).offset(22);
make.width.mas_equalTo(ScaleWidth(84));
make.height.mas_equalTo(ScaleWidth(94));
make.top.mas_equalTo(ScaleWidth(78)+10);
make.top.mas_equalTo(ScaleWidth(78)+20);
}];
self.priceTitleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"room_sign_title_image"]];
@@ -747,6 +748,8 @@
}
-(void)signDidStartWithEndTime:(NSString *)endTime signId:(NSString *)signId signDay:(NSString*)signDay signValue:(NSString*)signValue{
QXSignAlertView *startView = [[QXSignAlertView alloc] initWithType:(QXSignAlerTypeStart)];
[startView showInView:self.viewController.view];
self.roomModel.sign_info.sign_id = signId;
self.roomModel.sign_info.sign_status = @"1";
self.roomModel.sign_info.end_time = endTime;
@@ -759,6 +762,13 @@
}
///
-(void)signDidEndWithUserInfo1:(QXUserHomeModel*)userInfo1 userInfo2:(QXUserHomeModel*)userInfo2 sign_value:(NSString*)sign_value{
if (userInfo1 && userInfo2) {
QXSignAlertView *startView = [[QXSignAlertView alloc] initWithType:(QXSignAlerTypeSuccess)];
[startView showInView:self.viewController.view];
}else{
QXSignAlertView *startView = [[QXSignAlertView alloc] initWithType:(QXSignAlerTypeFail)];
[startView showInView:self.viewController.view];
}
self.roomModel.sign_info.sign_id = @"";
self.roomModel.sign_info.sign_status = @"0";
[self configStatus];
@@ -768,14 +778,14 @@
}
}
///
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId{
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId sign_coin_list:(NSArray*)sign_coin_list{
if (![self.roomModel.sign_info.sign_id isEqualToString:signId]) {
showToast(@"场次错误");
return;
}
self.priceLabel.text = sign_value;
if (_coinView) {
[_coinView refreshCoinList];
[_coinView refreshCoinListWith:sign_coin_list];
}
}
///

View File

@@ -136,7 +136,7 @@ typedef NS_ENUM(NSInteger) {
/// 签约结束
-(void)signDidEndWithUserInfo1:(QXUserHomeModel*)userInfo1 userInfo2:(QXUserHomeModel*)userInfo2 sign_value:(NSString*)sign_value;
/// 签约身价变化
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId;
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId sign_coin_list:(NSArray*)sign_coin_list;
/// 签约身价变化
-(void)signTimeDelayWithEndTime:(NSString*)endTime;
@end

View File

@@ -1224,9 +1224,9 @@
}
}
///
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId{
-(void)signValueDidChangedWithSignUserInfo:(QXUserHomeModel*)signUserInfo sign_value:(NSString*)sign_value signId:(NSString*)signId sign_coin_list:(NSArray*)sign_coin_list{
if (_signView) {
[self.signView signValueDidChangedWithSignUserInfo:signUserInfo sign_value:sign_value signId:signId];
[self.signView signValueDidChangedWithSignUserInfo:signUserInfo sign_value:sign_value signId:signId sign_coin_list:sign_coin_list];
}
}
///