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 , INotificationHandler { 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); } } }