李昊 il y a 4 ans
Parent
commit
c39d699c4e

+ 2 - 1
gx_api/GxPress/Api/GxPress.Api/AppControllers/AppPageController.cs

@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System.Threading.Tasks;
+using GxPress.Common.Page;
 using GxPress.Request.ArticleGroup;
 using GxPress.Result.Media;
 using GxPress.Result.SystemLabel;
@@ -42,7 +43,7 @@ namespace GxPress.Api.AppControllers
         /// <returns></returns>
         [HttpPost("cathedra-page")]
         [AllowAnonymous]
-        public async Task<IEnumerable<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
+        public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
         {
             return await appHomePageService.MediaCathedraResult(request);
         }

+ 0 - 4
gx_api/GxPress/Model/GxPress.Result/ArticleGroupUser/ArticleGroupUserListResult.cs

@@ -1,7 +1,3 @@
-using System;
-using System.Collections.Generic;
-using System.Text;
-
 namespace GxPress.Result.ArticleGroupUser
 {
     /// <summary>

+ 20 - 0
gx_api/GxPress/Model/GxPress.Result/Media/MediaResult.cs

@@ -48,6 +48,21 @@ namespace GxPress.Result.Media
         /// </summary>
         /// <value></value>
         public int TeacherId { get; set; }
+        /// <summary>
+        /// 阅读量
+        /// </summary>
+        /// <value></value>
+        public int ReadCount { get; set; }
+        /// <summary>
+        /// 创建时间
+        /// </summary>
+        /// <value></value>
+        public DateTime? CreatedDate { get; set; }
+        /// <summary>
+        /// 收藏数量
+        /// </summary>
+        /// <value></value>
+        public int CollectCount { get; set; }
 
     }
     /// <summary>
@@ -494,5 +509,10 @@ namespace GxPress.Result.Media
         /// </summary>
         /// <value></value>
         public int CollectCount { get; set; }
+
+         /// <summary>
+        /// 媒体类型
+        /// </summary>
+        public int MediaType { get; set; }
     }
 }

+ 5 - 0
gx_api/GxPress/Model/GxPress.Result/SystemLabel/SystemLabelResult.cs

@@ -107,6 +107,11 @@ namespace GxPress.Result.SystemLabel
     public class AppLabelResult<TItem>
     {
         /// <summary>
+        /// 
+        /// </summary>
+        /// <value></value>
+        public int Id{get;set;}
+        /// <summary>
         /// 显示数据
         /// </summary>
         /// <value></value>

+ 9 - 0
gx_api/GxPress/Repository/GxPress.Repository.Implement/ArticleGroupRepository.cs

@@ -147,5 +147,14 @@ namespace GxPress.Repository.Implement
 
             return await _repository.DeleteAsync(id);
         }
+        /// <summary>
+        /// 根据样式获取导航
+        /// </summary>
+        /// <param name="styleCss"></param>
+        /// <returns></returns>
+        public async Task<ArticleGroup> GetArticleGroupAsync(string styleCss)
+        {
+            return await _repository.GetAsync(Q.Where(nameof(ArticleGroup.StyleCss), styleCss));
+        }
     }
 }

+ 14 - 0
gx_api/GxPress/Repository/GxPress.Repository.Implement/Media/MediaRepository.cs

@@ -393,6 +393,9 @@ namespace GxPress.Repository.Implement.Media
             query.Select(nameof(Entity.tede2.Media.Media.AutoNumber));
             query.Select(nameof(Entity.tede2.Media.Media.Author));
             query.Select(nameof(Entity.tede2.Media.Media.MediaType));
+            query.Select(nameof(Entity.tede2.Media.Media.ReadCount));
+            query.Select(nameof(Entity.tede2.Media.Media.CreatedDate));
+            query.Select(nameof(Entity.tede2.Media.Media.CollectCount));
             query.WhereIn(nameof(Entity.tede2.Media.Media.Id), mediaIds);
             query.Where(nameof(Entity.tede2.Media.Media.IsChecked), true);
             query.Where(nameof(Entity.tede2.Media.Media.IsDelete), false);
@@ -544,5 +547,16 @@ namespace GxPress.Repository.Implement.Media
             query.ForPage(request.Page, request.PerPage);
             return await _repository.GetAllAsync<MediaCathedraResult>(query);
         }
+        /// <summary>
+        /// 大咖讲座
+        /// </summary>
+        /// <returns></returns>
+        public async Task<int> GetMediasByTeacherCountAsync(ArticleGroupRequest request)
+        {
+            var query = Q.NewQuery();
+            query.Where(nameof(Entity.tede2.Media.Media.TeacherId), ">", 0);
+            query.Where(nameof(Entity.tede2.Media.Media.MediaType), GxPress.EnumConst.AllTypeConst.Video.GetHashCode());
+            return await _repository.CountAsync(query);
+        }
     }
 }

+ 6 - 0
gx_api/GxPress/Repository/GxPress.Repository.Interface/IArticleGroupRepository.cs

@@ -43,5 +43,11 @@ namespace GxPress.Repository.Interface
         /// <returns></returns>
         Task<bool> DeleteAsync(int id);
         Task<ArticleGroup> GetArticleGroupAsync(int id);
+         /// <summary>
+        /// 根据样式获取导航
+        /// </summary>
+        /// <param name="styleCss"></param>
+        /// <returns></returns>
+        Task<ArticleGroup> GetArticleGroupAsync(string styleCss);
     }
 }

+ 7 - 2
gx_api/GxPress/Repository/GxPress.Repository.Interface/Media/IMediaRepository.cs

