田爽 1 year ago
parent
commit
3287e2e5a8

+ 23 - 17
src/Hotline.Api/Controllers/KnowledgeController.cs

@@ -110,12 +110,15 @@ namespace Hotline.Api.Controllers
 			kn.Status = EKnowledgeStatus.Drafts;
 			var id = await _knowledgeRepository.AddAsync(kn, HttpContext.RequestAborted);
 			if (addDto.Tags.Any()) await _repositoryts.AddVectorAsync(id, DateTime.Now, addDto.Tags, HttpContext.RequestAborted);
-			if (dto.Workflow != null)
+			if (dto.Workflow != null &&  !string.IsNullOrEmpty(id))
 			{
 				var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
 				startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeAdd;
 				startDto.Title = "知识库新增";
 				await StartFlow(id, WorkflowModuleConsts.KnowledgeAdd, EKnowledgeApplyType.Add, startDto);
+				var knowledge = await _knowledgeRepository.GetAsync(id);
+				knowledge.Status = EKnowledgeStatus.Auditing;
+				await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
 			}
 			return id;
 		}
@@ -181,14 +184,15 @@ namespace Hotline.Api.Controllers
 				throw UserFriendlyException.SameMessage("知识库数据不可修改");
 			_mapper.Map(dto.Data, 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.KnowledgeUpdate, EKnowledgeApplyType.Update, startDto);
+				knowledge.Status = EKnowledgeStatus.Auditing;
 			}
+			await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
 		}
 
 		/// <summary>
@@ -205,11 +209,13 @@ namespace Hotline.Api.Controllers
 			if (knowledge == null) return;
 			if (knowledge.Status == EKnowledgeStatus.OnShelf || knowledge.Status == EKnowledgeStatus.Auditing)
 				throw UserFriendlyException.SameMessage("知识库数据不可删除");
-			await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
+			//await _knowledgeRepository.RemoveAsync(knowledge, false, HttpContext.RequestAborted);
+			knowledge.Status = EKnowledgeStatus.Auditing;
+			await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
 			var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
 			startDto.DefinitionModuleCode = WorkflowModuleConsts.KnowledgeDelete;
 			startDto.Title = "知识库删除";
-			await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Add, startDto);
+			await StartFlow(delete.Id, WorkflowModuleConsts.KnowledgeDelete, EKnowledgeApplyType.Delete, startDto);
 		}
 
 		/// <summary>
@@ -968,8 +974,8 @@ namespace Hotline.Api.Controllers
 				await _knowledgeCollectRepository.UpdateAsync(collect, HttpContext.RequestAborted);
 			}
 			else {
-				var questions = _mapper.Map<KnowledgeCollect>(dto);
-				await _knowledgeCollectRepository.AddAsync(questions, HttpContext.RequestAborted);
+				var collectNew = _mapper.Map<KnowledgeCollect>(dto);
+				await _knowledgeCollectRepository.AddAsync(collectNew, HttpContext.RequestAborted);
 			}
 		}
 
@@ -989,23 +995,23 @@ namespace Hotline.Api.Controllers
 					throw UserFriendlyException.SameMessage("当前知识已经评分");
 				collect.Score = dto.Score;
 				await _knowledgeCollectRepository.UpdateAsync(collect, HttpContext.RequestAborted);
-				//计算总分
-				var sugar = _knowledgeCollectRepository.Queryable().Where(x => x.KnowledgeId == dto.KnowledgeId);
-				var count = await sugar.CountAsync();
-				var collects = await sugar.SumAsync(x=>x.Score);
-				var score = collects / count;
-				var knowledge = await _knowledgeRepository.GetAsync(x => x.Id == dto.KnowledgeId);
-				if (knowledge != null)
-				{
-					knowledge.Score = score; 
-					await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
-				}
 			}
 			else
 			{
 				var questions = _mapper.Map<KnowledgeCollect>(dto);
 				await _knowledgeCollectRepository.AddAsync(questions, HttpContext.RequestAborted);
 			}
+			//计算总分
+			var sugar = _knowledgeCollectRepository.Queryable().Where(x => x.KnowledgeId == dto.KnowledgeId);
+			var count = await sugar.CountAsync();
+			var collects = await sugar.SumAsync(x => x.Score);
+			var score = collects / count;
+			var knowledge = await _knowledgeRepository.GetAsync(x => x.Id == dto.KnowledgeId);
+			if (knowledge != null)
+			{
+				knowledge.Score = score;
+				await _knowledgeRepository.UpdateAsync(knowledge, HttpContext.RequestAborted);
+			}
 		}
 		#endregion
 	}

+ 1 - 1
src/Hotline.Application/Handlers/FlowEngine/EndWorkflowHandler.cs

@@ -78,7 +78,7 @@ public class EndWorkflowHandler : INotificationHandler<EndWorkflowNotify>
         switch (workflow.ModuleCode)
         {
             case WorkflowModuleConsts.KnowledgeAdd://新增知识库
-            //case WorkflowModuleConsts.KnowledgeUpdate://修改知识库
+            case WorkflowModuleConsts.KnowledgeUpdate://修改知识库
             case WorkflowModuleConsts.KnowledgeDelete://删除知识库
                 await _knowledgeDomainService.EndWorkKnowledge(workflow, cancellationToken);
                 break;