// // YMMemberCenterViewController.m // MSYOUPAI // // Created by YoMi on 2024/2/27. // Copyright © 2024 MS. All rights reserved. // #import "YMMemberCenterViewController.h" #import "YMMemberCenterViewModel.h" #import "YMMemberInfoView.h" #import "YMMemberRenewalItemView.h" #import "YMMemberPrivilegeItemView.h" #import "YMMemberPayMethodPopupView.h" @interface YMMemberCenterViewController () /// 会员中心VM @property (nonatomic, strong) YMMemberCenterViewModel *viewModel; /// 容器滚动视图 @property (nonatomic, strong) UIScrollView *contentScrollView; /// 容器视图 @property (nonatomic, strong) UIView *contentView; /// 会员信息视图 @property (nonatomic, strong) YMMemberInfoView *memberInfoView; /// 会员续费项目视图 @property (nonatomic, strong) YMMemberRenewalItemView *memberRenewalItemView; /// 会员特权视图圆角 @property (nonatomic, strong) UIView *cornerView; /// 会员特权视图 @property (nonatomic, strong) YMMemberPrivilegeItemView *memberPrivilegeView; /// 开通会员操作按钮 @property (nonatomic, strong) UIButton *openMemberOperationBtn; @end @implementation YMMemberCenterViewController @dynamic viewModel; - (UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } - (void)viewDidLoad { [super viewDidLoad]; [self.view ym_setGradientBackgroundWithColors:@[HexColorFromRGB(0xFFEEA6), HexColorFromRGB(0xFFE888)] locations:@[@0,@1] startPoint:CGPointMake(0, 0) endPoint:CGPointMake(1, 0)]; // UIImageView *imgv = [[UIImageView alloc] init]; // imgv.image = ImageByName(@""); // imgv.frame = self.view.bounds; // [self.view addSubview:imgv]; // UIView *wbgv = [[UIView alloc] init]; // wbgv.backgroundColor = HexColorFromRGB(0xFFFFFF); // [self.view insertSubview:wbgv belowSubview:self.contentScrollView]; // [wbgv mas_makeConstraints:^(MASConstraintMaker *make) { // make.left.right.bottom.equalTo(self.view); // make.height.mas_equalTo(kScreenHeight * 2 / 5.0); // }]; self.ym_navigationStyle = YMBaseNavigationStyleClearBgBlackBackArrow; self.view.backgroundColor = HexColorFromRGB(0x1D1D28); [OCNotificationCenter addObserver:self selector:@selector(weChatOrAlipayPaymentSuccess:) name:ALIPAY_SUCCESS_NOTIFICATION object:nil]; [OCNotificationCenter addObserver:self selector:@selector(weChatOrAlipayPaymentSuccess:) name:WECHATPAY_SUCCESS_NOTIFICATION object:nil]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [self.viewModel.selectedRechargeItemSubject sendNext:@(1)]; } - (void)ym_setupViews{ [self.view addSubview:self.contentScrollView]; [self.contentScrollView addSubview:self.contentView]; [self.contentView addSubview:self.memberInfoView]; [self.contentView addSubview:self.memberRenewalItemView]; [self.contentView addSubview:self.cornerView]; [self.contentView addSubview:self.memberPrivilegeView]; [self.view addSubview:self.openMemberOperationBtn]; [self.view setNeedsUpdateConstraints]; [self.view updateConstraintsIfNeeded]; } - (void)updateViewConstraints{ [self.contentScrollView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.view).offset(kYMNavHeight); make.left.equalTo(self.view); make.right.equalTo(self.view); make.bottom.equalTo(self.view); }]; [self.openMemberOperationBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.view).offset(adapt(32)); make.right.equalTo(self.view).offset(adapt(-32)); make.bottom.equalTo(self.view).offset(Is_iPhoneX ? adapt(-32) : adapt(-12)); make.height.mas_equalTo(adapt(55)); }]; [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentScrollView).offset(0); make.left.equalTo(self.contentScrollView); make.right.equalTo(self.contentScrollView); make.bottom.equalTo(self.contentScrollView); make.width.mas_equalTo(KScreenWidth); }]; UIView *bgv = [[UIView alloc] init]; bgv.backgroundColor = UIColor.whiteColor; [self.contentView addSubview:bgv]; [bgv mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentView.mas_bottom); make.left.right.equalTo(self.contentView); make.height.mas_equalTo(kScreenHeight); }]; [self.memberInfoView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.contentView).offset(adapt(10)); make.left.equalTo(self.contentView).offset(adapt(10)); make.right.equalTo(self.contentView).offset(adapt(-10)); }]; [self.memberRenewalItemView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.memberInfoView.mas_bottom).offset(adapt(0)); make.left.equalTo(self.contentView).offset(adapt(10)); make.right.equalTo(self.contentView).offset(adapt(-10)); make.height.mas_equalTo(adapt(170)); }]; [self.cornerView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.memberPrivilegeView); make.bottom.equalTo(self.memberPrivilegeView.mas_top); make.height.mas_equalTo(adapt(20)); }]; [self.memberPrivilegeView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.memberRenewalItemView.mas_bottom).offset(adapt(30)); make.left.equalTo(self.contentView).offset(adapt(0)); make.right.equalTo(self.contentView).offset(adapt(0)); make.height.mas_equalTo(adapt(140) * 4.5); make.bottom.equalTo(self.contentView).offset(adapt(-0)); }]; [super updateViewConstraints]; } - (void)ym_bindViewModel{ [self.memberInfoView ym_bindViewModel:self.viewModel]; [self.memberRenewalItemView ym_bindViewModel:self.viewModel]; [self.memberPrivilegeView ym_bindViewModel:self.viewModel]; [[YMGlobalUtils shared] getConfig]; [self.viewModel getMemberRechargeInfoData]; @weakify(self) [[[[RACObserve(self.viewModel, openMemberOperation) distinctUntilChanged] deliverOnMainThread] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(NSString * openMemberOperation) { @strongify(self) [self.openMemberOperationBtn setTitle:openMemberOperation forState:UIControlStateNormal]; }]; } - (void)weChatOrAlipayPaymentSuccess:(NSNotification *)notice{ [self.viewModel getMemberRechargeInfoData]; } - (UIScrollView *)contentScrollView{ if (!_contentScrollView) { _contentScrollView = [[UIScrollView alloc]init]; _contentScrollView.alwaysBounceVertical = YES; _contentScrollView.showsVerticalScrollIndicator = NO; _contentScrollView.showsHorizontalScrollIndicator = NO; _contentScrollView.backgroundColor = UIColor.clearColor; _contentScrollView.userInteractionEnabled = true; _contentScrollView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; } return _contentScrollView; } - (UIView *)contentView{ if (!_contentView) { _contentView = [[UIView alloc]init]; } return _contentView; } - (YMMemberInfoView *)memberInfoView{ if (!_memberInfoView) { _memberInfoView = [[YMMemberInfoView alloc]init]; } return _memberInfoView; } - (YMMemberRenewalItemView *)memberRenewalItemView{ if (!_memberRenewalItemView) { _memberRenewalItemView = [[YMMemberRenewalItemView alloc]init]; } return _memberRenewalItemView; } - (YMMemberPrivilegeItemView *)memberPrivilegeView{ if (!_memberPrivilegeView) { _memberPrivilegeView = [[YMMemberPrivilegeItemView alloc]init]; _memberPrivilegeView.backgroundColor = HexColorFromRGB(0xFFFFFF); // _memberPrivilegeView.layer.cornerRadius = adapt(20); // _memberPrivilegeView.layer.masksToBounds = YES; } return _memberPrivilegeView; } - (UIButton *)openMemberOperationBtn{ if (!_openMemberOperationBtn) { _openMemberOperationBtn = [UIButton buttonWithType:UIButtonTypeCustom]; _openMemberOperationBtn.titleLabel.font = LCBoldFont(19); [_openMemberOperationBtn setTitle:@"操作" forState:UIControlStateNormal]; [_openMemberOperationBtn setTitleColor:HexColorFromRGB(0x000000) forState:UIControlStateNormal]; [_openMemberOperationBtn ym_setGradientBackgroundWithColors:@[HexColorFromRGB(0xFFF470), HexColorFromRGB(0xFACB92)] locations:@[@0,@1] startPoint:CGPointMake(0, 0) endPoint:CGPointMake(0, 1)]; _openMemberOperationBtn.layer.cornerRadius = adapt(12); _openMemberOperationBtn.layer.masksToBounds = YES; WS(weakSelf) [[[_openMemberOperationBtn rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:self.rac_willDeallocSignal] subscribeNext:^(id x) { if (weakSelf.viewModel.payAmount <= 0) { [ZCHUDHelper showTitle:@"请选择订阅服务项目"]; return; } YMMemberPayMethodPopupView *customView = [[YMMemberPayMethodPopupView alloc]init]; [customView ym_bindViewModel:weakSelf.viewModel]; YMPopupView *popupView = [YMPopupView initWithCustomView:customView parentView:nil popStyle:YMPopupStyleSmoothFromBottom dismissStyle:YMDismissStyleSmoothToBottom]; popupView.priority = 999; popupView.cornerRadius = adapt(10); popupView.rectCorners = UIRectCornerTopLeft|UIRectCornerTopRight; popupView.positionStyle = YMPositionStyleBottom; popupView.isClickBgDismiss = NO; popupView.isHideBg = NO; popupView.bgAlpha = 0.5; [popupView pop]; @weakify(popupView) customView.buttonBlock = ^(BOOL isConfirm, NSString * _Nonnull selectedPayCode) { @strongify(popupView) if (isConfirm) { [weakSelf.viewModel.selectedPayMethodTypeSubject sendNext:selectedPayCode]; } [popupView dismissWithStyle:YMDismissStyleSmoothToBottom duration:2.0]; }; customView.dismissBlock = ^{ @strongify(popupView) [popupView dismissWithStyle:YMDismissStyleSmoothToBottom duration:2.0]; }; }]; } return _openMemberOperationBtn; } - (UIView *)cornerView { if (!_cornerView) { _cornerView = [[UIView alloc] init]; _cornerView.backgroundColor = HexColorFromRGB(0xFFFFFF); [_cornerView addRectCorner:(UIRectCornerTopLeft | UIRectCornerTopRight) radius:adapt(20)]; } return _cornerView; } @end