后端:添加添加好友处理事件

文档:添加测试环境文档
This commit is contained in:
2026-01-30 22:13:56 +08:00
parent a590aa0a26
commit 2d22b4bd27
12 changed files with 115 additions and 26 deletions
@@ -1,4 +1,5 @@
using IM_API.Domain.Events;
using IM_API.Interface.Services;
using IM_API.Models;
using MassTransit;
@@ -6,26 +7,22 @@ namespace IM_API.Application.EventHandlers.FriendAddHandler
{
public class FriendAddSignalRHandler : IConsumer<FriendAddEvent>
{
private readonly ImContext _context;
public FriendAddSignalRHandler(ImContext context)
private readonly IFriendSerivce _friendService;
public FriendAddSignalRHandler(IFriendSerivce friendSerivce)
{
_context = context;
_friendService = friendSerivce;
}
public Task Consume(ConsumeContext<FriendAddEvent> context)
public async Task Consume(ConsumeContext<FriendAddEvent> context)
{
throw new NotImplementedException();
var @event = context.Message;
//为请求发起人添加好友记录
await _friendService.MakeFriendshipAsync(
@event.RequestUser.Id, @event.ResponseUser.Id, @event.RequestInfo.RemarkName);
//为接收人添加好友记录
await _friendService.MakeFriendshipAsync(
@event.ResponseUser.Id, @event.RequestUser.Id, @event.requestUserRemarkname);
var RequestfriendShip = new Friend()
{
Avatar = @event.ResponseUser.Avatar,
UserId = @event.RequestUser.Id,
RemarkName = @event.RequestInfo.NickName,
Created = @event.RequestInfo.Created,
};
}
}
}
+1
View File
@@ -28,6 +28,7 @@ namespace IM_API.Configs
//好友信息模型转换
CreateMap<Friend, FriendInfoDto>()
.ForMember(dest => dest.UserInfo, opt => opt.MapFrom(src => src.FriendNavigation))
.ForMember(dest => dest.Avatar, opt => opt.MapFrom(src => src.FriendNavigation.Avatar))
;
//好友请求通过后新增好友关系
CreateMap<FriendRequestDto, Friend>()
@@ -8,17 +8,18 @@ namespace IM_API.Domain.Events
/// <summary>
/// 发起请求用户
/// </summary>
public UserInfoDto RequestUser { get; set; }
public UserInfoDto RequestUser { get; init; }
public string? requestUserRemarkname { get; init; }
/// <summary>
/// 接受请求用户
/// </summary>
public UserInfoDto ResponseUser { get; set; }
public UserInfoDto ResponseUser { get; init; }
public FriendRequestResDto RequestInfo { get; set; }
public FriendRequestDto RequestInfo { get; init; }
/// <summary>
/// 好友关系创建时间
/// </summary>
public DateTime Created { get; set; }
public DateTime Created { get; init; }
}
}
@@ -60,5 +60,12 @@ namespace IM_API.Interface.Services
/// <param name="friendId">好友关系id</param>
/// <returns></returns>
Task<bool> BlockeFriendAsync(int friendId);
/// <summary>
/// 创建好友关系
/// </summary>
/// <param name="userAId"></param>
/// <param name="userBId"></param>
/// <returns></returns>
Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName);
}
}
+23
View File
@@ -175,5 +175,28 @@ namespace IM_API.Services
return true;
}
#endregion
#region
public async Task MakeFriendshipAsync(int userAId, int userBId, string? remarkName)
{
bool userAexist = await _context.Friends.AnyAsync(x => x.UserId == userAId && x.FriendId == userBId);
if (!userAexist)
{
User? userbInfo = await _context.Users.FirstOrDefaultAsync(x => x.Id == userBId);
if (userbInfo is null) throw new BaseException(CodeDefine.USER_NOT_FOUND);
Friend friendA = new Friend()
{
Avatar = userbInfo.Avatar,
Created = DateTime.UtcNow,
FriendId = userbInfo.Id,
RemarkName = remarkName ?? userbInfo.NickName,
StatusEnum = FriendStatus.Added,
UserId = userAId
};
_context.Friends.Add(friendA);
await _context.SaveChangesAsync();
}
}
#endregion
}
}