123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- using GxPress.Service.Interface.AppHomePage;
- using GxPress.Repository.Interface;
- using GxPress.Repository.Interface.Media;
- using GxPress.Request.ArticleGroup;
- using System.Threading.Tasks;
- using System.Collections.Generic;
- using GxPress.Result.SystemLabel;
- using GxPress.Result.Media;
- using GxPress.Repository.Interface.SystemLabel;
- using GxPress.Repository.Interface.Navigation;
- using AutoMapper;
- using System.Linq;
- using GxPress.Common.Tools;
- using GxPress.Common.Page;
- using GxPress.Request.Media;
- using GxPress.Repository.Interface.Teacher;
- using GxPress.Request.TeacherRequest;
- using GxPress.Result.Teacher;
- namespace GxPress.Service.Implement.AppHomePage
- {
- public partial class AppHomePageService : IAppHomePageService
- {
- private readonly IArticleGroupRepository articleGroupRepository;
- private readonly IMediaRepository mediaRepository;
- private readonly IMapper _mapper;
- private readonly IMiddleLableRepository _middleLableRepository;
- private readonly ISystemLabelRepository _systemLabelRepository;
- private readonly IMediaLableRepository _mediaLableRepository;
- private readonly IMiddleLableNexusRepository middleLableNexusRepository;
- private readonly ISystemLableMediaRepository systemLableMediaRepository;
- private readonly ITeacherRepository teacherRepository;
- public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMiddleLableNexusRepository middleLableNexusRepository, IMediaLableRepository _mediaLableRepository, IMapper _mapper, ITeacherRepository teacherRepository, ISystemLableMediaRepository systemLableMediaRepository)
- {
- this.articleGroupRepository = articleGroupRepository;
- this.mediaRepository = mediaRepository;
- this._middleLableRepository = _middleLableRepository;
- this._systemLabelRepository = _systemLabelRepository;
- this.middleLableNexusRepository = middleLableNexusRepository;
- this._mediaLableRepository = _mediaLableRepository;
- this._mapper = _mapper;
- this.teacherRepository = teacherRepository;
- this.systemLableMediaRepository = systemLableMediaRepository;
- }
- /// <summary>
- /// 大咖讲座
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request)
- {
- var results = new List<AppLabelResult<MediaCathedraResult>>();
- //大师讲座
- if (request.StyleCss == "Cathedra")
- {
- request.Sort = "";
- request.PerPage = 20;
- var items = await mediaRepository.GetMediasByTeacherAsync(request);
- results.Add(new AppLabelResult<MediaCathedraResult>()
- {
- LabelName = "今日推荐",
- IsPage = false,
- ResourceType = 40,
- Method = "",
- Items = items
- });
- request.Sort = "recommend";
- request.PerPage = 20;
- items = await mediaRepository.GetMediasByTeacherAsync(request);
- results.Add(new AppLabelResult<MediaCathedraResult>()
- {
- LabelName = "更多精彩",
- IsPage = true,
- ResourceType = 40,
- Method = "post",
- Items = items,
- ActionUrl = "api/app/page/cathedra-page"
- });
- foreach (var item in results)
- {
- foreach (var model in item.Items)
- {
- model.Duration = "02:19:20";
- model.ImageUrls = Common.Tools.StringUtils.AddDomain(model.ImageUrls);
- }
- }
- }
- //会员特供
- if (request.StyleCss == "VipSupply")
- {
- return await GetVipSupplyAsync(request);
- }
- //每日好书
- if (request.StyleCss == "DayGoodBook")
- {
- return await GetDayGoodBookAsync(request);
- }
- return results;
- }
- /// <summary>
- /// 每日好书
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<List<AppLabelResult<MediaCathedraResult>>> GetDayGoodBookAsync(ArticleGroupRequest request)
- {
- request.ActionUrl = "api/app/page/lable";
- return await GetVipSupplyAsync(request);
- }
- /// <summary>
- /// 每日好文
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<PagedList<MediaCathedraResult>> GetDayGoodTextAsync(MediaSearchRequest request)
- {
- var result = new PagedList<MediaCathedraResult>();
- var model = await mediaRepository.GetAllAsync(request);
- var list = new List<MediaCathedraResult>();
- foreach (var item in model.Items)
- {
- var mediaCathedraResult = new MediaCathedraResult();
- mediaCathedraResult.Author = item.Author;
- mediaCathedraResult.CollectCount = item.CollectCount;
- mediaCathedraResult.CreatedDate = item.CreatedDate;
- mediaCathedraResult.Id = item.Id;
- mediaCathedraResult.ImageUrls = item.ImageUrls;
- mediaCathedraResult.MediaType = item.MediaType;
- mediaCathedraResult.ReadCount = item.ReadCount;
- mediaCathedraResult.Title = item.Title;
- mediaCathedraResult.Summary = item.Summary;
- mediaCathedraResult.Press = item.Press;
- list.Add(mediaCathedraResult);
- }
- result.Total = model.Total;
- foreach (var item in list)
- {
- item.ImageUrls = StringUtils.AddDomain(item.ImageUrls);
- }
- result.Items = list;
- return result;
- }
- /// <summary>
- /// 获取每日微课
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<PagedList<MediaCathedraResult>> GetDayWeBookAsync(MediaDayWeBookRequest request)
- {
- var result = new PagedList<MediaCathedraResult>();
- var systemLabel = await _systemLabelRepository.GetByNameAsync(request.Name);
- var mediaLableIdRequest = new MediaLableIdRequest();
- mediaLableIdRequest.Page = request.Page;
- mediaLableIdRequest.PerPage = request.PerPage;
- var ids = await systemLableMediaRepository.GetMediaIdsAsync(systemLabel.Id, 0);
- //var mediaIds = await _mediaLableRepository.GetMediaIdsAysnc(systemLabel.Id);
- mediaLableIdRequest.Ids = ids.ToList();
- return await mediaRepository.GetMediaByLableIdAsync(mediaLableIdRequest);
- }
- /// <summary>
- /// 会员特供
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<List<AppLabelResult<MediaCathedraResult>>> GetVipSupplyAsync(ArticleGroupRequest request)
- {
- var result = new List<AppLabelResult<MediaCathedraResult>>();
- //根据样式查找导航数据
- var articleGroup = await articleGroupRepository.GetArticleGroupAsync(request.StyleCss);
- if (articleGroup.IsMiddleLable)
- {
- //获取中间页面
- var middleLable = await _middleLableRepository.GetAsync(articleGroup.MiddleLableId);
- //获取中间页标签
- var middleLableNexusIds = await middleLableNexusRepository.GetAllTaskAsync(middleLable.Id);
- //获取标签
- var systemLabels = await _systemLabelRepository.GetAllAsync(middleLableNexusIds.Select(n => n.LableId).ToList());
- foreach (var item in systemLabels)
- {
- //获取媒体标签
- var mediaIds = await systemLableMediaRepository.GetMediaIdsAsync(item.Id, 0);
- var medias = await mediaRepository.GetNavigationMediaResults(mediaIds, 1, item.PageSize);
- var list = new List<MediaCathedraResult>();
- foreach (var mediaModel in medias)
- {
- list.Add(new MediaCathedraResult { Id = mediaModel.Id, Summary = mediaModel.Summary, Title = mediaModel.Title, ImageUrls = StringUtils.AddDomain(mediaModel.ImageUrls), Author = mediaModel.Author, ReadCount = mediaModel.ReadCount, CreatedDate = mediaModel.CreatedDate, CollectCount = mediaModel.CollectCount, MediaType = mediaModel.MediaType });
- }
- //获取常规数据
- var mediaCathedraResult = new AppLabelResult<MediaCathedraResult>()
- {
- IsPage = item.IsPage,
- Id = item.Id,
- LabelName = item.LabelName,
- ResourceType = 40,
- Items = list,
- Method = item.IsPage ? "post" : "",
- ActionUrl = item.IsPage ? request.ActionUrl : ""
- };
- result.Add(mediaCathedraResult);
- }
- }
- return result;
- }
- /// <summary>
- /// 大咖讲座
- /// </summary>
- /// <returns></returns>
- public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
- {
- var result = new PagedList<MediaCathedraResult>();
- result.Items = await mediaRepository.GetMediasByTeacherAsync(request);
- foreach (var item in result.Items)
- {
- item.ImageUrls = Common.Tools.StringUtils.AddDomain(item.ImageUrls);
- item.Duration="02:19:30";
- }
- result.Total = await mediaRepository.GetMediasByTeacherCountAsync(request);
- return result;
- }
- /// <summary>
- /// 根据IDs
- /// </summary>
- /// <returns></returns>
- public async Task<IEnumerable<MediaCathedraResult>> GetMediaByLableIdsAsync(MediaIdsRequest request)
- {
- //获取标签
- var systemLabel = await _systemLabelRepository.GetAsync(request.LableId);
- if (systemLabel == null)
- return null;
- var ids = await systemLableMediaRepository.GetMediaIdsAsync(request.LableId, 0);
- request.Ids = ids.ToList();
- request.Limit = systemLabel.PageSize;
- return await mediaRepository.GetMediaByLableIdsAsync(request);
- }
- /// <summary>
- /// 根据IDs
- /// </summary>
- /// <returns></returns>
- public async Task<PagedList<MediaCathedraResult>> GetMediaByLableIdAsync(MediaLableIdRequest request)
- {
- //获取标签
- var systemLabel = await _systemLabelRepository.GetAsync(request.LableId);
- if (systemLabel == null)
- return null;
- var ids = await _mediaLableRepository.GetMediaIdsAysnc(request.LableId);
- request.Ids = ids.ToList();
- return await mediaRepository.GetMediaByLableIdAsync(request);
- }
- /// <summary>
- /// 名师
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<PagedList<TeacherResult>> GetTeacherAsync(TeacherRequest request)
- {
- var teachers = await teacherRepository.GetTeacherResult(request);
- return teachers;
- }
- /// <summary>
- /// 书城
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- public async Task<List<AppLabelResult<MediaCathedraResult>>> GetBookCityAsync(ArticleGroupRequest request)
- {
- var result = new List<AppLabelResult<MediaCathedraResult>>();
- //获取中间页面
- var middleLable = await _middleLableRepository.GetAsync("书城");
- //获取中间页标签
- var middleLableNexusIds = await middleLableNexusRepository.GetAllTaskAsync(middleLable.Id);
- //获取标签
- var systemLabels = await _systemLabelRepository.GetAllAsync(middleLableNexusIds.Select(n => n.LableId).ToList());
- foreach (var item in systemLabels)
- {
- //获取媒体标签
- var mediaIds = await systemLableMediaRepository.GetMediaIdsAsync(item.Id, 0);
- var medias = await mediaRepository.GetNavigationMediaResults(mediaIds, 1, item.PageSize);
- var list = new List<MediaCathedraResult>();
- foreach (var mediaModel in medias)
- {
- 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 });
- }
- //获取常规数据
- var mediaCathedraResult = new AppLabelResult<MediaCathedraResult>()
- {
- IsPage = item.IsPage,
- Id = item.Id,
- LabelName = item.LabelName,
- ResourceType = 40,
- Items = list,
- Method = item.IsPage ? "post" : "",
- ActionUrl = item.IsPage ? request.ActionUrl : ""
- };
- result.Add(mediaCathedraResult);
- }
- return result;
- }
- /// <summary>
- /// 导航内容分页
- /// </summary>
- /// <returns></returns>
- public async Task<PagedList<MediaCathedraResult>> GetContentNavigationAsync(MediaContentNavigationRequest request)
- {
- if (request.CategoryId > 0)
- {
- var mediaIds = await systemLableMediaRepository.GetMediaIdsAsync(request.CategoryId, 1);
- request.MediaIds = mediaIds.ToList();
- }
- else
- {
- var mediaIds = await systemLableMediaRepository.GetMediaIdsByTypeValueAsync(1);
- request.MediaIds = mediaIds.ToList();
- }
- if (request.MediaIds.Count == 0)
- {
- var result = new PagedList<MediaCathedraResult>();
- result.Items = new List<MediaCathedraResult>();
- }
- return await mediaRepository.GetContentNavigationAsync(request);
- }
- }
- }
|