crm.core/code/Crm.Core.MsgTool.Domain/Handlers/CreateTaskCmdHandler.cs

69 lines
1.9 KiB
C#

using Confluent.Kafka;
using Crm.Core.MsgTool.Domain.Events;
using Crm.Core.MsgTool.Domain.Impl;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Crm.Core.MsgTool.Domain.Handlers
{
/// <summary>
/// 创建群发任务命令
/// </summary>
public class CreateTaskCmdHandler : IEventHandler<CreateTaskCmdEvent>
{
private readonly IServiceProvider _serviceProvider;
public CreateTaskCmdHandler(
IServiceProvider serviceProvider
)
{
_serviceProvider = serviceProvider;
}
/// <summary>
/// 可以处理
/// </summary>
/// <param name="event"></param>
/// <returns></returns>
public bool CanHandle(CreateTaskCmdEvent @event)
{
return true;
}
/// <summary>
/// 执行事件
/// </summary>
/// <param name="event"></param>
/// <param name="cancellationToken"></param>
/// <returns></returns>
public async Task<bool> HandleAsync(CreateTaskCmdEvent @event, CancellationToken cancellationToken = default)
{
await Task.Delay(100);
try
{
var task = @event.Task;
if (task == null)
{
Log.Error($"执行创建命令任务报错: 任务不存在!");
return false;
}
var scope = _serviceProvider.CreateScope();
var msgToolDomain = scope.ServiceProvider.GetRequiredService<IMsgToolDomain>();
await msgToolDomain.CreateTaskCmd(@event.Appid, task);
return true;
}
catch (Exception ex)
{
Log.Error(ex, "执行创建命令任务报错");
return false;
}
}
}
}