ソースを参照

Merge branch 'master' of http://git.fwt.com/Hotline/hotline

xf 2 年 前
コミット
2483200ef7

+ 67 - 158
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -13,12 +13,14 @@ using Hotline.Share.Dtos;
 using Hotline.Share.Dtos.FlowEngine;
 using Hotline.Share.Dtos.Knowledge;
 using Hotline.Share.Enums.KnowledgeBase;
+using Hotline.Share.Enums.Order;
 using Hotline.Users;
 using MapsterMapper;
 using MediatR;
 using Microsoft.AspNetCore.DataProtection.KeyManagement;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
+using System.Threading;
 using XF.Domain.Authentications;
 using XF.Domain.Exceptions;
 using XF.Utility.EnumExtensions;
@@ -33,7 +35,6 @@ namespace Hotline.Api.Controllers
 
         #region 注入
         private readonly IKnowledgeRepository _knowledgeRepository;
-        private readonly IKnowledgeTempRepository _knowledgeTempRepository;
         private readonly ISessionContext _sessionContext;
         private readonly IKnowledgeDomainService _knowledgeDomainService;
         private readonly IMapper _mapper;
@@ -52,7 +53,6 @@ namespace Hotline.Api.Controllers
         /// 
         /// </summary>
         /// <param name="knowledgeRepository"></param>
-        /// <param name="knowledgeTempRepository"></param>
         /// <param name="sessionContext"></param>
         /// <param name="knowledgeDomainService"></param>
         /// <param name="mapper"></param>
@@ -65,13 +65,11 @@ namespace Hotline.Api.Controllers
         /// <param name="userRepository"></param>
         /// <param name="knowledgeTypeRepository"></param>
         /// <param name="hotspotTypeRepository"></param>
-        public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
-           ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
+        public KnowledgeController(IKnowledgeRepository knowledgeRepository,  ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
            IMediator mediator, IWorkflowApplication workflowApplication, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository, IWorkflowDomainService workflowDomainService
             , IDefinitionDomainService definitionDomainService, IUserRepository userRepository, IKnowledgeTypeRepository knowledgeTypeRepository, IHotspotTypeRepository hotspotTypeRepository)
         {
             _knowledgeRepository = knowledgeRepository;
-            _knowledgeTempRepository = knowledgeTempRepository;
             _sessionContext = sessionContext;
             _knowledgeDomainService = knowledgeDomainService;
             _mapper = mapper;
@@ -88,102 +86,6 @@ namespace Hotline.Api.Controllers
 
         #endregion
 
-        #region 草稿箱
-        /// <summary>
-        /// 草稿箱-新增
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeDraftsAdd)]
-        [HttpPost("adddrafts")]
-        public async Task<string> AddKnowledgeDrafts([FromBody] AddKnowledgeDto dto)
-        {
-            var kn = _mapper.Map<KnowledgeTemp>(dto);
-            if (string.IsNullOrEmpty(dto.Code))
-                kn.Code = Convert.ToInt64((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds).ToString();
-
-            return await _knowledgeTempRepository.AddAsync(kn, HttpContext.RequestAborted);
-        }
-
-        /// <summary>
-        /// 草稿箱-修改
-        /// </summary>
-        /// <param name="dto"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeDraftsUpdate)]
-        [HttpPut("updatedrafts")]
-        public async Task UpdateKnowledgeDrafts([FromBody] UpdateKnowledgeDto dto)
-        {
-            var kn = _mapper.Map<KnowledgeTemp>(dto);
-            await _knowledgeTempRepository.UpdateAsync(kn, HttpContext.RequestAborted);
-        }
-
-        /// <summary>
-        /// 草稿箱-查询详情
-        /// </summary>
-        /// <param name="Id"></param>
-        /// <returns></returns>
-        [HttpGet("draftsinfo/{Id}")]
-        public async Task<KnowledgeInfoDto> KnowledgeDraftsInfo(string Id)
-        {
-            var temp = await _knowledgeTempRepository.GetAsync(Id, HttpContext.RequestAborted);
-            if (temp is null)
-                throw UserFriendlyException.SameMessage("知识草稿查询失败!");
-
-            var knowledgeInfoDto = _mapper.Map<KnowledgeInfoDto>(temp);
-
-            //分类
-            var type = await _knowledgeTypeRepository.GetAsync(temp.KnowledgeTypeId, HttpContext.RequestAborted);
-            if (type != null)
-                knowledgeInfoDto.KnowledgeTypeName = type.SpliceName;
-
-            //热点
-            var hot = await _hotspotTypeRepository.GetAsync(temp.HotspotId, HttpContext.RequestAborted);
-            if (hot != null)
-                knowledgeInfoDto.HotspotName = hot.HotSpotFullName;
-
-            return knowledgeInfoDto;
-        }
-
-        /// <summary>
-        /// 草稿箱删除
-        /// </summary>
-        /// <param name="Id"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeDraftsDelete)]
-        [HttpDelete("removedrafts")]
-        public async Task RemoveKnowledgeDrafts(string Id)
-        {
-            if (string.IsNullOrEmpty(Id))
-                throw UserFriendlyException.SameMessage("Id不能为空!");
-            await _knowledgeTempRepository.RemoveAsync(p => p.Id == Id, false, HttpContext.RequestAborted);
-        }
-
-        /// <summary>
-        /// 我的草稿箱
-        /// </summary>
-        /// <param name="pagedDto"></param>
-        /// <returns></returns>
-        [Permission(EPermission.KnowledgeMyDraftsList)]
-        [HttpGet("mydraftslist")]
-        public async Task<PagedDto<KnowledgeDataDto>> MyDraftsList([FromQuery] MyDraftsListPagedDto pagedDto)
-        {
-            var (total, items) = await _knowledgeTempRepository
-             .Queryable()
-             .Includes(it => it.User)
-             .Includes(it => it.KnowledgeType)
-             .Where(p => p.CreatorId == _sessionContext.RequiredUserId)
-             .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!))
-             .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
-             .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
-             .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
-             .OrderByDescending(p => p.CreationTime)
-             .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
-
-            return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
-        }
-        #endregion
-
         #region 知识管理
         /// <summary>
         /// 知识库-知识修改-查询详情
