AppHomePageService.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. using GxPress.Service.Interface.AppHomePage;
  2. using GxPress.Repository.Interface;
  3. using GxPress.Repository.Interface.Media;
  4. using GxPress.Request.ArticleGroup;
  5. using System.Threading.Tasks;
  6. using System.Collections.Generic;
  7. using GxPress.Result.SystemLabel;
  8. using GxPress.Result.Media;
  9. using GxPress.Repository.Interface.SystemLabel;
  10. using GxPress.Repository.Interface.Navigation;
  11. using GxPress.Result.MiddleLable;
  12. using AutoMapper;
  13. using System.Linq;
  14. using GxPress.Common.Tools;
  15. using GxPress.Common.Page;
  16. using GxPress.Request.Media;
  17. namespace GxPress.Service.Implement.AppHomePage
  18. {
  19. public class AppHomePageService : IAppHomePageService
  20. {
  21. private readonly IArticleGroupRepository articleGroupRepository;
  22. private readonly IMediaRepository mediaRepository;
  23. private readonly IMapper _mapper;
  24. private readonly IMiddleLableRepository _middleLableRepository;
  25. private readonly ISystemLabelRepository _systemLabelRepository;
  26. private readonly IMediaLableRepository _mediaLableRepository;
  27. private readonly IMiddleLableNexusRepository middleLableNexusRepository;
  28. public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMiddleLableNexusRepository middleLableNexusRepository, IMediaLableRepository _mediaLableRepository, IMapper _mapper)
  29. {
  30. this.articleGroupRepository = articleGroupRepository;
  31. this.mediaRepository = mediaRepository;
  32. this._middleLableRepository = _middleLableRepository;
  33. this._systemLabelRepository = _systemLabelRepository;
  34. this.middleLableNexusRepository = middleLableNexusRepository;
  35. this._mediaLableRepository = _mediaLableRepository;
  36. this._mapper = _mapper;
  37. }
  38. /// <summary>
  39. /// 大咖讲座
  40. /// </summary>
  41. /// <param name="request"></param>
  42. /// <returns></returns>
  43. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request)
  44. {
  45. var results = new List<AppLabelResult<MediaCathedraResult>>();
  46. //大师讲座
  47. if (request.StyleCss == "Cathedra")
  48. {
  49. request.Sort = "recommend";
  50. var items = await mediaRepository.GetMediasByTeacherAsync(request);
  51. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "今日推荐", IsPage = false, ResourceType = 40, Method = "", Items = items });
  52. request.Sort = "";
  53. items = await mediaRepository.GetMediasByTeacherAsync(request);
  54. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "更多精彩", IsPage = true, ResourceType = 40, Method = "post", Items = items, ActionUrl = "api/app/page/cathedra-page" });
  55. foreach (var item in results)
  56. {
  57. foreach (var model in item.Items)
  58. model.Duration = "02:19:20";
  59. }
  60. }
  61. //会员特供
  62. if (request.StyleCss == "VipSupply")
  63. {
  64. return await GetVipSupplyAsync(request);
  65. }
  66. return results;
  67. }
  68. /// <summary>
  69. /// 每日好文
  70. /// </summary>
  71. /// <param name="request"></param>
  72. /// <returns></returns>
  73. public async Task<PagedList<MediaCathedraResult>> GetDayGoodTextAsync(MediaSearchRequest request)
  74. {
  75. var result = new PagedList<MediaCathedraResult>();
  76. var model = await mediaRepository.GetAllAsync(request);
  77. var list = new List<MediaCathedraResult>();
  78. foreach (var item in model.Items)
  79. {
  80. var mediaCathedraResult = new MediaCathedraResult();
  81. mediaCathedraResult.Author = item.Author;
  82. mediaCathedraResult.CollectCount = item.CollectCount;
  83. mediaCathedraResult.CreatedDate = item.CreatedDate;
  84. mediaCathedraResult.Id = item.Id;
  85. mediaCathedraResult.ImageUrls = item.ImageUrls;
  86. mediaCathedraResult.MediaType = item.MediaType;
  87. mediaCathedraResult.ReadCount = item.ReadCount;
  88. mediaCathedraResult.Title = item.Title;
  89. list.Add(mediaCathedraResult);
  90. }
  91. result.Total = model.Total;
  92. result.Items = list;
  93. return result;
  94. }
  95. /// <summary>
  96. /// 会员特供
  97. /// </summary>
  98. /// <param name="request"></param>
  99. /// <returns></returns>
  100. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetVipSupplyAsync(ArticleGroupRequest request)
  101. {
  102. var result = new List<AppLabelResult<MediaCathedraResult>>();
  103. //根据样式查找导航数据
  104. var articleGroup = await articleGroupRepository.GetArticleGroupAsync(request.StyleCss);
  105. if (articleGroup.IsMiddleLable)
  106. {
  107. //获取中间页面
  108. var middleLable = await _middleLableRepository.GetAsync(articleGroup.MiddleLableId);
  109. //获取中间页标签
  110. var middleLableNexusIds = await middleLableNexusRepository.GetAllTaskAsync(middleLable.Id);
  111. //获取标签
  112. var systemLabels = await _systemLabelRepository.GetAllAsync(middleLableNexusIds.Select(n => n.LableId).ToList());
  113. foreach (var item in systemLabels)
  114. {
  115. //获取媒体标签
  116. var mediaIds = await _mediaLableRepository.GetMediaIdsAysnc(item.Id);
  117. var medias = await mediaRepository.GetNavigationMediaResults(mediaIds, item.PageSize);
  118. var list = new List<MediaCathedraResult>();
  119. foreach (var mediaModel in medias)
  120. {
  121. list.Add(new MediaCathedraResult { Id = mediaModel.Id, Title = mediaModel.Title, ImageUrls = StringUtils.AddDomain(mediaModel.ImageUrls), Author = mediaModel.Author, ReadCount = mediaModel.ReadCount, CreatedDate = mediaModel.CreatedDate, CollectCount = mediaModel.CollectCount, MediaType = mediaModel.MediaType });
  122. }
  123. //获取常规数据
  124. var mediaCathedraResult = new AppLabelResult<MediaCathedraResult>()
  125. {
  126. IsPage = false,
  127. Id = item.Id,
  128. LabelName = item.LabelName,
  129. ResourceType = 40,
  130. Items = list
  131. };
  132. result.Add(mediaCathedraResult);
  133. }
  134. }
  135. return result;
  136. }
  137. /// <summary>
  138. /// 大咖讲座
  139. /// </summary>
  140. /// <returns></returns>
  141. public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
  142. {
  143. var result = new PagedList<MediaCathedraResult>();
  144. result.Items = await mediaRepository.GetMediasByTeacherAsync(request);
  145. foreach (var item in result.Items)
  146. {
  147. item.ImageUrls = Common.Tools.StringUtils.AddDomain(item.ImageUrls);
  148. }
  149. result.Total = await mediaRepository.GetMediasByTeacherCountAsync(request);
  150. return result;
  151. }
  152. }
  153. }