前端:
1、优化消息排序逻辑 2、新增加载历史消息 3、修复已知问题 后端: 1、优化消息排序逻辑 2、增加用户信息缓存机制 3、修改日期类型为DateTimeOffset改善时区信息丢失问题 3、修复了已知问题 数据库: 1、新增SequenceId字段用于消息排序 2、新增ClientMsgId字段用于客户端消息回执
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using IM_API.Models;
|
||||
|
||||
namespace IM_API.Interface.Services
|
||||
{
|
||||
public interface ICacheService
|
||||
{
|
||||
/// <summary>
|
||||
/// 设置缓存
|
||||
/// </summary>
|
||||
/// <typeparam name="T">缓存对象类型</typeparam>
|
||||
/// <param name="key">缓存索引值</param>
|
||||
/// <param name="value">要缓存的对象</param>
|
||||
/// <param name="expiration">过期时间</param>
|
||||
/// <returns></returns>
|
||||
Task SetAsync<T>(string key, T value, TimeSpan? expiration = null);
|
||||
/// <summary>
|
||||
/// 获取缓存
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="key">缓存索引</param>
|
||||
/// <returns></returns>
|
||||
Task<T?> GetAsync<T>(string key);
|
||||
/// <summary>
|
||||
/// 删除缓存
|
||||
/// </summary>
|
||||
/// <param name="key">缓存索引</param>
|
||||
/// <returns></returns>
|
||||
Task RemoveAsync(string key);
|
||||
/// <summary>
|
||||
/// 设置用户缓存
|
||||
/// </summary>
|
||||
/// <param name="user"></param>
|
||||
/// <returns></returns>
|
||||
Task SetUserCacheAsync(User user);
|
||||
/// <summary>
|
||||
/// 通过用户名获取用户缓存
|
||||
/// </summary>
|
||||
/// <param name="username"></param>
|
||||
/// <returns></returns>
|
||||
Task<User?> GetUserCacheAsync(string username);
|
||||
/// <summary>
|
||||
/// 删除用户缓存
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <param name="username"></param>
|
||||
/// <returns></returns>
|
||||
Task RemoveUserCacheAsync(string username);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using IM_API.Dtos.Conversation;
|
||||
using IM_API.Models;
|
||||
using IM_API.VOs.Conversation;
|
||||
|
||||
namespace IM_API.Interface.Services
|
||||
{
|
||||
@@ -22,7 +23,7 @@ namespace IM_API.Interface.Services
|
||||
/// </summary>
|
||||
/// <param name="userId">用户id</param>
|
||||
/// <returns></returns>
|
||||
Task<List<ConversationDto>> GetConversationsAsync(int userId);
|
||||
Task<List<ConversationVo>> GetConversationsAsync(int userId);
|
||||
/// <summary>
|
||||
/// 获取指定用户的所有推送标识符
|
||||
/// </summary>
|
||||
@@ -34,7 +35,7 @@ namespace IM_API.Interface.Services
|
||||
/// </summary>
|
||||
/// <param name="conversationId"></param>
|
||||
/// <returns></returns>
|
||||
Task<ConversationDto> GetConversationByIdAsync(int userId, int conversationId);
|
||||
Task<ConversationVo> GetConversationByIdAsync(int userId, int conversationId);
|
||||
/// <summary>
|
||||
/// 清空未读消息
|
||||
/// </summary>
|
||||
@@ -50,5 +51,6 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="chatType"></param>
|
||||
/// <returns></returns>
|
||||
Task MakeConversationAsync(int userAId, int userBId, ChatType chatType);
|
||||
Task UpdateConversationAfterSentAsync(UpdateConversationDto dto);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="groupId">群ID</param>
|
||||
/// <param name="userIds">邀请的用户列表</param>
|
||||
/// <returns></returns>
|
||||
Task InviteUsers(int userId,int groupId, List<int> userIds);
|
||||
Task InviteUsersAsync(int userId,int groupId, List<int> userIds);
|
||||
/// <summary>
|
||||
/// 加入群聊
|
||||
/// </summary>
|
||||
/// <param name="userId">操作者ID</param>
|
||||
/// <param name="groupId">群ID</param>
|
||||
/// <returns></returns>
|
||||
Task JoinGroup(int userId,int groupId);
|
||||
Task JoinGroupAsync(int userId,int groupId);
|
||||
/// <summary>
|
||||
/// 创建群聊
|
||||
/// </summary>
|
||||
@@ -26,14 +26,22 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="groupCreateDto">群信息</param>
|
||||
/// <param name="userIds">邀请用户列表</param>
|
||||
/// <returns></returns>
|
||||
Task<GroupInfoDto> CreateGroup(int userId, GroupCreateDto groupCreateDto, List<int> userIds);
|
||||
Task<GroupInfoDto> CreateGroupAsync(int userId, GroupCreateDto groupCreateDto);
|
||||
/// <summary>
|
||||
/// 删除群
|
||||
/// </summary>
|
||||
/// <param name="userId">操作者ID</param>
|
||||
/// <param name="groupId">群ID</param>
|
||||
/// <returns></returns>
|
||||
Task DeleteGroup(int userId, int groupId);
|
||||
//Task UpdateGroupAuthori
|
||||
Task DeleteGroupAsync(int userId, int groupId);
|
||||
/// <summary>
|
||||
/// 获取当前用户群列表
|
||||
/// </summary>
|
||||
/// <param name="userId">操作者ID</param>
|
||||
/// <param name="page"></param>
|
||||
/// <param name="limit"></param>
|
||||
/// <param name="desc"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<GroupInfoDto>> GetGroupListAsync(int userId, int page, int limit, bool desc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
using IM_API.Dtos;
|
||||
using IM_API.Dtos.Message;
|
||||
using IM_API.Models;
|
||||
using IM_API.VOs.Message;
|
||||
|
||||
namespace IM_API.Interface.Services
|
||||
{
|
||||
@@ -11,7 +14,7 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="receiverId">接收人</param>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<MessageBaseDto> SendPrivateMessageAsync(int senderId,int receiverId,MessageBaseDto dto);
|
||||
Task<MessageBaseVo> SendPrivateMessageAsync(int senderId,int receiverId,MessageBaseDto dto);
|
||||
/// <summary>
|
||||
/// 发送群聊消息
|
||||
/// </summary>
|
||||
@@ -19,16 +22,21 @@ namespace IM_API.Interface.Services
|
||||
/// <param name="groupId">接收群id</param>
|
||||
/// <param name="dto"></param>
|
||||
/// <returns></returns>
|
||||
Task<MessageBaseDto> SendGroupMessageAsync(int senderId,int groupId,MessageBaseDto dto);
|
||||
Task<MessageBaseVo> SendGroupMessageAsync(int senderId,int groupId,MessageBaseDto dto);
|
||||
/// <summary>
|
||||
/// 获取消息列表
|
||||
/// 消息入库
|
||||
/// </summary>
|
||||
/// <param name="message"></param>
|
||||
/// <returns></returns>
|
||||
Task MakeMessageAsync(Message message);
|
||||
/// <summary>
|
||||
/// 获取历史消息列表
|
||||
/// </summary>
|
||||
/// <param name="conversationId">会话id(用于获取指定用户间聊天消息)</param>
|
||||
/// <param name="msgId">消息id</param>
|
||||
/// <param name="sequenceId">消息id</param>
|
||||
/// <param name="pageSize">获取消息数量</param>
|
||||
/// <param name="desc"></param>
|
||||
/// <returns></returns>
|
||||
Task<List<MessageBaseDto>> GetMessagesAsync(int userId, int conversationId,int? msgId,int? pageSize,bool desc);
|
||||
Task<List<MessageBaseVo>> GetMessagesAsync(int userId,MessageQueryDto dto);
|
||||
/// <summary>
|
||||
/// 获取未读消息数
|
||||
/// </summary>
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace IM_API.Interface.Services
|
||||
{
|
||||
public interface ISequenceIdService
|
||||
{
|
||||
/// <summary>
|
||||
/// 创建消息序号
|
||||
/// </summary>
|
||||
/// <param name="streamKey">聊天唯一标识/param>
|
||||
/// <returns></returns>
|
||||
Task<long> GetNextSquenceIdAsync(string streamKey);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user