AppHomePageService.cs 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  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. namespace GxPress.Service.Implement.AppHomePage
  17. {
  18. public class AppHomePageService : IAppHomePageService
  19. {
  20. private readonly IArticleGroupRepository articleGroupRepository;
  21. private readonly IMediaRepository mediaRepository;
  22. private readonly IMapper _mapper;
  23. private readonly IMiddleLableRepository _middleLableRepository;
  24. private readonly ISystemLabelRepository _systemLabelRepository;
  25. private readonly IMediaLableRepository _mediaLableRepository;
  26. private readonly IMiddleLableNexusRepository middleLableNexusRepository;
  27. public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMiddleLableNexusRepository middleLableNexusRepository, IMediaLableRepository _mediaLableRepository, IMapper _mapper)
  28. {
  29. this.articleGroupRepository = articleGroupRepository;
  30. this.mediaRepository = mediaRepository;
  31. this._middleLableRepository = _middleLableRepository;
  32. this._systemLabelRepository = _systemLabelRepository;
  33. this.middleLableNexusRepository = middleLableNexusRepository;
  34. this._mediaLableRepository = _mediaLableRepository;
  35. this._mapper = _mapper;
  36. }
  37. /// <summary>
  38. /// 大咖讲座
  39. /// </summary>
  40. /// <param name="request"></param>
  41. /// <returns></returns>
  42. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request)
  43. {
  44. var results = new List<AppLabelResult<MediaCathedraResult>>();
  45. //大师讲座
  46. if (request.StyleCss == "Cathedra")
  47. {
  48. request.Sort = "recommend";
  49. var items = await mediaRepository.GetMediasByTeacherAsync(request);
  50. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "今日推荐", IsPage = false, ResourceType = 40, Method = "", Items = items });
  51. request.Sort = "";
  52. items = await mediaRepository.GetMediasByTeacherAsync(request);
  53. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "更多精彩", IsPage = true, ResourceType = 40, Method = "post", Items = items, ActionUrl = "api/app/page/cathedra-page" });
  54. foreach (var item in results)
  55. {
  56. foreach (var model in item.Items)
  57. model.Duration = "02:19:20";
  58. }
  59. }
  60. //会员特供
  61. if (request.StyleCss == "VipSupply")
  62. {
  63. return await GetVipSupplyAsync(request);
  64. }
  65. //
  66. return results;
  67. }
  68. /// <summary>
  69. /// 会员特供
  70. /// </summary>
  71. /// <param name="request"></param>
  72. /// <returns></returns>
  73. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetVipSupplyAsync(ArticleGroupRequest request)
  74. {
  75. var result = new List<AppLabelResult<MediaCathedraResult>>();
  76. //根据样式查找导航数据
  77. var articleGroup = await articleGroupRepository.GetArticleGroupAsync(request.StyleCss);
  78. if (articleGroup.IsMiddleLable)
  79. {
  80. //获取中间页面
  81. var middleLable = await _middleLableRepository.GetAsync(articleGroup.MiddleLableId);
  82. //获取中间页标签
  83. var middleLableNexusIds = await middleLableNexusRepository.GetAllTaskAsync(middleLable.Id);
  84. //获取标签
  85. var systemLabels = await _systemLabelRepository.GetAllAsync(middleLableNexusIds.Select(n => n.LableId).ToList());
  86. foreach (var item in systemLabels)
  87. {
  88. //获取媒体标签
  89. var mediaIds = await _mediaLableRepository.GetMediaIdsAysnc(item.Id);
  90. var medias = await mediaRepository.GetNavigationMediaResults(mediaIds,item.PageSize);
  91. var list = new List<MediaCathedraResult>();
  92. foreach (var mediaModel in medias)
  93. {
  94. 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 });
  95. }
  96. //获取常规数据
  97. var mediaCathedraResult = new AppLabelResult<MediaCathedraResult>()
  98. {
  99. IsPage = false,
  100. Id = item.Id,
  101. LabelName = item.LabelName,
  102. ResourceType = 40,
  103. Items = list
  104. };
  105. result.Add(mediaCathedraResult);
  106. }
  107. }
  108. return result;
  109. }
  110. /// <summary>
  111. /// 大咖讲座
  112. /// </summary>
  113. /// <returns></returns>
  114. public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
  115. {
  116. var result = new PagedList<MediaCathedraResult>();
  117. result.Items = await mediaRepository.GetMediasByTeacherAsync(request);
  118. foreach (var item in result.Items)
  119. {
  120. item.ImageUrls = Common.Tools.StringUtils.AddDomain(item.ImageUrls);
  121. }
  122. result.Total = await mediaRepository.GetMediasByTeacherCountAsync(request);
  123. return result;
  124. }
  125. }
  126. }