YMHomePageListViewModel.m 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. //
  2. // YMHomePageListViewModel.m
  3. // MSYOUPAI
  4. //
  5. // Created by YoMi on 2024/2/11.
  6. // Copyright © 2024 MS. All rights reserved.
  7. //
  8. #import "YMHomePageListViewModel.h"
  9. #import "YMHomeListModel.h"
  10. @interface YMHomePageListViewModel ()
  11. /// 当前数据数量
  12. @property (nonatomic, assign) NSInteger currentSize;
  13. /// 首页分类类型
  14. @property (nonatomic, assign, readwrite) YMHomePageCategoryType categoryType;
  15. /// 列表数据
  16. @property (nonatomic, strong, readwrite) NSMutableArray <YMHomePageListCellViewModel*>*listDataArray;
  17. /// 请求Api链接
  18. @property (nonatomic, copy) NSString *requestApiUrl;
  19. @end
  20. @implementation YMHomePageListViewModel
  21. - (void)ym_initialize{
  22. [super ym_initialize];
  23. self.currentPage = 1;
  24. self.currentSize = 50;
  25. self.categoryType = [self.params integerValueForKey:ParamsCategoryType defaultValue:YMHomePageCategoryTypeHomeRecommend];
  26. self.requestApiUrl = self.tabURLStr;
  27. switch (self.categoryType) {
  28. case YMHomePageCategoryTypeHomeIndex: {
  29. self.requestApiUrl = self.tabURLStr;
  30. }
  31. break;
  32. case YMHomePageCategoryTypeHomeSkillAnchors: {
  33. self.requestApiUrl = HomeSkillAnchors;
  34. }
  35. break;
  36. case YMHomePageCategoryTypeHomeRecommendAnchors: {
  37. self.requestApiUrl = HomeRecommendAnchors;
  38. }
  39. break;
  40. case YMHomePageCategoryTypeHomeRecommend: {
  41. self.requestApiUrl = HomeRecommend;
  42. }
  43. break;
  44. case YMHomePageCategoryTypeHomeWCW: {
  45. self.requestApiUrl = HomeWCW;
  46. }
  47. break;
  48. case YMHomePageCategoryTypeHomeOnlineList: {
  49. self.requestApiUrl = HomeOnlineList;
  50. }
  51. break;
  52. case YMHomePageCategoryTypeHomeOnline: {
  53. self.requestApiUrl = HomeOnline;
  54. }
  55. break;
  56. case YMHomePageCategoryTypeHomeGetDesignated: {
  57. self.requestApiUrl = HomeGetDesignated;
  58. }
  59. break;
  60. case YMHomePageCategoryTypeHomeGetSameCityUser: {
  61. self.requestApiUrl = HomeGetSameCityUser;
  62. }
  63. break;
  64. case YMHomePageCategoryTypeHomeActiveAnchors: {
  65. self.requestApiUrl = HomeActiveAnchors;
  66. }
  67. break;
  68. case YMHomePageCategoryTypeHomeNewAnchors: {
  69. self.requestApiUrl = HomeNewAnchors;
  70. }
  71. break;
  72. case YMHomePageCategoryTypeHomeCityAnchors: {
  73. self.requestApiUrl = HomeCityAnchors;
  74. }
  75. break;
  76. case YMHomePageCategoryTypeHomeBanner: {
  77. self.requestApiUrl = HomeBanner;
  78. }
  79. break;
  80. default:
  81. break;
  82. }
  83. }
  84. - (void)getHomePageListData {
  85. @weakify(self)
  86. // [ZCHUDHelper showWithStatus:@"加载中..."];
  87. [LCHttpHelper requestWithURLString:self.tabURLStr parameters:@{
  88. @"page":@(self.currentPage),
  89. @"limit":@(self.currentSize)
  90. } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
  91. @strongify(self)
  92. NSDictionary* dict = (NSDictionary*)responseObject;
  93. NSInteger code = [[dict objectForKey:@"code"] integerValue];
  94. if (code == 0) {
  95. // [ZCHUDHelper dismiss];
  96. NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}];
  97. NSDictionary *activityDic = [data dictionaryValueForKey:@"activity" defaultValue:@{}];
  98. NSDictionary *listDic = [data dictionaryValueForKey:@"list" defaultValue:@{}];
  99. NSArray *result = [listDic arrayValueForKey:@"list" defaultValue:@[]];
  100. if (self.currentPage == 1) {
  101. [self.listDataArray removeAllObjects];
  102. }
  103. NSArray *viewModelArr = [[NSArray yy_modelArrayWithClass:[YMHomeListModel class] json:result].rac_sequence map:^(YMHomeListModel * _Nullable model) {
  104. YMHomePageListCellViewModel *viewModel = [[YMHomePageListCellViewModel alloc]initWithParams:@{
  105. ParamsModel:model
  106. }];
  107. return viewModel;
  108. }].array;
  109. [self.listDataArray addObjectsFromArray:viewModelArr];
  110. if(self.currentPage > 0 && self.currentPage % 5 == 0){
  111. [[SDImageCache sharedImageCache] clearMemory];
  112. }
  113. if (self.showUserInfoImperfectBlock) {
  114. self.showUserInfoImperfectBlock([activityDic boolValueForKey:@"is_info" defaultValue:NO]);
  115. }
  116. [self.refreshUISubject sendNext:@(result.count < self.currentSize ? YMFooterRefresh_HasNoMoreData : YMFooterRefresh_HasMoreData)];
  117. }else{
  118. [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
  119. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  120. [self.refreshUISubject sendNext:@(YMRefreshError)];
  121. });
  122. }
  123. } failure:^(NSError *error) {
  124. if(self.currentPage != 1){
  125. self.currentPage--;
  126. }
  127. [ZCHUDHelper showTitle:error.localizedDescription];
  128. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  129. [self.refreshUISubject sendNext:@(YMRefreshError)];
  130. });
  131. }];
  132. }
  133. - (NSMutableArray<YMHomePageListCellViewModel *> *)listDataArray{
  134. if (!_listDataArray) {
  135. _listDataArray = [NSMutableArray array];
  136. }
  137. return _listDataArray;
  138. }
  139. @end