5 Commits

Author SHA1 Message Date
启星
081aa5622c 提交 2026-01-15 00:14:20 +08:00
启星
5548f5d6a5 提交 2026-01-14 20:36:58 +08:00
启星
705d891c51 预上线 2026-01-13 09:45:03 +08:00
启星
d41d74dd8e 提交 2026-01-09 20:35:23 +08:00
启星
796f64f5e3 提交 2026-01-08 18:31:27 +08:00
188 changed files with 6056 additions and 325 deletions

View File

@@ -754,7 +754,7 @@
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 8798G5VMH9;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -793,7 +793,7 @@
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
);
MARKETING_VERSION = 1.1.16;
MARKETING_VERSION = 1.1.17;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -820,7 +820,7 @@
CODE_SIGN_ENTITLEMENTS = QXLive/QXLive.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 8798G5VMH9;
ENABLE_USER_SCRIPT_SANDBOXING = NO;
FRAMEWORK_SEARCH_PATHS = (
@@ -859,7 +859,7 @@
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
);
MARKETING_VERSION = 1.1.16;
MARKETING_VERSION = 1.1.17;
PRODUCT_BUNDLE_IDENTIFIER = com.qxcm.qxlive;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View File

@@ -88,6 +88,16 @@ typedef void (^showFinishBlock)(void);
nickname:(NSString*)nickname
avatar:(NSString*)avatar
navagationController:(UINavigationController*)navagationController;
/**
去找客服
*/
-(void)chatWithServices:(NSString*)serviceId
nickname:(NSString*)nickname
avatar:(NSString*)avatar
navagationController:(UINavigationController*)navagationController;
/**
去公会群聊
*/

View File

