Files
peko-ios/YuMi/Modules/YMRoom/View/SendRedPacket/PIRoomSendRedPacketItemVC.m
2023-10-27 16:17:05 +08:00

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