123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- //
- // NYLIVipCoachViewModel.m
- // jiaPei
- //
- // Created by Ning.ge on 2025/1/23.
- // Copyright © 2025 JCZ. All rights reserved.
- //
- #import "NYLIVipCoachViewModel.h"
- @interface NYLIVipCoachViewModel ()
- @property (nonatomic, readwrite, copy) NSArray *typeModels;
- @property (nonatomic, readwrite, assign) RQVIPPageType vipPageType;
- @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
- @end
- @implementation NYLIVipCoachViewModel
- #pragma mark - Public Method
- - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
- if (self = [super initWithServices:services params:params]) {
- self.vipPageType = [params[RQViewModelIDKey] integerValue];
- self.typeModels = params[RQViewModelUtilKey];
- self.homePageSubjectType = [params[RQViewCommonValueKey] integerValue];
- }
- return self;
- }
- - (void)initialize {
- [super initialize];
-
- self.title = @"会员中心";
-
- [[RQ_HTTP_Service getVideoVipWithUserId:RQ_USER_MANAGER.currentUser._id] subscribeNext:^(RQVideoVipModel *videoVipModel) {
- RQ_VIP_Module.videoVipModel = videoVipModel;
- }];
-
- [RQ_VIP_Module isVipWithSubject:0 complete:^(BOOL isVip) {
-
- }];
-
- [RQ_VIP_Module isActiveWithCcomplete:^(RQActivationModel * _Nullable activationModel, BOOL isSuccess) {}];
- ///配置数据
- [self rq_configureData];
- }
- #pragma mark - PrivateMethod
- - (void)rq_configureData {
- @weakify(self)
- /// 数据源
- RAC(self,dataSource) = [RACSignal
- combineLatest:@[RACObserve(self, typeModels),RACObserve(RQ_VIP_Module, videoVipModel),RACObserve(RQ_VIP_Module, chooseTypeModel)]
- reduce:^(NSArray *typeModels, RQVideoVipModel *videoVipModel, RQTypeModel *chooseTypeModel) {
- @strongify(self)
- /// 第零组 头部视图
- NYLIVipHeaderImageViewGroupModel *group0 = [[NYLIVipHeaderImageViewGroupModel alloc] initWithRQVideoVipModel:videoVipModel chooseTypeModel:chooseTypeModel];
- group0.itemViewModels = [self singlePriceItemWithTypeModels:typeModels chooseTypeModel:chooseTypeModel];
-
- /// 第一组 价格 套餐
- RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel];
- group1.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : 10;
- group1.itemViewModels = ([chooseTypeModel.dictLabel isEqualToString:@"理论实操计时"])? @[] : @[[[NYLIVipAuthorityNewItemViewModel alloc] initWithChooseTypeModel:chooseTypeModel]];
- /// 第四组 科一怎么学
- RQCommonGroupViewModel *group4 = [RQCommonGroupViewModel groupViewModel];
- NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:0];
- vipContentNew1ItemViewModel.isSubjectFour = NO;
- group4.itemViewModels = @[vipContentNew1ItemViewModel];
- group4.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group4.itemViewModels.count > 0? 10 : 0);
- group4.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group4.itemViewModels.count > 0? 10 : 0);
-
- /// 第五组 科二怎么学
- RQCommonGroupViewModel *group5 = [RQCommonGroupViewModel groupViewModel];
- NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel01 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:1];
- vipContentNew1ItemViewModel01.isSubjectFour = NO;
- group5.itemViewModels = @[vipContentNew1ItemViewModel01] ;
- group5.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group5.itemViewModels.count > 0? 10 : 0);
- group5.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group5.itemViewModels.count > 0? 10 : 0);
-
- /// 第六组 科三怎么学
- RQCommonGroupViewModel *group6 = [RQCommonGroupViewModel groupViewModel];
- NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel02 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:2];
- vipContentNew1ItemViewModel02.isSubjectFour = NO;
- group6.itemViewModels = @[vipContentNew1ItemViewModel02] ;
- group6.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group6.itemViewModels.count > 0? 10 : 0);
- group6.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group6.itemViewModels.count > 0? 10 : 0);
-
- RQCommonGroupViewModel *group7 = [RQCommonGroupViewModel groupViewModel];
- NYLIVipContentNewItemViewModel *vipContentNew1ItemViewModel03 = [[NYLIVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel type:3];
- vipContentNew1ItemViewModel03.isSubjectFour = NO;
- group7.itemViewModels = @[vipContentNew1ItemViewModel03] ;
- group7.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group7.itemViewModels.count > 0? 10 : 0);
- group7.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group7.itemViewModels.count > 0? 10 : 0);
-
-
-
-
- return @[group0, group1, group4, group5, group6, group7];
- }];
- }
- // 请求数据
- - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
- [MBProgressHUD rq_showProgressHUD:@"获取会员套餐..."];
- NSArray * (^typeModelsBlock)(NSArray *) = ^(NSArray *products) {
- [MBProgressHUD rq_hideHUD];
- if (page == 1) {
- /// 下拉刷新
- } else {
- /// 上拉加载
- products = @[(self.typeModels ?: @[]).rac_sequence, products.rac_sequence].rac_sequence.flatten.array;
- }
- return products;
- };
- return [[[self.services.client getTypeWithDictType:(!RQObjectIsNil(RQ_VIP_Module.activationModel) && RQ_VIP_Module.activationModel.isShare && !(RQ_VIP_Module.activationModel.isActive == 1))? RQ_USER_MANAGER.currentUser.city : @"vip_package"] map:typeModelsBlock] doError:^(NSError * _Nonnull error) {
- [MBProgressHUD rq_hideHUD];
- [MBProgressHUD rq_showErrorTips:error];
- }];
- }
- /// 辅助方法
- - (NSArray *)singlePriceItemWithTypeModels:(NSArray *)typeModels chooseTypeModel:(RQTypeModel *)chooseTypeModel{
- if (RQObjectIsNil(typeModels) || typeModels.count == 0) return nil;
- NSArray *canUseTypeModels = [typeModels.rac_sequence filter:^BOOL(RQTypeModel *typeModel) {
- return YES;
- }].array;
- NSArray *itemViewModels = [canUseTypeModels.rac_sequence map:^id _Nullable(RQTypeModel *typeModel) {
- if ([typeModel.dictLabel isEqualToString:@"理论实操计时"]) {
- RQVipTrainPriceItemViewModel *vipTrainPriceItemViewModel = [[RQVipTrainPriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel typeModels:canUseTypeModels];
- return vipTrainPriceItemViewModel;
- } else {
- NYLIVipSinglePriceItemViewModel *vipSinglePriceItemViewModel = [[NYLIVipSinglePriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel typeModels:canUseTypeModels];
- return vipSinglePriceItemViewModel;
- }
- }].array;
- return itemViewModels ?: @[] ;
- }
- - (NSArray *)allPriceItemWithTypeModels:(NSArray *)typeModels chooseTypeModel:(RQTypeModel *)chooseTypeModel {
- if (RQObjectIsNil(typeModels) || typeModels.count == 0) return nil;
- NSArray *itemViewModels = [[typeModels.rac_sequence filter:^BOOL(RQTypeModel *typeModel) {
- return [typeModel.remark isEqualToString:@"1"] && ![typeModel.status isEqualToString:@"1"];
- }].array.rac_sequence map:^id _Nullable(RQTypeModel *typeModel) {
- RQVipAllPriceItemViewModel *vipAllPriceItemViewModel = [[RQVipAllPriceItemViewModel alloc] initWithRQTypeModel:typeModel chooseTypeModel:chooseTypeModel];
- return vipAllPriceItemViewModel;
- }].array;
- return itemViewModels ?: @[] ;
- }
- @end
|