|
@@ -1,13 +1,18 @@
|
|
|
-using Hotline.Article;
|
|
|
+using Hotline.Application.FlowEngine;
|
|
|
+using Hotline.Article;
|
|
|
+using Hotline.FlowEngine.WfModules;
|
|
|
using Hotline.Permissions;
|
|
|
using Hotline.Repository.SqlSugar.Extensions;
|
|
|
using Hotline.Settings;
|
|
|
using Hotline.Share.Dtos;
|
|
|
using Hotline.Share.Dtos.Article;
|
|
|
+using Hotline.Share.Dtos.FlowEngine;
|
|
|
+using Hotline.Share.Dtos.Order;
|
|
|
using Hotline.Share.Enums.Article;
|
|
|
using MapsterMapper;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Microsoft.OpenApi.Writers;
|
|
|
+using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
|
using XF.Utility.EnumExtensions;
|
|
|
|
|
@@ -20,14 +25,15 @@ namespace Hotline.Api.Controllers
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly ISystemDomainService _systemDomainService;
|
|
|
private readonly ISystemOrganizeRepository _organizeRepository;
|
|
|
+ private readonly IWorkflowApplication _workflowApplication;
|
|
|
|
|
|
- public ArticleController(IRepository<Bulletin> bulletinRepository,IMapper mapper, ISystemDomainService systemDomainService, ISystemOrganizeRepository organizeRepository)
|
|
|
+ public ArticleController(IRepository<Bulletin> bulletinRepository,IMapper mapper, ISystemDomainService systemDomainService, ISystemOrganizeRepository organizeRepository, IWorkflowApplication workflowApplication)
|
|
|
{
|
|
|
_bulletinRepository = bulletinRepository;
|
|
|
_mapper = mapper;
|
|
|
_systemDomainService = systemDomainService;
|
|
|
_organizeRepository = organizeRepository;
|
|
|
-
|
|
|
+ _workflowApplication = workflowApplication;
|
|
|
}
|
|
|
|
|
|
#region 公告
|
|
@@ -73,12 +79,25 @@ namespace Hotline.Api.Controllers
|
|
|
/// <returns></returns>
|
|
|
[Permission(EPermission.AddBulletin)]
|
|
|
[HttpPost("bulletin/add")]
|
|
|
- public async Task AddBulletin([FromBody]AddBulletinDto dto)
|
|
|
+ public async Task AddBulletin([FromBody]BulletinFlowDto dto)
|
|
|
{
|
|
|
- var model = _mapper.Map<Bulletin>(dto);
|
|
|
+
|
|
|
+ var model = _mapper.Map<Bulletin>(dto.Data);
|
|
|
model.BulletinState = Share.Enums.Article.EBulletinState.InReview;
|
|
|
model.ReadedNum = 0;
|
|
|
- await _bulletinRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ var id = await _bulletinRepository.AddAsync(model, HttpContext.RequestAborted);
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var startDto = _mapper.Map<StartWorkflowDto>(dto.Workflow);
|
|
|
+ startDto.DefinitionModuleCode = WorkflowModuleConsts.BulletinApply;
|
|
|
+ startDto.Title = model.Title;
|
|
|
+ await _workflowApplication.StartWorkflowAsync(startDto, id, HttpContext.RequestAborted);
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await _bulletinRepository.RemoveAsync(id, false, HttpContext.RequestAborted);
|
|
|
+ throw new UserFriendlyException($"新增公告流程失败!,{ex.Message}", "新增公告流程失败");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/// <summary>
|