|
@@ -15,17 +15,20 @@ public class ApptaskDomainService : IApptaskDomainService, IScopeDependency
|
|
|
{
|
|
|
private readonly IRepository<Apptask> _apptaskRepository;
|
|
|
private readonly IRepository<ApptaskItem> _apptaskItemRepository;
|
|
|
+ private readonly ISessionContextProvider _sessionContextProvider;
|
|
|
private readonly IMapper _mapper;
|
|
|
private readonly ILogger<ApptaskDomainService> _logger;
|
|
|
|
|
|
public ApptaskDomainService(
|
|
|
IRepository<Apptask> apptaskRepository,
|
|
|
IRepository<ApptaskItem> apptaskItemRepository,
|
|
|
+ ISessionContextProvider sessionContextProvider,
|
|
|
IMapper mapper,
|
|
|
ILogger<ApptaskDomainService> logger)
|
|
|
{
|
|
|
_apptaskRepository = apptaskRepository;
|
|
|
_apptaskItemRepository = apptaskItemRepository;
|
|
|
+ _sessionContextProvider = sessionContextProvider;
|
|
|
_mapper = mapper;
|
|
|
_logger = logger;
|
|
|
}
|
|
@@ -162,16 +165,17 @@ public class ApptaskDomainService : IApptaskDomainService, IScopeDependency
|
|
|
/// <param name="cancellation"></param>
|
|
|
/// <returns></returns>
|
|
|
public async Task<ApptaskExecuteResult> ExecuteAsync<TRequest>(IApptaskExecutor<TRequest> executor, ApptaskItem apptaskItem, CancellationToken cancellation)
|
|
|
+ where TRequest : class, IApptaskRequest
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
- TRequest request = default;
|
|
|
- if (!string.IsNullOrEmpty(apptaskItem.TaskParams))
|
|
|
- {
|
|
|
- request = System.Text.Json.JsonSerializer.Deserialize<TRequest>(apptaskItem.TaskParams);
|
|
|
- if (request is null)
|
|
|
- throw new UserFriendlyException("任务参数反序列化异常");
|
|
|
- }
|
|
|
+ if (string.IsNullOrEmpty(apptaskItem.TaskParams))
|
|
|
+ throw new UserFriendlyException($"无效任务参数, taskItemId: {apptaskItem.Id}");
|
|
|
+
|
|
|
+ var request = System.Text.Json.JsonSerializer.Deserialize<TRequest>(apptaskItem.TaskParams);
|
|
|
+ if (request is null)
|
|
|
+ throw new UserFriendlyException($"任务参数反序列化失败, taskItemId: {apptaskItem.Id}");
|
|
|
+ _sessionContextProvider.ChangeSession(request.SessionContext);
|
|
|
var result = await executor.ExecuteAsync(request, cancellation);
|
|
|
apptaskItem.TaskStatus = result.IsSuccess ? ETaskStatus.Succeeded : ETaskStatus.Failed;
|
|
|
apptaskItem.Message = result.Message;
|