|
@@ -1,8 +1,5 @@
|
|
|
-using Google.Protobuf.WellKnownTypes;
|
|
|
-using Hotline.Application.FlowEngine;
|
|
|
+using Hotline.Application.FlowEngine;
|
|
|
using Hotline.Application.Knowledge;
|
|
|
-using Hotline.FlowEngine.Definitions;
|
|
|
-using Hotline.FlowEngine.Workflows;
|
|
|
using Hotline.KnowledgeBase;
|
|
|
using Hotline.KnowledgeBase.Notifies;
|
|
|
using Hotline.Permissions;
|
|
@@ -13,14 +10,11 @@ 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;
|
|
@@ -42,8 +36,6 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IMediator _mediator;
|
|
|
private readonly IWorkflowApplication _workflowApplication;
|
|
|
private readonly IKnowledgeWorkFlowRepository _knowledgeWorkFlowRepository;
|
|
|
- private readonly IWorkflowDomainService _workflowDomainService;
|
|
|
- private readonly IDefinitionDomainService _definitionDomainService;
|
|
|
private readonly IUserRepository _userRepository;
|
|
|
private readonly IKnowledgeTypeRepository _knowledgeTypeRepository;
|
|
|
private readonly IHotspotTypeRepository _hotspotTypeRepository;
|
|
@@ -60,14 +52,12 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="mediator"></param>
|
|
|
/// <param name="workflowApplication"></param>
|
|
|
/// <param name="knowledgeWorkFlowRepository"></param>
|
|
|
- /// <param name="workflowDomainService"></param>
|
|
|
- /// <param name="definitionDomainService"></param>
|
|
|
/// <param name="userRepository"></param>
|
|
|
/// <param name="knowledgeTypeRepository"></param>
|
|
|
/// <param name="hotspotTypeRepository"></param>
|
|
|
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)
|
|
|
+ IMediator mediator, IWorkflowApplication workflowApplication, IKnowledgeWorkFlowRepository knowledgeWorkFlowRepository
|
|
|
+ , IUserRepository userRepository, IKnowledgeTypeRepository knowledgeTypeRepository, IHotspotTypeRepository hotspotTypeRepository)
|
|
|
{
|
|
|
_knowledgeRepository = knowledgeRepository;
|
|
|
_sessionContext = sessionContext;
|
|
@@ -77,8 +67,6 @@ namespace Hotline.Api.Controllers
|
|
|
_mediator = mediator;
|
|
|
_workflowApplication = workflowApplication;
|
|
|
_knowledgeWorkFlowRepository = knowledgeWorkFlowRepository;
|
|
|
- _workflowDomainService = workflowDomainService;
|
|
|
- _definitionDomainService = definitionDomainService;
|
|
|
_userRepository = userRepository;
|
|
|
_knowledgeTypeRepository = knowledgeTypeRepository;
|
|
|
_hotspotTypeRepository = hotspotTypeRepository;
|
|
@@ -150,7 +138,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="dto"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.AddKnowledge)]
|
|
|
+ [Permission(EPermission.AddKnowledge)]
|
|
|
[HttpPost("add")]
|
|
|
public async Task<string> AddKnowledge([FromBody] AddKnowledgeDto dto)
|
|
|
{
|
|
@@ -164,44 +152,12 @@ namespace Hotline.Api.Controllers
|
|
|
return await _knowledgeRepository.AddAsync(kn, 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>
|
|
|
/// 知识库-知识下架
|
|
|
/// </summary>
|
|
|
/// <param name="Id"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.KnowledgeOffShelf)]
|
|
|
+ [Permission(EPermission.KnowledgeOffShelf)]
|
|
|
[HttpPut("offshelf")]
|
|
|
public async Task KnowledgeOffShelf(string Id)
|
|
|
{
|
|
@@ -223,7 +179,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="Id"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.KnowledgeOnTheShelf)]
|
|
|
+ [Permission(EPermission.KnowledgeOnTheShelf)]
|
|
|
[HttpPut("ontheshelf")]
|
|
|
public async Task KnowledgeOnTheShelf(string Id)
|
|
|
{
|
|
@@ -244,6 +200,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="workFlowId"></param>
|
|
|
/// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeRevoke)]
|
|
|
[HttpPut("revoke")]
|
|
|
public async Task KnowledgeRevoke(string workFlowId)
|
|
|
{
|
|
@@ -288,7 +245,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.KnowledgeMyDraftsList)]
|
|
|
+ [Permission(EPermission.KnowledgeMyDraftsList)]
|
|
|
[HttpGet("mydraftslist")]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> MyDraftsList([FromQuery] MyDraftsListPagedDto pagedDto)
|
|
|
{
|
|
@@ -306,6 +263,39 @@ 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] 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>
|
|
|
+ [Permission(EPermission.KnowledgeDraftsDelete)]
|
|
|
+ [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);
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
#region 知识列表
|
|
@@ -329,7 +319,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- //[Permission(EPermission.KnowledgeAllList)]
|
|
|
+ [Permission(EPermission.KnowledgeAllList)]
|
|
|
[HttpGet()]
|
|
|
public async Task<PagedDto<KnowledgeDataDto>> GetKnowList([FromQuery] KnowPagedListDto pagedDto)
|
|
|
{
|
|
@@ -344,7 +334,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.KnowledgeRetrieval)]
|
|
|
+ [Permission(EPermission.KnowledgeRetrieval)]
|
|
|
[HttpGet("knowretrieval")]
|
|
|
public async Task<PagedDto<KnowledgeRetrievalDataDto>> KnowRetrieval([FromQuery] KnowledgeRetrievalPagedListDto pagedDto)
|
|
|
{
|
|
@@ -399,7 +389,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
[HttpGet("deletelist")]
|
|
|
- //[Permission(EPermission.KnowledgeDeleteApply)]
|
|
|
+ [Permission(EPermission.KnowledgeDeleteApply)]
|
|
|
public async Task<PagedDto<KnowledgeDeleteApplyDataDto>> GetDeleteApplyList([FromQuery] KnowledgeDeletelPagedListDto pagedDto)
|
|
|
{
|
|
|
var (total, items) = await _knowledgeWorkFlowRepository
|
|
@@ -447,7 +437,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// </summary>
|
|
|
/// <param name="pagedDto"></param>
|
|
|
/// <returns></returns>
|
|
|
- // [Permission(EPermission.KnowledgeApprovedAllList)]
|
|
|
+ [Permission(EPermission.KnowledgeApprovedAllList)]
|
|
|
[HttpGet("approvedlist")]
|
|
|
public async Task<PagedDto<KnowledgeApprovalDataDto>> ApprovedList([FromQuery] KnowledgeApprovalPagedListDto pagedDto)
|
|
|
{
|
|
@@ -470,9 +460,9 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
foreach (var item in items)
|
|
|
{
|
|
|
- if (item.Workflow!=null)
|
|
|
+ if (item.Workflow != null)
|
|
|
item.CanHandle = item.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode);
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
//处理是否可以办理
|
|
|
//items.ForEach(d => d.CanHandle = d.Workflow.CanHandle(_sessionContext.RequiredUserId, _sessionContext.RequiredOrgCode));
|
|
@@ -536,6 +526,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="id">知识id</param>
|
|
|
/// <param name="dto">流程开启参数</param>
|
|
|
/// <returns></returns>
|
|
|
+ [Permission(EPermission.AddKnowledge)]
|
|
|
[HttpPost("{id}/add-startflow")]
|
|
|
public async Task AddStartFlow(string id, [FromBody] StartWorkflowDto dto)
|
|
|
{
|
|
@@ -548,6 +539,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// <param name="id">知识id</param>
|
|
|
/// <param name="dto">流程开启参数</param>
|
|
|
/// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeDelete)]
|
|
|
[HttpPost("{id}/remove-startflow")]
|
|
|
public async Task RemoveStartFlow(string id, [FromBody] StartWorkflowDto dto)
|
|
|
{
|
|
@@ -558,6 +550,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// 查询知识库办理流程开启参数-新增
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
+ [Permission(EPermission.AddKnowledge)]
|
|
|
[HttpGet("add-flow-start")]
|
|
|
public async Task<IReadOnlyList<NextStepOptions>> GetAddFlowStartOptionsAsync()
|
|
|
{
|
|
@@ -568,6 +561,7 @@ namespace Hotline.Api.Controllers
|
|
|
/// 查询知识库办理流程开启参数-删除
|
|
|
/// </summary>
|
|
|
/// <returns></returns>
|
|
|
+ [Permission(EPermission.KnowledgeDelete)]
|
|
|
[HttpGet("remove-flow-start")]
|
|
|
public async Task<IReadOnlyList<NextStepOptions>> GetRemoveFlowStartOptionsAsync()
|
|
|
{
|
|
@@ -604,7 +598,7 @@ namespace Hotline.Api.Controllers
|
|
|
|
|
|
if (!string.IsNullOrEmpty(knowledge.WorkflowId) && eKnowledgeApplyType != EKnowledgeApplyType.Delete)
|
|
|
throw UserFriendlyException.SameMessage("知识已发起流程");
|
|
|
-
|
|
|
+
|
|
|
//知识审批主表
|
|
|
var flowId = await _knowledgeDomainService.AddWorkFlowAsync(id, eKnowledgeApplyType, HttpContext.RequestAborted);
|
|
|
|