// // JXHomeHeaderData.m // AICity // // 首页头部数据模型实现 // #import "JXHomeHeaderData.h" #pragma mark - Banner Item Implementation @implementation JXBannerItem + (instancetype)modelWithDictionary:(NSDictionary *)dict { if (!dict || ![dict isKindOfClass:[NSDictionary class]]) { return nil; } JXBannerItem *item = [[JXBannerItem alloc] init]; item.itemId = [dict[@"id"] integerValue]; item.name = dict[@"name"] ?: @""; item.hCoverUrl = dict[@"h_cover_url"]; item.vCoverUrl = dict[@"v_cover_url"]; item.describe = dict[@"describe"]; item.score = [dict[@"score"] floatValue]; item.collected = [dict[@"collected"] boolValue]; item.movieType = [dict[@"movie_type"] integerValue]; item.categories = dict[@"categories"]; item.sectionCount = [dict[@"section_count"] integerValue]; return item; } @end #pragma mark - Hot Drama Implementation @implementation JXHotDrama + (instancetype)modelWithDictionary:(NSDictionary *)dict { if (!dict || ![dict isKindOfClass:[NSDictionary class]]) { return nil; } JXHotDrama *drama = [[JXHotDrama alloc] init]; drama.dbId = [dict[@"id"] integerValue]; drama.jxDramaId = [dict[@"jx_drama_id"] longLongValue]; drama.contentType = dict[@"content_type"] ?: @""; drama.title = dict[@"title"] ?: @""; drama.horizontalCoverUrl = dict[@"horizontal_cover_url"]; drama.verticalCoverUrl = dict[@"vertical_cover_url"]; drama.coverUrl = dict[@"cover_url"]; drama.totalEpisodes = [dict[@"total_episodes"] integerValue]; drama.position = [dict[@"position"] integerValue]; return drama; } - (JXBannerItem *)toBannerItem { JXBannerItem *item = [[JXBannerItem alloc] init]; item.itemId = (NSInteger)self.jxDramaId; // 使用剧星平台ID! item.name = self.title; item.hCoverUrl = self.horizontalCoverUrl ?: self.coverUrl; item.vCoverUrl = self.verticalCoverUrl ?: self.coverUrl; item.describe = [NSString stringWithFormat:@"短剧 · %ld集", (long)self.totalEpisodes]; item.score = 0.0f; item.collected = NO; item.movieType = 1; // 电视剧类型 item.categories = @"短剧"; item.sectionCount = self.totalEpisodes; return item; } @end #pragma mark - Home Header Data Implementation @implementation JXHomeHeaderData + (instancetype)modelWithDictionary:(NSDictionary *)dict { if (!dict || ![dict isKindOfClass:[NSDictionary class]]) { return nil; } JXHomeHeaderData *data = [[JXHomeHeaderData alloc] init]; // 解析 banners NSArray *bannersArray = dict[@"banners"]; if (bannersArray && [bannersArray isKindOfClass:[NSArray class]]) { NSMutableArray *banners = [NSMutableArray array]; for (NSDictionary *bannerDict in bannersArray) { JXBannerItem *banner = [JXBannerItem modelWithDictionary:bannerDict]; if (banner) { [banners addObject:banner]; } } data.banners = banners; } // 解析 hot_movies NSArray *hotMoviesArray = dict[@"hot_movies"]; if (hotMoviesArray && [hotMoviesArray isKindOfClass:[NSArray class]]) { NSMutableArray *hotMovies = [NSMutableArray array]; for (NSDictionary *movieDict in hotMoviesArray) { JXBannerItem *movie = [JXBannerItem modelWithDictionary:movieDict]; if (movie) { [hotMovies addObject:movie]; } } data.hotMovies = hotMovies; } // 解析 hot_dramas NSArray *hotDramasArray = dict[@"hot_dramas"]; if (hotDramasArray && [hotDramasArray isKindOfClass:[NSArray class]]) { NSMutableArray *hotDramas = [NSMutableArray array]; for (NSDictionary *dramaDict in hotDramasArray) { JXHotDrama *drama = [JXHotDrama modelWithDictionary:dramaDict]; if (drama) { [hotDramas addObject:drama]; } } data.hotDramas = hotDramas; } return data; } - (NSArray *)getAllHotRecommends { NSMutableArray *allRecommends = [NSMutableArray array]; // 添加热门影片 if (self.hotMovies) { [allRecommends addObjectsFromArray:self.hotMovies]; } // 添加热门短剧(转换为统一格式) if (self.hotDramas) { for (JXHotDrama *drama in self.hotDramas) { JXBannerItem *item = [drama toBannerItem]; if (item) { [allRecommends addObject:item]; } } } return allRecommends; } @end