|
@@ -45,6 +45,9 @@ using Hotline.Import;
|
|
|
using Hotline.Caching.Services;
|
|
|
using Hotline.Share.Enums.Order;
|
|
|
using MiniExcelLibs;
|
|
|
+using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
+using Hotline.Pdf;
|
|
|
+using Microsoft.AspNetCore.Authorization;
|
|
|
|
|
|
namespace Hotline.Api.Controllers
|
|
|
{
|
|
@@ -56,6 +59,7 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IRepository<KnowledgeHotWord> _knowledgeHotWordRepository;
|
|
|
private readonly IRepository<KnowledgeApprove> _knowledgeApproRepository;
|
|
|
private readonly ISystemSettingCacheManager _systemSettingCacheManager;
|
|
|
+ private readonly IPdfManager _pdfManager;
|
|
|
private readonly IRepository<KnowledgeWord> _knowledgeWordRepository;
|
|
|
private readonly IWordHelperService _wordHelperService;
|
|
|
private readonly BaseDataApplication _baseDataApplication;
|
|
@@ -121,7 +125,8 @@ namespace Hotline.Api.Controllers
|
|
|
IOptionsSnapshot<AppConfiguration> appOptions,
|
|
|
IRepository<KnowledgeHotWord> knowledgeHotWordRepository,
|
|
|
IRepository<KnowledgeApprove> knowledgeApproRepository,
|
|
|
- ISystemSettingCacheManager _systemSettingCacheManager)
|
|
|
+ ISystemSettingCacheManager _systemSettingCacheManager,
|
|
|
+ IPdfManager pdfManager)
|
|
|
{
|
|
|
_knowledgeRepository = knowledgeRepository;
|
|
|
_sessionContext = sessionContext;
|
|
@@ -155,6 +160,7 @@ namespace Hotline.Api.Controllers
|
|
|
_knowledgeHotWordRepository = knowledgeHotWordRepository;
|
|
|
_knowledgeApproRepository = knowledgeApproRepository;
|
|
|
this._systemSettingCacheManager = _systemSettingCacheManager;
|
|
|
+ _pdfManager = pdfManager;
|
|
|
_appOptions = appOptions;
|
|
|
}
|
|
|
|
|
@@ -962,7 +968,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("dl-template")]
|
|
|
- public object DownLoadKnowledgeTemplate()
|
|
|
+ public IActionResult DownLoadKnowledgeTemplate()
|
|
|
{
|
|
|
return _exportApplication.ExportData(new List<KnowledgeImportTemplate>
|
|
|
{
|
|
@@ -1033,6 +1039,44 @@ namespace Hotline.Api.Controllers
|
|
|
: $"导入{items.Count}条,成功{kns.Count}条,{err}";
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 导出知识(new)
|
|
|
+ /// </summary>
|
|
|
+ [HttpGet("export-knowledge")]
|
|
|
+ public async Task<IActionResult> ExportKnowledge([FromQuery] ExportKnowledgeRequest request)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(request.Id))
|
|
|
+ throw new UserFriendlyException("无效知识编号");
|
|
|
+ var kn = await _knowledgeRepository.GetAsync(request.Id, HttpContext.RequestAborted);
|
|
|
+ if (kn is null)
|
|
|
+ throw new UserFriendlyException("无效知识编号");
|
|
|
+ var content = kn.Content
|
|
|
+ .Replace(" ", " ")
|
|
|
+ .Replace("&", "&")
|
|
|
+ .Replace(""", "\"")
|
|
|
+ .Replace(">", ">")
|
|
|
+ .Replace("<", "<")
|
|
|
+ ;
|
|
|
+
|
|
|
+
|
|
|
+ switch (request.ExportType)
|
|
|
+ {
|
|
|
+ case "pdf":
|
|
|
+ var fileName = $"{kn.Title}.pdf";
|
|
|
+ var stream = new MemoryStream();
|
|
|
+ _pdfManager.GeneratePdf(kn.Title, content, stream);
|
|
|
+ stream.Seek(0, SeekOrigin.Begin);
|
|
|
+ return new FileStreamResult(stream, "application/pdf")
|
|
|
+ {
|
|
|
+ FileDownloadName = fileName ?? DateTime.Now.ToString("yyyyMMddhhmmss") + ".pdf"
|
|
|
+ };
|
|
|
+
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
#endregion
|
|
|
|