后端:

1、事件订阅增加rabbitmq中间件
移动端:
1、完善移动端目录结构和代码框架
This commit is contained in:
2026-01-28 18:19:45 +08:00
47 changed files with 821 additions and 265 deletions
@@ -0,0 +1,13 @@
using IM_API.Domain.Events;
using MassTransit;
namespace IM_API.Application.EventHandlers.FriendAddHandler
{
public class FriendAddConversationHandler : IConsumer<FriendAddEvent>
{
public Task Consume(ConsumeContext<FriendAddEvent> context)
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,31 @@
using IM_API.Domain.Events;
using IM_API.Models;
using MassTransit;
namespace IM_API.Application.EventHandlers.FriendAddHandler
{
public class FriendAddSignalRHandler : IConsumer<FriendAddEvent>
{
private readonly ImContext _context;
public FriendAddSignalRHandler(ImContext context)
{
_context = context;
}
public Task Consume(ConsumeContext<FriendAddEvent> context)
{
throw new NotImplementedException();
var @event = context.Message;
var RequestfriendShip = new Friend()
{
Avatar = @event.ResponseUser.Avatar,
UserId = @event.RequestUser.Id,
RemarkName = @event.RequestInfo.NickName,
Created = @event.RequestInfo.Created,
};
}
}
}
@@ -7,12 +7,13 @@ using IM_API.Interface.Services;
using IM_API.Models;
using IM_API.Services;
using IM_API.Tools;
using MassTransit;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
namespace IM_API.Application.EventHandlers
namespace IM_API.Application.EventHandlers.MessageCreatedHandler
{
public class ConversationEventHandler : IEventHandler<MessageCreatedEvent>
public class ConversationEventHandler : IConsumer<MessageCreatedEvent>
{
private readonly IConversationService _conversationService;
private readonly ILogger<ConversationEventHandler> _logger;
@@ -30,9 +31,12 @@ namespace IM_API.Application.EventHandlers
_context = imContext;
_mapper = mapper;
}
public async Task Handle(MessageCreatedEvent @event)
public async Task Consume(ConsumeContext<MessageCreatedEvent> context)
{
if(@event.ChatType == ChatType.PRIVATE)
var @event = context.Message;
if (@event.ChatType == ChatType.PRIVATE)
{
Conversation? userAConversation = await _context.Conversations.FirstOrDefaultAsync(
x => x.UserId == @event.MsgSenderId && x.TargetId == @event.MsgRecipientId
@@ -40,9 +44,9 @@ namespace IM_API.Application.EventHandlers
Conversation? userBConversation = await _context.Conversations.FirstOrDefaultAsync(
x => x.UserId == @event.MsgRecipientId && x.TargetId == @event.MsgSenderId
);
if(userAConversation is null || userBConversation is null)
if (userAConversation is null || userBConversation is null)
{
_logger.LogError("消息事件更新会话信息失败:{@event}",@event);
_logger.LogError("消息事件更新会话信息失败:{@event}", @event);
}
userAConversation.LastMessage = @event.MessageContent;
userAConversation.LastReadMessageId = @event.MessageId;
@@ -50,9 +54,10 @@ namespace IM_API.Application.EventHandlers
userBConversation.LastMessage = @event.MessageContent;
userBConversation.UnreadCount += 1;
userBConversation.LastMessageTime = @event.MessageCreated;
_context.UpdateRange(userAConversation,userBConversation);
_context.UpdateRange(userAConversation, userBConversation);
await _context.SaveChangesAsync();
}
}
}
}
@@ -5,11 +5,12 @@ using IM_API.Dtos;
using IM_API.Hubs;
using IM_API.Models;
using IM_API.Tools;
using MassTransit;
using Microsoft.AspNetCore.SignalR;
namespace IM_API.Application.EventHandlers
namespace IM_API.Application.EventHandlers.MessageCreatedHandler
{
public class SignalREventHandler : IEventHandler<MessageCreatedEvent>
public class SignalREventHandler : IConsumer<MessageCreatedEvent>
{
private readonly IHubContext<ChatHub> _hub;
private readonly IMapper _mapper;
@@ -19,9 +20,10 @@ namespace IM_API.Application.EventHandlers
_mapper = mapper;
}
public async Task Handle(MessageCreatedEvent @event)
public async Task Consume(ConsumeContext<MessageCreatedEvent> context)
{
if(@event.ChatType == Models.ChatType.PRIVATE)
var @event = context.Message;
if (@event.ChatType == Models.ChatType.PRIVATE)
{
MessageBaseDto messageBaseDto = new MessageBaseDto
{