田爽 1 year ago
parent
commit
e5e8fe38db

+ 117 - 119
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -91,67 +91,6 @@ namespace Hotline.Api.Controllers
 		#endregion
 
 		#region 知识管理
-		/// <summary>
-		/// 知识库-知识修改-查询详情
-		/// </summary>
-		/// <param name="Id"></param>
-		/// <returns></returns>
-		[HttpGet("updateinfo/{Id}")]
-		public async Task<KnowledgeInfoDto> KnowledgeUpdateInfo(string Id)
-		{
-			var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
-			if (know is null)
-				throw UserFriendlyException.SameMessage("知识查询失败!");
-
-			var knowledgeInfoDto = _mapper.Map<KnowledgeInfoDto>(know);
-			//分类
-			var type = await _knowledgeTypeRepository.GetAsync(know.KnowledgeTypeId, HttpContext.RequestAborted);
-			if (type != null)
-				knowledgeInfoDto.KnowledgeTypeName = type.SpliceName;
-
-			//热点
-			var hot = await _hotspotTypeRepository.GetAsync(know.HotspotId, HttpContext.RequestAborted);
-			if (hot != null)
-				knowledgeInfoDto.HotspotName = hot.HotSpotFullName;
-			//收藏
-			var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
-			if (collect != null)
-				knowledgeInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
-
-			return knowledgeInfoDto;
-		}
-
-		/// <summary>
-		/// 知识库-查询详情-增加浏览量
-		/// </summary>
-		/// <param name="Id">知识Id</param>
-		/// <param name="IsAddPv">默认不增加,false不增加,true增加浏览量</param>
-		/// <returns></returns>
-		[HttpGet("info/{Id}")]
-		public async Task<KnowledgeShowInfoDto> KnowledgeInfo(string Id, bool? IsAddPv)
-		{
-			var knowledge = await _knowledgeDomainService.KnowledgeInfo(Id, HttpContext.RequestAborted);
-			if (knowledge is null)
-				throw UserFriendlyException.SameMessage("知识查询失败!");
-
-			//转化
-			var knowledgeShowInfoDto = _mapper.Map<KnowledgeShowInfoDto>(knowledge);
-
-			//查询其他
-			var user = await _userRepository.GetAsync(knowledge.CreatorId, HttpContext.RequestAborted);
-			if (user != null)
-				knowledgeShowInfoDto.CreatorName = user.Name;
-			var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
-			if (type != null)
-				knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
-			var hot = await _hotspotTypeRepository.GetAsync(knowledge.HotspotId, HttpContext.RequestAborted);
-			if (hot != null)
-				knowledgeShowInfoDto.HotspotName = hot.HotSpotFullName;
-
-			if (IsAddPv == true)
-				_mediator.Publish(new GetKnowledgeInfoNotify(knowledge));
-			return knowledgeShowInfoDto;
-		}
 
 		/// <summary>
 		/// 知识库-新增
@@ -160,9 +99,9 @@ namespace Hotline.Api.Controllers
 		/// <returns></returns>
 		[Permission(EPermission.AddKnowledge)]
 		[HttpPost("add")]
-		public async Task<string> AddKnowledge([FromBody] ScreenStartFlowDto dto)
+		public async Task<string> AddKnowledge([FromBody] AddStartFlowDto dto)
 		{
-			var addDto  = _mapper.Map<AddKnowledgeDto>(dto.Data);
+			var addDto = _mapper.Map<AddKnowledgeDto>(dto.Data);
 			var kn = _mapper.Map<Knowledge>(dto.Data);
 			//Code为空,从新生成Code
 			if (string.IsNullOrEmpty(kn.Code))
@@ -181,6 +120,7 @@ namespace Hotline.Api.Controllers
 			return id;
 		}
 
+
 		/// <summary>
 		/// 知识库-知识下架
 		/// </summary>
@@ -224,6 +164,120 @@ namespace Hotline.Api.Controllers
 				throw UserFriendlyException.SameMessage("知识上架失败");
 		}
 
