From faf28d40c6be7e21eb751714df0bcf0501c56c98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= <454313500@qq.com>
Date: Fri, 29 Dec 2023 18:19:35 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=90=AD=E5=BB=BA=E6=96=87=E7=AB=A0?=
=?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=8A=9F=E8=83=BD=E6=AD=A3=E5=9C=A8=E9=80=82?=
=?UTF-8?q?=E9=85=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Dtos/Article/ArticleImprotDto.cs | 21 +++++++++
.../Services/ArticleService.cs | 46 +++++++++++++++++--
.../Enums/ArticleImportTypeEnum.cs | 17 +++++++
.../Model/FileObject.cs | 14 ++++++
.../Managers/ForumManager.cs | 19 +++++++-
5 files changed, 110 insertions(+), 7 deletions(-)
create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Article/ArticleImprotDto.cs
create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Enums/ArticleImportTypeEnum.cs
create mode 100644 Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Model/FileObject.cs
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Article/ArticleImprotDto.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Article/ArticleImprotDto.cs
new file mode 100644
index 00000000..cb078ddd
--- /dev/null
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application.Contracts/Dtos/Article/ArticleImprotDto.cs
@@ -0,0 +1,21 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Yi.Framework.Bbs.Domain.Shared.Enums;
+
+namespace Yi.Framework.Bbs.Application.Contracts.Dtos.Article
+{
+ public class ArticleImprotDto
+ {
+ ///
+ /// 主题id
+ ///
+ [Required]
+ public Guid DiscussId { get; set; }
+
+ public ArticleImportTypeEnum ImportType { get; set; } = ArticleImportTypeEnum.Defalut;
+ }
+}
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs
index d6ef86c5..5c9c245b 100644
--- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Application/Services/ArticleService.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Text;
using Mapster;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
@@ -13,8 +14,10 @@ using Yi.Framework.Bbs.Application.Contracts.Dtos.Plate;
using Yi.Framework.Bbs.Application.Contracts.IServices;
using Yi.Framework.Bbs.Domain.Entities;
using Yi.Framework.Bbs.Domain.Extensions;
+using Yi.Framework.Bbs.Domain.Managers;
using Yi.Framework.Bbs.Domain.Repositories;
using Yi.Framework.Bbs.Domain.Shared.Consts;
+using Yi.Framework.Bbs.Domain.Shared.Model;
using Yi.Framework.Core.Extensions;
using Yi.Framework.Ddd.Application;
using Yi.Framework.Rbac.Domain.Authorization;
@@ -32,18 +35,20 @@ namespace Yi.Framework.Bbs.Application.Services
{
public ArticleService(IArticleRepository articleRepository,
ISqlSugarRepository discussRepository,
- IDiscussService discussService) : base(articleRepository)
+ IDiscussService discussService,
+ ForumManager forumManager) : base(articleRepository)
{
_articleRepository = articleRepository;
_discussRepository = discussRepository;
_discussService = discussService;
-
+ _forumManager = forumManager;
}
- private IArticleRepository _articleRepository { get; set; }
- private ISqlSugarRepository _discussRepository { get; set; }
- private IDiscussService _discussService { get; set; }
+ private ForumManager _forumManager;
+ private IArticleRepository _articleRepository;
+ private ISqlSugarRepository _discussRepository;
+ private IDiscussService _discussService;
public override async Task> GetListAsync(ArticleGetListInputVo input)
{
@@ -134,6 +139,37 @@ namespace Yi.Framework.Bbs.Application.Services
}
+ ///
+ /// 导入文章
+ ///
+ ///
+ public async Task PostImportAsync(ArticleImprotDto input, [FromForm] IFormFileCollection file)
+ {
+ var fileObjs = new List();
+ if (file.Count > 0)
+ {
+ foreach (var item in file)
+ {
+ if (item.Length > 0)
+ {
+ using (var stream = item.OpenReadStream())
+ {
+ using (var fileStream = new MemoryStream())
+ {
+ await item.CopyToAsync(fileStream);
+ var bytes = fileStream.ToArray();
+
+ // 将字节转换成字符串
+ var content = Encoding.UTF8.GetString(bytes);
+ fileObjs.Add(new FileObject() { FileName=item.FileName,Content=content});
+ }
+ }
+ }
+ }
+ }
+ //使用简单工厂根据传入的类型进行判断
+ await _forumManager.PostImportAsync(input.DiscussId, fileObjs, input.ImportType);
+ }
///
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Enums/ArticleImportTypeEnum.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Enums/ArticleImportTypeEnum.cs
new file mode 100644
index 00000000..6c6f2ac3
--- /dev/null
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Enums/ArticleImportTypeEnum.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.Bbs.Domain.Shared.Enums
+{
+ public enum ArticleImportTypeEnum
+ {
+ //默认导入方式
+ Defalut,
+
+ //vuePresss方式
+ VuePress
+ }
+}
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Model/FileObject.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Model/FileObject.cs
new file mode 100644
index 00000000..c0cd5580
--- /dev/null
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain.Shared/Model/FileObject.cs
@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Yi.Framework.Bbs.Domain.Shared.Model
+{
+ public class FileObject
+ {
+ public string Content { get; set; }
+ public string FileName { get; set; }
+ }
+}
diff --git a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/ForumManager.cs b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/ForumManager.cs
index 44b28d15..43e82011 100644
--- a/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/ForumManager.cs
+++ b/Yi.Abp.Net8/module/bbs/Yi.Framework.Bbs.Domain/Managers/ForumManager.cs
@@ -1,5 +1,9 @@
-using Volo.Abp.Domain.Services;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Volo.Abp.Domain.Services;
using Yi.Framework.Bbs.Domain.Entities;
+using Yi.Framework.Bbs.Domain.Shared.Enums;
+using Yi.Framework.Bbs.Domain.Shared.Model;
using Yi.Framework.SqlSugarCore.Abstractions;
namespace Yi.Framework.Bbs.Domain.Managers
@@ -9,7 +13,7 @@ namespace Yi.Framework.Bbs.Domain.Managers
///
public class ForumManager : DomainService
{
- public readonly ISqlSugarRepository _discussRepository;
+ public readonly ISqlSugarRepository _discussRepository;
public readonly ISqlSugarRepository _plateEntityRepository;
public readonly ISqlSugarRepository _commentRepository;
public ForumManager(ISqlSugarRepository discussRepository, ISqlSugarRepository plateEntityRepository, ISqlSugarRepository commentRepository)
@@ -36,5 +40,16 @@ namespace Yi.Framework.Bbs.Domain.Managers
entity.RootId = rootId;
return await _commentRepository.InsertReturnEntityAsync(entity);
}
+
+ ///
+ /// 导入文章
+ ///
+ ///
+ ///
+ ///
+ ///
+ public async Task PostImportAsync(Guid discussId, List fileObjs, ArticleImportTypeEnum importType)
+ {
+ }
}
}