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