李昊 4 gadi atpakaļ
vecāks
revīzija
1f106bd9a5

+ 6 - 0
gx_api/GxPress/Model/GxPress.Result/Media/BookMediaResult.cs

@@ -107,6 +107,7 @@ namespace GxPress.Result.Media
         /// 收藏次数
         /// </summary>
         public int CollectCount { get; set; }
+
         /// <summary>
         /// 转发数量
         /// </summary>
@@ -133,6 +134,11 @@ namespace GxPress.Result.Media
         /// </summary>
         /// <value></value>
         public bool IsBuy { get; set; }
+        /// <summary>
+        /// 是否收藏
+        /// </summary>
+        /// <value></value>
+        public bool IsCollect { get; set; }
     }
 
     /// <summary>

+ 12 - 1
gx_api/GxPress/Service/GxPress.Service.Implement/Collection/CollectionService.cs

@@ -23,6 +23,7 @@ using GxPress.Service.Interface.Article;
 using GxPress.Service.Interface.Collection;
 using GxPress.Service.Interface.Middle;
 using GxPress.Service.Interface.UserMiddle;
+using GxPress.Repository.Interface.Media;
 using Newtonsoft.Json;
 
 namespace GxPress.Service.Implement.Collection
@@ -46,11 +47,12 @@ namespace GxPress.Service.Implement.Collection
         private readonly IAnalyzeService _analyzeService;
         private readonly IFileLibraryRepository fileLibraryRepository;
         private readonly IUserMiddleService _userMiddleService;
+        private readonly IMediaRepository mediaRepository;
         public CollectionService(ICollectionRepository collectionRepository, IMiddleService middleService,
             IArticleRepository articleRepository, ITopicRepository topicRepository, IMiddleRepository middleRepository,
             INoteRepository noteRepository, IUserRepository userRepository, IArticleService articleService, INoticeRepository noticeRepository,
             IMissiveRepository missiveRepository, IMapper mapper,
-            IGroupRepository groupRepository, IMeetingSummaryRepository meetingSummaryRepository, IFolderUserRepository folderUserRepository, IAnalyzeService analyzeService, IFileLibraryRepository fileLibraryRepository, IUserMiddleService userMiddleService)
+            IGroupRepository groupRepository, IMeetingSummaryRepository meetingSummaryRepository, IFolderUserRepository folderUserRepository, IAnalyzeService analyzeService, IFileLibraryRepository fileLibraryRepository, IUserMiddleService userMiddleService, IMediaRepository mediaRepository)
         {
             _collectionRepository = collectionRepository;
             _middleService = middleService;
@@ -69,6 +71,7 @@ namespace GxPress.Service.Implement.Collection
             _analyzeService = analyzeService;
             this.fileLibraryRepository = fileLibraryRepository;
             _userMiddleService = userMiddleService;
+            this.mediaRepository = mediaRepository;
         }
 
         /// <summary>
@@ -112,6 +115,14 @@ namespace GxPress.Service.Implement.Collection
                     await _analyzeService.DeleteAsync(analyze.Id);
                 return true;
             }
+            //收藏媒体
+            if (request.CollectionType == AllTypeConst.Book.GetHashCode() || request.CollectionType == AllTypeConst.Curriculum.GetHashCode() || request.CollectionType == AllTypeConst.Audio.GetHashCode() || request.CollectionType == AllTypeConst.Video.GetHashCode())
+            {
+                var media = await mediaRepository.GetAsync(request.CollectionDataId);
+                collection.Title = media.Title;
+                analyzeRequest.TypeValue = request.CollectionType;
+                await _analyzeService.SetAnalyzeAsync(analyzeRequest);
+            }
             //收藏文章
             if (request.CollectionType == AllTypeConst.Article.GetHashCode())
             {

+ 9 - 1
gx_api/GxPress/Service/GxPress.Service.Implement/Media/MediaService.cs

@@ -13,6 +13,9 @@ using GxPress.Repository.Interface;
 using GxPress.Repository.Interface.Order;
 using GxPress.Repository.Interface.Attach;
 using GxPress.Repository.Interface.SystemLabel;
+using GxPress.Repository.Interface.Analyze;
+using Datory;
+
 namespace GxPress.Service.Implement.Media
 {
     public partial class MediaService : IMediaService
@@ -27,7 +30,8 @@ namespace GxPress.Service.Implement.Media
         private readonly IAttachRepository attachRepository;
         private readonly ISystemLabelRepository systemLabelRepository;
         private readonly ISystemLableMediaRepository systemLableMediaRepository;
-        public MediaService(ICategoryRepository categoryRepository, IMediaRepository mediaRepository, IMapper _mapper, IEpubService epubService, IMediaLibraryRepository mediaLibraryRepository, IUserRepository userRepository, IOrderRepository orderRepository, IAttachRepository attachRepository, ISystemLabelRepository systemLabelRepository, ISystemLableMediaRepository systemLableMediaRepository)
+        private readonly IAnalyzeRepository analyzeRepository;
+        public MediaService(ICategoryRepository categoryRepository, IMediaRepository mediaRepository, IMapper _mapper, IEpubService epubService, IMediaLibraryRepository mediaLibraryRepository, IUserRepository userRepository, IOrderRepository orderRepository, IAttachRepository attachRepository, ISystemLabelRepository systemLabelRepository, ISystemLableMediaRepository systemLableMediaRepository, IAnalyzeRepository analyzeRepository)
         {
             this.categoryRepository = categoryRepository;
             this.mediaRepository = mediaRepository;
@@ -39,6 +43,7 @@ namespace GxPress.Service.Implement.Media
             this.attachRepository = attachRepository;
             this.systemLabelRepository = systemLabelRepository;
             this.systemLableMediaRepository = systemLableMediaRepository;
+            this.analyzeRepository = analyzeRepository;
         }
         public async Task<bool> InsertAsync(MediaResult result)
         {
@@ -90,6 +95,7 @@ namespace GxPress.Service.Implement.Media
             var mediaLibrary = await mediaLibraryRepository.GetTaskAsync(id);
             if (!mediaLibrary.FileUrl.Contains("epub"))
                 throw new Common.Exceptions.BusinessException("书籍不存在epub文件");
+
             //书籍
             //获取media
             var media = await mediaRepository.GetAsync(id);
@@ -133,6 +139,8 @@ namespace GxPress.Service.Implement.Media
                         bookCatalogResult.IsRead = true;
                 }
             }
+            //是否收藏
+            result.IsCollect = await analyzeRepository.ExistsAsync(Q.Where(nameof(Entity.Analyze.Analyze.TypeValue), GxPress.EnumConst.AllTypeConst.Book.GetHashCode()).Where(nameof(Entity.Analyze.Analyze.AnalyzeType), 3).Where(nameof(Entity.Analyze.Analyze.SourceId), id).Where(nameof(Entity.Analyze.Analyze.UserId), userId));
             //计算免费占比
             return result;
         }

+ 4 - 0
gx_api/GxPress/Service/GxPress.Service.Implement/Middle/MiddleService.cs

@@ -295,6 +295,10 @@ namespace GxPress.Service.Implement.Middle
             try
             {
                 using TransactionScope transactionScope = new TransactionScope();
+                var middleIds = new List<int>();
+                //获取
+                await _middleRepository.GetAllMiddleChildrenByParentIdAsync(request.MiddleIds, middleIds);
+                request.MiddleIds = middleIds;
                 //查询middle
                 var middles = await _middleRepository.FindAsync(Q.WhereIn(nameof(Entity.Middle.Middle.Id), request.MiddleIds));
                 var ids = middles.Select(n => n.MiddleId).ToList();