@@ -252,22 +154,46 @@ namespace Hotline.Api.Controllers
         [HttpPost("add")]
         public async Task<string> AddKnowledge([FromBody] AddKnowledgeDto dto)
         {
-            //知识处理逻辑
-            return await _knowledgeDomainService.KnowledgeAdd(dto, HttpContext.RequestAborted);
+            var kn = _mapper.Map<Knowledge>(dto);
+
+            //Code为空,从新生成Code
+            if (string.IsNullOrEmpty(kn.Code))
+                kn.Code = Convert.ToInt64((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds).ToString();
+
+            return await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
         }
 
-        ///// <summary>
-        ///// 知识库-修改
-        ///// </summary>
-        ///// <param name="dto"></param>
-        ///// <returns></returns>
-        //[Permission(EPermission.KnowledgeUpdate)]
-        //[HttpPut("update")]
-        //public async Task<string> UpdateKnowledge([FromBody] UpdateKnowledgeDto dto)
-        //{
-        //    //知识更新流程业务
-        //    return await _knowledgeDomainService.KnowledgeUpdate(dto, HttpContext.RequestAborted);
-        //}
+        /// <summary>
+        /// 知识库-修改
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [Permission(EPermission.KnowledgeUpdate)]
+        [HttpPut("update")]
+        public async Task UpdateKnowledge([FromBody] UpdateKnowledgeDto dto)
+        {
+            if (dto.Status != EKnowledgeStatus.Drafts)
+                throw UserFriendlyException.SameMessage("非草稿数据不可修改");
+            var kn = _mapper.Map<Knowledge>(dto);
+
+            await _knowledgeRepository.UpdateAsync(kn, HttpContext.RequestAborted);
+
+        }
+
+        /// <summary>
+        /// 删除知识
+        /// </summary>
+        /// <param name="id"></param>
+        /// <returns></returns>
+        [HttpDelete("{id}")]
+        public async Task Remove(string id)
+        {
+            var knowledge = await _knowledgeRepository.GetAsync(id, HttpContext.RequestAborted);
+            if (knowledge == null) return;
+            if (knowledge.Status != EKnowledgeStatus.Drafts)
+                throw UserFriendlyException.SameMessage("非草稿数据不可删除");
+            await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
+        }
 
         /// <summary>
         /// 知识库-知识下架
@@ -323,17 +249,6 @@ namespace Hotline.Api.Controllers
             await _knowledgeDomainService.KnowledgeRevoke(workFlowId, HttpContext.RequestAborted);
         }
 
