前端:
新增添加好友功能 修复给联系人发消息时跳转空会话的情况 修复了已知问题 后端: 修复了已知问题
This commit is contained in:
@@ -30,12 +30,12 @@ namespace IM_API.Configs
|
||||
.ForMember(dest => dest.UserInfo, opt => opt.MapFrom(src => src.FriendNavigation))
|
||||
;
|
||||
//好友请求通过后新增好友关系
|
||||
CreateMap<FriendRequest, Friend>()
|
||||
.ForMember(dest => dest.UserId , opt => opt.MapFrom(src => src.RequestUser))
|
||||
.ForMember(dest => dest.FriendId , opt => opt.MapFrom(src => src.ResponseUser))
|
||||
.ForMember(dest => dest.StatusEnum , opt =>opt.MapFrom(src => FriendStatus.Added))
|
||||
.ForMember(dest => dest.RemarkName , opt => opt.MapFrom(src => src.ResponseUserNavigation.NickName))
|
||||
.ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.Now))
|
||||
CreateMap<FriendRequestDto, Friend>()
|
||||
.ForMember(dest => dest.UserId , opt => opt.MapFrom(src => src.FromUserId))
|
||||
.ForMember(dest => dest.FriendId , opt => opt.MapFrom(src => src.ToUserId))
|
||||
.ForMember(dest => dest.StatusEnum , opt =>opt.MapFrom(src => FriendStatus.Pending))
|
||||
.ForMember(dest => dest.RemarkName , opt => opt.MapFrom(src => src.RemarkName))
|
||||
.ForMember(dest => dest.Created , opt => opt.MapFrom(src => DateTime.UtcNow))
|
||||
;
|
||||
//发起好友请求转换请求对象
|
||||
CreateMap<FriendRequestDto, FriendRequest>()
|
||||
|
||||
@@ -44,11 +44,11 @@ namespace IM_API.Controllers
|
||||
/// <param name="desc"></param>
|
||||
/// <returns></returns>
|
||||
[HttpGet]
|
||||
public async Task<IActionResult> Requests(bool isReceived,int page,int limit,bool desc)
|
||||
public async Task<IActionResult> Requests(int page,int limit,bool desc)
|
||||
{
|
||||
var userIdStr = User.FindFirstValue(ClaimTypes.NameIdentifier);
|
||||
int userId = int.Parse(userIdStr);
|
||||
var list = await _friendService.GetFriendRequestListAsync(userId,isReceived,page,limit,desc);
|
||||
var list = await _friendService.GetFriendRequestListAsync(userId,page,limit,desc);
|
||||
var res = new BaseResponse<List<FriendRequest>>(list);
|
||||
return Ok(res);
|
||||
}
|
||||
|
||||
@@ -73,6 +73,10 @@ namespace IM_API.Dtos
|
||||
this.Code = codeDefine.Code;
|
||||
this.Message = codeDefine.Message;
|
||||
}
|
||||
public BaseResponse() { }
|
||||
public BaseResponse()
|
||||
{
|
||||
this.Code = CodeDefine.SUCCESS.Code;
|
||||
this.Message = CodeDefine.SUCCESS.Message;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace IM_API.Dtos
|
||||
{
|
||||
public class FriendRequestDto
|
||||
{
|
||||
public int FromUserId { get; set; }
|
||||
public int? FromUserId { get; set; }
|
||||
public int ToUserId { get; set; }
|
||||
[Required(ErrorMessage = "备注名必填")]
|
||||
[StringLength(20, ErrorMessage = "备注名不能超过20位字符")]
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="page"></param>
|
||||
/// <param name="limit"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<FriendRequest>> GetFriendRequestListAsync(int userId,bool isReceived,int page,int limit, bool desc);
|
||||
Task<List<FriendRequest>> GetFriendRequestListAsync(int userId,int page,int limit, bool desc);
|
||||
/// <summary>
|
||||
/// 处理好友请求
|
||||
/// </summary>
|
||||
|
||||
@@ -73,22 +73,14 @@ namespace IM_API.Services
|
||||
}
|
||||
#endregion
|
||||
#region 获取好友请求列表
|
||||
public async Task<List<FriendRequest>> GetFriendRequestListAsync(int userId, bool isReceived, int page, int limit, bool desc)
|
||||
public async Task<List<FriendRequest>> GetFriendRequestListAsync(int userId, int page, int limit, bool desc)
|
||||
{
|
||||
var query = _context.FriendRequests.AsQueryable();
|
||||
//是否为请求方
|
||||
if (isReceived)
|
||||
{
|
||||
query = _context.FriendRequests.Where(x => x.ResponseUser == userId);
|
||||
}
|
||||
else
|
||||
{
|
||||
query = _context.FriendRequests.Where(x => x.RequestUser == userId);
|
||||
}
|
||||
if (desc)
|
||||
{
|
||||
query = query.OrderByDescending(x => x.Id);
|
||||
}
|
||||
var query = _context.FriendRequests
|
||||
.Where(
|
||||
x => (x.ResponseUser == userId) ||
|
||||
x.RequestUser == userId
|
||||
);
|
||||
query = query.OrderByDescending(x => x.Id);
|
||||
var friendRequestList = await query.Skip((page - 1 * limit)).Take(limit).ToListAsync();
|
||||
return friendRequestList;
|
||||
}
|
||||
@@ -154,16 +146,17 @@ namespace IM_API.Services
|
||||
if (alreadyExists)
|
||||
throw new BaseException(CodeDefine.FRIEND_REQUEST_EXISTS);
|
||||
|
||||
var friendShip = await _context.Friends.FirstOrDefaultAsync(x => x.UserId == dto.FromUserId && x.FriendId == dto.ToUserId);
|
||||
|
||||
//检查是否被对方拉黑
|
||||
bool isBlocked = await _context.Friends.AnyAsync(x =>
|
||||
x.UserId == dto.FromUserId && x.FriendId == dto.ToUserId && x.Status == (sbyte)FriendStatus.Blocked
|
||||
);
|
||||
bool isBlocked = friendShip != null && friendShip.StatusEnum == FriendStatus.Blocked;
|
||||
if (isBlocked)
|
||||
throw new BaseException(CodeDefine.FRIEND_REQUEST_REJECTED);
|
||||
|
||||
if (friendShip != null)
|
||||
throw new BaseException(CodeDefine.ALREADY_FRIENDS);
|
||||
//生成实体
|
||||
var friendRequst = _mapper.Map<FriendRequest>(dto);
|
||||
var friend = _mapper.Map<Friend>(friendRequst);
|
||||
var friend = _mapper.Map<Friend>(dto);
|
||||
_context.FriendRequests.Add(friendRequst);
|
||||
_context.Friends.Add(friend);
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
Reference in New Issue
Block a user