AppHomePageService.cs 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  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. using GxPress.Repository.Interface.Teacher;
  18. using GxPress.Request.TeacherRequest;
  19. using GxPress.Result.Teacher;
  20. namespace GxPress.Service.Implement.AppHomePage
  21. {
  22. public class AppHomePageService : IAppHomePageService
  23. {
  24. private readonly IArticleGroupRepository articleGroupRepository;
  25. private readonly IMediaRepository mediaRepository;
  26. private readonly IMapper _mapper;
  27. private readonly IMiddleLableRepository _middleLableRepository;
  28. private readonly ISystemLabelRepository _systemLabelRepository;
  29. private readonly IMediaLableRepository _mediaLableRepository;
  30. private readonly IMiddleLableNexusRepository middleLableNexusRepository;
  31. private readonly ITeacherRepository teacherRepository;
  32. public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMiddleLableNexusRepository middleLableNexusRepository, IMediaLableRepository _mediaLableRepository, IMapper _mapper, ITeacherRepository teacherRepository)
  33. {
  34. this.articleGroupRepository = articleGroupRepository;
  35. this.mediaRepository = mediaRepository;
  36. this._middleLableRepository = _middleLableRepository;
  37. this._systemLabelRepository = _systemLabelRepository;
  38. this.middleLableNexusRepository = middleLableNexusRepository;
  39. this._mediaLableRepository = _mediaLableRepository;
  40. this._mapper = _mapper;
  41. this.teacherRepository = teacherRepository;
  42. }
  43. /// <summary>
  44. /// 大咖讲座
  45. /// </summary>
  46. /// <param name="request"></param>
  47. /// <returns></returns>
  48. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request)
  49. {
  50. var results = new List<AppLabelResult<MediaCathedraResult>>();
  51. //大师讲座
  52. if (request.StyleCss == "Cathedra")
  53. {
  54. request.Sort = "recommend";
  55. var items = await mediaRepository.GetMediasByTeacherAsync(request);
  56. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "今日推荐", IsPage = false, ResourceType = 40, Method = "", Items = items });
  57. request.Sort = "";
  58. items = await mediaRepository.GetMediasByTeacherAsync(request);
  59. results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "更多精彩", IsPage = true, ResourceType = 40, Method = "post", Items = items, ActionUrl = "api/app/page/cathedra-page" });
  60. foreach (var item in results)
  61. {
  62. foreach (var model in item.Items)
  63. {
  64. model.Duration = "02:19:20";
  65. model.ImageUrls = Common.Tools.StringUtils.AddDomain(model.ImageUrls);
  66. }
  67. }
  68. }
  69. //会员特供
  70. if (request.StyleCss == "VipSupply")
  71. {
  72. return await GetVipSupplyAsync(request);
  73. }
  74. //每日好书
  75. if (request.StyleCss == "DayGoodBook")
  76. {
  77. return await GetDayGoodBookAsync(request);
  78. }
  79. return results;
  80. }
  81. /// <summary>
  82. /// 每日好书
  83. /// </summary>
  84. /// <param name="request"></param>
  85. /// <returns></returns>
  86. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetDayGoodBookAsync(ArticleGroupRequest request)
  87. {
  88. request.ActionUrl = "api/app/page/lable";
  89. return await GetVipSupplyAsync(request);
  90. }
  91. /// <summary>
  92. /// 每日好文
  93. /// </summary>
  94. /// <param name="request"></param>
  95. /// <returns></returns>
  96. public async Task<PagedList<MediaCathedraResult>> GetDayGoodTextAsync(MediaSearchRequest request)
  97. {
  98. var result = new PagedList<MediaCathedraResult>();
  99. var model = await mediaRepository.GetAllAsync(request);
  100. var list = new List<MediaCathedraResult>();
  101. foreach (var item in model.Items)
  102. {
  103. var mediaCathedraResult = new MediaCathedraResult();
  104. mediaCathedraResult.Author = item.Author;
  105. mediaCathedraResult.CollectCount = item.CollectCount;
  106. mediaCathedraResult.CreatedDate = item.CreatedDate;
  107. mediaCathedraResult.Id = item.Id;
  108. mediaCathedraResult.ImageUrls = item.ImageUrls;
  109. mediaCathedraResult.MediaType = item.MediaType;
  110. mediaCathedraResult.ReadCount = item.ReadCount;
  111. mediaCathedraResult.Title = item.Title;
  112. mediaCathedraResult.Summary = item.Summary;
  113. mediaCathedraResult.Press = item.Press;
  114. list.Add(mediaCathedraResult);
  115. }
  116. result.Total = model.Total;
  117. result.Items = list;
  118. return result;
  119. }
  120. /// <summary>
  121. /// 会员特供
  122. /// </summary>
  123. /// <param name="request"></param>
  124. /// <returns></returns>
  125. public async Task<List<AppLabelResult<MediaCathedraResult>>> GetVipSupplyAsync(ArticleGroupRequest request)
  126. {
  127. var result = new List<AppLabelResult<MediaCathedraResult>>();
  128. //根据样式查找导航数据
  129. var articleGroup = await articleGroupRepository.GetArticleGroupAsync(request.StyleCss);
  130. if (articleGroup.IsMiddleLable)
  131. {
  132. //获取中间页面
  133. var middleLable = await _middleLableRepository.GetAsync(articleGroup.MiddleLableId);
  134. //获取中间页标签
  135. var middleLableNexusIds = await middleLableNexusRepository.GetAllTaskAsync(middleLable.Id);
  136. //获取标签
  137. var systemLabels = await _systemLabelRepository.GetAllAsync(middleLableNexusIds.Select(n => n.LableId).ToList());
  138. foreach (var item in systemLabels)
  139. {
  140. //获取媒体标签
  141. var mediaIds = await _mediaLableRepository.GetMediaIdsAysnc(item.Id);
  142. var medias = await mediaRepository.GetNavigationMediaResults(mediaIds, item.PageSize);
  143. var list = new List<MediaCathedraResult>();
  144. foreach (var mediaModel in medias)
  145. {
  146. 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 });
  147. }
  148. //获取常规数据
  149. var mediaCathedraResult = new AppLabelResult<MediaCathedraResult>()
  150. {
  151. IsPage = item.IsPage,
  152. Id = item.Id,
  153. LabelName = item.LabelName,
  154. ResourceType = 40,
  155. Items = list,
  156. Method = item.IsPage ? "post" : "",
  157. ActionUrl = item.IsPage ? request.ActionUrl : ""
  158. };
  159. result.Add(mediaCathedraResult);
  160. }
  161. }
  162. return result;
  163. }
  164. /// <summary>
  165. /// 大咖讲座
  166. /// </summary>
  167. /// <returns></returns>
  168. public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
  169. {
  170. var result = new PagedList<MediaCathedraResult>();
  171. result.Items = await mediaRepository.GetMediasByTeacherAsync(request);
  172. foreach (var item in result.Items)
  173. {
  174. item.ImageUrls = Common.Tools.StringUtils.AddDomain(item.ImageUrls);
  175. }
  176. result.Total = await mediaRepository.GetMediasByTeacherCountAsync(request);
  177. return result;
  178. }
  179. /// <summary>
  180. /// 根据IDs
  181. /// </summary>
  182. /// <returns></returns>
  183. public async Task<PagedList<MediaCathedraResult>> GetMediaByLableIdsAsync(MediaIdsRequest request)
  184. {
  185. var ids = await _mediaLableRepository.GetMediaIdsAysnc(request.LableId);
  186. request.Ids = ids.ToList();
  187. return await mediaRepository.GetMediaByLableIdsAsync(request);
  188. }
  189. /// <summary>
  190. /// 名师
  191. /// </summary>
  192. /// <param name="request"></param>
  193. /// <returns></returns>
  194. public async Task<PagedList<TeacherResult>> GetTeacherAsync(TeacherRequest request)
  195. {
  196. var teachers = await teacherRepository.GetTeacherResult(request);
  197. return teachers;
  198. }
  199. }
  200. }