From 5c057821a7fdc8d9e1110c8b0b8e8bd3ae34277b Mon Sep 17 00:00:00 2001 From: liyuhua <15626451870@163.com> Date: Tue, 2 Jan 2024 16:34:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A3=B0=E7=BD=91=E8=B7=A8=E6=88=BF=E8=AF=AD?= =?UTF-8?q?=E9=9F=B3=EF=BC=8C=E5=9C=A8=E7=BA=BF=E7=94=A8=E6=88=B7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E6=9B=B4=E6=94=B9=EF=BC=8C=E7=A7=81=E8=81=8A=E9=99=90?= =?UTF-8?q?=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi/CustomUI/UIImage/UIImage+Utils.h | 1 + YuMi/Modules/YMMessage/Api/Api+Message.h | 3 +- YuMi/Modules/YMMessage/Api/Api+Message.m | 5 +- .../YMMessage/Presenter/MessagePresenter.h | 1 + .../View/Session/SessionViewController.m | 14 +- .../XPMineUserInfoEditViewController.m | 32 +- .../MineInfo/XPMineUserInfoDateView.h | 3 +- .../MineInfo/XPMineUserInfoDateView.m | 340 +++++++++++++++--- .../MineInfo/XPMineUserInfoHeaderView.m | 23 +- .../YMMine/View/SubViews/XPMineHeadView.m | 43 ++- .../YMMonents/Model/MonentsInfoModel.h | 2 + .../View/SubViews/XPMonentsUserInfoView.m | 23 +- YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m | 31 ++ YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m | 8 + .../YMRoom/Presenter/XPRoomPresenter.m | 1 + .../MenuContainerView/XPRoomSendTextView.m | 1 + .../Model/XPMessageRemoteExtModel.h | 14 +- .../Tool/XPRoomMessageParser.m | 40 ++- .../XPRoomQuickMessageContainView.m | 1 + .../YMRoom/View/Setting/Api/Api+RoomSetting.h | 5 +- .../YMRoom/View/Setting/Api/Api+RoomSetting.m | 7 +- .../Presenter/XPRoomSettingPresenter.h | 3 + .../Presenter/XPRoomSettingPresenter.m | 13 +- .../Setting/Protocol/XPRoomSettingProtocol.h | 4 +- .../View/Cell/XPRoomOnlineTableViewCell.h | 3 +- .../View/Cell/XPRoomOnlineTableViewCell.m | 87 ++++- .../Setting/View/XPRoomOnLineViewController.h | 4 +- .../Setting/View/XPRoomOnLineViewController.m | 189 ++-------- .../UserCard/View/XPUserCardViewController.m | 24 +- YuMi/Structure/MVP/Model/UserInfoModel.h | 2 + YuMi/Structure/PrefixHeader.pch | 2 +- YuMi/Tools/Date/NSDate+DateUtils.h | 2 +- YuMi/Tools/NSString/NSString+Utils.h | 2 + YuMi/Tools/NSString/NSString+Utils.m | 25 ++ YuMi/zh-Hans.lproj/Localizable.strings | 6 +- YuMi/zh-Hant.lproj/Localizable.strings | 5 +- 36 files changed, 664 insertions(+), 305 deletions(-) diff --git a/YuMi/CustomUI/UIImage/UIImage+Utils.h b/YuMi/CustomUI/UIImage/UIImage+Utils.h index 8f34d092..811de70e 100644 --- a/YuMi/CustomUI/UIImage/UIImage+Utils.h +++ b/YuMi/CustomUI/UIImage/UIImage+Utils.h @@ -52,4 +52,5 @@ typedef NS_ENUM(NSUInteger, GradientType) { -(UIImage *)compressWithMaxLength:(NSUInteger)maxLength; - (UIImage *)roundedImageWithCornerRadius:(CGFloat)cornerRadius size:(CGSize)size; + @end diff --git a/YuMi/Modules/YMMessage/Api/Api+Message.h b/YuMi/Modules/YMMessage/Api/Api+Message.h index b41d5cda..c3e2030c 100644 --- a/YuMi/Modules/YMMessage/Api/Api+Message.h +++ b/YuMi/Modules/YMMessage/Api/Api+Message.h @@ -12,7 +12,8 @@ NS_ASSUME_NONNULL_BEGIN @interface Api (Message) + (void)getChatLimit:(HttpRequestHelperCompletion)complection receiverUid:(NSString *)receiverUid ; - +///获取私聊限制接口 ++(void)getPrivateChatCheck:(HttpRequestHelperCompletion)complection content:(NSString *)content toUid:(NSString *)toUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/Api/Api+Message.m b/YuMi/Modules/YMMessage/Api/Api+Message.m index 34070cb1..07df3a24 100644 --- a/YuMi/Modules/YMMessage/Api/Api+Message.m +++ b/YuMi/Modules/YMMessage/Api/Api+Message.m @@ -13,5 +13,8 @@ NSString * fang = [NSString stringFromBase64String:@"cHJpdmF0ZUNoYXQvbGltaXQ="];///privateChat/limit [self makeRequest:fang method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, receiverUid,nil]; } - +///获取私聊限制接口 ++(void)getPrivateChatCheck:(HttpRequestHelperCompletion)complection content:(NSString *)content toUid:(NSString *)toUid{ + [self makeRequest:@"privateChat/check" method:HttpRequestHelperMethodGET completion:complection, __FUNCTION__, content,toUid,nil]; +} @end diff --git a/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h index 9b477381..c09b700e 100644 --- a/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h +++ b/YuMi/Modules/YMMessage/Presenter/MessagePresenter.h @@ -24,6 +24,7 @@ NS_ASSUME_NONNULL_BEGIN // 获取用户信息 - (void)getUserInfoWithUid:(NSString *)uid; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMMessage/View/Session/SessionViewController.m b/YuMi/Modules/YMMessage/View/Session/SessionViewController.m index 745ddcbb..c26bce69 100644 --- a/YuMi/Modules/YMMessage/View/Session/SessionViewController.m +++ b/YuMi/Modules/YMMessage/View/Session/SessionViewController.m @@ -77,7 +77,7 @@ ///P #import "MessagePresenter.h" #import "MessageProtocol.h" - +#import "Api+Message.h" @interface SessionViewController () @@ -754,8 +754,16 @@ } - (void)sendTextMessage:(NSString *)text { - NIMMessage *message = [NIMMessageMaker msgWithText:text]; - [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; + [Api getPrivateChatCheck:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) { + if(code == 200){ + NIMMessage *message = [NIMMessageMaker msgWithText:text]; + [[[NIMSDK sharedSDK] chatManager] sendMessage:message toSession:self.session error:nil]; + return; + } + [self showErrorToast:msg]; + } content:text toUid:self.session.sessionId]; + + } - (void)audioRecordCompletion:(NSString *)recordPath { diff --git a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m index a7c3d62d..51a28235 100644 --- a/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m +++ b/YuMi/Modules/YMMine/View/MineInfo/XPMineUserInfoEditViewController.m @@ -38,8 +38,7 @@ UIKIT_EXTERN NSString * kUpdateSoundInfo; @property (nonatomic,strong) UITableView *tableView; ///数据源 @property (nonatomic,strong) NSArray *datasouce; -/// 日期选择器 -@property (nonatomic,strong) XPMineUserInfoDateView *dateView; + ///用户信息 @property (nonatomic,strong) UserInfoModel *userInfo; ///地区列表 @@ -145,15 +144,24 @@ UIKIT_EXTERN NSString * kUpdateSoundInfo; [TTPopup alertWithConfig:config confirmHandler:^{ NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication sharedApplication] canOpenURL:url]) { - [[UIApplication sharedApplication] openURL:url]; + [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:^(BOOL success) { + + }]; } } cancelHandler:^{ }]; } - (void)showDatePickerView { - self.dateView.time = self.userInfo.birth/1000; - [TTPopup popupView:self.dateView style:TTPopupStyleActionSheet]; + XPMineUserInfoDateView *dateView = [[XPMineUserInfoDateView alloc] initWithFrame:CGRectMake(0, KScreenHeight, KScreenWidth,KScreenHeight)]; + dateView.delegate = self; + dateView.time = self.userInfo.birth/1000; + [kWindow addSubview:dateView]; + [UIView animateWithDuration:0.5 animations:^{ + dateView.frame = CGRectMake(0, 0, KScreenWidth, KScreenHeight); + }completion:^(BOOL finished) { + dateView.backgroundColor = [UIColor colorWithWhite:0 alpha:0.5]; + }]; } #pragma mark - XPMineUserInfoTagVCDelegate - (void)xPMineUserInfoTagVC:(XPMineUserInfoTagVC *)vc didClickComplete:(NSArray *)meLabels{ @@ -305,15 +313,13 @@ UIKIT_EXTERN NSString * kUpdateSoundInfo; #pragma mark - XPMineUserInfoDateViewDelegate - (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr{ - [TTPopup dismiss]; + if (dateStr.length > 0) { [self.presenter complectionInfoWithAvatar:nil nick:nil birth:dateStr userDesc:nil]; } } -- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender { - [TTPopup dismiss]; -} + #pragma mark - XPMineUserInfoNickViewControllerDelegate - (void)xPMineUserInfoNickViewController:(XPMineUserInfoNickViewController *)viewController updateNick:(NSString *)nick { @@ -413,12 +419,6 @@ UIKIT_EXTERN NSString * kUpdateSoundInfo; return _tableView; } -- (XPMineUserInfoDateView *)dateView { - if (!_dateView) { - _dateView = [[XPMineUserInfoDateView alloc] initWithFrame:CGRectMake(0, 0, KScreenWidth, 216+kSafeAreaBottomHeight+54)]; - _dateView.delegate = self; - } - return _dateView; -} + @end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h index 7a3eb339..231bec29 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.h @@ -10,8 +10,7 @@ NS_ASSUME_NONNULL_BEGIN @class XPMineUserInfoDateView; @protocol XPMineUserInfoDateViewDelegate -///取消 -- (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickCancleButton:(UIButton *)sender; + ///确定 - (void)xPMineUserInfoDateView:(XPMineUserInfoDateView *)view didClickSureButton:(NSString *)dateStr; @end diff --git a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m index 15c9931b..e6731b53 100644 --- a/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m +++ b/YuMi/Modules/YMMine/View/SubViews/MineInfo/XPMineUserInfoDateView.m @@ -11,15 +11,24 @@ ///Tool #import "DJDKMIMOMColor.h" -@interface XPMineUserInfoDateView () +@interface XPMineUserInfoDateView () +@property (nonatomic,strong)NSMutableArray * selDateArray; + +@property (nonatomic,strong)NSDateComponents * components;//时间结构体、可计算时间间隔、获取年月日时分、 +@property(nonatomic,strong) UIView *bgView; /// @property (nonatomic,strong) UIButton *cancleButton; /// @property (nonatomic,strong) UIButton *sureButton; /// -@property (nonatomic, strong) UIDatePicker *datePicker; +@property (nonatomic, strong) UIPickerView *pickerView; ///样式 @property (nonatomic, strong) NSDateFormatter *dateFormatter; +///年龄 +@property(nonatomic,strong) UILabel *ageView; +///星座 +@property(nonatomic,strong) UILabel *starView; +@property(nonatomic,strong) NSMutableArray *dataSourceArray; @end @implementation XPMineUserInfoDateView @@ -35,60 +44,260 @@ #pragma mark - Private Method - (void)initSubViews { - self.backgroundColor = [UIColor whiteColor]; - [self addSubview:self.cancleButton]; - [self addSubview:self.sureButton]; - [self addSubview:self.datePicker]; + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.cancleButton]; + [self addSubview:self.bgView]; + [self.bgView addSubview:self.ageView]; + [self.bgView addSubview:self.starView]; + [self.bgView addSubview:self.sureButton]; + [self.bgView addSubview:self.pickerView]; } - (void)initSubViewConstraints { - [self.datePicker mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.mas_equalTo(self); - make.bottom.mas_equalTo(self); - make.top.mas_equalTo(self.cancleButton.mas_bottom); - }]; + [self.cancleButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.mas_equalTo(self); - make.height.mas_equalTo(30); - make.width.mas_equalTo(50); + make.edges.equalTo(self); }]; + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.leading.bottom.trailing.equalTo(self).inset(kGetScaleWidth(0)); + make.height.mas_equalTo(kGetScaleWidth(383)); + }]; + [self.ageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.mas_equalTo(kGetScaleWidth(16)); + make.width.mas_equalTo(kGetScaleWidth(98)); + make.height.mas_equalTo(kGetScaleWidth(36)); + make.leading.mas_equalTo(kGetScaleWidth(80)); + }]; + [self.starView mas_makeConstraints:^(MASConstraintMaker *make) { + make.trailing.mas_equalTo(-kGetScaleWidth(80)); + make.top.mas_equalTo(kGetScaleWidth(16)); + make.width.mas_equalTo(kGetScaleWidth(98)); + make.height.mas_equalTo(kGetScaleWidth(36)); + }]; [self.sureButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.right.mas_equalTo(self); - make.width.height.centerY.mas_equalTo(self.cancleButton); + make.bottom.mas_equalTo(-kGetScaleWidth(42)); + make.centerX.equalTo(self.bgView); + make.width.mas_equalTo(kGetScaleWidth(303)); + make.height.mas_equalTo(kGetScaleWidth(48)); }]; + [self.pickerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.mas_equalTo(self); + make.bottom.equalTo(self.sureButton.mas_top); + make.top.equalTo(self.starView.mas_bottom).mas_offset(kGetScaleWidth(10)); + + }]; +} +#pragma mark- UIPickerViewDelegate,UIPickerViewDataSource +-(NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{ + + return 3; } +-(NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{ + + return [_dataSourceArray[component] count]; +} + +-(CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component{ + + return KScreenWidth/3; +} +-(CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component{ + return kGetScaleWidth(40); +} + +-(UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view{ + [self changeSpearatorLineColor]; + UIView *bgView = (UIView *)view; + UILabel *lab = [view viewWithTag:100]; + if (!bgView) { + bgView = [UIView new]; + bgView.backgroundColor = [UIColor clearColor]; + } + if(!lab){ + lab = [UILabel labelInitWithText:@"" font:kFontRegular(20) textColor:UIColorFromRGB(0x1E1E1F)]; + [bgView addSubview:lab]; + CGFloat x ; + if(component == 0){ + x = kGetScaleWidth(20) ; + }else if(component == 1){ + x = kGetScaleWidth(10) ; + }else{ + x = 0 ; + } + [lab mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(bgView); + make.leading.mas_equalTo(kGetScaleWidth(x)); + make.width.mas_equalTo(kGetScaleWidth(98)); + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + lab.layer.cornerRadius = kGetScaleWidth(8); + lab.layer.masksToBounds = YES; + lab.textAlignment = NSTextAlignmentCenter; + lab.tag = 100; + }else{ + CGFloat x ; + if(component == 0){ + x = kGetScaleWidth(20) ; + }else if(component == 1){ + x = kGetScaleWidth(10) ; + }else{ + x = 0 ; + } + [lab mas_remakeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(bgView); + make.leading.mas_equalTo(kGetScaleWidth(x)); + make.width.mas_equalTo(kGetScaleWidth(98)); + make.height.mas_equalTo(kGetScaleWidth(40)); + }]; + } + + NSArray *yearArr = @[YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView3") ,YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView4"),YMLocalizedString(@"XPIncomeRecordGoldDetailsPickViewView5")]; + if ([self.selDateArray[component]isEqualToString:self.dataSourceArray[component][row]] ) { + lab.backgroundColor = UIColorFromRGB(0xF7F7F7); + lab.font = kFontRegular(20); + lab.text = [NSString stringWithFormat:@"%@%@",self.selDateArray[component],yearArr[component]]; + lab.textColor = UIColorFromRGB(0x1E1E1F); + }else{ + lab.backgroundColor = [UIColor clearColor]; + lab.font = kFontRegular(18); + lab.text = [NSString stringWithFormat:@"%@%@",self.dataSourceArray[component][row],yearArr[component]]; + lab.textColor = UIColorRGBAlpha(0x1E1E1F, 0.6); + } + return bgView; +} +#pragma mark - 改变分割线的颜色 +- (void)changeSpearatorLineColor { + for(UIView *speartorView in _pickerView.subviews) { + if (speartorView.frame.size.height < 80) {//找出当前的 View + speartorView.backgroundColor = [UIColor clearColor]; + }else{ + speartorView.backgroundColor = [UIColor clearColor]; + } + } +} +-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{ + [self.selDateArray replaceObjectAtIndex:component withObject:self.dataSourceArray[component][row]]; + [pickerView reloadAllComponents]; + NSString *time = [NSString stringWithFormat:@"%@-%@-%@",self.selDateArray[0],self.selDateArray[1],self.selDateArray[2]]; + NSDate *date = [NSDate at_dateFromString:time]; + NSTimeInterval interval = [date timeIntervalSince1970] * 1000; + self.ageView.text = [NSString stringWithFormat:@"%ld%@",[PLTimeUtil ageWithDateFromBirth:interval],YMLocalizedString(@"XPMineUserInfoDateView3")]; + self.starView.text = [NSString stringWithFormat:@"%@%@",[NSString getCalculateConstellationTextWithMonth:interval],YMLocalizedString(@"XPMineUserInfoDateView4")] ; +} +//数据源 +-(NSMutableArray *)dataSourceArray{ + if(!_dataSourceArray){ + NSMutableArray * yearArr = [@[]mutableCopy]; + for (int i = 1900; i < 2050; i++) { + [yearArr addObject:@(i).stringValue]; + } + NSArray * monthArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12"]; + NSArray * dayArr = [self dayArrayMonth:self.components.month year:self.components.year]; + + NSArray * array = @[yearArr,monthArr,dayArr]; + _dataSourceArray = [array mutableCopy]; + } + + return _dataSourceArray; +} + +//根据月份返回日期 +-(NSArray *)dayArrayMonth:(NSInteger)month year:(NSInteger)year{ + NSArray * dayArr = [[NSArray alloc]init]; + + switch (month) { + case 1: case 3: case 5: case 7: case 8: case 10: case 12: + dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30",@"31"]; + + break; + case 4: case 6: case 9: case 11: + dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29",@"30"]; + break; + case 2: + if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {///是润年 + dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28",@"29"]; + }else{ + dayArr = @[@"01",@"02",@"03",@"04",@"05",@"06",@"07",@"08",@"09",@"10",@"11",@"12",@"13",@"14",@"15",@"16",@"17",@"18",@"19",@"20",@"21",@"22",@"23",@"24",@"25",@"26",@"27",@"28"]; + + } + break; + + default: + break; + } + return dayArr; + +} #pragma mark - Event - (void)onClickCancelButton:(UIButton *)sender { - if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickCancleButton:)]) { - [self.delegate xPMineUserInfoDateView:self didClickCancleButton:sender]; - } + self.backgroundColor = [UIColor clearColor]; + [UIView animateWithDuration:0.5 animations:^{ + self.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); + }completion:^(BOOL finished) { + [self removeFromSuperview]; + }]; + } - (void)onClickSureButton:(UIButton *)sender { - NSDate * date = self.datePicker.date; - if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickSureButton:)]) { - NSTimeZone *timeZone= [NSTimeZone systemTimeZone]; - NSInteger seconds= [timeZone secondsFromGMTForDate:date]; - NSDate *newDate= [date dateByAddingTimeInterval:seconds]; - NSString *dateStr = [self.dateFormatter stringFromDate:newDate]; - [self.delegate xPMineUserInfoDateView:self didClickSureButton:dateStr]; - } + if (self.delegate && [self.delegate respondsToSelector:@selector(xPMineUserInfoDateView:didClickSureButton:)]) { + NSString *time = [NSString stringWithFormat:@"%@-%@-%@",self.selDateArray[0],self.selDateArray[1],self.selDateArray[2]]; + [self.delegate xPMineUserInfoDateView:self didClickSureButton:time]; + } + self.backgroundColor = [UIColor clearColor]; + [UIView animateWithDuration:0.5 animations:^{ + self.frame = CGRectMake(0, KScreenHeight, KScreenWidth, KScreenHeight); + }completion:^(BOOL finished) { + [self removeFromSuperview]; + }]; + +} +//分解传来需要显示的时间 +-(NSArray *)receiveTime:(NSString *)timeStr{ + + NSArray * timeArray = [timeStr componentsSeparatedByString:@"-"]; + NSMutableArray * timeArr = [[NSMutableArray alloc]init]; + for (int i = 0; i0 && userInfo.nameplatePic.length>0) { - self.nameplateImageView.imageUrl = userInfo.nameplatePic; - self.nameplateLabel.text = userInfo.nameplateWord; - self.namePlateView.hidden = NO; - } else { - self.namePlateView.hidden = YES; + if(userInfo.isCustomWord == YES){ + if (userInfo.nameplateWord.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + }else{ + if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } } + self.rechargeImageView.hidden = !_userInfo.isRechargeUser; [self.userPhtotArray removeAllObjects]; // 轮播图 diff --git a/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m index 5c807257..cfbe3705 100644 --- a/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m +++ b/YuMi/Modules/YMMine/View/SubViews/XPMineHeadView.m @@ -258,6 +258,29 @@ ///铭牌 +- (NSMutableAttributedString *)createNameplateAttibuteWithImage:(NSString *)imageName{ + NetImageConfig *config = [[NetImageConfig alloc]init]; + ///先这样吧 + config.autoLoad = YES; + NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageName config:config]; + UIImage* image = imageView.image; + if (image) { + CGFloat scale = image.size.width / (image.size.height > 0 ? image.size.height : 1); + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } else { + NSURL *imgUrl = [NSURL URLWithString:imageName]; + UIImage *myImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:imgUrl]]; + CGFloat scale = myImage.size.width / (myImage.size.height > 0 ? myImage.size.height : 1); + if (scale == 0) { + imageView.bounds = CGRectMake(0, 0, 60, 20); + }else { + imageView.bounds = CGRectMake(0, 0, 20 * scale, 20); + } + } + imageView.contentMode = UIViewContentModeScaleAspectFit; + NSMutableAttributedString *string = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:imageView.bounds.size alignToFont:[UIFont boldSystemFontOfSize:12] alignment:YYTextVerticalAlignmentCenter]; + return string; +} - (NSMutableAttributedString *)createNameplateAttibute:(NSString *)tagName image:(NSString *)imageName textFont:(UIFont *)textFont { NetImageConfig *config = [[NetImageConfig alloc]init]; ///先这样吧 @@ -325,12 +348,20 @@ return; } - - //主播认证 - if (userInfo.nameplateWord.length > 0 && userInfo.nameplatePic.length>0) { - [self createNameplateAttibute:userInfo.nameplateWord image:userInfo.nameplatePic textFont:[UIFont systemFontOfSize:9]]; - [attributedString appendAttributedString:[self createSapceAttribute:2]]; - } + if(userInfo.isCertified == YES){ + //主播认证 + if (userInfo.nameplatePic.length > 0) { + [self createNameplateAttibuteWithImage:userInfo.nameplatePic]; + [attributedString appendAttributedString:[self createSapceAttribute:2]]; + } + }else{ + //主播认证 + if (userInfo.nameplateWord.length > 0 && userInfo.nameplatePic.length>0) { + [self createNameplateAttibute:userInfo.nameplateWord image:userInfo.nameplatePic textFont:[UIFont systemFontOfSize:9]]; + [attributedString appendAttributedString:[self createSapceAttribute:2]]; + } + } + // userRank 用户级别 if (userInfo.userLevelVo.experUrl) { diff --git a/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h index a2f35f2e..da9c38ae 100644 --- a/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h +++ b/YuMi/Modules/YMMonents/Model/MonentsInfoModel.h @@ -67,6 +67,8 @@ typedef NS_ENUM(NSInteger, MonentsContentType) { @property (nonatomic, copy) NSString *nameplateWord; ///铭牌图片 @property (nonatomic, copy) NSString *nameplatePic; +///是否自定义铭牌, +@property(nonatomic,assign) BOOL isCustomWord; ///话题id @property (nonatomic, assign) long worldId; ///话题名字 diff --git a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m index aa94d0e1..86ba689f 100644 --- a/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m +++ b/YuMi/Modules/YMMonents/View/SubViews/XPMonentsUserInfoView.m @@ -255,14 +255,23 @@ } self.charmImageView.hidden = _monentsInfo.charmLevelPic.length <= 0; - - if (_monentsInfo.nameplateWord.length>0 && _monentsInfo.nameplatePic.length>0) { - self.nameplateImageView.imageUrl = _monentsInfo.nameplatePic; - self.nameplateLabel.text = _monentsInfo.nameplateWord; - self.namePlateView.hidden = NO; - } else { - self.namePlateView.hidden = YES; + if(_monentsInfo.isCustomWord == YES){ + if (_monentsInfo.nameplateWord.length>0) { + self.nameplateImageView.imageUrl = _monentsInfo.nameplatePic; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + }else{ + if (_monentsInfo.nameplateWord.length>0 && _monentsInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = _monentsInfo.nameplatePic; + self.nameplateLabel.text = _monentsInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } } + NSString * headwearUrl= _monentsInfo.headwearEffect.length > 0 ? _monentsInfo.headwearEffect : _monentsInfo.headwearPic; diff --git a/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m index dc7e48cc..c3167f44 100644 --- a/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m +++ b/YuMi/Modules/YMRTC/RtcImpl/AgoraRtcImpl.m @@ -73,6 +73,20 @@ } }]; } +///发起跨房通话 +- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid { + AgoraChannelMediaRelayConfiguration *config = [[AgoraChannelMediaRelayConfiguration alloc]init]; + config.sourceInfo = [[AgoraChannelMediaRelayInfo alloc]initWithToken:nil]; + AgoraChannelMediaRelayInfo *destinationInfo = [[AgoraChannelMediaRelayInfo alloc]initWithToken:nil]; + [config setDestinationInfo:destinationInfo forChannelName:uid]; + [self.engine startOrUpdateChannelMediaRelay:config]; +} + +///退出跨房通话 +- (void)disconnectOtherRoom { + [self.engine stopChannelMediaRelay]; +} + - (void)destory { [AgoraRtcEngineKit destroy]; @@ -131,6 +145,23 @@ } #pragma mark - AgoraRtcEngineDelegate +///监听跨房语音 +- (void)rtcEngine:(AgoraRtcEngineKit * _Nonnull)engine +channelMediaRelayStateDidChange:(AgoraChannelMediaRelayState)state + error:(AgoraChannelMediaRelayError)error NS_SWIFT_NAME(rtcEngine(_:channelMediaRelayStateDidChange:error:)){ + switch (state) { + case AgoraChannelMediaRelayStateRunning: + + break; + case AgoraChannelMediaRelayStateFailure: + + break; + case AgoraChannelMediaRelayStateIdle: + break; + default: + break; + } +} - (void)rtcEngine:(AgoraRtcEngineKit *)engine reportAudioVolumeIndicationOfSpeakers:(NSArray *)speakers totalVolume:(NSInteger)totalVolume { NSMutableArray *uids = [NSMutableArray array]; for (AgoraRtcAudioVolumeInfo *userInfo in speakers) { diff --git a/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m index 0aeb905b..de59effc 100644 --- a/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m +++ b/YuMi/Modules/YMRTC/RtcImpl/BaseRtcImpl.m @@ -39,6 +39,14 @@ - (void)destory { +} +///发起跨房PK +- (void)connectOtherRoom:(NSString *)roomUid userId:(NSString *)uid{ + } +///退出跨房通话 +- (void)disconnectOtherRoom{ + +} @end diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m index c44e4b52..003c96cc 100644 --- a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m @@ -82,6 +82,7 @@ extModel.carName = userInfo.carName; extModel.inRoomNameplatePic = userInfo.nameplatePic; extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.isCustomWord = userInfo.isCustomWord; extModel.charmUrl = userInfo.userLevelVo.charmUrl; extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; extModel.experUrl = userInfo.userLevelVo.experUrl; diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m index 4793ff93..1cf0b323 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomSendTextView.m @@ -68,6 +68,7 @@ extModel.carName = userInfo.carName; extModel.inRoomNameplatePic = userInfo.nameplatePic; extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.isCustomWord = userInfo.isCustomWord; extModel.charmUrl = userInfo.userLevelVo.charmUrl; extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; extModel.experUrl = userInfo.userLevelVo.experUrl; diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h index cbd03714..0b84ce33 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Model/XPMessageRemoteExtModel.h @@ -8,10 +8,13 @@ #import "NSObject+MJExtension.h" #import "UserLevelVo.h" #import "YUMINNNN.h" +#import "UserVipInfoVo.h" NS_ASSUME_NONNULL_BEGIN @interface XPMessageRemoteExtModel : PIBaseModel - +@property (nonatomic , strong) UserLevelVo * userLevelVo; +///贵族信息 +@property (nonatomic, strong) UserVipInfoVo *userVipInfoVO; ///魅力等级 @property (nonatomic,copy) NSString *charmUrl; @property (nonatomic,assign) NSInteger erbanNo; @@ -55,6 +58,15 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic,assign) BOOL fromSayHelloChannel; /// 0 普通 1超管 @property (nonatomic,assign) NSInteger platformRole; +@property(nonatomic,copy) NSString *avatar; +@property(nonatomic,copy) NSString *nick; +@property(nonatomic,assign) BOOL inMic; +@property(nonatomic,copy) NSString *memberType; +///铭牌, +@property(nonatomic,copy) NSString *nameplatePic; +@property(nonatomic,copy) NSString *nameplateWord; +///是否自定义铭牌, +@property(nonatomic,assign) BOOL isCustomWord; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m index c4c0f0a9..a438505c 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/Tool/XPRoomMessageParser.m @@ -210,14 +210,22 @@ [attribute appendAttributedString:[self createUrlImageAttribute:model.experUrl]]; [attribute appendAttributedString:[self createSapceAttribute:2]]; } - - if (model.inRoomNameplatePic.length > 0 && model.inRoomNameplateWord.length > 0) { //铭牌有图片加文字 - [attribute appendAttributedString:[self createNameplateAttibute:model.inRoomNameplateWord image:model.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; - [attribute appendAttributedString:[self createSapceAttribute:2]]; - } else if (model.inRoomNameplatePic.length > 0) {//铭牌只有图片 - [attribute appendAttributedString:[self createUrlImageAttribute:model.inRoomNameplatePic]]; - [attribute appendAttributedString:[self createSapceAttribute:2]]; - } + if(model.isCustomWord == YES){ + if (model.inRoomNameplatePic.length > 0){ + [attribute appendAttributedString:[self createUrlImageAttribute:model.inRoomNameplatePic]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + + }else{ + if (model.inRoomNameplatePic.length > 0 && model.inRoomNameplateWord.length > 0) { //铭牌有图片加文字 + [attribute appendAttributedString:[self createNameplateAttibute:model.inRoomNameplateWord image:model.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } else if (model.inRoomNameplatePic.length > 0) {//铭牌只有图片 + [attribute appendAttributedString:[self createUrlImageAttribute:model.inRoomNameplatePic]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + } + } [attribute appendAttributedString:[self createTextAttribute:nick color:[DJDKMIMOMColor messageDefaultTextColor] font:kRoomMessageDefalutFont]]; @@ -303,10 +311,18 @@ [attribute appendAttributedString:[self createUrlImageAttribute:extModel.experUrl]]; [attribute appendAttributedString:[self createSapceAttribute:2]]; } - if (extModel.inRoomNameplatePic.length > 0 && extModel.inRoomNameplateWord.length > 0) { - [attribute appendAttributedString:[self createNameplateAttibute:extModel.inRoomNameplateWord image:extModel.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; - [attribute appendAttributedString:[self createSapceAttribute:2]]; - } + if(extModel.isCustomWord == YES){ + if (extModel.inRoomNameplatePic.length > 0) { + [attribute appendAttributedString:[self createUrlImageAttribute:extModel.inRoomNameplatePic]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + }else{ + if (extModel.inRoomNameplatePic.length > 0 && extModel.inRoomNameplateWord.length > 0) { + [attribute appendAttributedString:[self createNameplateAttibute:extModel.inRoomNameplateWord image:extModel.inRoomNameplatePic textFont:[UIFont systemFontOfSize:9]]]; + [attribute appendAttributedString:[self createSapceAttribute:2]]; + } + } + [attribute appendAttributedString:[self createNickAtrribute:nick uid:message.from.integerValue]]; if (extModel.carName.length > 0) { [attribute appendAttributedString:[self createTextAttribute:YMLocalizedString(@"XPRoomMessageParser1") color:[DJDKMIMOMColor messageTextColor] font:kRoomMessageDefalutFont]]; diff --git a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m index 05ca1fda..f3a10335 100644 --- a/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m +++ b/YuMi/Modules/YMRoom/View/QuickMessageView/XPRoomQuickMessageContainView.m @@ -115,6 +115,7 @@ extModel.carName = userInfo.carName; extModel.inRoomNameplatePic = userInfo.nameplatePic; extModel.inRoomNameplateWord = userInfo.nameplateWord; + extModel.isCustomWord = userInfo.isCustomWord; extModel.charmUrl = userInfo.userLevelVo.charmUrl; extModel.experLevelSeq = userInfo.userLevelVo.experLevelSeq; extModel.experUrl = userInfo.userLevelVo.experUrl; diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h index baa4d21f..7424df28 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.h @@ -68,7 +68,10 @@ NS_ASSUME_NONNULL_BEGIN /// @param completion 完成 /// @param uid uid + (void)getRoomClassifyList:(HttpRequestHelperCompletion)completion uid:(NSString *)uid; - +/// 获取房间在线用户 +/// @param completion 完成 +/// @param roomUid roomUid ++(void)requestRoomOnlineUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m index d1f80df2..b4584496 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m +++ b/YuMi/Modules/YMRoom/View/Setting/Api/Api+RoomSetting.m @@ -97,5 +97,10 @@ NSString * fang = [NSString stringFromBase64String:@"c2luZ2xlL2Jyb2FkY2FzdC9zb3J0"];///single/broadcast/sort [self makeRequest:fang method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, uid, nil]; } - +/// 获取房间在线用户 +/// @param completion 完成 +/// @param roomUid roomUid ++(void)requestRoomOnlineUserList:(HttpRequestHelperCompletion)completion roomUid:(NSString *)roomUid{ + [self makeRequest:@"room/v2/online" method:HttpRequestHelperMethodGET completion:completion, __FUNCTION__, roomUid, nil]; +} @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h index a4342afe..6ba45dad 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.h @@ -58,6 +58,9 @@ NS_ASSUME_NONNULL_BEGIN type:(RoomType)type itemType:(RoomSettingItemType)itemType mgId:(NSString *)mgId; +/// 获取房间在线用户 +/// @param roomUid roomUid +-(void)getRoomOnlineUserListWithRoomUid:(NSString *)roomUid; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m index 31b40829..fd04c7c3 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m +++ b/YuMi/Modules/YMRoom/View/Setting/Presenter/XPRoomSettingPresenter.m @@ -17,7 +17,7 @@ #import "RoomInfoModel.h" ///P #import "XPRoomSettingProtocol.h" - +#import "XPMessageRemoteExtModel.h" @implementation XPRoomSettingPresenter - (void)getRoomSettingList:(RoomInfoModel *)roomInfo isSuperAdmin:(BOOL)isSuperAdmin { @@ -349,5 +349,14 @@ }]; } - +/// 获取房间在线用户 +/// @param roomUid roomUid +-(void)getRoomOnlineUserListWithRoomUid:(NSString *)roomUid{ + [Api requestRoomOnlineUserList:[self createHttpCompletion:^(BaseModel * _Nonnull data) { + NSArray *list = [XPMessageRemoteExtModel modelsWithArray:data.data]; + [[self getView]getRoomOnlineUserListSuccess:list]; + } fail:^(NSInteger code, NSString * _Nullable msg) { + + }] roomUid:roomUid]; +} @end diff --git a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h index 2a5edd8a..59812c28 100644 --- a/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h +++ b/YuMi/Modules/YMRoom/View/Setting/Protocol/XPRoomSettingProtocol.h @@ -11,7 +11,7 @@ NS_ASSUME_NONNULL_BEGIN @class RoomInfoModel; @protocol XPRoomSettingProtocol - +@optional ///房间设置的列表数据 - (void)getRoomSettingListSuccess:(NSArray *)list; ///获取房间信息成功 @@ -30,6 +30,8 @@ NS_ASSUME_NONNULL_BEGIN - (void)updateRoomInfoSuccess:(RoomInfoModel *)roomInfo itemType:(RoomSettingItemType)itemType; ///更新房间信息失败 - (void)updateRoomInfoFail:(NSString *)message; +//获取房间在线用户成功 +-(void)getRoomOnlineUserListSuccess:(NSArray *)list; @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h index f492db47..44cc25d1 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.h @@ -6,7 +6,7 @@ // #import - +#import "XPMessageRemoteExtModel.h" NS_ASSUME_NONNULL_BEGIN @class NIMChatroomMember; typedef NS_ENUM(NSInteger, RoomOnLineType) { @@ -21,6 +21,7 @@ typedef NS_ENUM(NSInteger, RoomOnLineType) { @property (nonatomic,assign) RoomOnLineType onlineType; ///云信用户实体 @property (strong, nonatomic) NIMChatroomMember *member; +@property(nonatomic,strong) XPMessageRemoteExtModel *userInfo; ///是否在麦序上 @property (nonatomic,assign) BOOL isOnMicro; @end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m index 337250c7..b25ac808 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/Cell/XPRoomOnlineTableViewCell.m @@ -138,7 +138,7 @@ [self.onMicroStatusLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.contentView); make.right.mas_equalTo(-15); - make.width.mas_equalTo(32); + make.width.mas_equalTo(40); make.height.mas_equalTo(14); }]; [self.sexImageView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -149,6 +149,68 @@ #pragma mark - Getters And Setters +- (void)setUserInfo:(XPMessageRemoteExtModel *)userInfo{ + _userInfo = userInfo; + + self.sexImageView.backgroundColor = userInfo.gender == GenderType_Male ? UIColorFromRGB(0x6BB3FF) :UIColorFromRGB(0xFF80CC); + self.sexImageView.titleEdgeInsets = userInfo.gender != GenderType_Male ? UIEdgeInsetsMake(0, 2, 0, 0):UIEdgeInsetsMake(0, -1, 0, 0); + self.sexImageView.selected = userInfo.gender != GenderType_Male; + + if ([userInfo.memberType isEqualToString:@"CREATOR"] || [userInfo.memberType isEqualToString:@"MANAGER"]) { + self.tagStackView.hidden = NO; + + if (userInfo.userLevelVo.experUrl) { + self.experImageView.imageUrl = userInfo.userLevelVo.experUrl; + } + self.experImageView.hidden = userInfo.userLevelVo.experUrl.length <= 0; + + if (userInfo.userLevelVo.charmUrl) { + self.charmImageView.imageUrl = userInfo.userLevelVo.charmUrl; + } + self.charmImageView.hidden = userInfo.userLevelVo.charmUrl.length <= 0; + if(userInfo.isCustomWord == YES){ + if (userInfo.nameplatePic.length > 0){ + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + } + }else{ + if (userInfo.nameplatePic.length>0 && userInfo.nameplateWord.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + } + + + if ([userInfo.memberType isEqualToString:@"CREATOR"]) { + self.roleButton.hidden = NO; + [self.roleButton setBackgroundColor:[DJDKMIMOMColor appEmphasizeColor2]]; + [self.roleButton setTitle:YMLocalizedString(@"XPRoomOnlineTableViewCell0") forState:UIControlStateNormal]; + } else if([userInfo.memberType isEqualToString:@"MANAGER"]) { + self.roleButton.hidden = NO; + [self.roleButton setBackgroundColor:[DJDKMIMOMColor appEmphasizeColor]]; + [self.roleButton setTitle:YMLocalizedString(@"XPRoomOnlineTableViewCell1") forState:UIControlStateNormal]; + } else { + self.roleButton.hidden = YES; + } + } else { + self.tagStackView.hidden = YES; + } + self.isOnMicro = userInfo.inMic; + if (userInfo.userVipInfoVO.enterHide == YES) { + self.nickLabel.text = YMLocalizedString(@"XPRoomOnlineTableViewCell2"); + self.avatarImageView.image = [UIImage imageNamed:@"room_secretMan"]; + self.sexImageView.hidden = YES; + self.tagStackView.hidden = YES; + self.isOnMicro = NO; + } else { + self.avatarImageView.imageUrl = userInfo.avatar; + self.nickLabel.text = userInfo.nick; + self.sexImageView.hidden = NO; + } + +} - (void)setMember:(NIMChatroomMember *)member { _member = member; if (_member) { @@ -179,14 +241,23 @@ self.charmImageView.imageUrl = userInfo.charmUrl; } self.charmImageView.hidden = userInfo.charmUrl.length <= 0; + if(userInfo.isCustomWord == YES){ + if (userInfo.inRoomNameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.inRoomNameplatePic; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + }else{ + if (userInfo.inRoomNameplatePic.length>0 && userInfo.inRoomNameplateWord.length>0) { + self.nameplateImageView.imageUrl = userInfo.inRoomNameplatePic; + self.nameplateLabel.text = userInfo.inRoomNameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + } - if (userInfo.inRoomNameplatePic.length>0 && userInfo.inRoomNameplateWord.length>0) { - self.nameplateImageView.imageUrl = userInfo.inRoomNameplatePic; - self.nameplateLabel.text = userInfo.inRoomNameplateWord; - self.namePlateView.hidden = NO; - } else { - self.namePlateView.hidden = YES; - } if (_member.type == NIMTeamMemberTypeOwner) { self.roleButton.hidden = NO; diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h index c8bb4fd3..96e04d92 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.h @@ -5,11 +5,11 @@ // Created by YUMI on 2021/12/29. // -#import "BaseViewController.h" +#import "MvpViewController.h" #import "RoomHostDelegate.h" NS_ASSUME_NONNULL_BEGIN -@interface XPRoomOnLineViewController : BaseViewController +@interface XPRoomOnLineViewController : MvpViewController - (instancetype)initWithDelegate:(id)delegate; @end diff --git a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m index 1bb7ec30..e4f2ff75 100644 --- a/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m +++ b/YuMi/Modules/YMRoom/View/Setting/View/XPRoomOnLineViewController.m @@ -27,8 +27,9 @@ #import "XPRoomRoleEmptyTableViewCell.h" ///VC #import "XPUserCardViewController.h" - -@interface XPRoomOnLineViewController () +#import "XPRoomSettingPresenter.h" +#import "XPRoomSettingProtocol.h" +@interface XPRoomOnLineViewController () ///导航栏 @property (nonatomic,strong) UIView * navView; ///返回按钮 @@ -37,33 +38,28 @@ @property (nonatomic,strong) UILabel *titleLabel; ///背景图 @property (nonatomic,strong) UIImageView *backImageView; -///总的数据 -@property (nonatomic,strong) NSMutableArray *originArray; ///需要显示的数据 @property (nonatomic,strong) NSMutableArray *datasource; ///列表 @property (nonatomic,strong) UITableView *tableView; -///最后一个 -@property (nonatomic,strong) NIMChatroomMember *lastMember; -///临时成员最后一个 -@property (nonatomic,strong) NIMChatroomMember *tmpLastMember; ///host @property (nonatomic,weak) idhostDelegate; ///房间的id @property (nonatomic,copy) NSString *roomId; -///是否正在刷新 -@property (nonatomic, assign) BOOL refreshing; + @end @implementation XPRoomOnLineViewController - (void)dealloc { [[NIMSDK sharedSDK].chatManager removeDelegate:self]; } - +- (XPRoomSettingPresenter *)createPresenter { + return [[XPRoomSettingPresenter alloc] init]; +} - (instancetype)initWithDelegate:(id)delegate { if (self = [super init]) { self.hostDelegate = delegate; - self.roomId= [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.roomId]; + self.roomId= [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; } return self; } @@ -81,9 +77,9 @@ [super viewDidLoad]; //监听云信消息 [[NIMSDK sharedSDK].chatManager addDelegate:self]; - [self initHeaderAndFooterRrfresh]; [self initSubViews]; [self initSubViewConstraints]; + [self refreshData]; } #pragma mark - Private Method @@ -123,164 +119,19 @@ }]; } -- (void)initHeaderAndFooterRrfresh { - MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(headerRefresh)]; - header.stateLabel.font = [UIFont systemFontOfSize:10.0]; - header.lastUpdatedTimeLabel.font = [UIFont systemFontOfSize:10.0]; - header.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; - header.lastUpdatedTimeLabel.textColor = [DJDKMIMOMColor secondTextColor]; - self.tableView.mj_header = header; - - MJRefreshBackNormalFooter *footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(footerRefresh)]; - footer.stateLabel.textColor = [DJDKMIMOMColor secondTextColor]; - footer.stateLabel.font = [UIFont systemFontOfSize:10.0]; - self.tableView.mj_footer = footer; - - [self headerRefresh]; +- (void)refreshData { + [self.presenter getRoomOnlineUserListWithRoomUid:self.roomId]; } -- (void)headerRefresh { - if (self.refreshing) { - return; - } - self.refreshing = YES; - self.lastMember= nil; - self.tmpLastMember = nil; - [self.datasource removeAllObjects]; - [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - [self.datasource addObjectsFromArray:tmpList]; - [self.tableView reloadData]; - self.refreshing = NO; - }]; - - }]; - + +//获取房间在线用户成功 +-(void)getRoomOnlineUserListSuccess:(NSArray *)list{ + self.datasource = [NSMutableArray arrayWithArray:list]; + [self.tableView reloadData]; } -- (void)footerRefresh { - if (self.refreshing) { - return; - } - self.refreshing = YES; - [[self loadChatRoomRegularMemberList] subscribeNext:^(id _Nullable x) { - NSArray * regularList = x; - [regularList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - NIMChatroomMember * member = obj; - if (member.type == NIMTeamMemberTypeOwner) { - [self.datasource insertObject:member atIndex:0]; - }else { - [self.datasource addObject:member]; - } - }]; - - [[self loadChatRoomTmpMemberList] subscribeNext:^(id _Nullable x) { - NSArray * tmpList = x; - [tmpList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - [self.datasource addObject:obj]; - }]; - [self.tableView reloadData]; - self.refreshing = NO; - }]; - - }]; -} -- (RACSignal *)loadChatRoomRegularMemberList { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeRegular; - request.lastMember = self.lastMember; - request.limit = 200; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - if (error == nil) { - if (members.count > 0) { - self.lastMember = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - if (obj.isOnline && !obj.isInBlackList) { - [array addObject:obj]; - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; - -} - -- (RACSignal *)loadChatRoomTmpMemberList { - return [RACSignal createSignal:^RACDisposable * _Nullable(id _Nonnull subscriber) { - NIMChatroomMemberRequest *request = [[NIMChatroomMemberRequest alloc] init]; - request.roomId = self.roomId; - request.type = NIMChatroomFetchMemberTypeTemp; - request.lastMember = self.tmpLastMember; - request.limit = 20; - [[NIMSDK sharedSDK].chatroomManager fetchChatroomMembers:request completion:^(NSError * _Nullable error, NSArray * _Nullable members) { - [self.tableView.mj_header endRefreshing]; - [self.tableView.mj_footer endRefreshing]; - if (error == nil) { - if (members.count > 0) { - self.tmpLastMember = members.lastObject; - } - NSMutableArray * array = [NSMutableArray array]; - [members enumerateObjectsUsingBlock:^(NIMChatroomMember * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { - BOOL isSuperAmind = NO; - if (obj.roomExt.length > 0) { - NSData *jsonData = [obj.roomExt dataUsingEncoding:NSUTF8StringEncoding]; - NSError *error; - NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error]; - XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithDictionary:[dic objectForKey:obj.userId]]; - isSuperAmind = model.platformRole == 1; - } - - if (obj.isOnline && !obj.isInBlackList && !isSuperAmind) { - [array addObject:obj]; - } - }]; - [subscriber sendNext:array]; - [subscriber sendCompleted]; - } else { - [subscriber sendNext:nil]; - [subscriber sendCompleted]; - } - }]; - return nil; - }]; -} - -///判断是否在麦上 -- (BOOL)memberIsOnMicro:(NSString *)userId{ - NSArray *chatRoomMicSequences = [self.hostDelegate.getMicroQueue allValues] ; - if (chatRoomMicSequences != nil && chatRoomMicSequences.count > 0) { - for (int i = 0; i < chatRoomMicSequences.count; i ++) { - MicroQueueModel *chatRoomMicSequence = chatRoomMicSequences[i]; - if (chatRoomMicSequence.userInfo.uid == userId.integerValue) { - return YES; - } - } - } - return NO; -} #pragma mark - NIMChatManagerDelegate - (void)onRecvMessages:(NSArray *)messages { @@ -306,7 +157,7 @@ case NIMChatroomEventTypeRemoveBlack: case NIMChatroomEventTypeQueueChange: case NIMChatroomEventTypeKicked: - [self headerRefresh]; + [self refreshData]; break; default: break; @@ -328,9 +179,8 @@ if (cell == nil) { cell = [[XPRoomOnlineTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([XPRoomOnlineTableViewCell class])]; } - NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; - cell.isOnMicro = [self memberIsOnMicro:member.userId]; - cell.member = member; + XPMessageRemoteExtModel * member = [self.datasource safeObjectAtIndex1:indexPath.row]; + cell.userInfo = member; return cell; } @@ -352,6 +202,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; + [self.navigationController popViewControllerAnimated:YES]; if (self.datasource.count > 0) { NIMChatroomMember * member = [self.datasource safeObjectAtIndex1:indexPath.row]; NSDictionary * extDic = [member.roomExt toJSONObject]; diff --git a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m index a6ddf9e9..ebcbf909 100644 --- a/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m +++ b/YuMi/Modules/YMRoom/View/UserCard/View/XPUserCardViewController.m @@ -574,13 +574,23 @@ } self.charmImageView.hidden = userInfo.userLevelVo.charmUrl.length <= 0; self.copysIdImageView.hidden = NO; - if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { - self.nameplateImageView.imageUrl = userInfo.nameplatePic; - self.nameplateLabel.text = userInfo.nameplateWord; - self.namePlateView.hidden = NO; - } else { - self.namePlateView.hidden = YES; - } + if(userInfo.isCustomWord == YES){ + if ( userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + }else{ + if (userInfo.nameplateWord.length>0 && userInfo.nameplatePic.length>0) { + self.nameplateImageView.imageUrl = userInfo.nameplatePic; + self.nameplateLabel.text = userInfo.nameplateWord; + self.namePlateView.hidden = NO; + } else { + self.namePlateView.hidden = YES; + } + } + self.idLabel.text = [NSString stringWithFormat:@"ID:%ld", userInfo.erbanNo]; NSString * headwearUrl= userInfo.headwearEffect.length > 0 ? userInfo.headwearEffect : userInfo.headwearPic; diff --git a/YuMi/Structure/MVP/Model/UserInfoModel.h b/YuMi/Structure/MVP/Model/UserInfoModel.h index 56346af6..e4c4de87 100644 --- a/YuMi/Structure/MVP/Model/UserInfoModel.h +++ b/YuMi/Structure/MVP/Model/UserInfoModel.h @@ -70,6 +70,8 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, copy) NSString *nameplatePic; ///铭牌名称 @property (nonatomic, copy) NSString *nameplateWord; +///是否自定义铭牌, +@property(nonatomic,assign) BOOL isCustomWord; ///如果在房间有直播中字段 @property(nonatomic, copy) NSString * roomUid; ///如果在房间,房间的标题 diff --git a/YuMi/Structure/PrefixHeader.pch b/YuMi/Structure/PrefixHeader.pch index 4dcbef77..47258b55 100644 --- a/YuMi/Structure/PrefixHeader.pch +++ b/YuMi/Structure/PrefixHeader.pch @@ -56,6 +56,6 @@ isEnterprise = [bundleID isEqualToString:@"com.hflighting.yumi"];\ #import "HttpRequestHelper.h" #import "BSNetListenModel.h" #import "PIBaseModel.h" -#import +#import "PLTimeUtil.h" #endif /* PrefixHeader_pch */ diff --git a/YuMi/Tools/Date/NSDate+DateUtils.h b/YuMi/Tools/Date/NSDate+DateUtils.h index 0ef8b18f..e459d332 100644 --- a/YuMi/Tools/Date/NSDate+DateUtils.h +++ b/YuMi/Tools/Date/NSDate+DateUtils.h @@ -19,7 +19,7 @@ NS_ASSUME_NONNULL_BEGIN - (NSString *)stringForFormat:(NSString *)format; + (NSString *)stringFromDate:(NSDate *)date; - ++ (NSDate *)at_dateFromString:(NSString *)dateString; +(NSString *)getNowTimeTimestamp; + (NSString *)getCurrentTimeWithFormat:(NSString *)format; +(NSString *)timestampSwitchTime:(NSInteger)timestamp andFormatter:(NSString *)format; diff --git a/YuMi/Tools/NSString/NSString+Utils.h b/YuMi/Tools/NSString/NSString+Utils.h index 303d478b..8f2eb294 100644 --- a/YuMi/Tools/NSString/NSString+Utils.h +++ b/YuMi/Tools/NSString/NSString+Utils.h @@ -29,6 +29,8 @@ NS_ASSUME_NONNULL_BEGIN + (NSString *)stringWithTimeStamp:(NSString *)timeStamp; ///通过生日获取星座 + (NSString *)calculateConstellationWithMonth:(long)time; +///通过生日获取星座 ++ (NSString *)getCalculateConstellationTextWithMonth:(long)time; ///通过生日获取星座图片 + (NSString *)getCalculateConstellationImageWithMonth:(long)time; ///得到年龄 diff --git a/YuMi/Tools/NSString/NSString+Utils.m b/YuMi/Tools/NSString/NSString+Utils.m index 46f5a815..291a7961 100644 --- a/YuMi/Tools/NSString/NSString+Utils.m +++ b/YuMi/Tools/NSString/NSString+Utils.m @@ -177,6 +177,31 @@ NSDictionary *starDic = @{YMLocalizedString(@"XPMineHeadView9"):@"pi_capricorn",YMLocalizedString(@"XPMineHeadView10"):@"pi_water_bottle",YMLocalizedString(@"XPMineHeadView11"):@"pi_pisces",YMLocalizedString(@"XPMineHeadView12"):@"pi_aries",YMLocalizedString(@"XPMineHeadView13"):@"pi_taurus",YMLocalizedString(@"XPMineHeadView14"):@"pi_gemini",YMLocalizedString(@"XPMineHeadView15"):@"pi_cancer",YMLocalizedString(@"XPMineHeadView16"):@"pi_lion",YMLocalizedString(@"XPMineHeadView17"):@"pi_virgin",YMLocalizedString(@"XPMineHeadView18"):@"pi_libra",YMLocalizedString(@"XPMineHeadView19"):@"pi_scorpion",YMLocalizedString(@"XPMineHeadView20"):@"pi_shooter"}; return starDic[result]; } +///通过生日获取星座 ++ (NSString *)getCalculateConstellationTextWithMonth:(long)time{ + NSString *astroString = YMLocalizedString(@"XPMineHeadView0"); + NSString *astroFormat = @"102123444543"; + NSString *result; + + NSInteger month = [self getMonth:time]; + NSInteger day = [self getDay:time]; + + if (month<1 || month>12 || day<1 || day>31){ + return @""; + } + + if(month==2 && day>29) + { + return @""; + }else if(month==4 || month==6 || month==9 || month==11) { + if (day>30) { + return @""; + } + } + + result=[NSString stringWithFormat:@"%@",[astroString substringWithRange:NSMakeRange(month*2-(day < [[astroFormat substringWithRange:NSMakeRange((month-1), 1)] intValue] - (-19))*2,2)]]; + return result; +} +(NSInteger) getMonth:(long )time { NSDate *date = [NSDate dateWithTimeIntervalSince1970:time/1000]; diff --git a/YuMi/zh-Hans.lproj/Localizable.strings b/YuMi/zh-Hans.lproj/Localizable.strings index a1b067c6..5ec38ba4 100644 --- a/YuMi/zh-Hans.lproj/Localizable.strings +++ b/YuMi/zh-Hans.lproj/Localizable.strings @@ -375,7 +375,9 @@ "XPMonentsLayoutConfig0" = "置顶 "; "XPMineUserInfoDateView0" = "取消"; "XPMineUserInfoDateView1" = "确定"; - +"XPMineUserInfoDateView2" = "完成"; +"XPMineUserInfoDateView3" = "岁"; +"XPMineUserInfoDateView4" = "座"; "XPMineRechageHeadView0" = "我的鑽石"; "XPMineRechargeNavView0" = "账户"; @@ -1762,7 +1764,7 @@ "XPRoomOnlineTableViewCell0" = "房主"; "XPRoomOnlineTableViewCell1" = "管理员"; "XPRoomOnlineTableViewCell2" = "神秘人"; -"XPRoomOnlineTableViewCell3" = "上麦"; +"XPRoomOnlineTableViewCell3" = "在麦上"; "XPRoomTopicViewController0" = "房间公告"; "XPRoomTopicViewController1" = "主题不能为空"; diff --git a/YuMi/zh-Hant.lproj/Localizable.strings b/YuMi/zh-Hant.lproj/Localizable.strings index 30901953..300d312c 100644 --- a/YuMi/zh-Hant.lproj/Localizable.strings +++ b/YuMi/zh-Hant.lproj/Localizable.strings @@ -376,6 +376,9 @@ "XPMonentsLayoutConfig0" = "置頂 "; "XPMineUserInfoDateView0" = "取消"; "XPMineUserInfoDateView1" = "確定"; +"XPMineUserInfoDateView2" = "完成"; +"XPMineUserInfoDateView3" = "歲"; +"XPMineUserInfoDateView4" = "座"; "XPMineRechageHeadView0" = "我的鑽石"; @@ -1760,7 +1763,7 @@ "XPRoomOnlineTableViewCell0" = "房主"; "XPRoomOnlineTableViewCell1" = "管理員"; "XPRoomOnlineTableViewCell2" = "神秘人"; -"XPRoomOnlineTableViewCell3" = "上麥"; +"XPRoomOnlineTableViewCell3" = "在麥上"; "XPRoomTopicViewController0" = "房間公告"; "XPRoomTopicViewController1" = "主題不能為空";