|
@@ -1,14 +1,17 @@
|
|
-using Hotline.Application.Knowledge;
|
|
|
|
|
|
+using Hotline.Application.FlowEngine;
|
|
|
|
+using Hotline.Application.Knowledge;
|
|
|
|
+using Hotline.FlowEngine.Workflows;
|
|
using Hotline.KnowledgeBase;
|
|
using Hotline.KnowledgeBase;
|
|
using Hotline.KnowledgeBase.Notifies;
|
|
using Hotline.KnowledgeBase.Notifies;
|
|
using Hotline.Permissions;
|
|
using Hotline.Permissions;
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
|
+using Hotline.Settings;
|
|
using Hotline.Share.Dtos;
|
|
using Hotline.Share.Dtos;
|
|
|
|
+using Hotline.Share.Dtos.FlowEngine;
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
using Hotline.Share.Dtos.Knowledge;
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
using Hotline.Share.Enums.KnowledgeBase;
|
|
using MapsterMapper;
|
|
using MapsterMapper;
|
|
using MediatR;
|
|
using MediatR;
|
|
-using Microsoft.AspNetCore.Authorization;
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using SqlSugar;
|
|
using SqlSugar;
|
|
using XF.Domain.Authentications;
|
|
using XF.Domain.Authentications;
|
|
@@ -28,6 +31,8 @@ namespace Hotline.Api.Controllers
|
|
private readonly IMapper _mapper;
|
|
private readonly IMapper _mapper;
|
|
private readonly IKnowApplication _knowApplication;
|
|
private readonly IKnowApplication _knowApplication;
|
|
private readonly IMediator _mediator;
|
|
private readonly IMediator _mediator;
|
|
|
|
+ private readonly IWorkflowApplication _workflowApplication;
|
|
|
|
+ private readonly IWorkflowDomainService _workflowDomainService;
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
///
|
|
///
|
|
@@ -39,9 +44,11 @@ namespace Hotline.Api.Controllers
|
|
/// <param name="mapper"></param>
|
|
/// <param name="mapper"></param>
|
|
/// <param name="knowApplication"></param>
|
|
/// <param name="knowApplication"></param>
|
|
/// <param name="mediator"></param>
|
|
/// <param name="mediator"></param>
|
|
|
|
+ /// <param name="workflowApplication"></param>
|
|
|
|
+ /// <param name="workflowDomainService"></param>
|
|
public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
|
|
public KnowledgeController(IKnowledgeRepository knowledgeRepository, IKnowledgeTempRepository knowledgeTempRepository,
|
|
ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
|
|
ISessionContext sessionContext, IKnowledgeDomainService knowledgeDomainService, IMapper mapper, IKnowApplication knowApplication,
|
|
- IMediator mediator)
|
|
|
|
|
|
+ IMediator mediator, IWorkflowApplication workflowApplication, IWorkflowDomainService workflowDomainService)
|
|
{
|
|
{
|
|
_knowledgeRepository = knowledgeRepository;
|
|
_knowledgeRepository = knowledgeRepository;
|
|
_knowledgeTempRepository = knowledgeTempRepository;
|
|
_knowledgeTempRepository = knowledgeTempRepository;
|
|
@@ -50,6 +57,8 @@ namespace Hotline.Api.Controllers
|
|
_mapper = mapper;
|
|
_mapper = mapper;
|
|
_knowApplication = knowApplication;
|
|
_knowApplication = knowApplication;
|
|
_mediator = mediator;
|
|
_mediator = mediator;
|
|
|
|
+ _workflowApplication = workflowApplication;
|
|
|
|
+ _workflowDomainService = workflowDomainService;
|
|
}
|
|
}
|
|
#region 草稿箱
|
|
#region 草稿箱
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -171,7 +180,24 @@ namespace Hotline.Api.Controllers
|
|
[HttpPost("knowadd")]
|
|
[HttpPost("knowadd")]
|
|
public async Task<string> KnowledgeAdd([FromBody] AddKnowledgeDto dto)
|
|
public async Task<string> KnowledgeAdd([FromBody] AddKnowledgeDto dto)
|
|
{
|
|
{
|
|
- return await _knowledgeDomainService.KnowledgeAdd(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
+ //知识处理逻辑
|
|
|
|
+ var knowId = await _knowledgeDomainService.KnowledgeAdd(dto, HttpContext.RequestAborted);
|
|
|
|
+ //处理流程
|
|
|
|
+ if (!string.IsNullOrEmpty(knowId))
|
|
|
|
+ {
|
|
|
|
+ //调用流程创建
|
|
|
|
+ var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeAdd, knowId, HttpContext.RequestAborted);
|
|
|
|
+ if (exists)
|
|
|
|
+ throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeAdd]}流程");
|
|
|
|
+ var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
|
|
|
|
+ if (string.IsNullOrEmpty(workFlowId))
|
|
|
|
+ {
|
|
|
|
+ //创建流程失败
|
|
|
|
+ await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return knowId;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
@@ -183,40 +209,52 @@ namespace Hotline.Api.Controllers
|
|
[HttpPut("knowupdate")]
|
|
[HttpPut("knowupdate")]
|
|
public async Task KnowledgeUpdate([FromBody] UpdateKnowledgeDto dto)
|
|
public async Task KnowledgeUpdate([FromBody] UpdateKnowledgeDto dto)
|
|
{
|
|
{
|
|
- //新增一条数据
|
|
|
|
- await _knowledgeDomainService.KnowledgeUpdate(dto, HttpContext.RequestAborted);
|
|
|
|
|
|
+ //知识更新流程业务
|
|
|
|
+ var knowId = await _knowledgeDomainService.KnowledgeUpdate(dto, HttpContext.RequestAborted);
|
|
|
|
+ if (!string.IsNullOrEmpty(knowId))
|
|
|
|
+ {
|
|
|
|
+ //知识更新流程创建
|
|
|
|
+ var workFlowId = await _workflowApplication.StartWorkflowAsync(dto.StartWorkflowDto, knowId, HttpContext.RequestAborted);
|
|
|
|
+ if (string.IsNullOrEmpty(workFlowId))
|
|
|
|
+ {
|
|
|
|
+ //创建流程失败
|
|
|
|
+ await _knowledgeRepository.RemoveAsync(p => p.Id == knowId, false, HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 知识库-删除
|
|
/// 知识库-删除
|
|
/// </summary>
|
|
/// </summary>
|
|
/// <param name="Id"></param>
|
|
/// <param name="Id"></param>
|
|
|
|
+ /// <param name="workDto"></param>
|
|
/// <returns></returns>
|
|
/// <returns></returns>
|
|
[Permission(EPermission.KnowledgeDelete)]
|
|
[Permission(EPermission.KnowledgeDelete)]
|
|
[HttpDelete("knowdelete")]
|
|
[HttpDelete("knowdelete")]
|
|
- public async Task KnowledgeDelete(string Id)
|
|
|
|
|
|
+ public async Task KnowledgeDelete(string Id, [FromBody] StartWorkflowDto workDto)
|
|
{
|
|
{
|
|
- await _knowledgeDomainService.KnowledgeDelete(Id, HttpContext.RequestAborted);
|
|
|
|
|
|
+ var know = await _knowledgeRepository.GetAsync(Id, HttpContext.RequestAborted);
|
|
|
|
+ if (know != null && know.IsDeleted == false)
|
|
|
|
+ {
|
|
|
|
+ //如果审批不通过可以直接删除此条信息
|
|
|
|
+ if (know.Status == EKnowledgeStatus.Failed)
|
|
|
|
+ {
|
|
|
|
+ await _knowledgeRepository.RemoveAsync(know, false, HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+ else//审批通过需要走删除流程
|
|
|
|
+ {
|
|
|
|
+ //调用流程创建
|
|
|
|
+ var exists = await _workflowDomainService.ExsitsAsync(WorkflowModuleConsts.KnowledgeDelete, Id, HttpContext.RequestAborted);
|
|
|
|
+ if (exists)
|
|
|
|
+ throw UserFriendlyException.SameMessage($"该知识已发起过{WorkflowModule.Modules[WorkflowModuleConsts.KnowledgeDelete]}流程");
|
|
|
|
+
|
|
|
|
+ await _workflowApplication.StartWorkflowAsync(workDto, know.Id, HttpContext.RequestAborted);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ else
|
|
|
|
+ throw UserFriendlyException.SameMessage("知识删除失败");
|
|
}
|
|
}
|
|
|
|
|
|
- ///// <summary>
|
|
|
|
- ///// 审批操作
|
|
|
|
- ///// </summary>
|
|
|
|
- ///// <param name="Ids">需要审批的数据ID</param>
|
|
|
|
- ///// <param name="ApprovalStatus">审核状态:0:通过;1:不通过</param>
|
|
|
|
- ///// <param name="HandleOpinions">办理意见</param>
|
|
|
|
- ///// <returns></returns>
|
|
|
|
- //[HttpPut("approvalhandle")]
|
|
|
|
- //public async Task ApprovalHandle(List<string> Ids, string ApprovalStatus, string? HandleOpinions)
|
|
|
|
- //{
|
|
|
|
- // if (Ids is null || Ids.Count == 0)
|
|
|
|
- // throw UserFriendlyException.SameMessage("数据不能为空");
|
|
|
|
- // if (ApprovalStatus == "1" && string.IsNullOrEmpty(HandleOpinions))
|
|
|
|
- // throw UserFriendlyException.SameMessage("办理意见不能为空");
|
|
|
|
- // //审批操作
|
|
|
|
- // await _knowledgeDomainService.ApprovalHandle(Ids, ApprovalStatus, HandleOpinions, HttpContext.RequestAborted);
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
/// 知识库-知识下架
|
|
/// 知识库-知识下架
|
|
/// </summary>
|
|
/// </summary>
|