@@ -65,6 +65,9 @@
} fail:^(int code, NSString * _Nullable msg) {
QXLOG(@"腾讯im退出登录失败");
}];
if (self.roomId) {
[self quitRoomWithRoomId:self.roomId removeListener:YES];
}
self.isLogin = NO;
[self removeLocalData];
[self removeMemory];
@@ -191,6 +194,17 @@
[navagationController pushViewController:vc animated:YES];
}
-(void)chatWithServices:(NSString *)serviceId nickname:(NSString *)nickname avatar:(NSString *)avatar navagationController:(UINavigationController *)navagationController{
QXChatViewController *vc = [[QXChatViewController alloc] init];
TUIChatConversationModel *data = [[TUIChatConversationModel alloc] init];
data.userID = [NSString stringWithFormat:@"u%@",serviceId];
data.title = nickname;
data.faceUrl = avatar;
vc.data = data;
vc.isServices = YES;
[navagationController pushViewController:vc animated:YES];
}
-(void)chatWithGroupId:(NSString *)groupId cover:(NSString *)cover name:(NSString *)name navagationController:(UINavigationController *)navagationController{
QXChatViewController *vc = [[QXChatViewController alloc] init];
TUIChatConversationModel *data = [[TUIChatConversationModel alloc] init];
@@ -306,7 +320,6 @@
}
weakSelf.isClickJoinRoom = YES;
[QXMineNetwork beforeJoinRoomWithRoomId:roomId successBlock:^(NSDictionary * _Nonnull dict) {
weakSelf.isClickJoinRoom = NO;
if (self != nil) {
if (self->_miniView) {
[self->_miniView removeFromSuperview];
@@ -315,6 +328,7 @@
}
[[QXRoomMessageManager shared] joinGroupWithRoomId:roomId];
[QXMineNetwork joinRoomWithRoomId:roomId successBlock:^(QXRoomModel * _Nonnull roomModel) {
weakSelf.isClickJoinRoom = NO;
if (weakSelf.roomId && ![weakSelf.roomId isEqualToString:roomId]) {
[weakSelf quitRoomWithRoomId:weakSelf.roomId removeListener:NO];
}
@@ -329,10 +343,12 @@
[navagationController pushViewController:weakSelf.roomVC animated:YES];
weakSelf.roomId = roomId;
} roomErrorBlock:^(NSString * _Nonnull roomId, NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;
[weakSelf showAlertWithMessage:msg roomId:roomId];
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg);
// hideLoadingInView(KEYWINDOW)
weakSelf.isClickJoinRoom = NO;
}];
} roomErrorBlock:^(NSString * _Nonnull roomId, NSString * _Nonnull msg) {
weakSelf.isClickJoinRoom = NO;

View File

@@ -394,7 +394,11 @@
/// 2
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
@weakify(self)
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
NSString *giftBag = @"";
if (self.giftModel.activities_id.intValue == 4) {
giftBag = self.giftModel.gift_bag;
}
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" gift_bag_id:giftBag successBlock:^(NSDictionary * _Nonnull dict) {
@strongify(self)
if (type.intValue == 1) {
if (self.roomSendSuccessBlock) {
@@ -438,7 +442,11 @@
NSString *userId = [self.pitUserListView.selectedArray componentsJoinedByString:@","];
// NSString *type = self.categoryView.selectedIndex==0?@"2":@"1";
@weakify(self)
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
NSString *giftBag = @"";
if (self.giftModel.activities_id.intValue == 4) {
giftBag = self.giftModel.gift_bag;
}
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:userId heart_id:self.heartId type:type pit_number:@"" gift_bag_id:giftBag successBlock:^(NSDictionary * _Nonnull dict) {
@strongify(self)
if (type.intValue == 1) {
@@ -1271,9 +1279,13 @@
-(void)sendAction{
[self startAnimation];
[[QXGlobal shareGlobal] vibrationFeedback];
NSString *giftBag = @"";
if (self.giftModel.activities_id.intValue == 4) {
giftBag = self.giftModel.gift_bag;
}
switch (self.sendType) {
case QXSendGiftViewTypeRoom:
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" gift_bag_id:giftBag successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg)
@@ -1287,7 +1299,7 @@
}];
break;
case QXSendGiftViewTypeFriend:
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" successBlock:^(NSDictionary * _Nonnull dict) {
[QXMineNetwork roomSendGiftWithRoomId:self.roomId gift_id:self.giftModel.gift_id gift_num:self.giftCount to_uid:self.userId heart_id:self.heartId type:@"1" pit_number:@"" gift_bag_id:giftBag successBlock:^(NSDictionary * _Nonnull dict) {
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
showToast(msg)

View File

@@ -274,7 +274,7 @@
- (IBAction)comitUserInfoBtnAction:(id)sender {
//
if (_userNameTF.text.length == 0) {
if (![_userNameTF.text isExist]) {
showToastInView(QXText(@"请填写昵称"), self.view);
return;
}

View File

@@ -28,17 +28,17 @@ typedef NS_ENUM(NSInteger) {
/// 登录
GetSmscodeTypeLogin = 0,
/// 找回密码
GetSmscodeTypeFindPassword,
GetSmscodeTypeFindPassword = 3,
/// 更换手机号
GetSmscodeTypeFindChangeMobile,
GetSmscodeTypeFindChangeMobile = 1,
/// 绑定手机号
GetSmscodeTypeFindBindMobile,
GetSmscodeTypeFindBindMobile = 2,
/// 设置密码
GetSmscodeTypeSetPassword,
GetSmscodeTypeSetPassword = 4,
/// 账号注销
GetSmscodeTypeAccountCancel,
GetSmscodeTypeAccountCancel = 5,
/// 提现
GetSmscodeTypeWithDraw,
GetSmscodeTypeWithDraw = 6,
}GetSmscodeType;
NS_ASSUME_NONNULL_BEGIN

View File

@@ -61,7 +61,7 @@
[self.agoraKit enableAudioVolumeIndication:200 smooth:3 reportVad:NO];
[self.agoraKit getCurrentMonotonicTimeInMs];
[self.agoraKit setAudioProfile:AgoraAudioProfileMusicHighQualityStereo];
[self.agoraKit setAudioScenario:AgoraAudioScenarioChorus];
[self.agoraKit setAudioScenario:AgoraAudioScenarioGameStreaming];
[self setChannelProfile];
self.agoraKit.delegate = self;
[self.agoraKit setParameters:@"{\"che.audio.custom_payload_type\":73}"];
@@ -561,7 +561,7 @@
@"position":[NSNumber numberWithInteger:positionMs],
};
NSString *jsonStr = [dict jsonStringEncoded];
[[QXRoomMessageManager shared] sendChatMessage:jsonStr messageType:(QXRoomMessageTypeSongLrc) needInsertMessage:NO];
[[QXRoomMessageManager shared] sendChatMessage:jsonStr messageType:(QXRoomMessageTypeSongLrc) needInsertMessage:NO isSuperRoom:NO];
// if (self.roomInfo.is_xiangqin == 1){

View File

@@ -83,6 +83,7 @@
switch (newState) {
case MQTTSessionManagerStateConnected:
QXLOG(@"eventCode -- 连接成功");
[QXLogger infoWithTag:@"MQTT" format:@"连接成功"];
[self subscribeTopic:qx_room_topic];
[self subscribeTopic:qx_ac_topic];
[self subscribeTopic:qx_hour_ranking];
@@ -92,21 +93,23 @@
break;
case MQTTSessionManagerStateConnecting:
QXLOG(@"eventCode -- 连接中");
[QXLogger infoWithTag:@"MQTT" format:@"连接中"];
break;
case MQTTSessionManagerStateClosed:
QXLOG(@"eventCode -- 连接被关闭");
[QXLogger infoWithTag:@"MQTT" format:@"连接被关闭"];
break;
case MQTTSessionManagerStateError:
QXLOG(@"eventCode -- 连接错误");
[QXLogger infoWithTag:@"MQTT" format:@"连接错误"];
break;
case MQTTSessionManagerStateClosing:
QXLOG(@"eventCode -- 关闭中");
[QXLogger infoWithTag:@"MQTT" format:@"关闭中"];
break;
case MQTTSessionManagerStateStarting:
QXLOG(@"eventCode -- 连接开始");
[QXLogger infoWithTag:@"MQTT" format:@"连接开始"];
break;
default:

View File

@@ -166,6 +166,15 @@ typedef NS_ENUM(NSInteger) {
/// 爆币推送特效
QXRoomMessageTypeCoinBoomEffect = 1100,
/// 撩人礼物特效
QXRoomMessageTypeSeductionEffect = 1200,
/// 约她成功
QXRoomMessageTypeJoinBarCabinRoom = 1201,
/// 收到要被抱上麦
QXRoomMessageTypeBarRoomHugPit = 1202,
/// 麦上用户设置了自定义礼物
QXRoomMessageTypeBarRoomSetCustomGift = 1203,
}QXRoomMessageType;
NS_ASSUME_NONNULL_BEGIN
@protocol QXRoomMessageManagerDelegate <NSObject>
@@ -176,7 +185,7 @@ NS_ASSUME_NONNULL_BEGIN
/// 根据用户userid 插入消息
-(void)didInsertMessge:(QXRoomChatListModel*)message userId:(NSString*)userId;
/// 上下麦
-(void)didUpDownSeatWithUser:(QXUserHomeModel*)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number isPK:(BOOL)isPK;
-(void)didUpDownSeatWithUser:(QXUserHomeModel*)user isUpSeat:(BOOL)isUpSeat pit_number:(NSInteger)pit_number isPK:(BOOL)isPK end_time:(NSString*)end_time;
/// 上麦模式发生变化 2 自由麦 | 1 排麦
-(void)aplayPitModeDidChanged:(NSString*)upMicType;
/// 排麦人数发生变化
@@ -323,6 +332,18 @@ NS_ASSUME_NONNULL_BEGIN
/// 主持邀请上签约麦
-(void)signSeatInviteWithUserId:(NSString*)userId content:(NSString*)content;
/// 酒吧房
/// 收到撩他特效
-(void)barRoomSeductionEffectWithModel:(QXRoomChatListModel*)model;
/// 需要进入小黑屋
-(void)barRoomJoinCabinRoomWithRoomId:(NSString*)room_id user_id:(NSString*)user_id meet_user_id:(NSString*)meet_user_id;
/// 收到要被抱上麦了
-(void)barRoomHugPitWithUserId:(NSString*)userId pit_number:(NSString*)pit_number;
/// 设置了自定义礼物
-(void)barRoomSetCustomGiftWithUserId:(NSString*)userId had_custom_gift:(BOOL)had_custom_gift;
@end
@interface QXRoomMessageManager : NSObject
@property (nonatomic,weak)id<QXRoomMessageManagerDelegate>delegate;
@@ -334,12 +355,16 @@ NS_ASSUME_NONNULL_BEGIN
/// 加入房间群组
-(void)joinGroupWithRoomId:(NSString*)roomId;
-(void)joinExGroupWithRoomId:(NSString*)roomId;
/// 退出
-(void)quitExGroup;
/// 退出房间群组
-(void)quitGroupWithRoomId:(NSString*)roomId removeListener:(BOOL)removeListener;
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage;
/// 发送消息
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage isSuperRoom:(BOOL)isSuperRoom;
/// 发送表情
-(void)sendChatEmoji:(QXEmojiModel *)emoji;
-(void)sendChatEmoji:(QXEmojiModel *)emoji isSuperRoom:(BOOL)isSuperRoom;
-(void)sendC2CMessage:(NSString *)message messageType:(QXRoomMessageType)messageType userId:(NSString*)userId;

View File

@@ -19,6 +19,8 @@
@interface QXRoomMessageManager() <V2TIMGroupListener,V2TIMSimpleMsgListener,V2TIMAdvancedMsgListener>
@property (nonatomic,strong)NSString *groupId;
@property (nonatomic,strong)NSString *roomId;
@property (nonatomic,strong)NSString *exRoomId;
@property (nonatomic,strong)NSString *exGroupId;
@end
@implementation QXRoomMessageManager
+ (instancetype)shared {
@@ -60,6 +62,24 @@
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM加入聊天室失败-code%d-原因%@",code,desc];
}];
}
-(void)joinExGroupWithRoomId:(NSString *)roomId{
[[V2TIMManager sharedInstance] addGroupListener:self];
[[V2TIMManager sharedInstance] addAdvancedMsgListener:self];
NSString *exGroupId = [NSString stringWithFormat:@"room%@",roomId];
self.exGroupId = exGroupId;
self.exRoomId = roomId;
[[V2TIMManager sharedInstance] joinGroup:exGroupId msg:@"大家好,我来啦" succ:^{
QXLOG(@"腾讯IM小黑屋加入聊天室成功");
// weakSelf.groupId = groupId;
// weakSelf.roomId = roomId;
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM小黑屋加入聊天室成功房间id=%@",roomId];
} fail:^(int code, NSString *desc) {
//
QXLOG(@"腾讯IM小黑屋加入聊天室失败-code%d-原因%@",code,desc);
[QXLogger infoWithTag:@"房间日志" format:@"腾讯IM小黑屋加入聊天室失败-code%d-原因%@",code,desc];
}];
}
-(void)quitGroupWithRoomId:(NSString *)roomId removeListener:(BOOL)removeListener{
if (removeListener) {
self.groupId = nil;
@@ -75,6 +95,10 @@
}];
}
-(void)quitExGroup{
self.exGroupId = nil;
self.exRoomId = nil;
}
//
-(void)onMemberEnter:(NSString *)groupID memberList:(NSArray<V2TIMGroupMemberInfo *> *)memberList{
@@ -103,7 +127,8 @@
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
NSString *groupId = [NSString stringWithFormat:@"room%@",msg.RoomId];
[QXLogger infoWithTag:@"推送日志" format:@"房间id=%@收到系统推送%@",msg.RoomId,jsonStr];
if ([groupId isEqualToString:self.groupId]) {
if ([groupId isEqualToString:self.groupId] || [groupId isEqualToString:self.exGroupId]) {
BOOL isSuperRoom = [self.exGroupId isEqualToString:groupId];
//
NSInteger meesageType = msg.MsgType.integerValue;
switch (meesageType) {
@@ -116,15 +141,17 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
NSString *jia_jia = [NSString stringWithFormat:@"%@",msg.Text[@"jia_jia"]];
if (([jia_jia hasPrefix:@"http"] || [jia_jia hasPrefix:@"https"]) && ([jia_jia hasSuffix:@"svga"] || [jia_jia hasSuffix:@"mp4"])) {
// QXGiftModel *md = [[QXGiftModel alloc] init];
// md.play_image = jia_jia;
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
if (!isSuperRoom) {
///
if (([jia_jia hasPrefix:@"http"] || [jia_jia hasPrefix:@"https"]) && ([jia_jia hasSuffix:@"svga"] || [jia_jia hasSuffix:@"mp4"])) {
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
}
}
if ([model.FromUserInfo.enter_image isExist]) {
[[QXDrifNobilityJoinRoomView shareView] addNobilityUserModel:model];
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
if ([model.FromUserInfo.user_id isEqualToString:QXGlobal.shareGlobal.loginModel.user_id]) {
@@ -146,11 +173,14 @@
///
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeGift;
if ([model.GiftInfo.play_image isExist]) {
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
if (!isSuperRoom) {
///
if ([model.GiftInfo.play_image isExist]) {
NSArray *arr = [model.GiftInfo.play_image componentsSeparatedByString:@","];
[[QXGiftPlayerManager shareManager] displayFullEffectViewWithMorePlayImages:arr];
}
[[QXGiftDisplayManager sharedManager] receiveGift:model];
}
[[QXGiftDisplayManager sharedManager] receiveGift:model];
if (model.ToUserInfos.count>0) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didRecieveGiftWithWithUserInfos:)]) {
[self.delegate didRecieveGiftWithWithUserInfos:model.ToUserInfos];
@@ -164,6 +194,7 @@
return;
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -184,12 +215,13 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
if (!model.is_pk) {
// pk
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:)]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:end_time:)]) {
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:YES pit_number:pit_number.integerValue isPK:model.is_pk];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:YES pit_number:pit_number.integerValue isPK:model.is_pk end_time:model.end_time];
}
}
break;
@@ -200,12 +232,13 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
if (!model.is_pk) {
// pk
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:)]) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didUpDownSeatWithUser:isUpSeat:pit_number:isPK:end_time:)]) {
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:NO pit_number:pit_number.integerValue isPK:model.is_pk];
[self.delegate didUpDownSeatWithUser:model.FromUserInfo isUpSeat:NO pit_number:pit_number.integerValue isPK:model.is_pk end_time:model.end_time];
}
}
break;
@@ -290,6 +323,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
}
}
@@ -302,6 +336,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
}
}
@@ -314,6 +349,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
}
}
@@ -326,6 +362,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
}
}
@@ -368,6 +405,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:model.FromUserInfo.user_id];
}
}
@@ -383,6 +421,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -395,6 +434,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -415,6 +455,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -461,6 +502,7 @@
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:userId:)]) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model userId:user_id];
}
}
@@ -530,6 +572,7 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeGift;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -551,6 +594,7 @@
if (model.step.intValue != 3) {
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -622,6 +666,7 @@
if (!model.is_pk) {
// pk
model.messageType = QXRoomChatMessageTypeSystem;
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -688,8 +733,10 @@
}
break;
case QXRoomMessageTypeCpJoinRoom:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
[[QXGiftPlayerManager shareManager] displayCpEffectView:model];
if (!isSuperRoom) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
[[QXGiftPlayerManager shareManager] displayCpEffectView:model];
}
}
break;
case QXRoomMessageTypeStartSign:{
@@ -744,10 +791,54 @@
NSString *jia_jia = [NSString stringWithFormat:@"%@",msg.Text[@"play_image"]];
[[QXGiftPlayerManager shareManager] displayChatEffectView:jia_jia];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
break;
case QXRoomMessageTypeSeductionEffect:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomSeductionEffectWithModel:)]) {
[self.delegate barRoomSeductionEffectWithModel:model];
}
}
break;
case QXRoomMessageTypeJoinBarCabinRoom:{
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
NSString *cabinRoomId = [NSString stringWithFormat:@"%@",msg.Text[@"room_id"]];
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *meet_user_id = [NSString stringWithFormat:@"%@",msg.Text[@"meet_user_id"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomJoinCabinRoomWithRoomId:user_id:meet_user_id:)]) {
[self.delegate barRoomJoinCabinRoomWithRoomId:cabinRoomId user_id:user_id meet_user_id:meet_user_id];
}
}
break;
case QXRoomMessageTypeBarRoomHugPit:{
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *pit_number = [NSString stringWithFormat:@"%@",msg.Text[@"pit_number"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomHugPitWithUserId:pit_number:)]) {
[self.delegate barRoomHugPitWithUserId:user_id pit_number:pit_number];
}
}
break;
case QXRoomMessageTypeBarRoomSetCustomGift:{
NSString *user_id = [NSString stringWithFormat:@"%@",msg.Text[@"user_id"]];
NSString *type = [NSString stringWithFormat:@"%@",msg.Text[@"type"]];
if (self.delegate && [self.delegate respondsToSelector:@selector(barRoomSetCustomGiftWithUserId:had_custom_gift:)]) {
[self.delegate barRoomSetCustomGiftWithUserId:user_id had_custom_gift:type.intValue==1];
}
}
break;
default:
break;
}
@@ -871,12 +962,16 @@
-(void)onRecvGroupCustomMessage:(NSString *)msgID groupID:(NSString *)groupID sender:(V2TIMGroupMemberInfo *)info customData:(NSData *)data{
NSString *jsonStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
QXRoomMessage *msg = [QXRoomMessage yy_modelWithJSON:jsonStr];
if ([groupID isEqualToString:self.groupId]) {
NSString *groupId = [NSString stringWithFormat:@"room%@",msg.RoomId];
[QXLogger infoWithTag:@"推送日志" format:@"房间id=%@收到系统推送%@",msg.RoomId,jsonStr];
if ([groupId isEqualToString:self.groupId] || [groupId isEqualToString:self.exGroupId]) {
BOOL isSuperRoom = [self.exGroupId isEqualToString:groupId];
NSInteger meesageType = msg.MsgType.integerValue;
if (meesageType == QXRoomMessageTypeText) {
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeChat;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}else if (meesageType == QXRoomMessageTypeClearMessage) {
@@ -907,6 +1002,7 @@
QXRoomChatListModel *model = [QXRoomChatListModel yy_modelWithJSON:msg.Text];
model.messageType = QXRoomChatMessageTypeEmoji;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
@@ -914,9 +1010,9 @@
}
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage{
-(void)sendChatMessage:(NSString *)message messageType:(QXRoomMessageType)messageType needInsertMessage:(BOOL)needInsertMessage isSuperRoom:(BOOL)isSuperRoom{
NSDictionary *dict = @{
@"RoomId":self.roomId?self.roomId:@"",
@"RoomId":isSuperRoom?self.exRoomId?:@"":self.roomId?:@"",
@"MsgType":[NSNumber numberWithInteger:messageType],
@"Text":@{
@"FromUserInfo":@{
@@ -945,22 +1041,23 @@
model.FromUserInfo = userInfo;
model.messageType = QXRoomChatMessageTypeChat;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
}
NSString *jsonStr = [dict jsonStringEncoded];
NSData *data =[jsonStr dataUsingEncoding:NSUTF8StringEncoding];
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:self.groupId priority:V2TIM_PRIORITY_NORMAL succ:^{
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:isSuperRoom?self.exGroupId?:@"":self.groupId?:@"" priority:V2TIM_PRIORITY_NORMAL succ:^{
QXLOG(@"发送自定义消息成功");
} fail:^(int code, NSString * _Nullable desc) {
QXLOG(@"发送自定义消息失败");
}];
}
-(void)sendChatEmoji:(QXEmojiModel *)emoji{
-(void)sendChatEmoji:(QXEmojiModel *)emoji isSuperRoom:(BOOL)isSuperRoom{
NSDictionary *dict = @{
@"RoomId":self.roomId?self.roomId:@"",
@"RoomId":isSuperRoom?self.exRoomId?:@"":self.roomId?:@"",
@"MsgType":[NSNumber numberWithInteger:QXRoomMessageTypeEmoji],
@"Text":@{
@"FromUserInfo":@{
@@ -993,11 +1090,12 @@
model.messageType = QXRoomChatMessageTypeEmoji;
model.emoji = emoji;
if (self.delegate && [self.delegate respondsToSelector:@selector(didInsertMessge:)]) {
model.isSuperRoom = isSuperRoom;
[self.delegate didInsertMessge:model];
}
NSString *jsonStr = [dict jsonStringEncoded];
NSData *data =[jsonStr dataUsingEncoding:NSUTF8StringEncoding];
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:self.groupId priority:V2TIM_PRIORITY_NORMAL succ:^{
[[V2TIMManager sharedInstance] sendGroupCustomMessage:data to:isSuperRoom?self.exGroupId?:@"":self.groupId?:@"" priority:V2TIM_PRIORITY_NORMAL succ:^{
QXLOG(@"发送自定义消息成功");
} fail:^(int code, NSString * _Nullable desc) {
QXLOG(@"发送自定义消息失败");

View File

@@ -11,6 +11,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface QXChatViewController : QXBaseViewController
@property (nonatomic,strong)TUIChatConversationModel *data;
@property (nonatomic,assign)BOOL isServices;
@end
NS_ASSUME_NONNULL_END

View File

@@ -118,6 +118,7 @@
}else{
TUIC2CChatViewController *vc = [[TUIC2CChatViewController alloc] init];
vc.isServices = self.isServices;
[vc setConversationData:self.data];
// TUIC2CChatViewController ViewController
vc.view.frame = CGRectMake(0, NavContentHeight, SCREEN_WIDTH, SCREEN_HEIGHT-NavContentHeight);

View File

@@ -13,11 +13,14 @@
#import "QXSystemTopView.h"
#import "QXSystemNoticeViewController.h"
#import "QXMessageServices.h"
#import "AppDelegate.h"
@interface QXMessageViewController ()<TUIConversationListControllerListener,QXSystemTopViewDelegate>
@property (nonatomic,strong)QXSystemTopView *topView;
@property (nonatomic,strong)QXMessageModel *model;
@property (nonatomic,strong)TUIConversationListController *vc;
@property (nonatomic,strong)NSString *service_user_id;
@property (nonatomic,strong)NSString *service_user_name;
@end
@implementation QXMessageViewController
@@ -102,6 +105,11 @@
data.groupID = conversation.groupID;
data.title = conversation.title;
data.faceUrl = conversation.faceUrl;
if ([conversation.userID isEqualToString:[NSString stringWithFormat:@"u%@",self.service_user_id]]) {
vc.isServices = YES;
}else{
vc.isServices = NO;
}
vc.data = data;
[self.vc.dataProvider markConversationAsRead:conversation];
[self.navigationController pushViewController:vc animated:YES];
@@ -117,6 +125,15 @@
[QXMessageServices getHomeMessageSuccessBlock:^(QXMessageModel * _Nonnull model) {
weakSelf.model = model;
weakSelf.topView.model = model;
AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
delegate.tabbarVC.systemUnreadNumber = model.system_no_read_count.integerValue + model.announcement_read_count.integerValue;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
[QXMessageServices getSerbviceUserSuccessBlock:^(NSString * _Nonnull user_id, NSString * _Nonnull user_name) {
weakSelf.service_user_id = user_id;
weakSelf.service_user_name = user_name;
} failBlock:^(NSError * _Nonnull error, NSString * _Nonnull msg) {
}];
@@ -137,7 +154,7 @@
-(QXSystemTopView *)topView{
if (!_topView) {
_topView = [[QXSystemTopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74+8)];
_topView = [[QXSystemTopView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74*2+8)];
_topView.delegate = self;
}
return _topView;

View File

@@ -67,6 +67,12 @@ NS_ASSUME_NONNULL_BEGIN
notice:(NSString*)notice
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
获取平台客服
*/
+(void)getSerbviceUserSuccessBlock:(void (^)(NSString * user_id , NSString * user_name))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@end
NS_ASSUME_NONNULL_END

View File

@@ -112,4 +112,18 @@
failBlock(error,msg);
}];
}
+(void)getSerbviceUserSuccessBlock:(void (^)(NSString * user_id , NSString * user_name))successBlock failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
[[QXRequset shareInstance] getWithUrl:QXRoomServicesUserId parameters:@{} needCache:NO success:^(id responseObject) {
if (successBlock) {
NSString *user_id = [NSString stringWithFormat:@"%@",responseObject[@"data"][@"user_id"]];
NSString *user_name = [NSString stringWithFormat:@"%@",responseObject[@"data"][@"user_name"]];
successBlock(user_id,user_name);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
@end

View File

@@ -24,27 +24,17 @@
}
-(void)initSubviews{
MJWeakSelf
// self.noticeView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74)];
// self.noticeView.iconImageView.image = [UIImage imageNamed:@"notice_icon"];
// self.noticeView.titleLabel.text = QXText(@"官方公告");
// [self.noticeView addTapBlock:^(id _Nonnull obj) {
// if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickNoticeWithType:)]) {
// [weakSelf.delegate didClickNoticeWithType:0];
// }
// }];
// [self addSubview:self.noticeView];
self.noticeView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74)];
self.noticeView.iconImageView.image = [UIImage imageNamed:@"notice_icon"];
self.noticeView.titleLabel.text = QXText(@"官方公告");
[self.noticeView addTapBlock:^(id _Nonnull obj) {
if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickNoticeWithType:)]) {
[weakSelf.delegate didClickNoticeWithType:0];
}
}];
[self addSubview:self.noticeView];
// self.systemView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 74, SCREEN_WIDTH, 74)];
// self.systemView.iconImageView.image = [UIImage imageNamed:@"system_icon"];
// self.systemView.titleLabel.text = QXText(@"系统消息");
// [self addSubview:self.systemView];
// [self.systemView addTapBlock:^(id _Nonnull obj) {
// if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickNoticeWithType:)]) {
// [weakSelf.delegate didClickNoticeWithType:1];
// }
// }];
self.systemView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74)];
self.systemView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 74, SCREEN_WIDTH, 74)];
self.systemView.iconImageView.image = [UIImage imageNamed:@"system_icon"];
self.systemView.titleLabel.text = QXText(@"系统消息");
[self addSubview:self.systemView];
@@ -54,6 +44,16 @@
}
}];
// self.systemView = [[QXSystemTopSubView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, 74)];
// self.systemView.iconImageView.image = [UIImage imageNamed:@"system_icon"];
// self.systemView.titleLabel.text = QXText(@"系统消息");
// [self addSubview:self.systemView];
// [self.systemView addTapBlock:^(id _Nonnull obj) {
// if (weakSelf.delegate && [weakSelf.delegate respondsToSelector:@selector(didClickNoticeWithType:)]) {
// [weakSelf.delegate didClickNoticeWithType:1];
// }
// }];
self.bottomView = [[UIView alloc] initWithFrame:CGRectMake(0, self.systemView.bottom, SCREEN_WIDTH, 8)];
// self.bottomView.backgroundColor = RGB16(0xececec);
self.bottomView.backgroundColor = [UIColor clearColor];

View File

@@ -111,10 +111,17 @@ static void *WKWebBrowserContext = &WKWebBrowserContext;
if([message.name isEqualToString:@"nativeHandler"]){
NSDictionary *dict = message.body;
if ([dict[@"action"] isEqualToString:@"customerService"]) {
WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
req.corpid = @"ww1de4300858c0b461";
req.url = @"https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7";
[WXApi sendReq:req completion:nil];
// WXOpenCustomerServiceReq *req = [[WXOpenCustomerServiceReq alloc] init];
// req.corpid = @"ww1de4300858c0b461";
// req.url = @"https://work.weixin.qq.com/kfid/kfcb3d23a59c188a0e7";
// [WXApi sendReq:req completion:nil];
id object = dict[@"data"];
if ([object isKindOfClass:[NSDictionary class]]) {
NSDictionary *dataDic = object;
NSString *userId = dataDic[@"user_id"];
NSString *userName = dataDic[@"user_name"];
[[QXGlobal shareGlobal] chatWithServices:userId nickname:userName avatar:@"" navagationController:self.navigationController];
}
}else if ([dict[@"action"] isEqualToString:@"closeWeb"]) {
if (self.contentWebView.canGoBack) {
[self.contentWebView goBack];

View File

@@ -72,10 +72,14 @@
self.categoryView.titleFont = [UIFont systemFontOfSize:12];
self.categoryView.titleSelectedFont = [UIFont boldSystemFontOfSize:16];
self.categoryView.averageCellSpacingEnabled = NO;
JXCategoryIndicatorImageView *indicatorView = [[JXCategoryIndicatorImageView alloc] init];
indicatorView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
indicatorView.indicatorImageViewSize = CGSizeMake(58, 8);
indicatorView.verticalMargin = 11;
// JXCategoryIndicatorImageView *indicatorView = [[JXCategoryIndicatorImageView alloc] init];
// indicatorView.indicatorImageView.image = [UIImage imageNamed:@"home_slider"];
// indicatorView.indicatorImageViewSize = CGSizeMake(70, 8);
// indicatorView.verticalMargin = 11;
// self.categoryView.indicators = @[indicatorView];
JXCategoryIndicatorLineView *indicatorView = [[JXCategoryIndicatorLineView alloc] init];
indicatorView.indicatorWidth = 50;
indicatorView.indicatorColor = QXConfig.themeColor;
self.categoryView.indicators = @[indicatorView];
self.containerView = [[JXCategoryListContainerView alloc] initWithType:(JXCategoryListContainerType_ScrollView) delegate:self];
self.containerView.frame = CGRectMake(0, self.categoryView.bottom, SCREEN_WIDTH, SCREEN_HEIGHT-self.categoryView.bottom);

View File

@@ -169,7 +169,7 @@
UILabel *waterLabel = [[UILabel alloc] initWithFrame:CGRectMake(SCREEN_WIDTH-16-130, 0, SCREEN_WIDTH-130-32, 25)];
waterLabel.font = [UIFont systemFontOfSize:13];
waterLabel.textColor = [UIColor colorWithHexString:@"#333333"];
NSString *total_earning = [NSString stringWithFormat:@"%.2f",model.total_earning];
NSString *total_earning = [NSString stringWithFormat:@"%.4f",model.total_earning];
NSString *total_price = [NSString stringWithFormat:@"%.2f",model.total_price];
NSString *s = [NSString stringWithFormat:@"收益 %@ 流水 %@",total_earning,total_price];
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
@@ -181,6 +181,11 @@
[waterLabel sizeToFit];
waterLabel.frame = CGRectMake(SCREEN_WIDTH-16-waterLabel.size.width, 0, waterLabel.size.width, 25);
[header addSubview:waterLabel];
if (self.type == 1) {
waterLabel.hidden = YES;
}else{
waterLabel.hidden = NO;
}
return header;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

View File

@@ -97,6 +97,10 @@
}
}
-(void)didClickSendCode:(UIButton *)sender{
GetSmscodeType type = GetSmscodeTypeFindBindMobile;
if (self.haveMobile) {
GetSmscodeType type = GetSmscodeTypeFindChangeMobile;
}
if (sender == self.codeTextField.codeBtn) {
sender.userInteractionEnabled = NO;
if (self.accountTextField.textField.text.length < 11) {
@@ -107,7 +111,6 @@
showToast(QXText(@"新手机号不能与旧手机号相同"));
return;
}
GetSmscodeType type = GetSmscodeTypeFindChangeMobile;
MJWeakSelf
self.isNetworking = YES;
[QXLoginNetwork getSmscodeWithMobile:self.accountTextField.textField.text
@@ -121,7 +124,6 @@
sender.userInteractionEnabled = YES;
}];
}else{
GetSmscodeType type = GetSmscodeTypeFindChangeMobile;
NSString *oldMobile = [QXGlobal shareGlobal].loginModel.mobile;
MJWeakSelf
sender.userInteractionEnabled = NO;

View File

@@ -16,6 +16,7 @@
@property (nonatomic,strong)NSString* startTime;
@property (nonatomic,strong)NSString* endTime;
@property (nonatomic,strong)NSString* last_id;
@end
@implementation QXCornRecordSubViewController
@@ -32,7 +33,7 @@
[dateBg addSubview:self.dateView];
[self.view addSubview:dateBg];
[self.view addSubview:self.tableView];
self.page = 1;
self.last_id = @"";
}
-(void)getData{
// [self.dataArray addObject:@""];
@@ -41,15 +42,17 @@
// [self.tableView reloadData];
//
__weak typeof(self) weakSelf = self;
[QXMineNetwork roomCoinOrDiamondDetailWithPage:self.page in_out_type:[NSString stringWithFormat:@"%ld",self.type+1] start_time:self.startTime end_time:self.endTime gift_type:[NSString stringWithFormat:@"%ld",self.waterType+1] successBlock:^(NSArray<QXCoinDetailModel *> * _Nonnull list) {
[QXMineNetwork roomCoinOrDiamondDetailWithLastId:self.last_id in_out_type:[NSString stringWithFormat:@"%ld",self.type+1] start_time:self.startTime end_time:self.endTime gift_type:[NSString stringWithFormat:@"%ld",self.waterType+1] successBlock:^(NSArray<QXCoinDetailModel *> * _Nonnull list) {
__strong typeof(weakSelf) strongSelf = weakSelf;
if (!strongSelf) {
NSLog(@"⚠️ self has been deallocated, skipping hide operation");
return;
}
if (strongSelf.page == 1) {
if (strongSelf.last_id.length == 0) {
[strongSelf.dataArray removeAllObjects];
}
QXCoinDetailModel *lastModel = list.lastObject;
weakSelf.last_id = lastModel.id;
[strongSelf.dataArray addObjectsFromArray:list];
[strongSelf.tableView reloadData];
if (list.count == 0) {
@@ -83,7 +86,7 @@
QXLOG(@"开始时间-%@ 结束时间-%@",startDateString,endDateString);
self.startTime = startDateString;
self.endTime = endDateString;
self.page = 1;
self.last_id = @"";
[self getData];
}
@@ -106,11 +109,10 @@
_tableView.rowHeight = UITableViewAutomaticDimension;
MJWeakSelf
_tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
weakSelf.page = 1;
weakSelf.last_id = @"";
[weakSelf getData];
}];
_tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{
weakSelf.page++;
[weakSelf getData];
}];
}

View File

@@ -22,6 +22,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *remarks;
/// 时间
@property (nonatomic,strong)NSString *createtime;
/// 最后一个id
@property (nonatomic,strong)NSString *id;
@end

View File

@@ -14,7 +14,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *num;
/// 礼物名称
@property (nonatomic,strong)NSString *gift_name;
/// 礼物图片
/// 设置自定义礼物名称
@property (nonatomic,strong)NSString *gift_remark_name;
/// 礼物图片as
@property (nonatomic,strong)NSString *base_image;
/// 礼物特效
@property (nonatomic,strong)NSString *play_image;
@@ -41,6 +43,9 @@ NS_ASSUME_NONNULL_BEGIN
/// 是否为师徒标签
@property (nonatomic,strong)NSString *is_teacher;
/// 当前钱包余额
@property (nonatomic,strong)NSString *user_wallet_coin;
@property (nonatomic,assign)BOOL isSelected;
@end

View File

@@ -60,7 +60,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *room_cover;
/// 房间公告
@property (nonatomic,strong)NSString *room_intro;
/// 房间类型 type_id 1 点唱 2 拍卖 3男神 4女神 6小黑屋 7 交友房
/// 房间类型 type_id 1k歌+普通 2 拍卖 3男神 4女神 6小黑屋 7 交友房 9点唱 10签约房 11 酒吧房
@property (nonatomic,strong)NSString *type_id;
/// 房间子类型 label_id 1聊天 2 k歌 拍卖时 1真爱 2亲密
@property (nonatomic,strong)NSString *label_id;
@@ -82,6 +82,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *last_pk_room_id;
/// 排麦人数
@property (nonatomic,strong)NSString *queue_number;
/// 酒吧房撩人所需金币数
@property (nonatomic,strong)NSString *sexy_coin;
@end
@@ -128,6 +130,11 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)NSString *nickname_color;
@property (nonatomic,strong)NSString *is_online;
/// 酒吧房
/// 酒吧房麦位时长
@property (nonatomic,strong)NSString *end_time;
/// 是否有设置自定义礼物 0 没设置 1已设置
@property (nonatomic,assign)NSInteger had_custom_gift;
@property (nonatomic,assign)BOOL isSelected;
@end

View File

@@ -140,6 +140,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic,strong)QXUserHomeModel *master;
@property (nonatomic,assign)NSInteger had_custom_gift;
-(instancetype)copyModel;
@end

View File

@@ -0,0 +1,21 @@
//
// QXRoomSeatTimeModel.h
// QXLive
//
// Created by 启星 on 2026/1/6.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface QXRoomSeatTimeModel : NSObject
/// 时间
@property (nonatomic,strong)NSString *time;
/// 时间字符串
@property (nonatomic,strong)NSString *time_str;
@property (nonatomic,assign)BOOL isSelected;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,12 @@
//
// QXRoomSeatTimeModel.m
// QXLive
//
// Created by on 2026/1/6.
//
#import "QXRoomSeatTimeModel.h"
@implementation QXRoomSeatTimeModel
@end

View File

@@ -33,6 +33,7 @@
#import "QXFamilyModel.h"
#import "QXRoomActivityStatusModel.h"
#import "QXConfig.h"
#import "QXRoomSeatTimeModel.h"
NS_ASSUME_NONNULL_BEGIN
@@ -354,6 +355,7 @@ NS_ASSUME_NONNULL_BEGIN
heart_id:(NSString*)heart_id
type:(NSString*)type
pit_number:(NSString*)pit_number
gift_bag_id:(NSString*)gift_bag_id
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -378,6 +380,7 @@ NS_ASSUME_NONNULL_BEGIN
*/
+(void)roomUpSeatWithRoomId:(NSString*)room_id
pit_number:(NSString*)pit_number
gift_id:(NSString*)gift_id
isUpSeat:(BOOL)isUpSeat
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@@ -542,9 +545,19 @@ NS_ASSUME_NONNULL_BEGIN
已点歌曲列表
*/
+(void)roomSongListWithRoomId:(NSString*)room_id
search_user:(NSString*)search_user
successBlock:(void (^)(NSArray<QXSongListModel*>*list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
删除已点歌曲
*/
+(void)deleteRoomSongListWithRoomId:(NSString*)room_id
did:(NSString*)did
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
k歌房间 魅力排行
*/
@@ -831,7 +844,7 @@ NS_ASSUME_NONNULL_BEGIN
gift_type 1金币2收益钻石
in_out_type 1收入2支出
*/
+(void)roomCoinOrDiamondDetailWithPage:(NSInteger)page
+(void)roomCoinOrDiamondDetailWithLastId:(NSString*)last_id
in_out_type:(NSString*)in_out_type
start_time:(NSString*)start_time
end_time:(NSString*)end_time
@@ -1493,6 +1506,88 @@ NS_ASSUME_NONNULL_BEGIN
num:(NSString*)num
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
#pragma mark - 酒吧房
/**
label 礼物标签(类型)不传返回所有礼物,拍卖 传99 酒吧房自定义礼物 14 酒吧房普通礼物15 酒吧房小黑屋礼物 16 酒吧房撩TA礼物17
type 类型位置1-房间送礼礼物2-排麦设置插麦礼物3-拍卖位选择拍卖礼物4-歌手添加歌单礼物5-动态打赏礼物 6酒吧房
新礼物列表
*/
+(void)getRoomNewGiftListWithLabel:(NSString*)label
type:(NSString*)type
successBlock:(void (^)(NSArray<QXGiftModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
获取自定义礼物列表
*/
+(void)getRoomCustomGiftWithUserId:(NSString*)userId
successBlock:(void (^)(NSArray<QXGiftModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
设置自定义礼物
*/
+(void)setRoomCustomGiftWithGiftId:(NSString*)gift_id
roomId:(NSString*)roomId
newGiftName:(NSString*)new_gift_name
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
获取酒吧房麦位时间列表
*/
+(void)getRoomSeatTimeListSuccessBlock:(void (^)(NSArray<QXRoomSeatTimeModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
房间麦位时长设置
*/
+(void)setRoomSeatTimeWithRoomId:(NSString*)roomId
time:(NSString*)time
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
约Ta礼物详情
*/
+(void)roomAskUserGiftWithRoomId:(NSString*)roomId
toUserId:(NSString*)toUserId
successBlock:(void (^)(QXGiftModel* model))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
撩他
*/
+(void)roomSeductionWithRoomId:(NSString*)roomId
to_user_id:(NSString*)to_user_id
type:(NSString*)type
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
约他
*/
+(void)roomBarAskWithRoomId:(NSString*)roomId
user_id:(NSString*)user_id
gift_id:(NSString*)gift_id
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
/**
小黑屋列表
*/
+(void)roomBarCabinRoomListWithRoomId:(NSString*)roomId
successBlock:(void (^)(NSArray* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock;
@end

View File

@@ -617,7 +617,7 @@
+(void)joinRoomWithRoomId:(NSString *)room_id successBlock:(nonnull void (^)(QXRoomModel * _Nonnull))successBlock roomErrorBlock:(nonnull void (^)(NSString * _Nonnull, NSString * _Nonnull))roomErrorBlock failBlock:(nonnull void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id
@"room_id":room_id?:@""
};
[[QXRequset shareInstance] postWithUrl:QXJoinRoom parameters:parameters needCache:NO success:^(id responseObject) {
int code = [responseObject[@"code"] intValue];
@@ -719,6 +719,7 @@
heart_id:(NSString*)heart_id
type:(NSString*)type
pit_number:(NSString*)pit_number
gift_bag_id:(NSString*)gift_bag_id
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@@ -728,7 +729,8 @@
@"to_uid":to_uid?to_uid:@"",
@"type":type?type:@"",
@"pit_number":pit_number?pit_number:@"",
@"heart_id":heart_id?heart_id:@""
@"heart_id":heart_id?heart_id:@"",
@"gift_bag_id":gift_bag_id?:@"",
};
__block NSString *userId = to_uid;
[[QXRequset shareInstance] postWithUrl:QXSendGift parameters:parameters needCache:NO success:^(id responseObject) {
@@ -795,12 +797,14 @@
+(void)roomUpSeatWithRoomId:(NSString*)room_id
pit_number:(NSString*)pit_number
gift_id:(NSString*)gift_id
isUpSeat:(BOOL)isUpSeat
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id,
@"pit_number":pit_number?pit_number:@""
@"pit_number":pit_number?pit_number:@"",
@"gift_id":gift_id?:@""
};
[[QXRequset shareInstance] postWithUrl:isUpSeat?QXRoomUpSeat:QXRoomDownSeat parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -1105,11 +1109,16 @@
failBlock(error,msg);
}];
}
+(void)roomSongListWithRoomId:(NSString *)room_id successBlock:(void (^)(NSArray<QXSongListModel *> * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
+(void)roomSongListWithRoomId:(NSString *)room_id search_user:(NSString*)search_user successBlock:(void (^)(NSArray<QXSongListModel *> * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id,
@"search_user":search_user?search_user:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomSongList parameters:parameters needCache:NO success:^(id responseObject) {
NSString *url = QXRoomSongList;
if (search_user.length>0) {
url = QXRoomSongListSearch;
}
[[QXRequset shareInstance] postWithUrl:url parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray *list = [NSArray yy_modelArrayWithClass:[QXSongListModel class] json:responseObject[@"data"]];
successBlock(list);
@@ -1118,6 +1127,27 @@
failBlock(error,msg);
}];
}
/**
*/
+(void)deleteRoomSongListWithRoomId:(NSString*)room_id
did:(NSString*)did
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id,
@"did":did?did:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomSongListDelete parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
+(void)roomCharmRankListWithRoomId:(NSString *)room_id successBlock:(void (^)(NSArray<QXRoomPitModel *> * _Nonnull))successBlock failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":room_id,
@@ -1642,7 +1672,7 @@
}];
}
+(void)roomCoinOrDiamondDetailWithPage:(NSInteger)page
+(void)roomCoinOrDiamondDetailWithLastId:(NSString*)last_id
in_out_type:(NSString *)in_out_type
start_time:(NSString *)start_time
end_time:(NSString *)end_time
@@ -1650,11 +1680,11 @@
successBlock:(void (^)(NSArray<QXCoinDetailModel *> * _Nonnull))successBlock
failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"page":[NSNumber numberWithInteger:page],
@"last_id":last_id?:@"",
@"gift_type":gift_type?gift_type:@"",
@"start_time":start_time?start_time:@"",
@"end_time":end_time?end_time:@"",
@"in_out_type":in_out_type?in_out_type:@""
@"in_out_type":in_out_type?in_out_type:@"",
};
[[QXRequset shareInstance] postWithUrl:QXRoomCoinDetail parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
@@ -3035,4 +3065,186 @@
failBlock(error,msg);
}];
}
#pragma mark -
+(void)getRoomNewGiftListWithLabel:(NSString*)label
type:(NSString*)type
successBlock:(void (^)(NSArray<QXGiftModel *> * _Nonnull))successBlock
failBlock:(void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
[[QXRequset shareInstance] getWithUrl:QXRoomNewGiftList parameters:@{@"label":label?:@"",@"type":type?:@""} needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray*list = [NSArray yy_modelArrayWithClass:[QXGiftModel class] json:responseObject[@"data"]];
successBlock(list);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)getRoomCustomGiftWithUserId:(NSString*)userId
successBlock:(void (^)(NSArray<QXGiftModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"user_id":userId?:@"",
};
[[QXRequset shareInstance] getWithUrl:QXRoomCustomGiftList parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray*list = [NSArray yy_modelArrayWithClass:[QXGiftModel class] json:responseObject[@"data"]];
successBlock(list);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)setRoomCustomGiftWithGiftId:(NSString*)gift_id
roomId:(NSString*)roomId
newGiftName:(NSString*)new_gift_name
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"gift_id":gift_id?:@"",
@"gift_remark_name":new_gift_name?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomSetCustom parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)getRoomSeatTimeListSuccessBlock:(void (^)(NSArray<QXRoomSeatTimeModel*>* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
[[QXRequset shareInstance] getWithUrl:QXRoomSeatTimeList parameters:@{} needCache:NO success:^(id responseObject) {
if (successBlock) {
NSArray*list = [NSArray yy_modelArrayWithClass:[QXRoomSeatTimeModel class] json:responseObject[@"data"]];
successBlock(list);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)setRoomSeatTimeWithRoomId:(NSString*)roomId
time:(NSString*)time
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"time":time?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomSetSeatTime parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
Ta
*/
+(void)roomAskUserGiftWithRoomId:(NSString*)roomId
toUserId:(NSString*)toUserId
successBlock:(void (^)(QXGiftModel* model))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"to_user_id":toUserId?:@""
};
[[QXRequset shareInstance] getWithUrl:QXRoomGetSeatGift parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
QXGiftModel *model = [QXGiftModel yy_modelWithJSON:responseObject[@"data"]];
successBlock(model);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)roomSeductionWithRoomId:(NSString*)roomId
to_user_id:(NSString*)to_user_id
type:(NSString*)type
successBlock:(void (^)(NSDictionary* dict))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"to_user_id":to_user_id?:@"",
@"type":type?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomBarSeduction parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)roomBarAskWithRoomId:(NSString *)roomId
user_id:(nonnull NSString *)user_id
gift_id:(nonnull NSString *)gift_id
successBlock:(nonnull void (^)(NSDictionary * _Nonnull))successBlock
failBlock:(nonnull void (^)(NSError * _Nonnull, NSString * _Nonnull))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
@"user_id":user_id?:@"",
@"gift_id":gift_id?:@""
};
[[QXRequset shareInstance] postWithUrl:QXRoomBarAsk parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
successBlock(responseObject[@"data"]);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
/**
*/
+(void)roomBarCabinRoomListWithRoomId:(NSString*)roomId
successBlock:(void (^)(NSArray* list))successBlock
failBlock:(void (^)(NSError * error, NSString * msg))failBlock{
NSDictionary *parameters =@{
@"room_id":roomId?:@"",
};
[[QXRequset shareInstance] postWithUrl:QXRoomBarCabinRoomList parameters:parameters needCache:NO success:^(id responseObject) {
if (successBlock) {
id object = responseObject[@"data"];
NSArray *array = [NSArray array];
if ([object isKindOfClass:[NSArray class]]) {
array = (NSArray*)object;
}
successBlock(array);
}
} fail:^(NSError *error, NSString *msg, NSURLSessionDataTask *task) {
failBlock(error,msg);
}];
}
@end

View File

@@ -48,6 +48,7 @@
@property (nonatomic,strong) UIButton *followBtn;
@property (nonatomic,strong) UIButton *playBtn;
@property (nonatomic,strong) UIButton *toRoomBtn;
@property (nonatomic,strong) QXUserCpDressView *cpDressView;
@property (nonatomic,strong) QXUserCpCardView *cpCardView;
@@ -247,9 +248,9 @@
self.guildBgImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"user_home_guild_bg"]];
[self.whiteBgView addSubview:self.guildBgImageView];
[self.guildBgImageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(-8);
make.left.equalTo(self.headerView.mas_right);
make.height.mas_equalTo(31);
make.top.mas_equalTo(6);
make.bottom.equalTo(self.headerView).offset(-10);
make.width.mas_equalTo(94);
}];
@@ -281,18 +282,35 @@
// [self.playBtn setTitle:QXText(@"私信") forState:(UIControlStateNormal)];
// [self.playBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
// self.playBtn.backgroundColor = RGB16(0x333333);
self.playBtn.hidden = YES;
self.playBtn.hidden = NO;
[self.playBtn setBackgroundImage:[UIImage imageNamed:@"expansion_call"] forState:(UIControlStateNormal)];
self.playBtn.titleLabel.font = [UIFont systemFontOfSize:14];
[self.playBtn addRoundedCornersWithRadius:12];
[self.playBtn addTarget:self action:@selector(playAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.whiteBgView addSubview:self.playBtn];
[self.playBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.guildBgImageView.mas_left).offset(-6);
make.right.mas_equalTo(-8);
make.width.mas_equalTo(59);
make.height.mas_equalTo(24);
make.centerY.equalTo(self.guildBgImageView).offset(-2);
make.top.equalTo(self.whiteBgView).offset(6);
}];
self.toRoomBtn = [[UIButton alloc] initWithFrame:CGRectMake(self.playBtn.left-6-91, self.whiteBgView.top+10, 91, 24)];
// [self.playBtn setTitle:QXText(@"私信") forState:(UIControlStateNormal)];
// [self.playBtn setTitleColor:UIColor.whiteColor forState:(UIControlStateNormal)];
// self.playBtn.backgroundColor = RGB16(0x333333);
self.toRoomBtn.hidden = YES;
[self.toRoomBtn setBackgroundImage:[UIImage imageNamed:@"room_user_follow"] forState:(UIControlStateNormal)];
self.toRoomBtn.titleLabel.font = [UIFont systemFontOfSize:14];
[self.toRoomBtn addRoundedCornersWithRadius:12];
[self.toRoomBtn addTarget:self action:@selector(roomAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.whiteBgView addSubview:self.toRoomBtn];
[self.toRoomBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(self.playBtn.mas_left).offset(-6);
make.width.mas_equalTo(59);
make.height.mas_equalTo(24);
make.centerY.equalTo(self.playBtn);
}];
// self.nameLabel.text = @"张三";
// self.idLabel.text = @"313213213";
@@ -362,13 +380,15 @@
}];
}
-(void)playAction{
[[QXGlobal shareGlobal] chatWithUserID:self.model.user_id nickname:self.model.nickname avatar:self.model.avatar navagationController:self.navigationController];
}
-(void)roomAction{
if (self.model.room_id.intValue > 0) {
//
[[QXGlobal shareGlobal] joinRoomWithRoomId:self.model.room_id isRejoin:NO navagationController:self.navigationController];
}else{
//
[[QXGlobal shareGlobal] chatWithUserID:self.model.user_id nickname:self.model.nickname avatar:self.model.avatar navagationController:self.navigationController];
}
}
-(void)didClickHeaderViewUserId:(NSString*)userId{
if ([userId isEqualToString:self.userId]) {
@@ -478,16 +498,19 @@
if ([model.user_id isEqualToString:[QXGlobal shareGlobal].loginModel.user_id]) {
self.followBtn.hidden = YES;
self.playBtn.hidden = YES;
self.toRoomBtn.hidden = YES;
}else{
self.followBtn.hidden = NO;
self.playBtn.hidden = NO;
self.followBtn.selected = model.is_follow==0?NO:YES;
if (model.room_id.intValue > 0) {
// [self.playBtn setTitle:QXText(@"跟随") forState:(UIControlStateNormal)];
[self.playBtn setBackgroundImage:[UIImage imageNamed:@"room_user_follow"] forState:(UIControlStateNormal)];
// [self.playBtn setBackgroundImage:[UIImage imageNamed:@"room_user_follow"] forState:(UIControlStateNormal)];
self.toRoomBtn.hidden = NO;
}else{
// [self.playBtn setTitle:QXText(@"私信") forState:(UIControlStateNormal)];
[self.playBtn setBackgroundImage:[UIImage imageNamed:@"expansion_call"] forState:(UIControlStateNormal)];
// [self.playBtn setBackgroundImage:[UIImage imageNamed:@"expansion_call"] forState:(UIControlStateNormal)];
self.toRoomBtn.hidden = YES;
}
}
if ([model.guild_name isExist]) {

View File

@@ -26,6 +26,8 @@
@property (nonatomic,strong)UITapGestureRecognizer *tap;
@property (nonatomic,strong)NSMutableArray *rechargeDataArray;
@property (nonatomic,strong)NSMutableArray *payTypeArray;
@property (nonatomic,strong)UIButton *selectedBtn;
@property (nonatomic,strong)UIButton *agreementBtn;
@end
@implementation QXRechargeView
@@ -74,16 +76,54 @@
make.bottom.mas_equalTo(-kSafeAreaBottom);
}];
self.agreementBtn = [[UIButton alloc] init];
[self.agreementBtn setTitleColor:RGB16(0x333333) forState:(UIControlStateNormal)];
self.agreementBtn.titleLabel.font = [UIFont systemFontOfSize:12];
NSString *s = @"我已阅读并同意《充值协议》";
NSMutableAttributedString *attr = [[NSMutableAttributedString alloc] initWithString:s];
[attr yy_setColor:QXConfig.themeColor range:[s rangeOfString:@"《充值协议》"]];
[self.agreementBtn addTarget:self action:@selector(agreementPreview) forControlEvents:(UIControlEventTouchUpInside)];
[self.agreementBtn setAttributedTitle:attr forState:(UIControlStateNormal)];
[self.bgView addSubview:self.agreementBtn];
[self.agreementBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.centerX.equalTo(self.bgView).offset(15);
make.bottom.equalTo(self.rechargeBtn.mas_top).offset(-10);
make.height.mas_equalTo(20);
}];
self.selectedBtn = [[UIButton alloc] init];
[self.selectedBtn setImage:[UIImage imageNamed:@"login_agreement_nor"] forState:(UIControlStateNormal)];
[self.selectedBtn setImage:[UIImage imageNamed:@"login_agreement_sel"] forState:(UIControlStateSelected)];
self.selectedBtn.selected = YES;
[self.selectedBtn addTarget:self action:@selector(agreeAction) forControlEvents:(UIControlEventTouchUpInside)];
[self.bgView addSubview:self.selectedBtn];
[self.selectedBtn mas_makeConstraints:^(MASConstraintMaker *make) {
make.height.width.mas_equalTo(30);
make.right.equalTo(self.agreementBtn.mas_left).offset(-5);
make.centerY.equalTo(self.agreementBtn);
}];
[self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(0);
make.left.mas_equalTo(0);
make.top.equalTo(self.bgView);
make.bottom.equalTo(self.rechargeBtn.mas_top).offset(-10);
make.bottom.equalTo(self.selectedBtn.mas_top).offset(-10);
}];
[self getRechargeList];
}
-(void)agreeAction{
self.selectedBtn.selected = !self.selectedBtn.selected;
}
-(void)agreementPreview{
QXBaseWebViewController*vc = [[QXBaseWebViewController alloc] init];
vc.urlStr = [NSString stringWithFormat:@"%@api/Page/page_show?id=37",QXGlobal.shareGlobal.currentServer];
[KEYWINDOW.rootViewController presentViewController:vc animated:YES completion:nil];
}
-(void)getRechargeList{
if (QXGlobal.shareGlobal.isAppStore) {
@@ -312,6 +352,10 @@
-(void)rechargeAction:(UIButton*)sender{
if (self.selectedBtn.selected == NO) {
showToast(@"我已阅读并同意充值协议");
return;
}
if (self.selectedModel == nil) {
showToast(@"请选择充值金额");
return;

View File

@@ -125,7 +125,7 @@
-(void)setModel:(QXRoomDetailModel *)model{
_model = model;
self.allWaterLabel.text = [NSString stringWithFormat:@"%.2f",model.total_amount];;
self.allPriceLabel.text = [NSString stringWithFormat:@"%.2f",model.total_earning];
self.allPriceLabel.text = [NSString stringWithFormat:@"%.4f",model.total_earning];
}
-(UIImageView *)bgImageView{

View File

@@ -57,6 +57,7 @@
#import "QXHomePageNetwork.h"
#import "QXRoomNavigationController.h"
#import "QXInvitePopView.h"
#import "QGVAPLogger.h"
#if DEBUG
#import <LLDebugTool.h>
#endif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1010 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 354 KiB

After

Width:  |  Height:  |  Size: 511 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_cabin_heart@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_cabin_heart@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_set_room_type_bar@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_set_room_type_bar@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View File

@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_cabin_room_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_ask_ta@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_ask_ta@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_cabin_gift_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_cabin_gift_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_close_privite@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_close_privite@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_custom_gift@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_custom_gift@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_open_privite@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_open_privite@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_sea_king@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_sea_king@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_seduction_all@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_seduction_all@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_seduction_ta@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_seduction_ta@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_set_custom_gift@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_set_custom_gift@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_set_seat_time@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_set_seat_time@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_time_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_time_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "bar_room_title_cabin_room@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "bar_room_title_cabin_room@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_bar_ask_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_bar_ask_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 541 KiB

View File

@@ -0,0 +1,22 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "room_bar_cabin_cover@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "room_bar_cabin_cover@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Some files were not shown because too many files have changed in this diff Show More