using System.Collections.Generic; using System.Threading.Tasks; using GxPress.Common.Page; using GxPress.Request.ArticleGroup; using GxPress.Request.Media; using GxPress.Request.TeacherRequest; using GxPress.Result.Media; using GxPress.Result.SystemLabel; using GxPress.Result.Teacher; using GxPress.Service.Interface.AppHomePage; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using GxPress.Repository.Interface.Media; using GxPress.EnumConst; using GxPress.Common.Tools; namespace GxPress.Api.AppControllers { /// <summary> /// App首页数据 /// </summary> [Route("api/app/page")] [ApiController] [Authorize] public class AppPageController : Controller { private readonly IAppHomePageService appHomePageService; private readonly IMediaRepository mediaRepository; public AppPageController(IAppHomePageService appHomePageService, IMediaRepository mediaRepository) { this.appHomePageService = appHomePageService; this.mediaRepository = mediaRepository; } /// <summary> /// 大咖讲座 每日好书 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("cathedra")] [AllowAnonymous] public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request) { if (string.IsNullOrEmpty(request.StyleCss)) throw new Common.Exceptions.BusinessException("样式未知!"); return await appHomePageService.GetMediasByTeacherAsync(request); } /// <summary> /// 大咖讲座分页接口 /// </summary> /// <returns></returns> [HttpPost("cathedra-page")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request) { return await appHomePageService.MediaCathedraResult(request); } /// <summary> /// 每日好文 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("day-good-text")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> GetDayGoodTextAsync(MediaSearchRequest request) { request.MediaType = GxPress.EnumConst.AllTypeConst.Article.GetHashCode(); request.IsDelete = 0; request.IsChecked = 1; return await appHomePageService.GetDayGoodTextAsync(request); } /// <summary> /// 每日微课 /// </summary> /// <returns></returns> [HttpPost("day-we-book")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> GetDayWeBookAsync(MediaDayWeBookRequest request) { request.Name = "每日微课"; return await appHomePageService.GetDayWeBookAsync(request); } /// <summary> /// 信源听说 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("chat-hear-speak")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> GetChatHearSpeak(MediaSearchRequest request) { request.MediaType = GxPress.EnumConst.AllTypeConst.Audio.GetHashCode(); request.IsDelete = 0; request.IsChecked = 1; return await appHomePageService.GetDayGoodTextAsync(request); } /// <summary> /// 根据标签ID获取每日好书 分页换一批 /// </summary> /// <returns></returns> [HttpPost("lable")] [AllowAnonymous] public async Task<IEnumerable<MediaCathedraResult>> GetMediaByLableIdsAsync(MediaIdsRequest request) { return await appHomePageService.GetMediaByLableIdsAsync(request); } /// <summary> /// 根据标签ID获取分页数据 /// </summary> /// <returns></returns> [HttpPost("page-lable")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> GetMediaByLableIdAsync(MediaLableIdRequest request) { return await appHomePageService.GetMediaByLableIdAsync(request); } /// <summary> /// 名师 /// </summary> /// <param name="request"></param> /// <returns></returns> [HttpPost("teacher")] [AllowAnonymous] public async Task<PagedList<TeacherResult>> GetTeacherAsync(TeacherRequest request) { return await appHomePageService.GetTeacherAsync(request); } /// <summary> /// 每日技能分页 /// </summary> /// <returns></returns> [HttpPost("day-skill")] [AllowAnonymous] public async Task<PagedList<MediaCathedraResult>> GetDaySkillsAsync(MediaDayWeBookRequest request) { request.TypeValue = AllTypeConst.Article.GetHashCode(); return await mediaRepository.GetDaySkillsAsync(request); } /// <summary> /// 随机每日技能 /// </summary> /// <returns></returns> [HttpGet("random-day-skill")] [AllowAnonymous] public async Task<SkillInfo> GetRandomDaySkillAsync() { return await mediaRepository.GetRandomDaySkillAsync(); } /// <summary> /// 书城 /// </summary> /// <returns></returns> [HttpGet("book-city")] [AllowAnonymous] public async Task<List<AppLabelResult<MediaCathedraResult>>> GetBookCityAsync() { ArticleGroupRequest request = new ArticleGroupRequest(); request.ActionUrl = "api/app/page/lable"; return await appHomePageService.GetBookCityAsync(request); } /// <summary> /// 猜你喜欢 /// </summary> /// <returns></returns> [HttpGet("user-like")] public async Task<IEnumerable<MediaCathedraResult>> GetUserLikeAsync() { var result = await mediaRepository.GetUserLikeAsync(); foreach (var item in result) { item.ImageUrls = StringUtils.AddDomain(item.ImageUrls); } return result; } } }