后端:添加添加好友处理事件
文档:添加测试环境文档
This commit is contained in:
+11
-14
@@ -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,
|
||||
|
||||
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user