RQHomePageSubjectOneOrFourViewModel.m 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493
  1. //
  2. // RQHomePageSubjectOneOrFourViewModel.m
  3. // JSJP
  4. //
  5. // Created by 张嵘 on 2021/7/29.
  6. //
  7. #import "RQHomePageSubjectOneOrFourViewModel.h"
  8. #import "LightingAndSoundVC.h"
  9. @interface RQHomePageOneOrFourItemModel ()
  10. @property (nonatomic, readwrite, copy) NSString *titleStr;
  11. @property (nonatomic, readwrite, copy) NSString *iconImgStr;
  12. @end
  13. @implementation RQHomePageOneOrFourItemModel
  14. - (instancetype)initWithTitleStr:(NSString *)titleStr iconImgStr:(NSString *)iconImgStr {
  15. if (self = [super init]) {
  16. self.titleStr = titleStr;
  17. self.iconImgStr = iconImgStr;
  18. }
  19. return self;
  20. }
  21. @end
  22. @interface RQHomePageSubjectOneOrFourViewModel ()
  23. @property (nonatomic, readwrite, assign) RQHomePageCarType homePageCarType;
  24. @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
  25. @property (nonatomic, readwrite, strong) RQTreeListModel *treeListModel;
  26. @property (nonatomic, readwrite, strong) NSMutableArray *mutableArrr;
  27. @property (nonatomic, readwrite, copy) NSString *subjectStr;
  28. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group;
  29. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group0;
  30. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group1;
  31. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group2;
  32. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group2_1;
  33. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group3;
  34. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group4;
  35. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group5;
  36. ///
  37. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *groupSubject3Module;
  38. /// 驾驶方法
  39. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *groupDriveMethods;
  40. /// 交管12123服务
  41. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *group12123;
  42. /// 考场视频
  43. @property (nonatomic, readwrite, strong) RQCommonGroupViewModel *groupKaoChang;
  44. @property (nonatomic, readwrite, copy) NSArray *subjectOneSectionZeroArr;
  45. @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroArr;
  46. @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroBigModelArr;
  47. @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionZeroSmallModelArr;
  48. @property (nonatomic, readwrite, copy) NSArray *subjectOneOrFourSectionOneArr;
  49. @property (nonatomic, readwrite, copy) NSArray *leftTitleArr;
  50. @property (nonatomic, readwrite, copy) NSArray *rightTitleArr;
  51. @end
  52. @implementation RQHomePageSubjectOneOrFourViewModel
  53. #pragma mark - Public Method
  54. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
  55. if (self = [super initWithServices:services params:params]) {
  56. self.homePageCarType = [params[RQHomePageCarTypeKey] integerValue];
  57. self.homePageSubjectType = [params[RQHomePageSubjectTypeKey] integerValue];
  58. }
  59. return self;
  60. }
  61. - (void)initialize {
  62. [super initialize];
  63. self.title = @"";
  64. /// 隐藏导航栏的细线
  65. self.prefersNavigationBarBottomLineHidden = YES;
  66. ///配置数据
  67. [self rq_configureData];
  68. }
  69. #pragma mark - PrivateMethod
  70. - (void)rq_configureData {
  71. @weakify(self)
  72. RAC(self, dataSource) = [RACSignal
  73. combineLatest:@[RACObserve(RQ_COMMON_MANAGER, treeListArr),RACObserve(RQ_COMMON_MANAGER, dspListArr), [RACObserve(RQ_VIP_Module, videoVipModel) distinctUntilChanged], [RACObserve(RQ_USER_MANAGER, currentUser) distinctUntilChanged]]
  74. reduce:^(NSArray *treeListModelArr, NSArray *dspListModelArr, RQVideoVipModel *videoVipModel, RQUserModel *currentUser) {
  75. @strongify(self)
  76. /// 第一组
  77. RQHomeSubPageVideoHeaderGroupViewModel *group3 = [self group3WithTreeListModelArr:treeListModelArr];
  78. self.group3 = group3;
  79. /// 第二组
  80. // RQHomeSubPageVideoHeaderGroupViewModel *group4 = [self group4WithDspListModelArr:dspListModelArr];
  81. // self.group4 = group4;
  82. if (RQArrayIsEmpty(treeListModelArr)) {
  83. // return (self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? (RQArrayIsEmpty(dspListModelArr)? @[self.group, self.group12123] : @[self.group, self.group12123, group4]) : ((self.homePageSubjectType == RQHomePageSubjectType_SubjectThree)? (RQArrayIsEmpty(dspListModelArr)? @[self.group, self.groupKaoChang, self.groupSubject3Module, self.groupDriveMethods, self.group12123] : @[self.group, self.groupKaoChang, self.groupSubject3Module, self.groupDriveMethods, self.group12123, group4]) : @[self.group, self.group0, self.group1, self.group2_1 ,self.group2]);
  84. return (self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? (RQArrayIsEmpty(dspListModelArr)? @[self.group, self.group12123] : @[self.group, self.group12123]) : ((self.homePageSubjectType == RQHomePageSubjectType_SubjectThree)? (RQArrayIsEmpty(dspListModelArr)? @[self.group, self.groupKaoChang, self.groupSubject3Module, self.groupDriveMethods, self.group12123] : @[self.group, self.groupKaoChang, self.groupSubject3Module, self.groupDriveMethods, self.group12123]) : @[self.group, self.group0, self.group1, self.group2_1 ,self.group2]);
  85. } else {
  86. if (self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo) {
  87. // if (RQ_COMMON_MANAGER.APP_SWITCH && !RQ_VIP_Module.isSubject2Vip) {
  88. // self.group0.itemViewModels = @[];
  89. // group3.itemViewModels = @[];
  90. // }
  91. // return RQArrayIsEmpty(group3.itemViewModels)? (RQArrayIsEmpty(group4.itemViewModels)? @[self.group, self.group0, self.group12123] : @[self.group, self.group0, self.group12123, group4]) : (RQArrayIsEmpty(group4.itemViewModels)? @[self.group, self.group0, self.group12123, group3] : @[self.group, self.group0, self.group12123, group3, group4]);
  92. return RQArrayIsEmpty(group3.itemViewModels)? ( @[self.group, self.group0, self.group12123]) : ( @[self.group, self.group0, self.group12123, group3]);
  93. } else if (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree) {
  94. // if (RQ_COMMON_MANAGER.APP_SWITCH && !RQ_VIP_Module.isSubject3Vip) {
  95. // self.group0.itemViewModels = @[];
  96. // }
  97. // return RQArrayIsEmpty(group4.itemViewModels)? @[self.group, self.groupKaoChang, self.groupSubject3Module, self.group0, self.groupDriveMethods, self.group12123] : @[self.group, self.groupKaoChang, self.groupSubject3Module, self.group0, self.groupDriveMethods, self.group12123, group4];
  98. return @[self.group, self.groupKaoChang, self.groupSubject3Module, self.group0, self.groupDriveMethods, self.group12123];
  99. } else {
  100. return [RQ_YDTQuestion_Module.isZhiGeZheng isEqualToString:@"YES"]? @[self.group, self.group0, self.group1, self.group12123] : ( RQArrayIsEmpty(group3.itemViewModels)? @[self.group, self.group0, self.group1, self.group2_1,self.group2] : @[self.group, self.group0, self.group1, self.group2_1,self.group2, group3]);
  101. }
  102. }
  103. }];
  104. }
  105. - (void)dataDealWithDataArr:(NSArray *)dataArr completion:(void (^)(NSArray *arr))completion {
  106. if (dataArr.count > 0) {
  107. for (id value in dataArr) {
  108. if ([value isKindOfClass:[NSArray class]]) {
  109. [self dataDealWithDataArr:value completion:completion];
  110. break;
  111. } else {
  112. completion(dataArr);
  113. break;
  114. }
  115. }
  116. } else {
  117. completion(dataArr);
  118. }
  119. }
  120. - (NSArray *)dataSourceWithItems:(NSArray *)items treeListModel:(RQTreeListModel *)treeListModel section:(NSInteger)section {
  121. WeakSelf(weakSelf)
  122. NSArray *viewModels = [items.rac_sequence map:^(VideosItem *videosItem) {
  123. videosItem.subject = weakSelf.homePageSubjectType;
  124. RQHomeSubPageVideoItemViewModel *homeSubPageVideoItemViewModel = [[RQHomeSubPageVideoItemViewModel alloc] initWithVideosItem:videosItem];
  125. CGFloat cellWidth = (RQ_SCREEN_WIDTH - (16 * 3)) / 2.f;
  126. homeSubPageVideoItemViewModel.itemSize = CGSizeMake(cellWidth, cellWidth * (122.f / 167.f));
  127. homeSubPageVideoItemViewModel.operation = ^{
  128. RQVideoDetailViewModel *videoDetailViewModel = [[RQVideoDetailViewModel alloc] initWithServices:RQ_APPDELEGATE.services params:@{
  129. RQViewModelUtilKey : treeListModel,
  130. RQVideoItemIndexKey : @(0),
  131. RQVideoItemIndexPathKey : [NSIndexPath indexPathForRow:[items indexOfObject:videosItem] inSection:section],
  132. RQHomePageSubjectTypeKey : @(weakSelf.homePageSubjectType),
  133. }];
  134. if ([RQ_Video_Module isCanWatchWithVideosItem:videosItem]) {
  135. [RQ_APPDELEGATE.services pushViewModel:videoDetailViewModel animated:YES];
  136. }
  137. };
  138. return homeSubPageVideoItemViewModel;
  139. }].array;
  140. return viewModels ?: @[];
  141. }
  142. - (void)navPushHideTabbarToVC:(UIViewController *)vc {
  143. vc.hidesBottomBarWhenPushed = YES;
  144. [RQControllerHelper.currentViewController.navigationController qmui_pushViewController:vc animated:YES completion:nil];
  145. vc.hidesBottomBarWhenPushed = NO;
  146. }
  147. - (RQCommonGroupViewModel *)group {
  148. if (!_group) {
  149. _group = [RQCommonGroupViewModel groupViewModel];
  150. _group.itemViewModels = @[[[RQHomePageADItemViewModel alloc] initWithHomePageSubjectType:self.homePageSubjectType]];
  151. }
  152. return _group;
  153. }
  154. ///
  155. - (RQCommonGroupViewModel *)group0 {
  156. if (!_group0) {
  157. _group0 = [RQCommonGroupViewModel groupViewModel];
  158. if (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree || self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo) {
  159. _group0.headerHeight = 10.f;
  160. _group0.footerHeight = 10.f;
  161. _group0.itemViewModels = @[];
  162. } else if (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour){
  163. [_group0 setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
  164. groupModel.headerHeight = CGFLOAT_MIN;
  165. groupModel.footerHeight = 16.f;
  166. groupModel.footerBgColor = RQ_MAIN_BACKGROUNDCOLOR;
  167. }];
  168. _group0.itemViewModels = self.subjectOneOrFourSectionZeroArr;
  169. } else if (self.homePageSubjectType == RQHomePageSubjectType_SubjectOne){
  170. [_group0 setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
  171. groupModel.headerHeight = CGFLOAT_MIN;
  172. groupModel.footerHeight = 16.f;
  173. groupModel.footerBgColor = RQ_MAIN_BACKGROUNDCOLOR;
  174. }];
  175. if(RQ_YDTQuestion_Module.carType == RQHomePageCarType_Car){//小车科目一界面
  176. _group0.itemViewModels = self.subjectOneSectionZeroArr;
  177. }else{
  178. _group0.itemViewModels = self.subjectOneOrFourSectionZeroArr;
  179. }
  180. }
  181. }
  182. return _group0;
  183. }
  184. - (RQCommonGroupViewModel *)group1 {
  185. if (!_group1) {
  186. _group1 = [RQHomePageSectionOneGroupViewModel groupViewModel];
  187. if (self.homePageSubjectType == RQHomePageSubjectType_SubjectOne){
  188. if(RQ_YDTQuestion_Module.carType == RQHomePageCarType_Car){//小车科目一界面
  189. _group1.itemViewModels = @[];
  190. }else{
  191. _group1.itemViewModels = self.subjectOneOrFourSectionOneArr;
  192. }
  193. }else{
  194. _group1.itemViewModels = self.subjectOneOrFourSectionOneArr;
  195. }
  196. }
  197. return _group1;
  198. }
  199. - (RQCommonGroupViewModel *)group2_1 {
  200. if (!_group2_1) {
  201. _group2_1 = [RQHomePageSectionTwoGroupViewModel groupViewModel];
  202. _group2_1.footerHeight = 0.01;
  203. NYLIHomePageVideoExamItemViewModel *homePageVideoExamItemViewModel = [[NYLIHomePageVideoExamItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType];
  204. _group2_1.itemViewModels = @[homePageVideoExamItemViewModel];
  205. }
  206. return _group2_1;
  207. }
  208. - (RQCommonGroupViewModel *)group2 {
  209. if (!_group2) {
  210. _group2 = [RQHomePageSectionTwoGroupViewModel groupViewModel];
  211. RQHomePageSimulationExamItemViewModel *homePageSimulationExamItemViewModel = [[RQHomePageSimulationExamItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType];
  212. // NYLIHomePageSimulationExamItemViewModel *homePageSimulationExamItemViewModel = [[NYLIHomePageSimulationExamItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType];
  213. _group2.itemViewModels = @[homePageSimulationExamItemViewModel];
  214. }
  215. return _group2;
  216. }
  217. - (RQHomeSubPageVideoHeaderGroupViewModel *)group3WithTreeListModelArr:(NSArray *)treeListModelArr {
  218. /// 第一组
  219. RQHomeSubPageVideoHeaderGroupViewModel *group3 = [RQHomeSubPageVideoHeaderGroupViewModel groupViewModel];
  220. group3.header = (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree || self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? @"基础操作视频" : ((self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)? @"科目四视频教程" : @"科目一视频教程");
  221. __block NSInteger scrollItemSection;
  222. NSArray *arr = [[treeListModelArr.rac_sequence filter:^BOOL(RQTreeListModel *treeListModel) {
  223. return [treeListModel.typeName isEqualToString:self.subjectStr];
  224. }].array.rac_sequence map:^id _Nullable(RQTreeListModel *treeListModel) {
  225. self.treeListModel = treeListModel;
  226. group3.treeListModel = treeListModel;
  227. group3.homePageSubjectType = self.homePageSubjectType;
  228. return [treeListModel.children.rac_sequence map:^id _Nullable(ChildrenItem *childrenItem) {
  229. NSInteger section = [treeListModel.children indexOfObject:childrenItem];
  230. if (childrenItem.videos.count > 0) {
  231. return [self dataSourceWithItems:childrenItem.videos treeListModel:treeListModel section:section];
  232. } else {
  233. if ([childrenItem.typeName isEqualToString:@"基础操作"]) {
  234. return [childrenItem.children.rac_sequence map:^id _Nullable(ChildrenItem *childrenItemA) {
  235. group3.mySection = section;
  236. return [self dataSourceWithItems:childrenItemA.videos treeListModel:treeListModel section:section];
  237. }].array;
  238. }
  239. else {
  240. scrollItemSection = section;
  241. NSArray *arrr = [childrenItem.children.rac_sequence map:^id _Nullable(ChildrenItem *childrenItemA) {
  242. if (childrenItemA.videos.count > 0) {
  243. return childrenItemA;
  244. } else {
  245. return nil;
  246. }
  247. }].array;
  248. [self.mutableArrr addObjectsFromArray:arrr];
  249. return nil;
  250. }
  251. }
  252. }].array;
  253. }].array;
  254. [self dataDealWithDataArr:arr completion:^(NSArray *arr) {
  255. group3.itemViewModels = arr;
  256. }];
  257. RQHomeSubPageVideoScrollItemViewModel *homeSubPageVideoScrollItemViewModel = [[RQHomeSubPageVideoScrollItemViewModel alloc] initWithChildrenItemArr:self.mutableArrr.copy treeListModel:self.treeListModel homePageSubjectType:self.homePageSubjectType section:scrollItemSection];
  258. if (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree || self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo) {
  259. self.group0.itemViewModels = @[homeSubPageVideoScrollItemViewModel];
  260. }
  261. return group3;
  262. }
  263. - (RQHomeSubPageVideoHeaderGroupViewModel *)group4WithDspListModelArr:(NSArray *)dspListModelArr {
  264. @weakify(self)
  265. /// 第二组
  266. RQHomeSubPageVideoHeaderGroupViewModel *group4 = [RQHomeSubPageVideoHeaderGroupViewModel groupViewModel];
  267. group4.header = @"短视频";
  268. self.group3.footerHeight = (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree || self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? ((dspListModelArr.count > 0)? 10 : CGFLOAT_MIN) : CGFLOAT_MIN;
  269. if (dspListModelArr.count >= 6) {
  270. group4.footerHeight = 48.f;
  271. group4.footer = @"查看更多 >";
  272. dspListModelArr = [dspListModelArr subarrayWithRange:NSMakeRange(0, 6)];
  273. }
  274. // NSArray *viewModels = [dspListModelArr.rac_sequence map:^(VideosItem *videosItem) {
  275. // RQHomeSubPageVideoItemViewModel *homeSubPageVideoItemViewModel = [[RQHomeSubPageVideoItemViewModel alloc] initWithVideosItem:videosItem];
  276. // homeSubPageVideoItemViewModel.operation = ^{
  277. // @strongify(self)
  278. // RQDspVideoDetailViewModel *viewModel = [[RQDspVideoDetailViewModel alloc] initWithServices:self.services params:@{
  279. // RQViewCommonValueKey: [NSIndexPath indexPathForRow:[dspListModelArr indexOfObject:videosItem] inSection:0],
  280. // }];
  281. // [self.services pushViewModel:viewModel animated:YES];
  282. // };
  283. // return homeSubPageVideoItemViewModel;
  284. // }].array;
  285. // group4.itemViewModels = (self.homePageSubjectType == RQHomePageSubjectType_SubjectThree || self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? viewModels
  286. // : @[];
  287. return group4;
  288. }
  289. /// 科目三---灯光操作/语音模拟
  290. - (RQCommonGroupViewModel *)group5 {
  291. if (!_group5) {
  292. _group5 = [RQCommonGroupViewModel groupViewModel];
  293. _group5.headerHeight = 10.f;
  294. _group5.headerHeight = 10.f;
  295. RQHomeSubPageNormalItemViewModel *item0 = [[RQHomeSubPageNormalItemViewModel alloc] init];
  296. item0.icon = @"subject3_light_ico";
  297. item0.title = @"灯光操作";
  298. item0.itemSize = CGSizeMake(RQ_SCREEN_WIDTH / 2.f - 8.f, 54.f);
  299. item0.operation = ^{
  300. LightingAndSoundVC *VC = [[LightingAndSoundVC alloc] init];
  301. VC.styleTag = 4;
  302. [self navPushHideTabbarToVC:VC];
  303. };
  304. item0.bottomLineHide = YES;
  305. RQHomeSubPageNormalItemViewModel *item1 = [[RQHomeSubPageNormalItemViewModel alloc] init];
  306. item1.icon = @"subject3_voice_icon";
  307. item1.title = @"语音模拟";
  308. item1.itemSize = CGSizeMake(RQ_SCREEN_WIDTH / 2.f - 8.f, 54.f);
  309. item1.bottomLineHide = YES;
  310. item1.operation = ^{
  311. LightingAndSoundVC *VC = [[LightingAndSoundVC alloc] init];
  312. VC.styleTag = 5;
  313. [self navPushHideTabbarToVC:VC];
  314. };
  315. _group5.itemViewModels = @[item0, item1];
  316. }
  317. return _group5;
  318. }
  319. - (RQCommonGroupViewModel *)group12123 {
  320. if (!_group12123) {
  321. _group12123 = [RQCommonGroupViewModel groupViewModel];
  322. RQHomePageJiaoGuan12123ItemViewModel *homePageJiaoGuan12123ItemViewModel = [[RQHomePageJiaoGuan12123ItemViewModel alloc] init];
  323. _group12123.itemViewModels = @[homePageJiaoGuan12123ItemViewModel];
  324. _group12123.headerHeight = [RQ_YDTQuestion_Module.isZhiGeZheng isEqualToString:@"YES"]? 10.f : 0.f;
  325. _group12123.footerHeight = 10.f;
  326. }
  327. return _group12123;
  328. }
  329. - (RQCommonGroupViewModel *)groupDriveMethods {
  330. if (!_groupDriveMethods) {
  331. _groupDriveMethods = [RQCommonGroupViewModel groupViewModel];
  332. RQHomePageDriveMethodItemViewModel *homePageDriveMethodItemViewModel = [[RQHomePageDriveMethodItemViewModel alloc] init];
  333. _groupDriveMethods.itemViewModels = @[homePageDriveMethodItemViewModel];
  334. _groupDriveMethods.footerHeight = 10.f;
  335. }
  336. return _groupDriveMethods;
  337. }
  338. - (RQCommonGroupViewModel *)groupSubject3Module {
  339. if (!_groupSubject3Module) {
  340. _groupSubject3Module = [RQCommonGroupViewModel groupViewModel];
  341. RQHomePageSubjectModuleItemViewModel *homePageSubjectModuleItemViewModel = [[RQHomePageSubjectModuleItemViewModel alloc] init];
  342. _groupSubject3Module.itemViewModels = @[homePageSubjectModuleItemViewModel];
  343. }
  344. return _groupSubject3Module;
  345. }
  346. - (RQCommonGroupViewModel *)groupKaoChang {
  347. if (!_groupKaoChang) {
  348. _groupKaoChang = [RQCommonGroupViewModel groupViewModel];
  349. }
  350. [_groupKaoChang setCustomStyleWithRQCommonGroupModel:^(RQCommonGroupModel *groupModel) {
  351. #if defined(DEBUG)||defined(_DEBUG)
  352. groupModel.footerHeight = 20.f;
  353. #else
  354. groupModel.footerHeight = [RQ_COMMON_MANAGER.JSJP_APP_KAOCHANG_OPEN_ARR containsObject:RQ_USER_MANAGER.currentUser.city]? 20.f : CGFLOAT_MIN;
  355. #endif
  356. groupModel.footerBgColor = UIColor.whiteColor;
  357. }];
  358. RQTeachSchoolVideoItemViewModel *teachSchoolVideoItemViewModel = [[RQTeachSchoolVideoItemViewModel alloc] init];
  359. #if defined(DEBUG)||defined(_DEBUG)
  360. _groupKaoChang.itemViewModels = @[teachSchoolVideoItemViewModel];
  361. #else
  362. _groupKaoChang.itemViewModels = [RQ_COMMON_MANAGER.JSJP_APP_KAOCHANG_OPEN_ARR containsObject:RQ_USER_MANAGER.currentUser.city]? @[teachSchoolVideoItemViewModel] : @[];
  363. #endif
  364. return _groupKaoChang;
  365. }
  366. - (NSMutableArray *)mutableArrr {
  367. if (!_mutableArrr) {
  368. _mutableArrr = @[].mutableCopy;
  369. }
  370. return _mutableArrr;
  371. }
  372. - (NSString *)subjectStr {
  373. return (self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)? @"科目四" : ((self.homePageSubjectType == RQHomePageSubjectType_SubjectThree)? @"科目三" : (self.homePageSubjectType == RQHomePageSubjectType_SubjectTwo)? @"科目二" : @"科目一");
  374. }
  375. - (NSArray *)subjectOneSectionZeroArr {
  376. return @[
  377. [[NYHomePageOneBigItemViewModel alloc] initWithNYHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType treeListModel:self.treeListModel]
  378. ];
  379. }
  380. - (NSArray *)subjectOneOrFourSectionZeroArr {
  381. return [self.subjectOneOrFourSectionZeroBigModelArr.rac_sequence.signal map:^id _Nullable(RQHomePageOneOrFourItemModel *homePageOneOrFourItemModel) {
  382. RQHomePageOneOrFourBigItemViewModel *itemViewModel = [[RQHomePageOneOrFourBigItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType homePageOneOrFourItemModel:homePageOneOrFourItemModel];
  383. itemViewModel.isLeft = [self.leftTitleArr containsObject:itemViewModel.title];
  384. return itemViewModel;
  385. }].toArray;
  386. }
  387. - (NSArray *)subjectOneOrFourSectionOneArr {
  388. return [self.subjectOneOrFourSectionZeroSmallModelArr.rac_sequence.signal map:^id _Nullable(RQHomePageOneOrFourItemModel *homePageOneOrFourItemModel) {
  389. RQHomePageOneOrFourSmallItemViewModel *itemViewModel = [[RQHomePageOneOrFourSmallItemViewModel alloc] initWithRQHomePageCarType:self.homePageCarType homePageSubjectType:self.homePageSubjectType homePageOneOrFourItemModel:homePageOneOrFourItemModel];
  390. itemViewModel.isLeft = [self.leftTitleArr containsObject:itemViewModel.title];
  391. return itemViewModel;
  392. }].toArray;
  393. }
  394. - (NSArray *)subjectOneOrFourSectionZeroBigModelArr {
  395. return @[
  396. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"模拟考试" iconImgStr:@"模拟考试"],
  397. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"顺序练习" iconImgStr:@"顺序练习"],
  398. ];
  399. }
  400. - (NSArray *)subjectOneOrFourSectionZeroSmallModelArr {
  401. return [RQ_YDTQuestion_Module.isZhiGeZheng isEqualToString:@"YES"]?
  402. @[
  403. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"专项练习" iconImgStr:@"专项练习"],
  404. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"错题收藏" iconImgStr:@"错题收藏"],
  405. ] :
  406. (
  407. // RQ_COMMON_MANAGER.APP_SWITCH? @[
  408. // [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"精选500题" iconImgStr:@"精选500题"],
  409. // [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"新规秘卷" iconImgStr:@"新规秘卷"],
  410. // [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"专项练习" iconImgStr:@"专项练习"],
  411. // [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"真实考场" iconImgStr:@"真实考场"],
  412. // [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"错题收藏" iconImgStr:@"错题收藏"],
  413. // ] :
  414. @[
  415. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"VIP课程" iconImgStr:(self.homePageSubjectType == RQHomePageSubjectType_SubjectOne)? @"科一VIP" : @"科四VIP"],
  416. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:((RQ_YDTQuestion_Module.carType == RQHomePageCarType_Car&&self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)?@"精选300题":@"精选500题") iconImgStr:((RQ_YDTQuestion_Module.carType == RQHomePageCarType_Car&&self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)?@"精选300题":@"精选500题")],
  417. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"考前秘卷" iconImgStr:@"新规秘卷"],
  418. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"专项练习" iconImgStr:@"专项练习"],
  419. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"真实考场" iconImgStr:@"真实考场"],
  420. [[RQHomePageOneOrFourItemModel alloc] initWithTitleStr:@"错题收藏" iconImgStr:@"错题收藏"],
  421. ]
  422. );
  423. }
  424. - (NSArray *)leftTitleArr {
  425. return @[@"模拟考试",@"VIP课程",@"考前秘卷",@"真实考场"];
  426. }
  427. - (NSArray *)rightTitleArr {
  428. return @[@"顺序练习",((RQ_YDTQuestion_Module.carType == RQHomePageCarType_Car&&self.homePageSubjectType == RQHomePageSubjectType_SubjectFour)?@"精选300题":@"精选500题"),@"专项练习",@"错题收藏"];
  429. }
  430. @end