+		/// <summary>
+		/// 知识库-修改
+		/// </summary>
+		/// <param name="dto"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeDraftsUpdate)]
+		[HttpPut("update")]
+		public async Task UpdateKnowledge([FromBody] UpdateStartFlowDto dto)
+		{
+			var update = _mapper.Map<UpdateKnowledgeDto>(dto.Data);
+			var knowledge = await _knowledgeRepository.GetAsync(update.Id);
+			if (knowledge == null)
+				throw UserFriendlyException.SameMessage("知识库数据错误");
+			if (knowledge.Status != EKnowledgeStatus.Drafts)
+				throw UserFriendlyException.SameMessage("非草稿数据不可修改");
+			_mapper.Map(dto, knowledge);
+			if (update.Tags.Any()) await _repositoryts.UpdateVectorAsync(update.Id, update.Tags, HttpContext.RequestAborted);
+			await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
+			if (dto.Workflow != null)
+			{
+				var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
+				startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
+				startDto.Title = "知识库修改";
+				await StartFlow(update.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
+			}
+		}
+
+		/// <summary>
+		/// 删除知识
+		/// </summary>
+		/// <param name="id"></param>
+		/// <returns></returns>
+		[Permission(EPermission.KnowledgeDraftsDelete)]
+		[HttpDelete]
+		public async Task Remove([FromBody] DeleteStartFlowDto dto)
+		{
+			var delete = _mapper.Map<Knowledge>(dto.Data);
+			var knowledge = await _knowledgeRepository.GetAsync(delete.Id, HttpContext.RequestAborted);
+			if (knowledge == null) return;
+			if (knowledge.Status != EKnowledgeStatus.Drafts)
+				throw UserFriendlyException.SameMessage("非草稿数据不可删除");
+			await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
+			var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
+			startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeDelete;
+			startDto.Title = "知识库删除";
+			await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Add, startDto);
+		}
+
+		/// <summary>
+		/// 知识库-知识修改-查询详情
+		/// </summary>
+		/// <param name="Id"></param>
+		/// <returns></returns>
+		[HttpGet("updateinfo/{Id}")]
+		public async Task<KnowledgeInfoDto> KnowledgeUpdateInfo(string Id)
+		{
+			var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
+			if (know is null)
+				throw UserFriendlyException.SameMessage("知识查询失败!");
+
+			var knowledgeInfoDto = _mapper.Map<KnowledgeInfoDto>(know);
+			//分类
+			var type = await _knowledgeTypeRepository.GetAsync(know.KnowledgeTypeId, HttpContext.RequestAborted);
+			if (type != null)
+				knowledgeInfoDto.KnowledgeTypeName = type.SpliceName;
+
+			//热点
+			var hot = await _hotspotTypeRepository.GetAsync(know.HotspotId, HttpContext.RequestAborted);
+			if (hot != null)
+				knowledgeInfoDto.HotspotName = hot.HotSpotFullName;
+			//收藏
+			var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
+			if (collect != null)
+				knowledgeInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
+
+			return knowledgeInfoDto;
+		}
+
+		/// <summary>
+		/// 知识库-查询详情-增加浏览量
+		/// </summary>
+		/// <param name="Id">知识Id</param>
+		/// <param name="IsAddPv">默认不增加,false不增加,true增加浏览量</param>
+		/// <returns></returns>
+		[HttpGet("info/{Id}")]
+		public async Task<KnowledgeShowInfoDto> KnowledgeInfo(string Id, bool? IsAddPv)
+		{
+			var knowledge = await _knowledgeDomainService.KnowledgeInfo(Id, HttpContext.RequestAborted);
+			if (knowledge is null)
+				throw UserFriendlyException.SameMessage("知识查询失败!");
+
+			//转化
+			var knowledgeShowInfoDto = _mapper.Map<KnowledgeShowInfoDto>(knowledge);
+
+			//查询其他
+			var user = await _userRepository.GetAsync(knowledge.CreatorId, HttpContext.RequestAborted);
+			if (user != null)
+				knowledgeShowInfoDto.CreatorName = user.Name;
+			var type = await _knowledgeTypeRepository.GetAsync(knowledge.KnowledgeTypeId, HttpContext.RequestAborted);
+			if (type != null)
+				knowledgeShowInfoDto.KnowledgeTypeName = type.SpliceName;
+			var hot = await _hotspotTypeRepository.GetAsync(knowledge.HotspotId, HttpContext.RequestAborted);
+			if (hot != null)
+				knowledgeShowInfoDto.HotspotName = hot.HotSpotFullName;
+			//收藏
+			var collect = await _knowledgeCollectRepository.GetAsync(x => x.KnowledgeId == Id && x.CreatorId == _sessionContext.UserId);
+			if (collect != null)
+				knowledgeShowInfoDto.Collect = _mapper.Map<KnowledgeCollectDto>(collect);
+
+			if (IsAddPv == true)
+				_mediator.Publish(new GetKnowledgeInfoNotify(knowledge));
+			return knowledgeShowInfoDto;
+		}
+
 		/// <summary>
 		/// 知识申请-关联知识-获取知识列表
 		/// </summary>
@@ -254,9 +308,7 @@ namespace Hotline.Api.Controllers
 			return _mapper.Map<IReadOnlyList<KnowledgeCreateBMDataDto>>(temp);
 
 		}
-		#endregion
 
-		#region 我的草稿箱
 		/// <summary>
 		/// 我的草稿箱
 		/// </summary>
@@ -281,57 +333,6 @@ namespace Hotline.Api.Controllers
 			return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(items));
 		}
 
