JXHomeHeaderData.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. //
  2. // JXHomeHeaderData.m
  3. // AICity
  4. //
  5. // 首页头部数据模型实现
  6. //
  7. #import "JXHomeHeaderData.h"
  8. #pragma mark - Banner Item Implementation
  9. @implementation JXBannerItem
  10. + (instancetype)modelWithDictionary:(NSDictionary *)dict {
  11. if (!dict || ![dict isKindOfClass:[NSDictionary class]]) {
  12. return nil;
  13. }
  14. JXBannerItem *item = [[JXBannerItem alloc] init];
  15. item.itemId = [dict[@"id"] integerValue];
  16. item.name = dict[@"name"] ?: @"";
  17. item.hCoverUrl = dict[@"h_cover_url"];
  18. item.vCoverUrl = dict[@"v_cover_url"];
  19. item.describe = dict[@"describe"];
  20. item.score = [dict[@"score"] floatValue];
  21. item.collected = [dict[@"collected"] boolValue];
  22. item.movieType = [dict[@"movie_type"] integerValue];
  23. item.categories = dict[@"categories"];
  24. item.sectionCount = [dict[@"section_count"] integerValue];
  25. return item;
  26. }
  27. @end
  28. #pragma mark - Hot Drama Implementation
  29. @implementation JXHotDrama
  30. + (instancetype)modelWithDictionary:(NSDictionary *)dict {
  31. if (!dict || ![dict isKindOfClass:[NSDictionary class]]) {
  32. return nil;
  33. }
  34. JXHotDrama *drama = [[JXHotDrama alloc] init];
  35. drama.dbId = [dict[@"id"] integerValue];
  36. drama.jxDramaId = [dict[@"jx_drama_id"] longLongValue];
  37. drama.contentType = dict[@"content_type"] ?: @"";
  38. drama.title = dict[@"title"] ?: @"";
  39. drama.horizontalCoverUrl = dict[@"horizontal_cover_url"];
  40. drama.verticalCoverUrl = dict[@"vertical_cover_url"];
  41. drama.coverUrl = dict[@"cover_url"];
  42. drama.totalEpisodes = [dict[@"total_episodes"] integerValue];
  43. drama.position = [dict[@"position"] integerValue];
  44. return drama;
  45. }
  46. - (JXBannerItem *)toBannerItem {
  47. JXBannerItem *item = [[JXBannerItem alloc] init];
  48. item.itemId = (NSInteger)self.jxDramaId; // 使用剧星平台ID!
  49. item.name = self.title;
  50. item.hCoverUrl = self.horizontalCoverUrl ?: self.coverUrl;
  51. item.vCoverUrl = self.verticalCoverUrl ?: self.coverUrl;
  52. item.describe = [NSString stringWithFormat:@"短剧 · %ld集", (long)self.totalEpisodes];
  53. item.score = 0.0f;
  54. item.collected = NO;
  55. item.movieType = 1; // 电视剧类型
  56. item.categories = @"短剧";
  57. item.sectionCount = self.totalEpisodes;
  58. return item;
  59. }
  60. @end
  61. #pragma mark - Home Header Data Implementation
  62. @implementation JXHomeHeaderData
  63. + (instancetype)modelWithDictionary:(NSDictionary *)dict {
  64. if (!dict || ![dict isKindOfClass:[NSDictionary class]]) {
  65. return nil;
  66. }
  67. JXHomeHeaderData *data = [[JXHomeHeaderData alloc] init];
  68. // 解析 banners
  69. NSArray *bannersArray = dict[@"banners"];
  70. if (bannersArray && [bannersArray isKindOfClass:[NSArray class]]) {
  71. NSMutableArray *banners = [NSMutableArray array];
  72. for (NSDictionary *bannerDict in bannersArray) {
  73. JXBannerItem *banner = [JXBannerItem modelWithDictionary:bannerDict];
  74. if (banner) {
  75. [banners addObject:banner];
  76. }
  77. }
  78. data.banners = banners;
  79. }
  80. // 解析 hot_movies
  81. NSArray *hotMoviesArray = dict[@"hot_movies"];
  82. if (hotMoviesArray && [hotMoviesArray isKindOfClass:[NSArray class]]) {
  83. NSMutableArray *hotMovies = [NSMutableArray array];
  84. for (NSDictionary *movieDict in hotMoviesArray) {
  85. JXBannerItem *movie = [JXBannerItem modelWithDictionary:movieDict];
  86. if (movie) {
  87. [hotMovies addObject:movie];
  88. }
  89. }
  90. data.hotMovies = hotMovies;
  91. }
  92. // 解析 hot_dramas
  93. NSArray *hotDramasArray = dict[@"hot_dramas"];
  94. if (hotDramasArray && [hotDramasArray isKindOfClass:[NSArray class]]) {
  95. NSMutableArray *hotDramas = [NSMutableArray array];
  96. for (NSDictionary *dramaDict in hotDramasArray) {
  97. JXHotDrama *drama = [JXHotDrama modelWithDictionary:dramaDict];
  98. if (drama) {
  99. [hotDramas addObject:drama];
  100. }
  101. }
  102. data.hotDramas = hotDramas;
  103. }
  104. return data;
  105. }
  106. - (NSArray<JXBannerItem *> *)getAllHotRecommends {
  107. NSMutableArray *allRecommends = [NSMutableArray array];
  108. // 添加热门影片
  109. if (self.hotMovies) {
  110. [allRecommends addObjectsFromArray:self.hotMovies];
  111. }
  112. // 添加热门短剧(转换为统一格式)
  113. if (self.hotDramas) {
  114. for (JXHotDrama *drama in self.hotDramas) {
  115. JXBannerItem *item = [drama toBannerItem];
  116. if (item) {
  117. [allRecommends addObject:item];
  118. }
  119. }
  120. }
  121. return allRecommends;
  122. }
  123. @end