Prechádzať zdrojové kódy

Merge branch 'fix/call_1203' into test

qinchaoyue 5 mesiacov pred
rodič
commit
0a93e41f21

+ 30 - 3
src/Hotline.Application/Knowledge/KnowApplication.cs

@@ -166,6 +166,21 @@ namespace Hotline.Application.Knowledge
             return new PagedDto<KnowledgeApplyHandlePageDto>(total, _mapper.Map<IReadOnlyList<KnowledgeApplyHandlePageDto>>(items));
         }
 
+        //public async Task<Dictionary<string, Stream>> KnowledgeInfoListExportAsync(KnowledgeInfoExportInDto dto, CancellationToken cancellationToken)
+        //{
+        //    var streamList = new Dictionary<string, Stream>();
+        //    var knowList = await _knowledgeRepository.Queryable()
+        //        .Where(m => dto.Ids.Contains(m.Id))
+        //        .Select(m => new { m.Title, m.Content })
+        //        .ToListAsync(cancellationToken);
+        //    foreach (var item in knowList)
+        //    {
+        //        Stream stream = item.Content.HtmlToStream(dto.FileType);
+        //        streamList.Add(item.Title + dto.FileType.GetFileExtension(), stream);
+        //    }
+        //    return streamList;
+        //}
+
         public async Task<Dictionary<string, Stream>> KnowledgeInfoListExportAsync(KnowledgeInfoExportInDto dto, CancellationToken cancellationToken)
         {
             var streamList = new Dictionary<string, Stream>();
@@ -173,11 +188,23 @@ namespace Hotline.Application.Knowledge
                 .Where(m => dto.Ids.Contains(m.Id))
                 .Select(m => new { m.Title, m.Content })
                 .ToListAsync(cancellationToken);
-            foreach (var item in knowList)
+
+            var tasks = knowList.Select(async item =>
+            {
+                var stream = await Task.Run(() => item.Content.HtmlToStream(dto.FileType), cancellationToken);
+                return new KeyValuePair<string, Stream>(
+                    item.Title + dto.FileType.GetFileExtension(),
+                    stream
+                );
+            });
+
+            var results = await Task.WhenAll(tasks);
+
+            foreach (var kvp in results)
             {
-                Stream stream = item.Content.HtmlToStream(dto.FileType);
-                streamList.Add(item.Title + dto.FileType.GetFileExtension(), stream);
+                streamList.Add(kvp.Key, kvp.Value);
             }
+
             return streamList;
         }