-        /// <summary>
-        /// 根据workFlowId,查询审批明细
-        /// </summary>
-        /// <param name="workFlowId"></param>
-        /// <returns></returns>
-        [HttpGet("getworkflow")]
-        public async Task<Workflow> GetWorkflow(string workFlowId)
-        {
-            return await _workflowDomainService.GetWorkflowAsync(workFlowId, withSteps: true, withSupplements: true, withAssigns: true, cancellationToken: HttpContext.RequestAborted);
-        }
-
         /// <summary>
         /// 知识申请-关联知识-获取知识列表
         /// </summary>
@@ -344,7 +259,6 @@ namespace Hotline.Api.Controllers
             var temp = await _knowledgeRepository
                .Queryable()
                .LeftJoin<SystemOrganize>((o, sys) => o.CreatorOrgId == sys.Id)
-               .Where((o, sys) => o.IsDeleted == false)
                //重新构建数据
                .Select((o, sys) => new
                {
@@ -367,6 +281,32 @@ namespace Hotline.Api.Controllers
         }
         #endregion
 
+        #region 我的草稿箱
+        /// <summary>
+        /// 我的草稿箱
+        /// </summary>
+        /// <param name="pagedDto"></param>
+        /// <returns></returns>
+        [Permission(EPermission.KnowledgeMyDraftsList)]
+        [HttpGet("mydraftslist")]
+        public async Task<PagedDto<KnowledgeDataDto>> MyDraftsList([FromQuery] MyDraftsListPagedDto pagedDto)
+        {
+            var (total, items) = await _knowledgeRepository
+             .Queryable()
+             .Includes(it => it.User)
+             .Includes(it => it.KnowledgeType)
+             .Where(p => p.CreatorId == _sessionContext.RequiredUserId && p.Status == EKnowledgeStatus.Drafts)
+             .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), d => d.Title.Contains(pagedDto.Keyword!))
+             .WhereIF(!string.IsNullOrEmpty(pagedDto.KnowledgeTypeId), d => d.KnowledgeTypeId == pagedDto.KnowledgeTypeId)
+             .WhereIF(pagedDto.StartTime != null, d => d.CreationTime >= pagedDto.StartTime)
+             .WhereIF(pagedDto.EndTime != null, d => d.CreationTime <= pagedDto.EndTime)
+             .OrderByDescending(p => p.CreationTime)
+             .ToPagedListAsync(pagedDto.PageIndex, pagedDto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
+        }
+        #endregion
+
         #region 知识列表
         /// <summary>
         /// 知识库列表页面枚举值
@@ -413,7 +353,6 @@ namespace Hotline.Api.Controllers
             var Keyword = pagedDto.Keyword?.Trim();
             var temp = await _knowledgeRepository
               .Queryable()
