|
@@ -0,0 +1,107 @@
|
|
|
+using Conductor.Client;
|
|
|
+using Conductor.Domain.Models;
|
|
|
+using Hotline.Share.Dtos;
|
|
|
+using Hotline.Share.Dtos.Workflow;
|
|
|
+using Hotline.Share.Requests;
|
|
|
+using MapsterMapper;
|
|
|
+using Microsoft.AspNetCore.Mvc;
|
|
|
+using XF.Domain.Exceptions;
|
|
|
+
|
|
|
+namespace Hotline.Api.Controllers;
|
|
|
+
|
|
|
+/// <summary>
|
|
|
+/// 工作流管理
|
|
|
+/// </summary>
|
|
|
+public class WorkflowController : BaseController
|
|
|
+{
|
|
|
+ private readonly IWorkflowRemotingService _workflowRemotingService;
|
|
|
+ private readonly IMapper _mapper;
|
|
|
+
|
|
|
+ public WorkflowController(
|
|
|
+ IWorkflowRemotingService workflowRemotingService,
|
|
|
+ IMapper mapper)
|
|
|
+ {
|
|
|
+ _workflowRemotingService = workflowRemotingService;
|
|
|
+ _mapper = mapper;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 分页查询流程模板
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpGet("definition")]
|
|
|
+ public async Task<PagedDto<WorkflowDefinitionDto>> QueryDefinitions([FromQuery] PagedRequest dto)
|
|
|
+ {
|
|
|
+ var presRsp = await _workflowRemotingService.QueryPreDefinitionAsync(HttpContext.RequestAborted);
|
|
|
+ if (!presRsp.IsSuccess)
|
|
|
+ throw new UserFriendlyException(presRsp.Error ?? string.Empty, "流程模板草稿查询失败");
|
|
|
+ var definesRsp = await _workflowRemotingService.QueryDefinitionAsync(HttpContext.RequestAborted);
|
|
|
+ if (!definesRsp.IsSuccess)
|
|
|
+ throw new UserFriendlyException(definesRsp.Error ?? string.Empty, "流程模板查询失败");
|
|
|
+ var dtos = _mapper.Map<List<WorkflowDefinitionDto>>(presRsp.Result);
|
|
|
+ dtos.AddRange(_mapper.Map<List<WorkflowDefinitionDto>>(definesRsp.Result));
|
|
|
+ var items = dtos.OrderByDescending(d => d.IsPreDefinition)
|
|
|
+ .ThenByDescending(d => d.Id)
|
|
|
+ .Skip(dto.Skip())
|
|
|
+ .Take(dto.PageSize)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ return new PagedDto<WorkflowDefinitionDto>(dtos.Count, items);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 新增流程模板草稿
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ /// <exception cref="UserFriendlyException"></exception>
|
|
|
+ [HttpPost("predefinition")]
|
|
|
+ public async Task<string> AddPreDefinition([FromBody] PreDefinition dto)
|
|
|
+ {
|
|
|
+ var addPreRsp = await _workflowRemotingService.AddPreDefinitionAsync(dto, HttpContext.RequestAborted);
|
|
|
+ if (!addPreRsp.IsSuccess) throw new UserFriendlyException(addPreRsp.Error ?? string.Empty, "新增流程模板草稿失败");
|
|
|
+ return addPreRsp.Result;
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 更新流程模板草稿
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="dto"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ /// <exception cref="UserFriendlyException"></exception>
|
|
|
+ [HttpPut("predefinition")]
|
|
|
+ public async Task UpdatePreDefinition([FromBody] PreDefinition dto)
|
|
|
+ {
|
|
|
+ var updatePreRsp = await _workflowRemotingService.UpdatePreDefinitionAsync(dto, HttpContext.RequestAborted);
|
|
|
+ if (!updatePreRsp.IsSuccess) throw new UserFriendlyException(updatePreRsp.Error ?? string.Empty, "更新流程模板草稿失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发布(将草稿发布为正式模板)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("publish/{id}")]
|
|
|
+ public async Task Publish(string id)
|
|
|
+ {
|
|
|
+ var pubRsp = await _workflowRemotingService.PublishAsync(id, HttpContext.RequestAborted);
|
|
|
+ if (!pubRsp.IsSuccess) throw new UserFriendlyException(pubRsp.Error ?? string.Empty, "发布流程模板失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 发布(将草稿发布为正式模板)
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ [HttpPost("publish")]
|
|
|
+ public async Task Publish([FromBody] PreDefinition dto)
|
|
|
+ {
|
|
|
+ var pubRsp = await _workflowRemotingService.PublishAsync(dto, HttpContext.RequestAborted);
|
|
|
+ if (!pubRsp.IsSuccess) throw new UserFriendlyException(pubRsp.Error ?? string.Empty, "发布流程模板失败");
|
|
|
+ }
|
|
|
+
|
|
|
+ [HttpPost("")]
|
|
|
+ public async Task Enable(string workflowId)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|