| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- //
- // 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<JXBannerItem *> *)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
|