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

47 lines
1.8 KiB
C#

using GroupService.Domain.Events;
using GroupService.WebApi.Application.GroupMember;
using IM.Commons;
using IM.Commons.IntegrationEvents;
using MassTransit;
using MediatR;
namespace GroupService.WebApi.Application.EventHandler
{
public class GroupRequestPassedHandler : INotificationHandler<GroupJoinRequestPassedDomainEvent>
{
private readonly IPublishEndpoint endpoint;
private readonly Application.GroupMember.GroupMemberService memberService;
private readonly ILogger<GroupRequestPassedHandler> logger;
public GroupRequestPassedHandler(IPublishEndpoint endpoint,
GroupMemberService memberService, ILogger<GroupRequestPassedHandler> logger)
{
this.endpoint = endpoint;
this.memberService = memberService;
this.logger = logger;
}
public async Task Handle(GroupJoinRequestPassedDomainEvent notification, CancellationToken cancellationToken)
{
var request = notification.Request;
var memberCreateRes = await memberService.CreateAsync(request.GroupId, request.UserId);
await endpoint.Publish(new GroupRequestPassedEvent(request.Id, request.GroupId, request.GroupProfile.GroupName,
request.GroupProfile.Avatar, request.UserId,
request.UserProfile.NickName, request.UserProfile.Avatar,
request.OperatorId.Value, request.OperatorName,
request.OperatorAvatar, request.Description,
request.CreationTime, request.ModificationTime.Value));
if (!memberCreateRes.Succeeded)
{
logger.LogError(memberCreateRes.Message);
throw new EventHandlerException(memberCreateRes.Message);
}
}
}
}