-              .Where(p => p.IsDeleted == false)
 
               .Select(o => new
               {
@@ -554,13 +493,9 @@ namespace Hotline.Api.Controllers
         [HttpGet("knowpopscreen")]
         public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowPopScreen([FromQuery] KnowledgePopScreenPagedListDto pagedDto)
         {
-            //if (string.IsNullOrEmpty(pagedDto.Keyword)&& string.IsNullOrEmpty(pagedDto.HotspotId))
-            //    throw UserFriendlyException.SameMessage("请选择热点或输入关键字");
-
             RefAsync<int> total = 0;
             var temp = await _knowledgeRepository
               .Queryable()
-              .Where(p => p.IsDeleted == false)
               .Select(o => new
               {
                   index = SqlFunc.RowNumber($"{o.Version} desc ", $"{o.Code}"),
@@ -600,18 +535,6 @@ namespace Hotline.Api.Controllers
             await StartFlow(id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, dto);
         }
 
-        ///// <summary>
-        ///// 修改-开始流程
-        ///// </summary>
-        ///// <param name="id">知识id</param>
-        ///// <param name="dto">流程开启参数</param>
-        ///// <returns></returns>
-        //[HttpPost("{id}/update-startflow")]
-        //public async Task UpdateStartFlow(string id, [FromBody] StartWorkflowDto dto)
-        //{
-        //    await StartFlow(id, WorkflowModuleConsts.KnowledgeUpdate, EKnowledgeApplyType.Update, dto);
-        //}
-
         /// <summary>
         /// 删除-开始流程
         /// </summary>
@@ -634,16 +557,6 @@ namespace Hotline.Api.Controllers
             return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.KnowledgeAdd, HttpContext.RequestAborted);
         }
 
-        ///// <summary>
-        ///// 查询知识库办理流程开启参数-修改
-        ///// </summary>
-        ///// <returns></returns>
-        //[HttpGet("update-flow-start")]
-        //public async Task<IReadOnlyList<NextStepOptions>> GetUpdateFlowStartOptionsAsync()
-        //{
-        //    return await _workflowApplication.GetStartOptionsAsync(WorkflowModuleConsts.KnowledgeUpdate, HttpContext.RequestAborted);
-        //}
-
         /// <summary>
         /// 查询知识库办理流程开启参数-删除
         /// </summary>
@@ -697,10 +610,6 @@ namespace Hotline.Api.Controllers
             dto.Title = knowledge.Title;
             await _workflowApplication.StartWorkflowAsync(dto, flowId, HttpContext.RequestAborted);
 
-
-            //if (eKnowledgeApplyType != EKnowledgeApplyType.Delete)
-            //    //修改流程ID
-            //    await _knowledgeDomainService.UpdateWorkFlowId(id, workflowId, HttpContext.RequestAborted);
         }
         #endregion
 

+ 4 - 4
src/Hotline.Application/Knowledge/KnowApplication.cs

@@ -46,11 +46,11 @@ namespace Hotline.Application.Knowledge
             RefAsync<int> total = 0;
             var temp = await _knowledgeRepository
                .Queryable()
-               .LeftJoin<User>((o, cus) => o.CreatorId == cus.Id)
-               .LeftJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
-               .LeftJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
+               .InnerJoin<User>((o, cus) => o.CreatorId == cus.Id)
+               .InnerJoin<SystemOrganize>((o, cus, sys) => o.CreatorOrgId == sys.Id)
+               .InnerJoin<KnowledgeType>((o, cus, sys, kn) => o.KnowledgeTypeId == kn.Id)
                .LeftJoin<Hotspot>((o, cus, sys, kn, hst) => o.HotspotId == hst.Id)
-               .Where((o, cus, sys, kn, hst) => o.IsDeleted == false && o.Status != EKnowledgeStatus.Revert)
+               .Where((o, cus, sys, kn, hst) => o.IsDeleted == false && o.Status != EKnowledgeStatus.Revert && o.Status != EKnowledgeStatus.Drafts)
                //关键词查询标题、创建人、创建部门
                .WhereIF(!string.IsNullOrEmpty(pagedDto.Keyword), (o, cus, sys, kn, hst) => o.Title.Contains(pagedDto.Keyword!) || cus.Name.Contains(pagedDto.Keyword!) || sys.OrgName.Contains(pagedDto.Keyword!))
                //分类

+ 0 - 15
src/Hotline.Repository.SqlSugar/Knowledge/KnowledgeTempRepository.cs

@@ -1,15 +0,0 @@
-using Hotline.KnowledgeBase;
-using Hotline.Repository.SqlSugar.DataPermissions;
-using SqlSugar;
-using XF.Domain.Dependency;
-
-namespace Hotline.Repository.SqlSugar.Knowledge
-{
-    public class KnowledgeTempRepository : BaseRepository<KnowledgeTemp>, IKnowledgeTempRepository, IScopeDependency
-    {
-        public KnowledgeTempRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder) : base(uow, dataPermissionFilterBuilder)
-        {
-
-        }
-    }
-}

+ 6 - 0
src/Hotline.Share/Dtos/Knowledge/KnowledgeDto.cs

@@ -1,4 +1,5 @@
 using Hotline.Share.Dtos.FlowEngine;
