404 lines
16 KiB
Objective-C
404 lines
16 KiB
Objective-C
//
|
|
// 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"
|
|
|
|
@interface PIRoomSendRedPacketItemVC ()<PIRedPacketChooseTypeViewDelegate,XPRoomRedPacketPwdViewDelegate>
|
|
///host代理
|
|
@property (nonatomic,weak) id<RoomHostDelegate>hostDelegate;
|
|
///紅包金額
|
|
@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<RoomHostDelegate>)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:^{
|
|
XPIAPRechargeViewController * rechargeVC = [[XPIAPRechargeViewController alloc] init];
|
|
rechargeVC.type = @"4";
|
|
[[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){
|
|
_tipsView = [UILabel labelInitWithText:YMLocalizedString(@"PIRoomSendRedPacketItemVC6") 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
|