// // RQVipViewModel.m // jiaPei // // Created by 张嵘 on 2022/3/1. // Copyright © 2022 JCZ. All rights reserved. // #import "RQVipViewModel.h" @interface RQVipViewModel () @property (nonatomic, readwrite, copy) NSArray *typeModels; @property (nonatomic, readwrite, assign) RQVIPPageType vipPageType; @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType; @end @implementation RQVipViewModel #pragma mark - Public Method - (instancetype)initWithServices:(id)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) { // videoVipModel.subject1 = @"1"; // videoVipModel.subject2 = @""; // videoVipModel.subject3 = @""; // videoVipModel.subject4 = @"1"; 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) /// 第零组 头部视图 RQVipHeaderImageViewNewGroupViewModel *group0 = [[RQVipHeaderImageViewNewGroupViewModel alloc] initWithRQVideoVipModel:videoVipModel chooseTypeModel:chooseTypeModel]; group0.itemViewModels = [self singlePriceItemWithTypeModels:typeModels chooseTypeModel:chooseTypeModel]; RQVipAlertHeaderGroupViewModel *group = [[RQVipAlertHeaderGroupViewModel alloc] init]; group.headerHeight = 57; group.itemViewModels = [self singlePriceItemWithTypeModels:typeModels chooseTypeModel:chooseTypeModel]; /// 第一组 价格套餐 RQCommonGroupViewModel *group1 = [RQCommonGroupViewModel groupViewModel]; group1.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : 10; group1.itemViewModels = ([chooseTypeModel.dictLabel isEqualToString:@"理论实操计时"])? @[] : @[[[RQVipAuthorityNewItemViewModel alloc] initWithChooseTypeModel:chooseTypeModel]]; /// 第四组 科一怎么学 RQCommonGroupViewModel *group4 = [RQCommonGroupViewModel groupViewModel]; RQVipContentNewItemViewModel *vipContentNew1ItemViewModel = [[RQVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel]; vipContentNew1ItemViewModel.isSubjectFour = NO; group4.itemViewModels = (self.vipPageType == RQVIPPageType_Alert)? @[] : (([chooseTypeModel.dictLabel containsString:@"全"] ||[chooseTypeModel.dictLabel containsString:@"一"])? @[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]; RQVipContentNew23ItemViewModel *vipContentNew2ItemViewModel = [[RQVipContentNew23ItemViewModel alloc] initWithRQTypeModel:chooseTypeModel]; vipContentNew2ItemViewModel.isSubjectThree = NO; group5.itemViewModels = (self.vipPageType == RQVIPPageType_Alert)? @[] : (([chooseTypeModel.dictLabel containsString:@"全"] ||[chooseTypeModel.dictLabel containsString:@"二"])? @[vipContentNew2ItemViewModel] : @[]); 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]; RQVipContentNew23ItemViewModel *vipContentNew3ItemViewModel = [[RQVipContentNew23ItemViewModel alloc] initWithRQTypeModel:chooseTypeModel]; vipContentNew3ItemViewModel.isSubjectThree = YES; group6.itemViewModels = (self.vipPageType == RQVIPPageType_Alert)? @[] : (([chooseTypeModel.dictLabel containsString:@"全"] || [chooseTypeModel.dictLabel containsString:@"三"])? @[vipContentNew3ItemViewModel] : @[]); 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]; RQVipContentNewItemViewModel *vipContentNew4ItemViewModel = [[RQVipContentNewItemViewModel alloc] initWithRQTypeModel:chooseTypeModel]; vipContentNew4ItemViewModel.isSubjectFour = YES; group7.itemViewModels = (self.vipPageType == RQVIPPageType_Alert)? @[] : (([chooseTypeModel.dictLabel containsString:@"全"] || [chooseTypeModel.dictLabel containsString:@"四"])? @[vipContentNew4ItemViewModel] : @[]); 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); if ([chooseTypeModel.dictLabel containsString:@"一"] && [chooseTypeModel.dictLabel containsString:@"+"] && [chooseTypeModel.dictLabel containsString:@"四"]) { group7.itemViewModels = @[]; group7.headerHeight = 0.f; group7.footerHeight = 0.f; } /// 第六组 常见问题 RQCommonGroupViewModel *group8 = [RQCommonGroupViewModel groupViewModel]; RQVipProblemNewItemViewModel *vipProblemNewItemViewModel = [[RQVipProblemNewItemViewModel alloc] init]; group8.itemViewModels = (self.vipPageType == RQVIPPageType_Alert)? @[] : @[vipProblemNewItemViewModel]; group8.headerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group8.itemViewModels.count > 0? 10 : 0); group8.footerHeight = (self.vipPageType == RQVIPPageType_Alert)? 0 : (group8.itemViewModels.count > 0? 10 : 0); return @[(self.vipPageType == RQVIPPageType_Alert)? group : group0, group1, group4, group5, group6, group7, group8]; }]; } // 请求数据 - (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) { if([RQ_USER_MANAGER.currentUser.city isEqualToString:@"2108"]){ return ![typeModel.status isEqualToString:@"1"] && (typeModel.homePageSubjectType == self.homePageSubjectType || typeModel.homePageSubjectType == RQHomePageSubjectType_SubjectAll) && (![typeModel.dictLabel containsString:@"计时"]); } if (!RQObjectIsNil(RQ_VIP_Module.activationModel) && RQ_VIP_Module.activationModel.isShare) { if (RQ_VIP_Module.activationModel.isActive == 1) { return ![typeModel.status isEqualToString:@"1"] && ((typeModel.homePageSubjectType == self.homePageSubjectType || typeModel.homePageSubjectType == RQHomePageSubjectType_SubjectAll) && (![typeModel.dictLabel containsString:@"含计时"])); } else { return ![typeModel.status isEqualToString:@"1"] && (typeModel.homePageSubjectType == self.homePageSubjectType || typeModel.homePageSubjectType == RQHomePageSubjectType_SubjectAll) && ([typeModel.dictLabel containsString:@"计时"]); } } else { return ![typeModel.status isEqualToString:@"1"] && (typeModel.homePageSubjectType == self.homePageSubjectType || typeModel.homePageSubjectType == RQHomePageSubjectType_SubjectAll) && (![typeModel.dictLabel containsString:@"计时"]); } }].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 { RQVipSinglePriceItemViewModel *vipSinglePriceItemViewModel = [[RQVipSinglePriceItemViewModel 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