+using Hotline.Share.Enums.KnowledgeBase;
 
 namespace Hotline.Share.Dtos.Knowledge
 {
@@ -90,6 +91,11 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public bool IsPublic { get; set; }
 
+        /// <summary>
+        /// 文档状态,默认草稿
+        /// </summary>
+        public EKnowledgeStatus Status { get; set; } = EKnowledgeStatus.Drafts;
+
         /// <summary>
         /// 到期时间
         /// </summary>

+ 6 - 0
src/Hotline.Share/Enums/KnowledgeBase/EKnowledgeStatus.cs

@@ -7,6 +7,12 @@ namespace Hotline.Share.Enums.KnowledgeBase;
 /// </summary>
 public enum EKnowledgeStatus
 {
+    /// <summary>
+    /// 草稿
+    /// </summary>
+    [Description("草稿")]
+    Drafts = 0,
+
     /// <summary>
     /// 审批中
     /// </summary>

+ 0 - 8
src/Hotline/KnowledgeBase/IKnowledgeTempRepository.cs

@@ -1,8 +0,0 @@
-using XF.Domain.Repository;
-
-namespace Hotline.KnowledgeBase
-{
-    public interface IKnowledgeTempRepository : IRepository<KnowledgeTemp>
-    {
-    }
-}

+ 5 - 15
src/Hotline/KnowledgeBase/KnowledgeDomainService.cs

@@ -13,7 +13,6 @@ namespace Hotline.KnowledgeBase
     public class KnowledgeDomainService : IKnowledgeDomainService, IScopeDependency
     {
         private readonly IKnowledgeRepository _knowledgeRepository;
-        private readonly IKnowledgeTempRepository _knowledgeTempRepository;
         private readonly IMapper _mapper;
         private readonly IKnowledgePVRepository _knowledgePVRepository;
         private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
@@ -24,17 +23,15 @@ namespace Hotline.KnowledgeBase
         /// 
         /// </summary>
         /// <param name="knowledgeRepository"></param>
-        /// <param name="knowledgeTempRepository"></param>
         /// <param name="mapper"></param>
         /// <param name="knowledgePVRepository"></param>
         /// <param name="knowledgeWorkFlowRepository"></param>
         /// <param name="workflowDomainService"></param>
-        public KnowledgeDomainService(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository, IMapper mapper, IKnowledgePVRepository knowledgePVRepository, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository
+        public KnowledgeDomainService(IKnowledgeRepository knowledgeRepository, IMapper mapper, IKnowledgePVRepository knowledgePVRepository, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository
            , IWorkflowDomainService workflowDomainService, IKnowledgeApplyRepository knowledgeApplyRepository)
         {
             _knowledgeRepository = knowledgeRepository;
             _mapper = mapper;
-            _knowledgeTempRepository = knowledgeTempRepository;
             _knowledgePVRepository = knowledgePVRepository;
             _knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
             _workflowDomainService = workflowDomainService;
@@ -121,6 +118,7 @@ namespace Hotline.KnowledgeBase
                 if (knowledge == null)
                     throw new UserFriendlyException($"无效知识编号, knowledgeId: {knowledgeFlow.KnowledgeId}", "无效知识编号");
                 knowledge.WorkflowId = workFlowId;
+                knowledge.Status = EKnowledgeStatus.Auditing;
                 knowledge.Assign(assignMode.FlowAssignType, assignMode.Handlers);
                 await _knowledgeRepository.UpdateAsync(knowledge, cancellationToken);
             }
@@ -135,13 +133,6 @@ namespace Hotline.KnowledgeBase
         {
             var kn = _mapper.Map<Knowledge>(dto);
 
-            //如果Code不为空,看草稿箱是否有数据,有移除数据
-            if (!string.IsNullOrEmpty(dto.Code))
-            {
-                //移除草稿箱数据
-                await _knowledgeTempRepository.RemoveAsync(p => p.Code == dto.Code, false, cancellationToken);
-            }
-
             //Code为空,从新生成Code
             if (string.IsNullOrEmpty(kn.Code))
                 kn.Code = Convert.ToInt64((DateTime.Now - new DateTime(1970, 1, 1, 0, 0, 0, 0)).TotalSeconds).ToString();
@@ -199,14 +190,14 @@ namespace Hotline.KnowledgeBase
             switch (knowWorkFlow.WorkflowModuleStatus)
             {
                 case EKnowledgeApplyType.Add:
-               // case EKnowledgeApplyType.Update:
                     //查询知识
                     var knowledge = await _knowledgeRepository.GetAsync(p => p.WorkflowId == workFlowId, cancellationToken);
                     if (knowledge != null)
                     {
                         //将知识保存到草稿箱
-                        var tempKnow = _mapper.Map<KnowledgeTemp>(knowledge);
-                        await _knowledgeTempRepository.AddAsync(tempKnow, cancellationToken);
+                        var tempKnow = _mapper.Map<Knowledge>(knowledge);
+                        tempKnow.Id = null;
+                        await _knowledgeRepository.AddAsync(tempKnow, cancellationToken);
 
                         knowledge.Status = EKnowledgeStatus.Revert;
                         //删除现有知识
@@ -226,7 +217,6 @@ namespace Hotline.KnowledgeBase
         {
             var temp = await _knowledgeRepository
               .Queryable()
-              .Where(p => p.IsDeleted == false)
               .Select((p) => new
               {
                   index = SqlFunc.RowNumber($"{p.Version} desc ", $"{p.Code}"),

+ 0 - 9
src/Hotline/KnowledgeBase/KnowledgeTemp.cs

@@ -1,9 +0,0 @@
-namespace Hotline.KnowledgeBase;
-
-/// <summary>
-/// 知识库草稿
-/// </summary>
-public class KnowledgeTemp : Knowledge
-{
-
-}