红包接口对接

This commit is contained in:
liyuhua
2023-10-26 15:20:20 +08:00
parent 6754f38c52
commit 6ed407b05a
10 changed files with 139 additions and 85 deletions

View File

@@ -15,7 +15,7 @@ NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMenuContainerView : UIView<RoomGuestDelegate>
@property (nonatomic,strong) XPFreeGiftModel *freeModel;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
-(void)showInputView:(NSString *)text;
- (void)menuResignFirstResponder;
@end

View File

@@ -79,7 +79,10 @@
- (void)menuResignFirstResponder {
[self.inputTextView.editTextFiled resignFirstResponder];
}
-(void)showInputView:(NSString *)text{
[self menuButtonAction:self.inputButton];
self.inputTextView.editTextFiled.text = text;
}
#pragma mark - Response
- (void)menuButtonAction:(UIButton *)sender {
XPRoomMenuItemType type = sender.tag;

View File

@@ -11,6 +11,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface XPRoomMessageContainerView : UIView<RoomGuestDelegate>
- (void)showUserCard:(NSInteger)uid;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
@end

View File

@@ -92,7 +92,9 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey";
}
return self;
}
- (void)showUserCard:(NSInteger)uid{
[self.messageParser showUserCard:uid];
}
#pragma mark - Response
- (void)messageTipsBtnAction:(UIButton *)sender {
self.isPending = NO;

View File

@@ -12,7 +12,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface RoomHeaderView : UIView<RoomGuestDelegate>
- (void)showSharePanel;
- (instancetype)initWithDelegate:(id<RoomHostDelegate>)delegate;
@end

View File

@@ -53,6 +53,22 @@ typedef enum : NSUInteger {
@property(nonatomic,assign) long beginTime;
///0未完成1完成
@property(nonatomic,assign) int finish;
///发送者头像
@property (nonatomic, copy) NSString *sendUserAvatar;
///发送者昵称
@property (nonatomic, copy) NSString *sendUserNick;
///房间UID
@property (nonatomic, copy) NSString *roomUid;
///红包类型
@property (nonatomic, assign) NSInteger redEnvelopeType;
///房间标题
@property (nonatomic, copy) NSString *roomTitle;
///红包祝福语
@property (nonatomic, copy) NSString *redEnvelopeMessage;
////红包数量
@property(nonatomic,copy) NSString *redEnvelopeNum;
@end
NS_ASSUME_NONNULL_END

View File

@@ -7,11 +7,7 @@
#import <UIKit/UIKit.h>
#import "XPRedPacketModel.h"
@protocol XPReceiveRedPacketViewDelegate <NSObject>
-(void)openRedPacketWithType:(RedPacketConditionsType)type uid:(NSString *_Nonnull)uid roomUid:(NSString *_Nonnull)roomUid;
@end
NS_ASSUME_NONNULL_BEGIN
@@ -20,13 +16,12 @@ NS_ASSUME_NONNULL_BEGIN
///是否在全服红包的房间内
@property (nonatomic, assign) BOOL inAllPacketRoom;
///红包信息
@property (nonatomic, strong) XPReceiveRedPacketModel *redPacketModel;
@property (nonatomic, strong) XPRedPacketModel *receiveModel;
@property (nonatomic, strong) UIView *alphaView;
@property(nonatomic,weak) id<XPReceiveRedPacketViewDelegate>delegate;
@end

View File

@@ -162,49 +162,53 @@
_inAllPacketRoom = inAllPacketRoom;
}
- (void)setRedPacketModel:(XPReceiveRedPacketModel *)redPacketModel {
_redPacketModel = redPacketModel;
self.sendAvatar.imageUrl = redPacketModel.sendUserAvatar;
self.sendWishLabel.text = redPacketModel.redEnvelopeMessage;
if (redPacketModel.redEnvelopeType == 1) {
self.sendNickLabel.text = redPacketModel.sendUserNick;
} else {
if (self.inAllPacketRoom) {
self.sendNickLabel.text = redPacketModel.sendUserNick;
} else {
NSString *nick = redPacketModel.sendUserNick;
NSString *roomTitle = redPacketModel.roomTitle;
if (redPacketModel.roomTitle.length > 6) {
roomTitle = [NSString stringWithFormat:@"%@...", [redPacketModel.roomTitle substringToIndex:6]];
}
self.sendNickLabel.text = nick;
// NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init];
// NSMutableAttributedString *roomAttr = [[NSMutableAttributedString alloc] initWithString:roomTitle attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}];
// NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPReceiveRedPacketView0") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
// NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}];
// [attribute appendAttributedString:roomAttr];
// [attribute appendAttributedString:redPacketStr];
// [attribute appendAttributedString:nickAttr];
// self.sendNickLabel.attributedText = attribute;
}
}
}
//- (void)setRedPacketModel:(XPReceiveRedPacketModel *)redPacketModel {
// _redPacketModel = redPacketModel;
// self.sendAvatar.imageUrl = redPacketModel.sendUserAvatar;
// self.sendWishLabel.text = redPacketModel.redEnvelopeMessage;
// if (redPacketModel.redEnvelopeType == 1) {
// self.sendNickLabel.text = redPacketModel.sendUserNick;
// } else {
// if (self.inAllPacketRoom) {
// self.sendNickLabel.text = redPacketModel.sendUserNick;
// } else {
// NSString *nick = redPacketModel.sendUserNick;
//
// NSString *roomTitle = redPacketModel.roomTitle;
// if (redPacketModel.roomTitle.length > 6) {
// roomTitle = [NSString stringWithFormat:@"%@...", [redPacketModel.roomTitle substringToIndex:6]];
// }
// self.sendNickLabel.text = nick;
//// NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] init];
//// NSMutableAttributedString *roomAttr = [[NSMutableAttributedString alloc] initWithString:roomTitle attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}];
//// NSMutableAttributedString *redPacketStr = [[NSMutableAttributedString alloc] initWithString:YMLocalizedString(@"XPReceiveRedPacketView0") attributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
//// NSMutableAttributedString *nickAttr = [[NSMutableAttributedString alloc] initWithString:nick attributes:@{NSForegroundColorAttributeName : UIColorFromRGB(0xFDCD00)}];
//// [attribute appendAttributedString:roomAttr];
//// [attribute appendAttributedString:redPacketStr];
//// [attribute appendAttributedString:nickAttr];
//// self.sendNickLabel.attributedText = attribute;
//
//
// }
// }
//}
- (void)setReceiveModel:(XPRedPacketModel *)receiveModel {
_receiveModel = receiveModel;
self.sendAvatar.imageUrl = receiveModel.userVO.avatar;
self.sendNickLabel.text = [NSString stringWithFormat:@"%@%@",receiveModel.userVO.nick,YMLocalizedString(@"XPReceiveRedPacketView8")] ;
self.sendAvatar.imageUrl = _receiveModel.sendUserAvatar.length > 0 ? receiveModel.sendUserAvatar : receiveModel.userVO.avatar;
NSString *nick = _receiveModel.sendUserNick.length > 0 ? _receiveModel.sendUserNick : receiveModel.userVO.nick;
if (nick.length > 6) {
nick = [NSString stringWithFormat:@"%@...", [nick substringToIndex:6]];
}
self.sendNickLabel.text = [NSString stringWithFormat:@"%@%@",nick,YMLocalizedString(@"XPReceiveRedPacketView8")] ;
self.robView.hidden = YES;
self.robIcon.hidden = YES;
self.countDownView.hidden = YES;
self.countDownTitleView.hidden = YES;
if(_receiveModel.kind == RedPacketConditionsType_NO){
self.sendWishLabel.text = YMLocalizedString(@"XPReceiveRedPacketView9");
self.sendWishLabel.text = _receiveModel.redEnvelopeMessage.length > 0 ? _receiveModel.redEnvelopeMessage :YMLocalizedString(@"XPReceiveRedPacketView9");
if(_receiveModel.validityType == 1){
NSInteger time = [self getTimeDifferenceWithTimestamp:_receiveModel.timestamp / 1000 beginTime:_receiveModel.beginTime / 1000];
if(time > 0){
@@ -325,9 +329,7 @@
}else if(self.receiveModel.kind == RedPacketConditionsType_Followd){
if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){
[self removeFromSuperview];
if(self.delegate && [self.delegate respondsToSelector:@selector(openRedPacketWithType:uid:roomUid:)]){
[self.delegate openRedPacketWithType:RedPacketConditionsType_Followd uid:self.receiveModel.userId roomUid:self.receiveModel.roomUId];
}
[[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Followd),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @""}];
return;
}else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){
[self removeFromSuperview];
@@ -340,9 +342,8 @@
}else if(self.receiveModel.kind == RedPacketConditionsType_Share){
if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){
[self removeFromSuperview];
if(self.delegate && [self.delegate respondsToSelector:@selector(openRedPacketWithType:uid:roomUid:)]){
[self.delegate openRedPacketWithType:RedPacketConditionsType_Share uid:self.receiveModel.userId roomUid:self.receiveModel.roomUId];
}
[[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Share),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @""}];
return;
}else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){
[self removeFromSuperview];
@@ -354,9 +355,7 @@
}else if(self.receiveModel.kind == RedPacketConditionsType_Share){
if(self.isCountDownEnd == NO && self.receiveModel.finish == 0){
[self removeFromSuperview];
if(self.delegate && [self.delegate respondsToSelector:@selector(openRedPacketWithType:uid:roomUid:)]){
[self.delegate openRedPacketWithType:RedPacketConditionsType_Scrolling uid:self.receiveModel.userId roomUid:self.receiveModel.roomUId];
}
[[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketNotification" object:nil userInfo:@{@"type":@(RedPacketConditionsType_Scrolling),@"uid":self.receiveModel.userId ?: @"",@"roomUid":self.receiveModel.roomUId ?: @"",@"scrolling":self.receiveModel.message ?: @""}];
return;
}else if(self.isCountDownEnd == YES && self.receiveModel.finish == 0){
[self removeFromSuperview];
@@ -366,24 +365,25 @@
return;
}
}
if (!self.redPacketModel) {
if (self.receiveModel.userVO != nil) {
[self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId];
} else {
//
if (self.redPacketModel.redEnvelopeType == 1) {
if (self.receiveModel.redEnvelopeType == 1) {
//1
[self openRoomRedPacket:sender redEnvelopeId:self.redPacketModel.redEnvelopeId];
[self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId];
} else {
//2
if (self.inAllPacketRoom) {//
[self openRoomRedPacket:sender redEnvelopeId:self.redPacketModel.redEnvelopeId];
[self openRoomRedPacket:sender redEnvelopeId:self.receiveModel.redEnvelopeId];
} else {//
if ([XPRoomMiniManager shareManager].getRoomInfo) {
RoomInfoModel *roomInfo = [XPRoomMiniManager shareManager].getRoomInfo;
if (roomInfo.uid == self.redPacketModel.roomUid.integerValue) {
if (roomInfo.uid == self.receiveModel.roomUid.integerValue) {
[XPRoomViewController openMiniRoom:[NSString stringWithFormat:@"%ld", roomInfo.uid] viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]];
} else {
[XPRoomViewController openRoom:self.redPacketModel.roomUid viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]];
[XPRoomViewController openRoom:self.receiveModel.roomUid viewController:[[XCCurrentVCStackManager shareManager] getCurrentVC]];
}
} else {
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
@@ -395,7 +395,7 @@
}
}];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[XPRoomViewController openRoom:self.redPacketModel.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC];
[XPRoomViewController openRoom:self.receiveModel.roomUid viewController:[XCCurrentVCStackManager shareManager].getCurrentVC];
});
}
[self removeFromSuperview];

View File

@@ -38,6 +38,7 @@
#import "XPRedPacketModel.h"
#import "FirstChargeRoomWindowModel.h"
#import "XPFreeGiftModel.h"
#import "XPUserCardInfoModel.h"
///View
#import "BaseNavigationController.h"
#import "XPRoomActivityContainerView.h"
@@ -73,6 +74,7 @@
#import "LittleGameStageView.h"
#import "LittleGameScrollStageView.h"
#import "XPRoomLittleGameContainerView.h"
#import "XPUserCardViewController.h"
UIKIT_EXTERN NSString * const kShieldingNotification;
@@ -271,6 +273,23 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(showRoomFirstChargeWindowFormNot:) name:kShowFirstRechargeView object:nil];
[XPSkillCardPlayerManager shareInstance].isInRoom = YES;
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(openRedPacketNotification:) name:@"kOpenRedPacketNotification" object:nil];
}
///
-(void)openRedPacketNotification:(NSNotification *)not{
NSDictionary *redPacketDic = not.userInfo;
NSInteger type = [redPacketDic[@"type"] integerValue];
NSInteger userId = [redPacketDic[@"uid"] integerValue];
// NSString *roomUid = redPacketDic[@"roomUId"];
if(type == 2){
[self.messageContainerView showUserCard:userId];
}else if (type == 3){
[self.roomHeaderView showSharePanel];
}else if (type == 4){
NSString *scrolling = redPacketDic[@"scrolling"];
[self.menuContainerView showInputView:scrolling];
}
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
@@ -326,6 +345,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
self.activityContainerView.openRedPacketHandle = ^(XPRedPacketModel * _Nullable redModel) {
@kStrongify(self);
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
view.receiveModel = redModel;
for (UIView *subView in self.view.subviews) {
if([subView isKindOfClass:[XPReceiveRedPacketView class]]) {
@@ -1207,16 +1227,19 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
return;
}
for (XPRedPacketModel *data in list) {
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
view.receiveModel = data;
for (UIView *subView in self.view.subviews) {
if([subView isKindOfClass:[XPReceiveRedPacketView class]]) {
view.alphaView.backgroundColor = [UIColor clearColor];
break;
}
}
[self.view addSubview:view];
[self.view bringSubviewToFront:view];
if((data.validityType == 0 && data.type == RedPacketType_RoomDiamond)|| data.type == RedPacketType_AllDiamond){
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
view.receiveModel = data;
for (UIView *subView in self.view.subviews) {
if([subView isKindOfClass:[XPReceiveRedPacketView class]]) {
view.alphaView.backgroundColor = [UIColor clearColor];
break;
}
}
[self.view addSubview:view];
[self.view bringSubviewToFront:view];
}
}
if(list.count > 0){
self.activityContainerView.redPacketModel = list.lastObject;
@@ -1477,8 +1500,10 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
} else if (attachment.first == CustomMessageType_RedPacket) {
if (attachment.second == Custom_Message_Sub_RoomDiamandRedPacket) {
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data];
view.redPacketModel = data;
XPRedPacketModel *data = [XPRedPacketModel modelWithJSON:attachment.data];
data.validityType = 0;
data.kind = 1;
view.receiveModel = data;
for (UIView *subView in self.view.subviews) {
if([subView isKindOfClass:[XPReceiveRedPacketView class]]) {
view.alphaView.backgroundColor = [UIColor clearColor];
@@ -1487,7 +1512,23 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
}
[self.view addSubview:view];
[self.view bringSubviewToFront:view];
}
}else if(attachment.second == Custom_Message_Sub_NewRoomDiamandRedPacket){
XPRedPacketModel *data = [XPRedPacketModel modelWithJSON:attachment.data];
if(data.validityType == 0){
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
view.receiveModel = data;
for (UIView *subView in self.view.subviews) {
if([subView isKindOfClass:[XPReceiveRedPacketView class]]) {
view.alphaView.backgroundColor = [UIColor clearColor];
break;
}
}
[self.view addSubview:view];
[self.view bringSubviewToFront:view];
}
self.activityContainerView.redPacketModel = data;
self.activityContainerView.pi_redNum = data.redEnvelopeNum;
}
}else if(attachment.first == CustomMessageType_Free_Gift_Star_Reset_Time){
if(attachment.second == Custom_Message_Sub_Free_Gift_Star_Reset_Time){
[self.presenter getFreeGiftData];

View File

@@ -45,7 +45,7 @@
#import "XPTabAnchorCardModel.h"
#import "FirstRechargeModel.h"
#import "MonentsUnReadModel.h"
#import "XPReceiveRedPacketModel.h"
#import "XPRedPacketModel.h"
#import "GiftReceiveInfoModel.h"
#import "XPVersionUpdateModel.h"
///VC
@@ -637,12 +637,10 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
}
///
-(void)receiveRedPacketDealWithData:(AttachmentModel *)attachment{
XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithDictionary:attachment.data];
if(attachment.second == Custom_Message_Sub_AllDiamandRedPacket ){
data.validityType = 0;
data.kind = 1;
}
if(attachment.second != Custom_Message_Sub_AllDiamandRedPacket)return;
XPRedPacketModel *data = [XPRedPacketModel modelWithDictionary:attachment.data];
data.validityType = 0;
data.kind = 1;
//
__block BOOL isInRoom;
[[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController.viewControllers enumerateObjectsUsingBlock:^(__kindof UIViewController * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
@@ -655,8 +653,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
} else {
view.inAllPacketRoom = NO;
}
XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data];
view.redPacketModel = data;
view.receiveModel = data;
[roomVC.view addSubview:view];
[roomVC.view bringSubviewToFront:view];
*stop = YES;
@@ -667,8 +664,7 @@ UIKIT_EXTERN NSString *kTabShowAnchorCardKey;
UIViewController *currentVc = [[XCCurrentVCStackManager shareManager] getCurrentVC];
XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
view.inAllPacketRoom = NO;
XPReceiveRedPacketModel *data = [XPReceiveRedPacketModel modelWithJSON:attachment.data];
view.redPacketModel = data;
view.receiveModel = data;
[currentVc.view addSubview:view];
[currentVc.view bringSubviewToFront:view];
}