123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- //
- // YMHomePageListViewModel.m
- // MSYOUPAI
- //
- // Created by YoMi on 2024/2/11.
- // Copyright © 2024 MS. All rights reserved.
- //
- #import "YMHomePageListViewModel.h"
- #import "YMHomeListModel.h"
- @interface YMHomePageListViewModel ()
- /// 当前数据数量
- @property (nonatomic, assign) NSInteger currentSize;
- /// 首页分类类型
- @property (nonatomic, assign, readwrite) YMHomePageCategoryType categoryType;
- /// 列表数据
- @property (nonatomic, strong, readwrite) NSMutableArray <YMHomePageListCellViewModel*>*listDataArray;
- /// 请求Api链接
- @property (nonatomic, copy) NSString *requestApiUrl;
- @end
- @implementation YMHomePageListViewModel
- - (void)ym_initialize{
- [super ym_initialize];
-
- self.currentPage = 1;
- self.currentSize = 50;
-
- self.categoryType = [self.params integerValueForKey:ParamsCategoryType defaultValue:YMHomePageCategoryTypeHomeRecommend];
-
- self.requestApiUrl = self.tabURLStr;
-
- switch (self.categoryType) {
- case YMHomePageCategoryTypeHomeIndex: {
- self.requestApiUrl = self.tabURLStr;
- }
- break;
- case YMHomePageCategoryTypeHomeSkillAnchors: {
- self.requestApiUrl = HomeSkillAnchors;
- }
- break;
- case YMHomePageCategoryTypeHomeRecommendAnchors: {
- self.requestApiUrl = HomeRecommendAnchors;
- }
- break;
- case YMHomePageCategoryTypeHomeRecommend: {
- self.requestApiUrl = HomeRecommend;
- }
- break;
- case YMHomePageCategoryTypeHomeWCW: {
- self.requestApiUrl = HomeWCW;
- }
- break;
- case YMHomePageCategoryTypeHomeOnlineList: {
- self.requestApiUrl = HomeOnlineList;
- }
- break;
- case YMHomePageCategoryTypeHomeOnline: {
- self.requestApiUrl = HomeOnline;
- }
- break;
- case YMHomePageCategoryTypeHomeGetDesignated: {
- self.requestApiUrl = HomeGetDesignated;
- }
- break;
- case YMHomePageCategoryTypeHomeGetSameCityUser: {
- self.requestApiUrl = HomeGetSameCityUser;
- }
- break;
- case YMHomePageCategoryTypeHomeActiveAnchors: {
- self.requestApiUrl = HomeActiveAnchors;
- }
- break;
- case YMHomePageCategoryTypeHomeNewAnchors: {
- self.requestApiUrl = HomeNewAnchors;
- }
- break;
- case YMHomePageCategoryTypeHomeCityAnchors: {
- self.requestApiUrl = HomeCityAnchors;
- }
- break;
- case YMHomePageCategoryTypeHomeBanner: {
- self.requestApiUrl = HomeBanner;
- }
- break;
- default:
- break;
- }
- }
- - (void)getHomePageListData {
- @weakify(self)
- // [ZCHUDHelper showWithStatus:@"加载中..."];
- [LCHttpHelper requestWithURLString:self.tabURLStr parameters:@{
- @"page":@(self.currentPage),
- @"limit":@(self.currentSize)
- } needToken:YES type:HttpRequestTypePost success:^(id responseObject) {
- @strongify(self)
- NSDictionary* dict = (NSDictionary*)responseObject;
- NSInteger code = [[dict objectForKey:@"code"] integerValue];
- if (code == 0) {
- // [ZCHUDHelper dismiss];
- NSDictionary *data = [dict dictionaryValueForKey:@"data" defaultValue:@{}];
- NSDictionary *activityDic = [data dictionaryValueForKey:@"activity" defaultValue:@{}];
- NSDictionary *listDic = [data dictionaryValueForKey:@"list" defaultValue:@{}];
- NSArray *result = [listDic arrayValueForKey:@"list" defaultValue:@[]];
- if (self.currentPage == 1) {
- [self.listDataArray removeAllObjects];
- }
- NSArray *viewModelArr = [[NSArray yy_modelArrayWithClass:[YMHomeListModel class] json:result].rac_sequence map:^(YMHomeListModel * _Nullable model) {
- YMHomePageListCellViewModel *viewModel = [[YMHomePageListCellViewModel alloc]initWithParams:@{
- ParamsModel:model
- }];
-
- return viewModel;
- }].array;
-
- [self.listDataArray addObjectsFromArray:viewModelArr];
-
- if(self.currentPage > 0 && self.currentPage % 5 == 0){
- [[SDImageCache sharedImageCache] clearMemory];
- }
-
- if (self.showUserInfoImperfectBlock) {
- self.showUserInfoImperfectBlock([activityDic boolValueForKey:@"is_info" defaultValue:NO]);
- }
-
- [self.refreshUISubject sendNext:@(result.count < self.currentSize ? YMFooterRefresh_HasNoMoreData : YMFooterRefresh_HasMoreData)];
- }else{
- [ZCHUDHelper showTitle:[dict stringValueForKey:@"message" defaultValue:@""]];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self.refreshUISubject sendNext:@(YMRefreshError)];
- });
- }
-
- } failure:^(NSError *error) {
- if(self.currentPage != 1){
- self.currentPage--;
- }
- [ZCHUDHelper showTitle:error.localizedDescription];
- dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
- [self.refreshUISubject sendNext:@(YMRefreshError)];
- });
- }];
- }
- - (NSMutableArray<YMHomePageListCellViewModel *> *)listDataArray{
- if (!_listDataArray) {
- _listDataArray = [NSMutableArray array];
- }
- return _listDataArray;
- }
- @end
|