Files
IM_NEW/GroupService.WebApi/Application/EventHandler/GroupInvitationEventHandler.cs
T
2026-05-09 17:06:30 +08:00

51 lines
2.2 KiB
C#

using GroupService.Domain.Events;
using GroupService.WebApi.Application.GroupRequest;
using IM.Commons;
using IM.Commons.IntegrationEvents;
using MassTransit;
using MediatR;
namespace GroupService.WebApi.Application.EventHandler
{
public class GroupInvitationEventHandler :
INotificationHandler<GroupInvitationAcceptDomainEvent>
, INotificationHandler<GroupInvitationCreateDomainEvent>
{
private readonly IPublishEndpoint endpoint;
private readonly GroupRequestService requestService;
public GroupInvitationEventHandler(IPublishEndpoint endpoint, GroupRequestService requestService)
{
this.endpoint = endpoint;
this.requestService = requestService;
}
public async Task Handle(GroupInvitationAcceptDomainEvent notification, CancellationToken cancellationToken)
{
var invitation = notification.Invitation;
var res = await requestService.CreateAsync(invitation.GroupId, invitation.UserId,
$"邀请入群"
);
await endpoint.Publish(new GroupInvitationAcceptEvent(invitation.Id, invitation.UserId, invitation.UserProfile.NickName, invitation.UserProfile.Avatar
, invitation.GroupId, invitation.GroupProfile.GroupName, invitation.GroupProfile.Avatar, invitation.OperatorId
, invitation.OperatorProfile.NickName, invitation.OperatorProfile.Avatar
), cancellationToken);
if (!res.Succeeded)
{
throw new EventHandlerException(res.Message);
}
}
public async Task Handle(GroupInvitationCreateDomainEvent notification, CancellationToken cancellationToken)
{
var invitation = notification.Invitation;
await endpoint.Publish(new GroupInvitationCreateEvent(invitation.Id, invitation.UserId, invitation.UserProfile.NickName, invitation.UserProfile.Avatar
, invitation.GroupId, invitation.GroupProfile.GroupName, invitation.GroupProfile.Avatar, invitation.OperatorId
, invitation.OperatorProfile.NickName, invitation.OperatorProfile.Avatar), cancellationToken);
}
}
}