97 lines
3.3 KiB
C#
97 lines
3.3 KiB
C#
using XiangYi.Application.DTOs.Requests;
|
|
using XiangYi.Application.DTOs.Responses;
|
|
|
|
namespace XiangYi.Application.Interfaces;
|
|
|
|
/// <summary>
|
|
/// 聊天服务接口
|
|
/// </summary>
|
|
public interface IChatService
|
|
{
|
|
/// <summary>
|
|
/// 发送消息
|
|
/// </summary>
|
|
/// <param name="senderId">发送者ID</param>
|
|
/// <param name="request">发送消息请求</param>
|
|
/// <returns>发送消息响应</returns>
|
|
Task<SendMessageResponse> SendMessageAsync(long senderId, SendMessageRequest request);
|
|
|
|
/// <summary>
|
|
/// 获取会话列表
|
|
/// </summary>
|
|
/// <param name="userId">用户ID</param>
|
|
/// <returns>会话列表</returns>
|
|
Task<List<ChatSessionResponse>> GetSessionsAsync(long userId);
|
|
|
|
/// <summary>
|
|
/// 获取消息列表
|
|
/// </summary>
|
|
/// <param name="userId">当前用户ID</param>
|
|
/// <param name="request">获取消息请求</param>
|
|
/// <returns>消息分页列表</returns>
|
|
Task<PagedResult<ChatMessageResponse>> GetMessagesAsync(long userId, GetMessagesRequest request);
|
|
|
|
/// <summary>
|
|
/// 标记消息已读
|
|
/// </summary>
|
|
/// <param name="userId">用户ID</param>
|
|
/// <param name="sessionId">会话ID</param>
|
|
/// <returns>标记已读的消息数量</returns>
|
|
Task<int> MarkMessagesAsReadAsync(long userId, long sessionId);
|
|
|
|
/// <summary>
|
|
/// 获取未读消息总数
|
|
/// </summary>
|
|
/// <param name="userId">用户ID</param>
|
|
/// <returns>未读消息数</returns>
|
|
Task<int> GetUnreadCountAsync(long userId);
|
|
|
|
/// <summary>
|
|
/// 请求交换微信
|
|
/// </summary>
|
|
/// <param name="senderId">发送者ID</param>
|
|
/// <param name="request">交换微信请求</param>
|
|
/// <returns>交换请求响应</returns>
|
|
Task<ExchangeRequestResponse> ExchangeWeChatAsync(long senderId, ExchangeWeChatRequest request);
|
|
|
|
/// <summary>
|
|
/// 请求交换照片
|
|
/// </summary>
|
|
/// <param name="senderId">发送者ID</param>
|
|
/// <param name="request">交换照片请求</param>
|
|
/// <returns>交换请求响应</returns>
|
|
Task<ExchangeRequestResponse> ExchangePhotoAsync(long senderId, ExchangePhotoRequest request);
|
|
|
|
/// <summary>
|
|
/// 响应交换请求
|
|
/// </summary>
|
|
/// <param name="userId">响应者ID</param>
|
|
/// <param name="request">响应请求</param>
|
|
/// <returns>交换响应结果</returns>
|
|
Task<ExchangeRespondResponse> RespondExchangeAsync(long userId, RespondExchangeRequest request);
|
|
|
|
/// <summary>
|
|
/// 获取或创建会话
|
|
/// </summary>
|
|
/// <param name="userId1">用户1 ID</param>
|
|
/// <param name="userId2">用户2 ID</param>
|
|
/// <returns>会话ID</returns>
|
|
Task<long> GetOrCreateSessionAsync(long userId1, long userId2);
|
|
|
|
/// <summary>
|
|
/// 检查用户是否有权限访问会话
|
|
/// </summary>
|
|
/// <param name="userId">用户ID</param>
|
|
/// <param name="sessionId">会话ID</param>
|
|
/// <returns>是否有权限</returns>
|
|
Task<bool> CanAccessSessionAsync(long userId, long sessionId);
|
|
|
|
/// <summary>
|
|
/// 删除会话(软删除,仅对当前用户隐藏)
|
|
/// </summary>
|
|
/// <param name="userId">用户ID</param>
|
|
/// <param name="sessionId">会话ID</param>
|
|
/// <returns></returns>
|
|
Task DeleteSessionAsync(long userId, long sessionId);
|
|
}
|