-		/// <summary>
-		/// 知识库-修改知识草稿
-		/// </summary>
-		/// <param name="dto"></param>
-		/// <returns></returns>
-		[Permission(EPermission.KnowledgeDraftsUpdate)]
-		[HttpPut("update")]
-		public async Task UpdateKnowledge([FromBody] ScreenStartFlowDto dto)
-		{
-			var update = _mapper.Map<UpdateKnowledgeDto>(dto.Data);
-			var knowledge = await _knowledgeRepository.GetAsync(update.Id);
-			if (knowledge == null)
-				throw UserFriendlyException.SameMessage("知识库数据错误");
-			if (knowledge.Status != EKnowledgeStatus.Drafts)
-				throw UserFriendlyException.SameMessage("非草稿数据不可修改");
-			_mapper.Map(dto, knowledge);
-			if (update.Tags.Any()) await _repositoryts.UpdateVectorAsync(update.Id, update.Tags, HttpContext.RequestAborted);
-			await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
-			if (dto.Workflow != null)
-			{
-				var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
-				startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
-				startDto.Title = "知识库修改";
-				await StartFlow(update.Id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
-			}
-		}
-
-		/// <summary>
-		/// 删除知识草稿
-		/// </summary>
-		/// <param name="id"></param>
-		/// <returns></returns>
-		[Permission(EPermission.KnowledgeDraftsDelete)]
-		[HttpDelete]
-		public async Task Remove([FromBody] ScreenStartFlowDto dto)
-		{
-			var delete = _mapper.Map<Knowledge>(dto.Data);
-			var knowledge = await _knowledgeRepository.GetAsync(delete.Id, HttpContext.RequestAborted);
-			if (knowledge == null) return;
-			if (knowledge.Status != EKnowledgeStatus.Drafts)
-				throw UserFriendlyException.SameMessage("非草稿数据不可删除");
-			await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
-			var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
-			startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeDelete;
-			startDto.Title = "知识库删除";
-			await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Add, startDto);
-		}
-
-		#endregion
-
-		#region 知识列表
 		/// <summary>
 		/// 知识库列表页面枚举值
 		/// </summary>
@@ -383,9 +384,6 @@ namespace Hotline.Api.Controllers
 			return new PagedDto<KnowledgeDataDto>(total, _mapper.Map<IReadOnlyList<KnowledgeDataDto>>(temp));
 		}
 
-		#endregion
-
-		#region 知识检索
 		/// <summary>
 		/// 知识检索
 		/// </summary>

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

@@ -169,9 +169,17 @@ namespace Hotline.Share.Dtos.Knowledge
         public string? SourceOrganizeId { get; set; }
 
         /// <summary>
-        /// 来源部门
+        /// 组织Id
         /// </summary>
-        public OrgDto SourceOrganize { get; set; }
+        public string? CreatorOrgId { get; set; }
+
+
+        public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 来源部门
+		/// </summary>
+		public OrgDto SourceOrganize { get; set; }
 
         public KnowledgeTypeDto KnowledgeType { get; set; }
 
@@ -239,14 +247,71 @@ namespace Hotline.Share.Dtos.Knowledge
         /// </summary>
         public DateTime? CreationTime { get; set; }
 
-        /// <summary>
-        /// 关键词
-        /// </summary>
-        public string Keywords { get; set; }
+		/// <summary>
+		/// 知识归属
+		/// </summary>
+		public string? Attribution { get; set; }
+
+		/// <summary>
+		/// 搜索量
+		/// </summary>
+		public int? SearchNum { get; set; } = 0;
+
+		/// <summary>
+		/// 评分
+		/// </summary>
+		public decimal? Score { get; set; } = decimal.Zero;
+
+		/// <summary>
+		/// 评论数
+		/// </summary>
+		public int? CommentNum { get; set; } = 0;
+
+		/// <summary>
+		/// 来源部门
+		/// </summary>
+		public string? SourceOrganizeId { get; set; }
+
+		/// <summary>
+		/// 组织Id
+		/// </summary>
+		public string? CreatorOrgId { get; set; }
+
+
+		public string? CreatorOrgName { get; set; }
+
+		/// <summary>
+		/// 来源部门
+		/// </summary>
+		public OrgDto SourceOrganize { get; set; }
+
+		public KnowledgeTypeDto KnowledgeType { get; set; }
+
+		public KnowledgeCollectDto Collect { get; set; }
+
+		/// <summary>
+		/// 关键词
+		/// </summary>
+		public string Keywords { get; set; }
 
         /// <summary>
         /// 附件
         /// </summary>
         public List<string> Additions { get; set; }
     }
+
+    public class AddStartFlowDto : StartWorkflowDto<AddKnowledgeDto>
+    {
+
+    }
+
+    public class UpdateStartFlowDto : StartWorkflowDto<UpdateKnowledgeDto>
+    {
+
+    }
+
+    public class DeleteStartFlowDto : StartWorkflowDto<KnowledgeShowInfoDto>
+    {
+
+    }
 }