From 1c5a908ddac3883bdeeb7bdb5a843e701d63bb1c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=AF=E6=98=9F?= Date: Thu, 4 Dec 2025 14:11:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- QXLive/Base/QXGlobal.h | 4 +- QXLive/Base/QXGlobal.m | 26 ++++ QXLive/Manager/QXRoomMessageManager.m | 4 +- .../Controller/QXChatViewController.m | 3 +- .../Controller/QXMessageViewController.m | 18 +-- .../Controller/QXMineViewController.m | 8 +- .../家族/QXFamilyPriceRecordViewController.m | 2 +- .../Controller/家族/QXFamilySubViewController.m | 40 +++++- .../歌单列表/QXMineSongListViewController.m | 17 ++- .../歌手认证/QXRoomSingerAuthViewController.m | 41 +++++- .../Controller/每日任务/QXTaskGiftRecordVC.m | 4 + QXLive/Mine(音域)/Model/QXFamilyModel.h | 2 +- QXLive/Mine(音域)/Model/QXUserModel.h | 10 +- QXLive/Mine(音域)/Services/QXMineNetwork.h | 7 + QXLive/Mine(音域)/Services/QXMineNetwork.m | 17 ++- QXLive/Mine(音域)/View/QXBodyPriceRuleView.h | 3 +- QXLive/Mine(音域)/View/QXBodyPriceRuleView.m | 6 +- .../Mine(音域)/View/QXBodyPriceRuleView.xib | 5 +- QXLive/Mine(音域)/View/QXMainHeaderView.m | 14 +- QXLive/Mine(音域)/View/QXMineServiceCell.h | 1 + QXLive/Mine(音域)/View/QXMineServiceCell.m | 94 +++++++++---- .../Mine(音域)/View/家族/QXFamilyMemberCell.m | 4 +- QXLive/Mine(音域)/View/家族/QXFamilyTopCell.m | 5 +- .../View/歌单列表/QXMineSongListCell.m | 2 +- .../View/歌单列表/QXMineSongListCell.xib | 2 +- .../View/歌手认证/QXAudioRecorderView.h | 3 + .../View/歌手认证/QXAudioRecorderView.m | 33 ++--- .../qx_no_data.imageset/Contents.json | 22 +++ .../qx_no_data.imageset/qx_no_data@2x.png | Bin 0 -> 29486 bytes .../qx_no_data.imageset/qx_no_data@3x.png | Bin 0 -> 54282 bytes QXLive/Other/QXApi.h | 3 + .../Other/zh-Hans.lproj/Localizable.strings | 2 +- .../Controller/QXRoomViewController.m | 5 +- .../View/QXRoomOnlineUserListView.m | 4 +- .../View/点唱/QXSingerSongListCell.m | 18 ++- .../View/用户信息/QXRoomUserInfoView.m | 3 + .../View/用户信息/QXUserCpCardView.m | 2 +- .../View/用户信息/QXUserCpDressView.h | 1 + .../View/用户信息/QXUserCpDressView.m | 10 ++ .../Room(房间)/View/礼物特效/QXCPEffectView.m | 8 +- .../View/麦位视图/QXRoomSeatContentView.m | 28 ++-- .../View/麦位视图/QXRoomSeatTypeCabinView.m | 2 +- .../View/麦位视图/QXRoomSeatTypeSignView.m | 25 ++-- .../View/麦位视图/QXRoomSeatTypeSingerView.m | 4 +- .../Room(房间)/View/麦位视图/QXRoomSeatView.m | 3 + .../Chat/TUIC2CChatViewController.m | 42 +++++- TUIKit/TUIChat/UI_Classic/Input/TUIInputBar.m | 130 +++++++++--------- .../UI/TUIConversationListController.h | 2 + .../UI/TUIConversationListController.m | 8 +- 49 files changed, 505 insertions(+), 192 deletions(-) create mode 100644 QXLive/Other/Assets.xcassets/qx_no_data.imageset/Contents.json create mode 100644 QXLive/Other/Assets.xcassets/qx_no_data.imageset/qx_no_data@2x.png create mode 100644 QXLive/Other/Assets.xcassets/qx_no_data.imageset/qx_no_data@3x.png diff --git a/QXLive/Base/QXGlobal.h b/QXLive/Base/QXGlobal.h index 8e2b02e..7b2fdd8 100644 --- a/QXLive/Base/QXGlobal.h +++ b/QXLive/Base/QXGlobal.h @@ -116,8 +116,8 @@ typedef void (^showFinishBlock)(void); -(void)finishTask; -(void)vibrationFeedback; - - +/// 进入房间后开始保活 +-(void)startKeepAlive; -(void)dirfViewDidToBackground; -(void)dirfViewBecomeToFront; @end diff --git a/QXLive/Base/QXGlobal.m b/QXLive/Base/QXGlobal.m index dfe4f23..e0142a5 100644 --- a/QXLive/Base/QXGlobal.m +++ b/QXLive/Base/QXGlobal.m @@ -36,6 +36,8 @@ @property (nonatomic,assign)BOOL isClickJoinRoom; @property (nonatomic,strong)QXTimer *timer; +@property (nonatomic,strong)NSTimer *keepTimer; + @property (nonatomic,assign)NSInteger taskTime; @end @implementation QXGlobal @@ -319,6 +321,29 @@ } } } + +-(void)startKeepAlive{ + [self stopKeepTimer]; + self.keepTimer = [NSTimer scheduledTimerWithTimeInterval:60 + target:self + selector:@selector(checkAndUpdateRedPackets) + userInfo:nil + repeats:YES]; +} + +-(void)checkAndUpdateRedPackets{ + if ([self.roomId isExist]) { + [QXMineNetwork appKeepAliveWithRoomId:self.roomId]; + } +} + +-(void)stopKeepTimer{ + if (self.keepTimer) { + [self.keepTimer invalidate]; + self.keepTimer = nil; + } +} + -(void)showAlertWithMessage:(NSString*)message roomId:(NSString*)roomId{ UIAlertController *al = [UIAlertController alertControllerWithTitle:@"温馨提示" message:message preferredStyle:(UIAlertControllerStyleAlert)]; if ([roomId isExist] && self.roomId==nil) { @@ -347,6 +372,7 @@ } } -(void)quitRoomWithRoomId:(NSString *)roomId{ + [self stopKeepTimer]; [UIApplication sharedApplication].idleTimerDisabled = NO; /// 移除所有红包 [[QXRedPacketManager sharedManager] destoryRedpacketInfo]; diff --git a/QXLive/Manager/QXRoomMessageManager.m b/QXLive/Manager/QXRoomMessageManager.m index cc4e09a..cc5e0eb 100644 --- a/QXLive/Manager/QXRoomMessageManager.m +++ b/QXLive/Manager/QXRoomMessageManager.m @@ -631,13 +631,13 @@ // 1 在线 2离线 NSInteger type = 1; type = [msg.Text[@"type"] integerValue]; - BOOL isOnline = type == 1?YES:NO; +// BOOL isOnline = type == 1?YES:NO; // if (self.delegate && [self.delegate respondsToSelector:@selector(roomUserOnlineStatusDidChanged:userId:)]) { // [self.delegate roomUserOnlineStatusDidChanged:YES userId:userId]; // } NSDictionary *parm = @{ @"user_id":userId, - @"is_online":[NSNumber numberWithBool:isOnline], + @"is_online":[NSNumber numberWithInteger:type], }; [[NSNotificationCenter defaultCenter] postNotificationName:noticeRoomUserOnlineStatusDidChanged object:parm]; } diff --git a/QXLive/Message(音信)/Controller/QXChatViewController.m b/QXLive/Message(音信)/Controller/QXChatViewController.m index df91f03..758da74 100644 --- a/QXLive/Message(音信)/Controller/QXChatViewController.m +++ b/QXLive/Message(音信)/Controller/QXChatViewController.m @@ -77,7 +77,7 @@ -(void)moreAction{ if (self.data.groupID.length>0) { QXGuildGroupSettingVC *vc = [[QXGuildGroupSettingVC alloc] init]; - vc.groupId = [self.data.groupID stringByReplacingOccurrencesOfString:@"g" withString:@""]; + vc.groupId = self.data.groupID; [self.navigationController pushViewController:vc animated:YES]; }else{ QXMenuPopView *menuView = [[QXMenuPopView alloc] initWithPoint:CGPointMake(SCREEN_WIDTH-60, NavContentHeight+10)]; @@ -103,6 +103,7 @@ } - (void)initSubViews{ +// TUIConversationListBaseDataProvider markConversationAsRead [TUIChatConfig_Classic sharedConfig].delegate = self; if (self.data.groupID.length>0) { TUIGroupChatViewController *vc = [[TUIGroupChatViewController alloc] init]; diff --git a/QXLive/Message(音信)/Controller/QXMessageViewController.m b/QXLive/Message(音信)/Controller/QXMessageViewController.m index 517aa82..cd56e3b 100644 --- a/QXLive/Message(音信)/Controller/QXMessageViewController.m +++ b/QXLive/Message(音信)/Controller/QXMessageViewController.m @@ -74,14 +74,15 @@ [self.view addSubview:vc.view]; } -(void)reloadConversions{ - [self.vc.view removeFromSuperview]; - [self.vc removeFromParentViewController]; - self.vc = nil; - self.vc = [[TUIConversationListController alloc] init]; - self.vc.view.frame = CGRectMake(0, NavContentHeight, SCREEN_WIDTH, self.view.height-NavContentHeight); - self.vc.tableViewForAll.tableHeaderView = self.topView; - [self addChildViewController:self.vc]; - [self.view addSubview:self.vc.view]; +// [self.vc.view removeFromSuperview]; +// [self.vc removeFromParentViewController]; +// self.vc = nil; +// self.vc = [[TUIConversationListController alloc] init]; +// self.vc.view.frame = CGRectMake(0, NavContentHeight, SCREEN_WIDTH, self.view.height-NavContentHeight); +// self.vc.tableViewForAll.tableHeaderView = self.topView; +// [self addChildViewController:self.vc]; +// [self.view addSubview:self.vc.view]; + [self.vc reloadConversationList]; } - (void)conversationListController:(UIViewController *)conversationController @@ -98,6 +99,7 @@ data.title = conversation.title; data.faceUrl = conversation.faceUrl; vc.data = data; + [self.vc.dataProvider markConversationAsRead:conversation]; [self.navigationController pushViewController:vc animated:YES]; // } diff --git a/QXLive/Mine(音域)/Controller/QXMineViewController.m b/QXLive/Mine(音域)/Controller/QXMineViewController.m index 1b26866..80e88b8 100644 --- a/QXLive/Mine(音域)/Controller/QXMineViewController.m +++ b/QXLive/Mine(音域)/Controller/QXMineViewController.m @@ -62,7 +62,6 @@ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:YES]; [self getUserInfo]; - [self.tableView reloadData]; [self.tableHeaderView reloadData]; } @@ -96,6 +95,7 @@ [QXMineNetwork getMineInfoSuccessBlock:^(QXUserModel * _Nonnull userModel) { weakSelf.userModel = userModel; weakSelf.tableHeaderView.userModel = userModel; + [weakSelf.tableView reloadData]; } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) { }]; @@ -232,7 +232,7 @@ } break; case QXMainHeaderOptionTypeBodyPrice:{ - [QXBodyPriceRuleView showInView:self.view]; + [QXBodyPriceRuleView showInView:self.view currentBodyValue:self.userModel.market_value coin:self.userModel.market_value_coin bodyValue:self.userModel.market_value_market]; } break; case QXMainHeaderOptionTypeWallet:{ @@ -307,6 +307,7 @@ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ QXMineServiceCell *cell = [QXMineServiceCell cellWithTableView:tableView]; cell.delegate = self; + cell.singerIsAuth = self.userModel.singer_status.intValue==1; if (indexPath.row == 0) { cell.isMore = NO; }else{ @@ -316,7 +317,8 @@ } -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ if (indexPath.row == 0) { - return ScaleWidth(168); +// return ScaleWidth(168); + return ScaleWidth(110); }else{ // if (QXGlobal.shareGlobal.isOpenRecharge) { return ScaleWidth(168); diff --git a/QXLive/Mine(音域)/Controller/家族/QXFamilyPriceRecordViewController.m b/QXLive/Mine(音域)/Controller/家族/QXFamilyPriceRecordViewController.m index d3e0a05..8938543 100644 --- a/QXLive/Mine(音域)/Controller/家族/QXFamilyPriceRecordViewController.m +++ b/QXLive/Mine(音域)/Controller/家族/QXFamilyPriceRecordViewController.m @@ -51,7 +51,7 @@ } -(void)getList{ __weak typeof(self) weakSelf = self; - [QXMineNetwork getFamilyEarningWithUserId:self.userId successBlock:^(NSArray * _Nonnull list) { + [QXMineNetwork getFamilyEarningWithUserId:self.userId page:self.page start_time:self.startTime end_time:self.endTime successBlock:^(NSArray * _Nonnull list) { __strong typeof(weakSelf) strongSelf = weakSelf; if (!strongSelf) { NSLog(@"⚠️ self has been deallocated, skipping hide operation"); diff --git a/QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.m b/QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.m index c9fbcb2..9cab6f4 100644 --- a/QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.m +++ b/QXLive/Mine(音域)/Controller/家族/QXFamilySubViewController.m @@ -13,7 +13,7 @@ @interface QXFamilySubViewController () @property (nonatomic,strong)UITableView *tableView; @property (nonatomic,strong)QXFamilyModel *model; - +@property (nonatomic,strong)UIView *noDataView; @end @implementation QXFamilySubViewController @@ -41,17 +41,22 @@ -(void)getList{ BOOL isJoin = YES; if (self.index == 0) { - isJoin = YES; - }else{ isJoin = NO; + }else{ + isJoin = YES; } MJWeakSelf [QXMineNetwork getMyFamilyIsJoin:isJoin successBlock:^(QXFamilyModel * _Nonnull model) { weakSelf.model = model; + if (weakSelf.model.group_members_lists.count == 0) { + weakSelf.tableView.tableFooterView = weakSelf.noDataView; + }else{ + weakSelf.tableView.tableFooterView = nil; + } [weakSelf.tableView reloadData]; [weakSelf.tableView.mj_header endRefreshing]; } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) { - + [weakSelf.tableView.mj_header endRefreshing]; }]; } -(void)needRefresh{ @@ -128,6 +133,9 @@ return 0; } -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ + if (indexPath.section == 0) { + return; + } QXFamilyMemberModel*md = self.model.group_members_lists[indexPath.row]; QXUserHomePageViewController *vc = [[QXUserHomePageViewController alloc] init]; vc.user_id = md.user_id; @@ -154,5 +162,29 @@ } return _tableView; } +-(UIView *)noDataView{ + if (!_noDataView) { + _noDataView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, ScaleWidth(120)+30)]; + UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"qx_no_data"]]; + [_noDataView addSubview:imageView]; + [imageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.width.mas_equalTo(ScaleWidth(148)); + make.height.mas_equalTo(ScaleWidth(99)); + make.centerX.equalTo(_noDataView); + make.top.mas_equalTo(30); + }]; + + UILabel *titleLabel = [[UILabel alloc] init]; + titleLabel.font = [UIFont systemFontOfSize:12]; + titleLabel.text = @"暂无数据"; + titleLabel.textColor = RGB16(0xffffff); + [_noDataView addSubview:titleLabel]; + [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(_noDataView); + make.top.equalTo(imageView.mas_bottom); + }]; + } + return _noDataView; +} @end diff --git a/QXLive/Mine(音域)/Controller/歌单列表/QXMineSongListViewController.m b/QXLive/Mine(音域)/Controller/歌单列表/QXMineSongListViewController.m index 17da4de..329d028 100644 --- a/QXLive/Mine(音域)/Controller/歌单列表/QXMineSongListViewController.m +++ b/QXLive/Mine(音域)/Controller/歌单列表/QXMineSongListViewController.m @@ -45,12 +45,18 @@ } -(void)initSubViews{ self.page = 1; - self.countLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, NavContentHeight+12, 200, 17)]; - self.countLabel.textColor = RGB16A(0x000000,0.45); + self.countLabel = [[UILabel alloc] initWithFrame:CGRectMake(16, NavContentHeight+12, 200, 35)]; + self.countLabel.textColor = RGB16(0x666666); self.countLabel.font = [UIFont systemFontOfSize:12]; self.countLabel.text = @"共0首歌"; [self.view addSubview:self.countLabel]; + UIButton*recordBtn = [[UIButton alloc] initWithFrame:CGRectMake(self.view.width-35-16, NavContentHeight+12, 35, 35)]; + [recordBtn setImage:[[UIImage imageNamed:@"nobility_help_icon"] imageByTintColor:RGB16(0x666666)] forState:(UIControlStateNormal)]; + recordBtn.titleLabel.font = [UIFont systemFontOfSize:16]; + [recordBtn addTarget:self action:@selector(helpAction) forControlEvents:(UIControlEventTouchUpInside)]; + [self.view addSubview:recordBtn]; + [self.view addSubview:self.tableView]; [self getSongList]; } @@ -74,7 +80,12 @@ }]; } - +-(void)helpAction{ + NSString *urlString = [NSString stringWithFormat:@"%@api/Page/page_show?id=%@",ServerUrl,@"34"]; + QXBaseWebViewController *vc = [[QXBaseWebViewController alloc] init]; + vc.urlStr = urlString; + [self.navigationController pushViewController:vc animated:YES]; +} -(void)didSeletedGift:(QXGiftModel *)giftModel giftCount:(nonnull NSString *)giftCount{ giftModel.num = giftCount; self.addSongView.giftModel = giftModel; diff --git a/QXLive/Mine(音域)/Controller/歌手认证/QXRoomSingerAuthViewController.m b/QXLive/Mine(音域)/Controller/歌手认证/QXRoomSingerAuthViewController.m index c02342c..ddd39f5 100644 --- a/QXLive/Mine(音域)/Controller/歌手认证/QXRoomSingerAuthViewController.m +++ b/QXLive/Mine(音域)/Controller/歌手认证/QXRoomSingerAuthViewController.m @@ -7,6 +7,7 @@ #import "QXRoomSingerAuthViewController.h" #import "QXAudioRecorderView.h" +#import "QXMineNetwork.h" @interface QXRoomSingerAuthViewController () @property (nonatomic,strong)UIView *contentView; @@ -39,7 +40,11 @@ [super setNavgationItems]; self.navigationTintColor = RGB16(0xffffff); self.navigationItem.title = @"歌手认证"; - + UIButton*recordBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 44, 44)]; + [recordBtn setImage:[UIImage imageNamed:@"nobility_help_icon"] forState:(UIControlStateNormal)]; + recordBtn.titleLabel.font = [UIFont systemFontOfSize:16]; + [recordBtn addTarget:self action:@selector(helpAction) forControlEvents:(UIControlEventTouchUpInside)]; + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:recordBtn]; } - (void)initSubViews{ @@ -71,8 +76,13 @@ self.audioRecorderView.delegate = self; self.audioRecorderView.hidden = YES; [self.view addSubview:self.audioRecorderView]; + [self conifgViews]; +} +-(void)conifgViews{ if ([self.singer_status isEqualToString:@"-1"] || [self.singer_status isEqualToString:@"2"]) { self.audioRecorderView.hidden = NO; + }else{ + self.audioRecorderView.hidden = YES; } if ([self.singer_status isEqualToString:@"-1"]) { self.authStatusLabel.text = @"暂未认证"; @@ -88,6 +98,12 @@ self.authStatusLabel.textColor = RGB16(0xFF2424); } } +-(void)helpAction{ + NSString *urlString = [NSString stringWithFormat:@"%@api/Page/page_show?id=%@",ServerUrl,@"33"]; + QXBaseWebViewController *vc = [[QXBaseWebViewController alloc] init]; + vc.urlStr = urlString; + [self.navigationController pushViewController:vc animated:YES]; +} #pragma mark - AudioRecorderViewDelegate - (void)qxAudioRecorderView:(QXAudioRecorderView *)recorderView didChangeState:(AudioRecorderState)state{ @@ -112,5 +128,26 @@ // 实时更新进度 } - +-(void)didClickAuthWithFileUrl:(NSURL *)audioFileUrl{ + NSData *data = [NSData dataWithContentsOfURL:audioFileUrl]; + @weakify(self) + showLoadingInView(self.view); + [[QXCOSUploadManager shareManager] audioUploadFile:data withObjectKey:audioFileUrl.lastPathComponent complete:^(NSString * _Nonnull fileUrl, QXCOSUploadImageState state) { + @strongify(self); + dispatch_async(dispatch_get_main_queue(), ^{ + hideLoadingInView(self.view); + if ([fileUrl isExist]) { + [QXMineNetwork singerAuthWithSong:fileUrl successBlock:^(NSDictionary * _Nonnull dict) { + showToast(@"上传成功"); + self.singer_status = @"0"; + [self conifgViews]; + } failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) { + showToast(@"上传失败"); + }]; + }else{ + showToast(@"上传失败"); + } + }); + }]; +} @end diff --git a/QXLive/Mine(音域)/Controller/每日任务/QXTaskGiftRecordVC.m b/QXLive/Mine(音域)/Controller/每日任务/QXTaskGiftRecordVC.m index 5fbaf71..6b0d259 100644 --- a/QXLive/Mine(音域)/Controller/每日任务/QXTaskGiftRecordVC.m +++ b/QXLive/Mine(音域)/Controller/每日任务/QXTaskGiftRecordVC.m @@ -25,6 +25,10 @@ self.page = 1; [self getHistorySubsidy]; } +-(void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + [self.navigationController setNavigationBarHidden:NO animated:YES]; +} -(void)getHistorySubsidy{ MJWeakSelf [QXMineNetwork dayTaskGiftBoxRecordSuccessBlock:^(NSArray * _Nonnull list) { diff --git a/QXLive/Mine(音域)/Model/QXFamilyModel.h b/QXLive/Mine(音域)/Model/QXFamilyModel.h index 5c7c2a6..e089724 100644 --- a/QXLive/Mine(音域)/Model/QXFamilyModel.h +++ b/QXLive/Mine(音域)/Model/QXFamilyModel.h @@ -31,7 +31,7 @@ NS_ASSUME_NONNULL_BEGIN @interface QXFamilyMemberModel : NSObject /// 身价 @property(nonatomic,strong)NSString *market_value; -/// 0 离线 1 在线 +/// 2离线 1 在线 @property(nonatomic,assign)NSInteger is_online; /// 昵称 @property(nonatomic,strong)NSString *nickname; diff --git a/QXLive/Mine(音域)/Model/QXUserModel.h b/QXLive/Mine(音域)/Model/QXUserModel.h index 2275d54..d3a53db 100644 --- a/QXLive/Mine(音域)/Model/QXUserModel.h +++ b/QXLive/Mine(音域)/Model/QXUserModel.h @@ -49,14 +49,18 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic,strong)NSString *hide_status; /// 当前状态:-1 未认证歌手, 0待审核 1已认证 2被拒绝 @property (nonatomic,strong)NSString *singer_status; -/// 在线状态 -@property (nonatomic,assign)BOOL is_online; +/// 在线状态 1 在线 2 离线 +@property (nonatomic,assign)NSInteger is_online; /// 1 能聊天 0不能聊天 @property (nonatomic,assign)NSInteger is_can_chat; /// 需要充值金额 @property (nonatomic,strong)NSString* can_chat_money; /// 身价 @property (nonatomic,strong)NSString* market_value; +/// 身价配置 多少金币数 +@property (nonatomic,strong)NSString* market_value_coin; +/// 身价配置 多少身价数 +@property (nonatomic,strong)NSString* market_value_market; @end @@ -110,7 +114,7 @@ NS_ASSUME_NONNULL_BEGIN /// 魅力 @property (nonatomic,strong)NSString* charm; -/// 是否在线 +/// 是否在线 1在线 2离线 @property (nonatomic,assign)NSInteger is_online; /// 礼物墙数量 diff --git a/QXLive/Mine(音域)/Services/QXMineNetwork.h b/QXLive/Mine(音域)/Services/QXMineNetwork.h index 6a1b35c..a054d36 100644 --- a/QXLive/Mine(音域)/Services/QXMineNetwork.h +++ b/QXLive/Mine(音域)/Services/QXMineNetwork.h @@ -1303,6 +1303,9 @@ NS_ASSUME_NONNULL_BEGIN 家族收益详情 */ +(void)getFamilyEarningWithUserId:(NSString*)userId + page:(NSInteger)page + start_time:(NSString*)start_time + end_time:(NSString*)end_time successBlock:(void (^)(NSArray* list))successBlock failBlock:(void (^)(NSError * error, NSString * msg))failBlock; @@ -1387,6 +1390,10 @@ NS_ASSUME_NONNULL_BEGIN failBlock:(void (^)(NSError * error, NSString * msg))failBlock; +/** + 在线 + */ ++(void)appKeepAliveWithRoomId:(NSString*)room_id; @end diff --git a/QXLive/Mine(音域)/Services/QXMineNetwork.m b/QXLive/Mine(音域)/Services/QXMineNetwork.m index e08948d..4a8798f 100644 --- a/QXLive/Mine(音域)/Services/QXMineNetwork.m +++ b/QXLive/Mine(音域)/Services/QXMineNetwork.m @@ -2585,8 +2585,8 @@ +(void)getMyFamilyIsJoin:(BOOL)isJoin successBlock:(void (^)(QXFamilyModel* model))successBlock failBlock:(void (^)(NSError * error, NSString * msg))failBlock{ - - [[QXRequset shareInstance] getWithUrl:QXMyFamily parameters:@{} needCache:NO success:^(id responseObject) { + NSString *urlString = isJoin?QXMyJoinFamily:QXMyFamily; + [[QXRequset shareInstance] getWithUrl:urlString parameters:@{} needCache:NO success:^(id responseObject) { if (successBlock) { QXFamilyModel *model = [QXFamilyModel yy_modelWithJSON:responseObject[@"data"]]; successBlock(model); @@ -2601,12 +2601,16 @@ 家族收益详情 */ +(void)getFamilyEarningWithUserId:(NSString*)userId + page:(NSInteger)page + start_time:(NSString*)start_time + end_time:(NSString*)end_time successBlock:(void (^)(NSArray* list))successBlock failBlock:(void (^)(NSError * error, NSString * msg))failBlock{ NSDictionary *parameters =@{ @"user_id":userId?:@"", + @"page":[NSNumber numberWithInteger:page] }; - [[QXRequset shareInstance] postWithUrl:QXHeartBeatSpace parameters:parameters needCache:NO success:^(id responseObject) { + [[QXRequset shareInstance] postWithUrl:QXMyFamilyEarnings parameters:parameters needCache:NO success:^(id responseObject) { if (successBlock) { NSArray *list = [NSArray yy_modelArrayWithClass:[QXFamilyEarningModel class] json:responseObject[@"data"]]; successBlock(list); @@ -2796,4 +2800,11 @@ }]; } ++(void)appKeepAliveWithRoomId:(NSString *)room_id{ + [[QXRequset shareInstance] getWithUrl:QXKeepAlive parameters:@{@"room_id":room_id?:@""} needCache:NO success:^(id responseObject) { + + } fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) { + + }]; +} @end diff --git a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.h b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.h index 63082f0..5681f5e 100644 --- a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.h +++ b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.h @@ -17,7 +17,8 @@ NS_ASSUME_NONNULL_BEGIN @property (weak, nonatomic) IBOutlet UIButton *commitBtn; @property (weak, nonatomic) IBOutlet UIButton *closeBtn; @property (weak, nonatomic) IBOutlet UIView *bgView; -+(void)showInView:(UIView*)view; +@property (weak, nonatomic) IBOutlet UILabel *bodyPriceLabel; ++(void)showInView:(UIView*)view currentBodyValue:(NSString*)currentBodyValue coin:(NSString*)coin bodyValue:(NSString*)bodyValue; @end NS_ASSUME_NONNULL_END diff --git a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.m b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.m index ddf383f..4823879 100644 --- a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.m +++ b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.m @@ -10,12 +10,14 @@ @implementation QXBodyPriceRuleView -+(void)showInView:(UIView*)view{ ++(void)showInView:(UIView *)view currentBodyValue:(NSString *)currentBodyValue coin:(NSString *)coin bodyValue:(NSString *)bodyValue{ UINib *nib = [UINib nibWithNibName:@"QXBodyPriceRuleView" bundle:[NSBundle mainBundle]]; QXBodyPriceRuleView *ruleView = [nib instantiateWithOwner:nil options:nil].firstObject; ruleView.frame = UIScreen.mainScreen.bounds; ruleView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; ruleView.bgView.alpha = 0; + ruleView.currentPriceLabel.text = currentBodyValue; + ruleView.bodyPriceLabel.text = [NSString stringWithFormat:@"收礼身价,等于通过累计收礼的价值,每%@个金币等于%@身价",coin,bodyValue]; [view addSubview:ruleView]; [UIView animateWithDuration:0.2 animations:^{ ruleView.bgView.alpha = 1; @@ -23,6 +25,8 @@ }]; } + + - (IBAction)closeAction:(id)sender { [UIView animateWithDuration:0.2 animations:^{ self.bgView.alpha = 0; diff --git a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.xib b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.xib index 6e4fac8..ba8f605 100644 --- a/QXLive/Mine(音域)/View/QXBodyPriceRuleView.xib +++ b/QXLive/Mine(音域)/View/QXBodyPriceRuleView.xib @@ -237,7 +237,7 @@ - -