Files
peko-ios/YuMi/Modules/YMNewHome/Presenter/XPNewHomeRecommendPresenter.m
eggmanQQQ 2077815bac 处理需求 #64
1. /miniGame/record/miniGameList 补充参数 roomUid
2024-06-07 17:10:06 +08:00

204 lines
7.1 KiB
Objective-C

//
// XPNewHomeRecommendPresenter.m
// YuMi
//
// Created by YuMi on 2023/6/18.
//
#import "XPNewHomeRecommendPresenter.h"
#import <ReactiveObjC/ReactiveObjC.h>
#import "Api+Home.h"
#import "Api+Guild.h"
#import "Api+LittleGame.h"
#import "AccountInfoStorage.h"
#import "HomeMenuInfoModel.h"
#import "HomeRecommendRoomModel.h"
#import "HomeBannerInfoModel.h"
#import "HomePlayRoomModel.h"
#import "XPNewHomeRecommendProtocol.h"
#import "ClanDetailInfoModel.h"
#import "LittleGameInfoModel.h"
@implementation XPNewHomeRecommendPresenter
/// 获取首页顶部的轮播图
- (void)getHomeTopBannerList {
RACSubject* banner = [RACSubject subject];
RACSubject* menu = [RACSubject subject];
[[RACSignal combineLatest:@[banner, menu] reduce:^id(NSArray* bannerList, NSArray* menuList){
//在这里 进行请求后的方法,回到主线程
dispatch_async(dispatch_get_main_queue(), ^{
//更新UI操作
[[self getView] getHomeTopBannerListSuccess:bannerList menuList:menuList];
});
return nil;
}] subscribeError:^(NSError * _Nullable error) {
dispatch_async(dispatch_get_main_queue(), ^{
//更新UI操作
[[self getView] getHomeRecommendDataFail];
});
}];
NSString * uid = [AccountInfoStorage instance].getUid;
[Api homeBannerList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomeBannerInfoModel modelsWithArray:data.data];
[banner sendNext:array];
[banner sendCompleted];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[banner sendError:nil];
[banner sendCompleted];
} errorToast:NO] uid:uid type:@"1"];
[Api homeMenuList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomeMenuInfoModel modelsWithArray:data.data];
[menu sendNext:array];
[menu sendCompleted];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[menu sendError:nil];
[menu sendCompleted];
}errorToast:NO] uid:uid];
}
/// 获取首页推荐列表
- (void)getHomeRecommendRoomList {
NSString * uid = [AccountInfoStorage instance].getUid;
[Api homeRecommendRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray<HomeRecommendRoomModel *> * array = [HomeRecommendRoomModel modelsWithArray:data.data];
if (array.count > 1) {
///排列顺序 1 - 6 0
NSArray * newArray = [array sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
HomeRecommendRoomModel * model1 = obj1;
HomeRecommendRoomModel * model2 = obj2;
return [model1.seq compare:model2.seq];
}];
if (newArray.count > 0) {
NSMutableArray * array = [NSMutableArray arrayWithArray:newArray];
NSMutableArray * temAray = [NSMutableArray array];
[newArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
HomeRecommendRoomModel * model = obj;
if (model.seq.intValue == 0) {
[temAray addObject:model];
[array removeObject:model];
}
}];
if (temAray.count > 0) {
[array addObjectsFromArray:temAray];
}
newArray = array.copy;
}
array = newArray;
}
[[self getView] getHomeRecommendRoomListSuccess:array];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getHomeRecommendDataFail];
}errorToast:NO] uid:uid];
}
/// 获取首页热门房间列表
- (void)getHomeHotRoomList {
[Api homeHotRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomeRecommendRoomModel modelsWithArray:data.data];
[[self getView] getHomeHotRoomListSuccess:array];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getHomeRecommendDataFail];
}]];
}
/// 组队开黑房间列表
/// @param pageNum 当前的页数
- (void)getPlayGameWithTeam:(int)pageNum{
NSString * uid = [AccountInfoStorage instance].getUid;
NSString * pageNumStr = [NSString stringWithFormat:@"%d", pageNum];
[Api homePlayGameTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[[self getView] getPlayGameWithTeamSuccess:array];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getHomeRecommendDataFail];
}errorToast:NO] uid:uid pageNum:pageNumStr pageSize:@"20"];
}
-(void)getHomeListDataWith:(int)pageNum completeHandle:(CompleteHandle)completeHandle{
RACSubject* playGame = [RACSubject subject];
RACSubject* friend = [RACSubject subject];
[[RACSignal combineLatest:@[playGame, friend] reduce:^id(NSArray *playGameList, NSArray *friendList){
if(completeHandle){
completeHandle(YES,playGameList,friendList);
}
return nil;
}] subscribeError:^(NSError * _Nullable error) {
if(completeHandle){
completeHandle(NO,@[],@[]);
}
}];
NSString * uid = [AccountInfoStorage instance].getUid;
NSString * pageNumStr = [NSString stringWithFormat:@"%d", pageNum];
[Api homePlayGameTeam:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[playGame sendNext:array];
[playGame sendCompleted];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[playGame sendError:nil];
}errorToast:NO] uid:uid pageNum:pageNumStr pageSize:@"20"];
if([AccountInfoStorage instance].getUid.length == 0){
[friend sendError:nil];
return;
}
[Api requsetFriendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[friend sendNext:array];
[friend sendCompleted];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[friend sendError:nil];
}]];
}
/// 热门房间(个人房)列表
- (void)getHomePersonalRoomList {
NSString * uid = [AccountInfoStorage instance].getUid;
[Api homePersonalRoomList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[[self getView] getHomePersonalRoomListSuccess:array ];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getHomeRecommendDataFail];
}errorToast:NO] uid:uid];
}
///发现新朋友
-(void)getFriendList{
if([AccountInfoStorage instance].getUid.length == 0){
[[self getView]getFriendListFail];
return;
}
[Api requsetFriendListComplection:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [HomePlayRoomModel modelsWithArray:data.data];
[[self getView]getFriendListSuccess:array ];
} fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView]getFriendListFail];
}]];
}
///获取小游戏列表
- (void)getLittleGameList {
NSString * uid = [[AccountInfoStorage instance] getUid];
if (!uid.length) {
[[self getView] getHomeRecommendDataFail];
return;
}
[Api getLittleGameList:[self createHttpCompletion:^(BaseModel * _Nonnull data) {
NSArray * array = [LittleGameInfoModel modelsWithArray:data.data];
[[self getView] onGetLittleGameListSuccess:array];
}fail:^(NSInteger code, NSString * _Nullable msg) {
[[self getView] getHomeRecommendDataFail];
}errorToast:NO]
roomUid:@""];
}
@end