From edff4262a63e83a393cb72087b7bb534fa76890a Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Tue, 31 Oct 2023 18:02:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dbug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi/Config/ClientRedPacketModel.h | 4 +++- .../Session/Content/MessageContentRedPacketView.m | 10 ++++++++-- .../XPRoomMessageContainerView.m | 14 +++++++++++++- .../Cell/PIInputEntireServerScrollingView.m | 2 +- .../SendRedPacket/Model/XPReceiveRedPacketModel.h | 2 ++ .../SendRedPacket/PIReceiveRedPacketSuccessView.h | 8 ++++++++ .../SendRedPacket/PIReceiveRedPacketSuccessView.m | 5 ++++- .../View/SendRedPacket/PIRoomEnterRedPacketView.m | 3 +++ .../SendRedPacket/PIRoomSendRedPacketItemVC.m | 7 ++++++- .../View/SendRedPacket/XPReceiveRedPacketView.m | 10 ++++++++-- YuMi/Modules/YMRoom/View/XPRoomViewController.m | 15 +++++++++------ YuMi/Modules/YMTabbar/View/TabbarViewController.m | 2 +- YuMi/zh-Hans.lproj/Localizable.strings | 2 +- YuMi/zh-Hant.lproj/Localizable.strings | 2 +- 14 files changed, 68 insertions(+), 18 deletions(-) diff --git a/YuMi/Config/ClientRedPacketModel.h b/YuMi/Config/ClientRedPacketModel.h index f14c3a10..54242c37 100644 --- a/YuMi/Config/ClientRedPacketModel.h +++ b/YuMi/Config/ClientRedPacketModel.h @@ -44,7 +44,9 @@ NS_ASSUME_NONNULL_BEGIN //@property (nonatomic, strong) NSArray<> *gold2GiftIds; @property (nonatomic, strong) NSArray *openRooms; - +@property(nonatomic,assign) NSInteger beginSecond; +///红包有效时间 +@property(nonatomic,assign) NSInteger endSecond; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m index 24e2081d..ab17c7a2 100644 --- a/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m +++ b/YuMi/Modules/YMMessage/View/Session/Content/MessageContentRedPacketView.m @@ -106,7 +106,8 @@ self.messageInfo = info; //超过半小时就是失效 NSTimeInterval now = [[NSDate date] timeIntervalSince1970]; - if (now - model.message.timestamp > 60*30) { + NSInteger time = [self getTimeDifferenceWithTimestamp:now beginTime:info.endTime / 1000]; + if (time <= 0) { self.titleLabel.text = YMLocalizedString(@"MessageContentRedPacketView0"); self.descLabel.text = YMLocalizedString(@"MessageContentRedPacketView1"); self.subLabel.hidden = YES; @@ -134,7 +135,12 @@ } } } - +-(NSInteger)getTimeDifferenceWithTimestamp:(long)timestamp beginTime:(long)beginTime { + NSString *time1 = [NSDate timestampSwitchTime:(NSInteger)timestamp formatter:@"YYYY-MM-dd hh:mm:ss"]; + NSString *time2 = [NSDate timestampSwitchTime:(NSInteger)beginTime formatter:@"YYYY-MM-dd hh:mm:ss"]; + NSInteger second = [NSDate pleaseInsertStarTimeo:time1 andInsertEndTime:time2]; + return second; +} - (void)event:(UITapGestureRecognizer *)gesture { UIViewController * controllerView = [XCCurrentVCStackManager shareManager].getCurrentVC; //退出原来的房间 如果有的话 TODO 总感觉这种处理不太优雅 进房入口多了 怎么办 进房需要整合 diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m index af3dfe11..9554b8a7 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -87,6 +87,7 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; - (instancetype)initWithDelegate:(id)delegate { self = [super init]; if (self) { + self.isLoadHistoryMessage = YES; self.hostDelegate = delegate; [self initSubViews]; [self initSubViewConstraints]; @@ -388,7 +389,11 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; return YES; }else if(attachment.first == CustomMessageType_Gift) { if(attachment.data[@"isRoomAlbum"] != nil){ - return NO ; + BOOL isRoomAlbum = [attachment.data[@"isRoomAlbum"] boolValue]; + if(isRoomAlbum == YES){ + return NO; + } + } } return [[[self supportMessageDic] objectForKey:@(attachment.first)] containsObject:@(attachment.second)]; @@ -652,7 +657,9 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content; RoomInfoModel * roomInfo = self.hostDelegate.getRoomInfo; if (content.eventType == NIMChatroomEventTypeEnter) { + if (roomInfo.isCloseScreen) { + self.isLoadHistoryMessage = NO; AttachmentModel *attachement = [[AttachmentModel alloc]init]; attachement.first = CustomMessageType_Update_RoomInfo; attachement.second = Custom_Message_Sub_Update_RoomInfo_MessageState; @@ -667,8 +674,10 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; NIMChatroomNotificationMember *member = content.targets[0]; if (member.userId.integerValue == [AccountInfoStorage instance].getUid.integerValue) { ///自己进房成功后拉取历史消息 + if(self.datasource.count > 0)return; [self handleFetchHistoryMessage:message]; } else { + self.isLoadHistoryMessage = NO; BOOL hideEnter = [self handleHideEnter:message]; if (!hideEnter) { ///插入进房消息及房间公告提示 @@ -707,6 +716,9 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; option.order = NIMMessageSearchOrderAsc; option.messageTypes = @[@(NIMMessageTypeText),@(NIMMessageTypeCustom)]; [[NIMSDK sharedSDK].chatroomManager fetchMessageHistory:roomId option:option result:^(NSError * _Nullable error, NSArray * _Nullable messages) { + if(error != nil){ + self.isLoadHistoryMessage = NO; + } if (messages.count) { //如果拉取的数量等于请求的数量,说明这个时间点以后的消息数量大于等于需要拉取的数量,直接拉取最新的50条 if (messages.count == [ClientConfig shareConfig].configInfo.roomMessageCount) { diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIInputEntireServerScrollingView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIInputEntireServerScrollingView.m index 5f948e72..b881ad8f 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIInputEntireServerScrollingView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Cell/PIInputEntireServerScrollingView.m @@ -44,7 +44,7 @@ - (void)textFieldDidChange:(UITextField *)textField { if(textField.text.length <= 0){ textField.text = @""; - self.pi_numView.text = [NSString stringWithFormat:@"0/20"]; + self.pi_numView.text = [NSString stringWithFormat:@"0/10"]; return; } if(textField.text.length > 10){ diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h index b45f83d7..2e891577 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/Model/XPReceiveRedPacketModel.h @@ -35,6 +35,8 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic,copy) NSString *redEnvelopeNum; // 1 无门槛红包 2 关注红包 3 分享红包 4 弹幕红包 @property(nonatomic, assign) int kind; +///红包有效时间 +@property(nonatomic,assign) NSInteger endTime; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.h b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.h index 4649d26a..9e9467f5 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.h +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.h @@ -7,9 +7,17 @@ #import #import "XPRedPacketResultModel.h" + +@protocol PIReceiveRedPacketSuccessViewDelegate + +-(void)closeedPacketSuccessView; + +@end + NS_ASSUME_NONNULL_BEGIN @interface PIReceiveRedPacketSuccessView : UIView +@property(nonatomic,weak) iddelegate; @property(nonatomic,strong) XPRedPacketResultModel *resultModel; @end diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m index 5f61aa38..6f5bc1b1 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIReceiveRedPacketSuccessView.m @@ -120,7 +120,10 @@ } #pragma mark - action - (void)onCloseButtonClick:(UIButton *)sender { - [self.superview removeFromSuperview]; + + if(self.delegate && [self.delegate respondsToSelector:@selector(closeedPacketSuccessView)]){ + [self.delegate closeedPacketSuccessView]; + } } -(void)setResultModel:(XPRedPacketResultModel *)resultModel{ diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomEnterRedPacketView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomEnterRedPacketView.m index d11078f0..710203b6 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomEnterRedPacketView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomEnterRedPacketView.m @@ -185,6 +185,9 @@ [XNDJTDDLoadingTool hideHUD]; if(code == 200){ XPRedPacketModel *redModel = [XPRedPacketModel modelWithJSON:data.data]; + if(redModel.kind == 0){ + redModel.kind = 1; + } redModel.timestamp = data.timestamp; redModel.sendUserNick = data.data[@"nick"]; redModel.sendUserAvatar = data.data[@"avatar"]; diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketItemVC.m b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketItemVC.m index 6fd9aff9..3c202bdf 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketItemVC.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketItemVC.m @@ -17,6 +17,7 @@ #import "RoomInfoModel.h" #import "XPIAPRechargeViewController.h" #import "XCCurrentVCStackManager.h" +#import "ClientConfig.h" @interface PIRoomSendRedPacketItemVC () ///host代理 @@ -383,7 +384,11 @@ } - (UILabel *)tipsView{ if(!_tipsView){ - _tipsView = [UILabel labelInitWithText:YMLocalizedString(@"PIRoomSendRedPacketItemVC6") font:kFontRegular(12) textColor:UIColorFromRGB(0x94959C)]; + + CGFloat time = [ClientConfig shareConfig].configInfo.redEnvelopeConfig.endSecond / 3600.0; + NSString *timeStr = [NSString stringWithFormat:@"%.1f",time]; + timeStr = [timeStr stringByReplacingOccurrencesOfString:@".0" withString:@""]; + _tipsView = [UILabel labelInitWithText:[NSString stringWithFormat:YMLocalizedString(@"PIRoomSendRedPacketItemVC6"),timeStr] font:kFontRegular(12) textColor:UIColorFromRGB(0x94959C)]; } return _tipsView; } diff --git a/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m index 704fafba..12679657 100644 --- a/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m +++ b/YuMi/Modules/YMRoom/View/SendRedPacket/XPReceiveRedPacketView.m @@ -27,7 +27,7 @@ #import "CountDownHelper.h" #import "PIReceiveRedPacketSuccessView.h" -@interface XPReceiveRedPacketView() +@interface XPReceiveRedPacketView() @property (nonatomic, strong) XPRedPacketResultModel *resultData; @@ -418,6 +418,7 @@ sender.enabled = YES; if (code != 200) { [XNDJTDDLoadingTool showErrorWithMessage:msg]; + [sender.layer removeAllAnimations]; return;; } XPRedPacketResultModel *model = [XPRedPacketResultModel modelWithJSON:data.data]; @@ -441,10 +442,14 @@ [[NSNotificationCenter defaultCenter]postNotificationName:@"kOpenRedPacketResult" object:resultData]; PIReceiveRedPacketSuccessView *successView = [[PIReceiveRedPacketSuccessView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; successView.resultModel = resultData; + successView.delegate = self; [self addSubview:successView]; } - +#pragma mark - PIReceiveRedPacketSuccessViewDelegate +- (void)closeedPacketSuccessView{ + [self onCloseButtonClick]; +} #pragma mark- CountDownHelperDelegate ///倒计时结束 @@ -470,6 +475,7 @@ int second = (seconds)%60; self.countDownView.text = [NSString stringWithFormat:@"%02d:%02d",minutes,second]; } + #pragma mark - action - (void)onCloseButtonClick{ [self removeFromSuperview]; diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index 1fd6a7dc..337b84ff 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -1632,6 +1632,15 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 self.activityContainerView.redPacketList = redPacketList; }else if(attachment.second == Custom_Message_Sub_NewRoomDiamandRedPacket){ XPRedPacketModel *curData = [XPRedPacketModel modelWithJSON:attachment.data]; + if(self.activityContainerView.redPacketList == nil){ + self.activityContainerView.redPacketList = [NSMutableArray array]; + } + NSMutableArray *redPacketList = [NSMutableArray arrayWithArray:self.activityContainerView.redPacketList]; + [redPacketList insertObject:curData atIndex:0]; + if(self.roomInfo.uid > 0 && curData.redEnvelopeNum.integerValue != redPacketList.count){ + [self.presenter getRedPacket:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]]; + return; + } curData.redEnvelopeId = attachment.data[@"redEnvelopeId"]; if(curData.validityType == 0){ XPReceiveRedPacketView *view = [[XPReceiveRedPacketView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)]; @@ -1647,12 +1656,6 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出 [self.view addSubview:view]; [self.view bringSubviewToFront:view]; } - - if(self.activityContainerView.redPacketList == nil){ - self.activityContainerView.redPacketList = [NSMutableArray array]; - } - NSMutableArray *redPacketList = [NSMutableArray arrayWithArray:self.activityContainerView.redPacketList]; - [redPacketList insertObject:curData atIndex:0]; self.activityContainerView.redPacketList = redPacketList; } diff --git a/YuMi/Modules/YMTabbar/View/TabbarViewController.m b/YuMi/Modules/YMTabbar/View/TabbarViewController.m index 82a11b6f..24be470c 100644 --- a/YuMi/Modules/YMTabbar/View/TabbarViewController.m +++ b/YuMi/Modules/YMTabbar/View/TabbarViewController.m @@ -83,7 +83,7 @@ #import "PIFullScreenBannerAnimation.h" #import #import "Api+Gift.h" -#import "PIReceiveRedPacketSuccessView.h" + diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index 2a12b477..37de2e2e 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -3159,7 +3159,7 @@ "PIRoomSendRedPacketItemVC3"="个"; "PIRoomSendRedPacketItemVC4"="立即生效"; "PIRoomSendRedPacketItemVC5"="限时生效"; -"PIRoomSendRedPacketItemVC6"="未抢完的红包将在12小时后返还你的钱包"; +"PIRoomSendRedPacketItemVC6"="未抢完的红包将在%@小时后返还你的钱包"; "PIRoomSendRedPacketItemVC7"="请输入弹幕内容"; ///PIInputScrollingView "PIInputScrollingView0"="输入指定弹幕内容(最多10个字符)"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index d9ee1e70..6901d509 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -3161,7 +3161,7 @@ "PIRoomSendRedPacketItemVC3"="個"; "PIRoomSendRedPacketItemVC4"="立即生效"; "PIRoomSendRedPacketItemVC5"="限時生效"; -"PIRoomSendRedPacketItemVC6"="未搶完的紅包將在12小時後返還你的錢包"; +"PIRoomSendRedPacketItemVC6"="未搶完的紅包將在%@小時後返還你的錢包"; "PIRoomSendRedPacketItemVC7"="請輸入彈幕內容"; ///PIInputScrollingView "PIInputScrollingView0"="輸入指定彈幕內容(最多10個字符)";