@@ -43,7 +43,7 @@ namespace GxPress.Repository.Interface.Media
         /// <param name="mediaId"></param>
         /// <returns></returns>
         Task<VideoMediaResult> GetVideoMediaResultAsync(int mediaId);
-        Task<IEnumerable<NavigationMediaResult>> GetNavigationMediaResults(IEnumerable<int> mediaLables,int pageSize=10);
+        Task<IEnumerable<NavigationMediaResult>> GetNavigationMediaResults(IEnumerable<int> mediaLables, int pageSize = 10);
         /// <summary>
         /// 猜你喜欢
         /// </summary>
@@ -69,10 +69,15 @@ namespace GxPress.Repository.Interface.Media
         /// <param name="query"></param>
         /// <returns></returns>
         Task<MediaNoteResult> GetAsync(SqlKata.Query query);
-         /// <summary>
+        /// <summary>
         /// 大咖讲座
         /// </summary>
         /// <returns></returns>
         Task<IEnumerable<MediaCathedraResult>> GetMediasByTeacherAsync(ArticleGroupRequest request);
+        /// <summary>
+        /// 大咖讲座
+        /// </summary>
+        /// <returns></returns>
+        Task<int> GetMediasByTeacherCountAsync(ArticleGroupRequest request);
     }
 }

+ 84 - 13
gx_api/GxPress/Service/GxPress.Service.Implement/AppHomePage/AppHomePageService.cs

@@ -6,6 +6,13 @@ 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 GxPress.Result.MiddleLable;
+using AutoMapper;
+using System.Linq;
+using GxPress.Common.Tools;
+using GxPress.Common.Page;
 
 namespace GxPress.Service.Implement.AppHomePage
 {
@@ -13,10 +20,20 @@ namespace GxPress.Service.Implement.AppHomePage
     {
         private readonly IArticleGroupRepository articleGroupRepository;
         private readonly IMediaRepository mediaRepository;
-        public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository)
+        private readonly IMapper _mapper;
+        private readonly IMiddleLableRepository _middleLableRepository;
+        private readonly ISystemLabelRepository _systemLabelRepository;
+        private readonly IMediaLableRepository _mediaLableRepository;
+        private readonly IMiddleLableNexusRepository middleLableNexusRepository;
+        public AppHomePageService(IArticleGroupRepository articleGroupRepository, IMediaRepository mediaRepository, IMiddleLableRepository _middleLableRepository, ISystemLabelRepository _systemLabelRepository, IMiddleLableNexusRepository middleLableNexusRepository, IMediaLableRepository _mediaLableRepository, IMapper _mapper)
         {
             this.articleGroupRepository = articleGroupRepository;
             this.mediaRepository = mediaRepository;
+            this._middleLableRepository = _middleLableRepository;
+            this._systemLabelRepository = _systemLabelRepository;
+            this.middleLableNexusRepository = middleLableNexusRepository;
+            this._mediaLableRepository = _mediaLableRepository;
+            this._mapper = _mapper;
         }
         /// <summary>
         /// 大咖讲座
@@ -26,30 +43,84 @@ namespace GxPress.Service.Implement.AppHomePage
         public async Task<List<AppLabelResult<MediaCathedraResult>>> GetMediasByTeacherAsync(ArticleGroupRequest request)
         {
             var results = new List<AppLabelResult<MediaCathedraResult>>();
-            request.Sort = "recommend";
-            var items = await mediaRepository.GetMediasByTeacherAsync(request);
-            results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "今日推荐", IsPage = false, ResourceType = 40, Method = "", Items = items });
-            request.Sort = "";
-            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)
+            //大师讲座
+            if (request.StyleCss == "Cathedra")
             {
-                foreach (var model in item.Items)
-                    model.Duration = "02:19:20";
+                request.Sort = "recommend";
+                var items = await mediaRepository.GetMediasByTeacherAsync(request);
+                results.Add(new AppLabelResult<MediaCathedraResult>() { LabelName = "今日推荐", IsPage = false, ResourceType = 40, Method = "", Items = items });
+                request.Sort = "";
+                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";
+                }
             }
+            //会员特供
+            if (request.StyleCss == "VipSupply")
+            {
+                return await GetVipSupplyAsync(request);
+            }
+            //
             return results;
         }
         /// <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 _mediaLableRepository.GetMediaIdsAysnc(item.Id);
+                    var medias = await mediaRepository.GetNavigationMediaResults(mediaIds,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 = false,
+                        Id = item.Id,
+                        LabelName = item.LabelName,
+                        ResourceType = 40,
+                        Items = list
+                    };
+                    result.Add(mediaCathedraResult);
+                }
+            }
+            return result;
+        }
+        /// <summary>
         /// 大咖讲座
         /// </summary>
         /// <returns></returns>
-        public async Task<IEnumerable<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
+        public async Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request)
         {
-            var result = await mediaRepository.GetMediasByTeacherAsync(request);
-            foreach (var item in result)
+            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);
             }
+            result.Total = await mediaRepository.GetMediasByTeacherCountAsync(request);
             return result;
         }
     }

+ 2 - 1
gx_api/GxPress/Service/GxPress.Service.Interface/AppHomePage/IAppHomePageService.cs

@@ -1,5 +1,6 @@
 using System.Collections.Generic;
 using System.Threading.Tasks;
+using GxPress.Common.Page;
 using GxPress.Request.ArticleGroup;
 using GxPress.Result.Media;
 using GxPress.Result.SystemLabel;
@@ -18,6 +19,6 @@ namespace GxPress.Service.Interface.AppHomePage
         /// 大咖讲座分页
         /// </summary>
         /// <returns></returns>
-         Task<IEnumerable<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request);
+         Task<PagedList<MediaCathedraResult>> MediaCathedraResult(ArticleGroupRequest request);
     }
 }