// // PIRoomSendRedPacketItemVC.m // YuMi // // Created by duoban on 2023/10/18. // #import "PIRoomSendRedPacketItemVC.h" #import "PIInputRedPacketView.h" #import "PIRedPacketChooseTypeView.h" #import "PIInputScrollingView.h" #import "PIInputEntireServerScrollingView.h" #import "XPRoomRedPacketPresenter.h" #import "UserInfoModel.h" #import "XPRoomRedPacketPwdView.h" #import "XPMinePayPwdViewController.h" #import "RoomInfoModel.h" #import "XPIAPRechargeViewController.h" #import "XCCurrentVCStackManager.h" #import "ClientConfig.h" #import "XPWebViewController.h" @interface PIRoomSendRedPacketItemVC () ///host代理 @property (nonatomic,weak) idhostDelegate; ///紅包金額 @property(nonatomic,strong) PIInputRedPacketView *pi_priceView; ///紅包數量 @property(nonatomic,strong) PIInputRedPacketView *pi_numView; ///搶紅包條件 @property(nonatomic,strong) PIRedPacketChooseTypeView *chooseTypeView; ///立即生效 @property(nonatomic,strong) UIButton *promptlyBtn; ////限時生效 @property(nonatomic,strong) UIButton *limitBtn; ///發紅包 @property(nonatomic,strong) UIButton *sendBtn; ///提示 @property(nonatomic,strong) UILabel *tipsView; ///输入弹幕 @property(nonatomic,strong) PIInputScrollingView *scrollingView; ///全服输入 @property(nonatomic,strong) PIInputEntireServerScrollingView *serverInputView; ///红包类型 @property(nonatomic,assign) PIRoomSendRedPacketItemVCType type; ///发送红包的类型 @property(nonatomic,assign) PIRedPacketChooseTypeViewType sendRedType; @property(nonatomic,strong) UserInfoModel *userInfo; @property(nonatomic,assign) BOOL pi_isHaveUser; @end @implementation PIRoomSendRedPacketItemVC - (XPRoomRedPacketPresenter *)createPresenter { return [[XPRoomRedPacketPresenter alloc] init]; } - (BOOL)isHiddenNavBar { return YES; } - (instancetype)initWithDelegate:(id)delegate type:(PIRoomSendRedPacketItemVCType)type{ self = [super init]; if(self){ self.hostDelegate = delegate; self.type = type; } return self; } - (void)viewDidLoad { [super viewDidLoad]; [self installUI]; [self installConstraints]; [self.presenter getUserModel]; } -(void)installUI{ self.sendRedType = Red_Packet_Choose_type_Normal; self.view.backgroundColor = [UIColor whiteColor]; [self.view addSubview:self.pi_priceView]; [self.view addSubview:self.pi_numView]; if(self.type == Room_Send_Red_Packet_Type_Lobby){ [self.view addSubview:self.chooseTypeView]; [self.view addSubview:self.promptlyBtn]; [self.view addSubview:self.limitBtn]; [self.view addSubview:self.scrollingView]; }else{ [self.view addSubview:self.serverInputView]; } [self.view addSubview:self.sendBtn]; [self.view addSubview:self.tipsView]; } -(void)installConstraints{ [self.pi_priceView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(kGetScaleWidth(10)); make.width.mas_equalTo(kGetScaleWidth(327)); make.height.mas_equalTo(kGetScaleWidth(48)); make.centerX.equalTo(self.view); }]; [self.pi_numView mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(kGetScaleWidth(327)); make.height.mas_equalTo(kGetScaleWidth(48)); make.centerX.equalTo(self.view); make.top.equalTo(self.pi_priceView.mas_bottom).mas_offset(kGetScaleWidth(12)); }]; if(self.type == Room_Send_Red_Packet_Type_Lobby){ [self.chooseTypeView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.pi_numView.mas_bottom).mas_offset(kGetScaleWidth(16)); make.leading.trailing.equalTo(self.view).inset(kGetScaleWidth(0)); make.height.mas_equalTo(kGetScaleWidth(92)); }]; [self.promptlyBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.chooseTypeView.mas_bottom).mas_offset(kGetScaleWidth(12)); make.leading.mas_equalTo(kGetScaleWidth(24)); make.width.mas_equalTo(kGetScaleWidth(154)); make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.limitBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.chooseTypeView.mas_bottom).mas_offset(kGetScaleWidth(12)); make.trailing.mas_equalTo(-kGetScaleWidth(24)); make.width.mas_equalTo(kGetScaleWidth(154)); make.height.mas_equalTo(kGetScaleWidth(52)); }]; [self.scrollingView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.chooseTypeView.mas_bottom).mas_offset(kGetScaleWidth(12)); make.width.mas_equalTo(kGetScaleWidth(327)); make.height.mas_equalTo(kGetScaleWidth(52)); make.centerX.equalTo(self.view); }]; [self.sendBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.pi_numView.mas_bottom).mas_offset(kGetScaleWidth(200)); make.width.mas_equalTo(kGetScaleWidth(295)); make.height.mas_equalTo(kGetScaleWidth(52)); make.centerX.equalTo(self.view); }]; }else{ [self.serverInputView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.pi_numView.mas_bottom).mas_offset(kGetScaleWidth(24)); make.width.mas_equalTo(kGetScaleWidth(327)); make.height.mas_equalTo(kGetScaleWidth(76)); make.centerX.equalTo(self.view); }]; [self.sendBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.pi_numView.mas_bottom).mas_offset(kGetScaleWidth(128)); make.width.mas_equalTo(kGetScaleWidth(295)); make.height.mas_equalTo(kGetScaleWidth(52)); make.centerX.equalTo(self.view); }]; } [self.tipsView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.sendBtn.mas_bottom).mas_offset(kGetScaleWidth(10)); make.centerX.equalTo(self.view); }]; } ///获取用户信息成功 - (void)onGetUserInfoSuccess:(UserInfoModel *)userInfo { if(self.pi_isHaveUser == NO){ self.userInfo = userInfo; return; } } #pragma mark - JXPagingViewListViewDelegate - (UIScrollView *)listScrollView { return self.chooseTypeView.collectionView; } - (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { self.scrollCallback = callback; } - (UIView *)listView { return self.view; } #pragma mark- PIRedPacketChooseTypeViewDelegate - (void)chooseRedPacketType:(PIRedPacketChooseTypeViewType)type{ self.sendRedType = type; switch (type) { case Red_Packet_Choose_type_Follow: { self.scrollingView.hidden = YES; self.promptlyBtn.hidden = YES; self.limitBtn.hidden = YES; } break; case Red_Packet_Choose_type_Share: { self.scrollingView.hidden = YES; self.promptlyBtn.hidden = YES; self.limitBtn.hidden = YES; } break; case Red_Packet_Choose_type_Scrolling: { self.scrollingView.hidden = NO; self.promptlyBtn.hidden = YES; self.limitBtn.hidden = YES; } break; default: { self.scrollingView.hidden = YES; self.promptlyBtn.hidden = NO; self.limitBtn.hidden = NO; } break; } } -(void)choooseEffectiveConditionAction:(UIButton *)sender{ if(sender == self.promptlyBtn){ self.promptlyBtn.selected = YES; self.promptlyBtn.layer.borderWidth = 1; self.promptlyBtn.backgroundColor = UIColorRGBAlpha(0xFF285C, 0.06); self.promptlyBtn.titleLabel.font = kFontMedium(16); self.limitBtn.selected = NO; self.limitBtn.layer.borderWidth = 0; self.limitBtn.backgroundColor = UIColorFromRGB(0xF8F8FA); self.limitBtn.titleLabel.font = kFontRegular(16); return; } self.limitBtn.selected = YES; self.limitBtn.layer.borderWidth = 1; self.limitBtn.backgroundColor = UIColorRGBAlpha(0xFF285C, 0.06); self.limitBtn.titleLabel.font = kFontMedium(16); self.promptlyBtn.selected = NO; self.promptlyBtn.layer.borderWidth = 0; self.promptlyBtn.backgroundColor = UIColorFromRGB(0xF8F8FA); self.promptlyBtn.titleLabel.font = kFontRegular(16); } -(void)onReleaseButtonClick{ //判断钻石数量 NSInteger packetCount = [self.pi_priceView.redPacketNum integerValue]; if (packetCount <= 0) { [self showErrorToast:YMLocalizedString(@"XPRoomSendRedPacketViewController17")]; return; } //判断红包数量 NSInteger diamonCount = [self.pi_numView.redPacketNum integerValue]; if (diamonCount <= 0) { [self showErrorToast:YMLocalizedString(@"XPRoomSendRedPacketViewController18")]; return; } // if (diamonCount % 10 != 0) { // [self showErrorToast:YMLocalizedString(@"XPRoomSendRedPacketViewController19")]; // return; // } if(self.walletModel.diamonds.integerValue < packetCount){ TTAlertConfig * config = [[TTAlertConfig alloc] init]; config.message = YMLocalizedString(@"XPTreasureFairyViewController5"); config.confirmButtonConfig.title = YMLocalizedString(@"XPTreasureFairyViewController6"); [TTPopup alertWithConfig:config confirmHandler:^{ XPWebViewController * rechargeVC =[[XPWebViewController alloc] initWithCustomizeNav:NO]; NSString *url = [NSString stringWithFormat:URLWithType(kThirdPartyPay),@"4",[YYUtility deviceID]]; rechargeVC.url = url; [[XCCurrentVCStackManager shareManager].getCurrentVC.navigationController pushViewController:rechargeVC animated:YES]; } cancelHandler:^{ }]; return; } self.pi_isHaveUser = YES; if(self.userInfo == nil){ [self.presenter getUserModel]; return; } if (self.userInfo.isBindPaymentPwd) { XPRoomRedPacketPwdView *pwdView = [[XPRoomRedPacketPwdView alloc] init]; pwdView.diamonCount = @(packetCount).stringValue; pwdView.delegate = self; [TTPopup popupView:pwdView style:TTPopupStyleAlert]; } else { XPMinePayPwdViewController *vc = [[XPMinePayPwdViewController alloc] init]; vc.userInfo = self.userInfo; [self.navigationController pushViewController:vc animated:YES]; } } #pragma mark - XPRoomRedPacketPwdViewDelegate - (void)xPRoomRedPacketPwdViewPwdComplete:(NSString *)pwd { [TTPopup dismiss]; NSString *roomUid = [NSString stringWithFormat:@"%ld", self.hostDelegate.getRoomInfo.uid]; NSString *type = self.type == Room_Send_Red_Packet_Type_Lobby ? @"1" : @"2"; NSArray *kindList = @[@"1",@"2",@"3",@"4"]; NSString *kind = self.type == Room_Send_Red_Packet_Type_Lobby ? [kindList safeObjectAtIndex1:self.sendRedType] : @"0"; NSString *message ; if(self.type == Room_Send_Red_Packet_Type_Lobby){ message = self.scrollingView.pi_scrolling.length > 0 ? self.scrollingView.pi_scrolling : YMLocalizedString(@"XPRoomSendRedPacketViewController4"); }else{ message = self.serverInputView.getContent.length > 0 ? self.serverInputView.getContent : YMLocalizedString(@"XPRoomSendRedPacketViewController4"); } NSString *validityType = self.promptlyBtn.selected == YES ? @"0" : @"1"; if(self.sendRedType != Red_Packet_Choose_type_Normal){ validityType = @"1"; } if(self.sendRedType == Red_Packet_Choose_type_Scrolling && self.serverInputView.getContent.length == 0){ [self showErrorToast:YMLocalizedString(@"PIRoomSendRedPacketItemVC7")]; return; } [self.presenter sendRedPacketWithNum:self.pi_numView.redPacketNum goldNum:self.pi_priceView.redPacketNum roomUid:roomUid type:type password:pwd message:message kind:kind validityType:validityType]; } - (void)xPRoomRedPacketPwdViewPwdForgetBtnClick { XPMinePayPwdViewController *vc = [[XPMinePayPwdViewController alloc] init]; vc.userInfo = self.hostDelegate.getUserInfo; [self.navigationController pushViewController:vc animated:YES]; } ///发送红包成功 - (void)sendRedPacketSuccess { [self showSuccessToast:YMLocalizedString(@"XPRoomSendRedPacketViewController3")]; [self dismissViewControllerAnimated:YES completion:nil]; } #pragma mark - 懒加载 - (PIInputRedPacketView *)pi_priceView{ if(!_pi_priceView){ _pi_priceView = [[PIInputRedPacketView alloc]initWithFrame:CGRectZero]; _pi_priceView.isHiddenIcon = NO; _pi_priceView.pi_title = YMLocalizedString(@"PIRoomSendRedPacketItemVC0"); _pi_priceView.unitTitle = YMLocalizedString(@"PIRoomSendRedPacketItemVC2"); } return _pi_priceView; } - (PIInputRedPacketView *)pi_numView{ if(!_pi_numView){ _pi_numView = [[PIInputRedPacketView alloc]initWithFrame:CGRectZero]; _pi_numView.isHiddenIcon = YES; _pi_numView.pi_title = YMLocalizedString(@"PIRoomSendRedPacketItemVC1"); _pi_numView.unitTitle = YMLocalizedString(@"PIRoomSendRedPacketItemVC3"); } return _pi_numView; } - (PIRedPacketChooseTypeView *)chooseTypeView{ if(!_chooseTypeView){ _chooseTypeView = [[PIRedPacketChooseTypeView alloc]initWithFrame:CGRectZero]; _chooseTypeView.delegate = self; } return _chooseTypeView; } - (UIButton *)promptlyBtn{ if(!_promptlyBtn){ _promptlyBtn = [UIButton new]; [_promptlyBtn setTitleColor:UIColorFromRGB(0xFF285C) forState:UIControlStateSelected]; [_promptlyBtn setTitleColor:UIColorFromRGB(0x767585) forState:UIControlStateNormal]; _promptlyBtn.titleLabel.font = kFontMedium(16); _promptlyBtn.backgroundColor = UIColorRGBAlpha(0xFF285C, 0.06); _promptlyBtn.layer.cornerRadius = kGetScaleWidth(8); _promptlyBtn.selected = YES; [_promptlyBtn setTitle:YMLocalizedString(@"PIRoomSendRedPacketItemVC4") forState:UIControlStateNormal]; _promptlyBtn.layer.masksToBounds = YES; _promptlyBtn.layer.borderColor = UIColorFromRGB(0xFF285C).CGColor; _promptlyBtn.layer.borderWidth = 1; [_promptlyBtn addTarget:self action:@selector(choooseEffectiveConditionAction:) forControlEvents:UIControlEventTouchUpInside]; } return _promptlyBtn; } - (UIButton *)limitBtn{ if(!_limitBtn){ _limitBtn = [UIButton new]; [_limitBtn setTitleColor:UIColorFromRGB(0xFF285C) forState:UIControlStateSelected]; [_limitBtn setTitleColor:UIColorFromRGB(0x767585) forState:UIControlStateNormal]; _limitBtn.titleLabel.font = kFontRegular(16); _limitBtn.backgroundColor = UIColorFromRGB(0xF8F8FA); _limitBtn.layer.cornerRadius = kGetScaleWidth(8); [_limitBtn setTitle:YMLocalizedString(@"PIRoomSendRedPacketItemVC5") forState:UIControlStateNormal]; _limitBtn.layer.masksToBounds = YES; _limitBtn.layer.borderColor = UIColorFromRGB(0xFF285C).CGColor; _limitBtn.layer.borderWidth = 0; [_limitBtn addTarget:self action:@selector(choooseEffectiveConditionAction:) forControlEvents:UIControlEventTouchUpInside]; } return _limitBtn; } - (UIButton *)sendBtn{ if(!_sendBtn){ _sendBtn = [UIButton new]; [_sendBtn setBackgroundImage:kImage(@"pi_red_packet_send") forState:UIControlStateNormal]; [_sendBtn addTarget:self action:@selector(onReleaseButtonClick) forControlEvents:UIControlEventTouchUpInside]; } return _sendBtn; } - (UILabel *)tipsView{ if(!_tipsView){ 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; } - (PIInputScrollingView *)scrollingView{ if(!_scrollingView){ _scrollingView = [[PIInputScrollingView alloc]initWithFrame:CGRectZero]; _scrollingView.hidden = YES; } return _scrollingView; } - (PIInputEntireServerScrollingView *)serverInputView{ if(!_serverInputView){ _serverInputView = [[PIInputEntireServerScrollingView alloc]initWithFrame:CGRectZero]; } return _serverInputView; } @end