namespace Dpz.Core.Service.RepositoryService;

/// <summary>
/// 聊天记录
/// </summary>
public interface IChatRecordService
{
    /// <summary>
    /// 保存好友聊天记录
    /// </summary>
    /// <param name="sender">发送人</param>
    /// <param name="message">消息</param>
    /// <param name="receiver">接收人</param>
    /// <returns></returns>
    Task SaveFriendRecordAsync(VmUserInfo sender, string message, VmUserInfo receiver);

    /// <summary>
    /// 保存群聊天记录
    /// </summary>
    /// <param name="sender">发送人</param>
    /// <param name="groupId">群组ID</param>
    /// <param name="message">消息</param>
    /// <param name="fontColor">字体颜色</param>
    /// <returns></returns>
    Task SaveGroupRecordAsync(VmUserInfo sender, string groupId, string message, string? fontColor);

    /// <summary>
    /// 保存与机器人的聊天记录
    /// </summary>
    /// <param name="sender">发送人</param>
    /// <param name="message">消息</param>
    /// <param name="receiveMessage">回复消息</param>
    /// <returns></returns>
    Task SaveRobotRecordAsync(VmUserInfo? sender, string message, string receiveMessage);

    /// <summary>
    /// 获取好友聊天记录
    /// </summary>
    /// <param name="sender">发送人</param>
    /// <param name="receiver">接收人</param>
    /// <param name="pageIndex">页码</param>
    /// <param name="pageSize">每页条数</param>
    /// <returns></returns>
    Task<IPagedList<VmChatRecord>> GetFriendRecordAsync(
        string sender,
        string receiver,
        int pageIndex,
        int pageSize
    );

    /// <summary>
    /// 获取机器人聊天记录
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <returns></returns>
    Task<IPagedList<VmChatRecord>> GetRobotRecordAsync(string sender, int pageIndex, int pageSize);

    /// <summary>
    /// 获取群组聊天记录
    /// </summary>
    /// <param name="groupId"></param>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <returns></returns>
    Task<IPagedList<VmChatRecord>> GetGroupRecordAsync(string groupId, int pageIndex, int pageSize);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个聊天记录服务的接口定义,用于管理不同类型的聊天记录。让我详细解释一下这个接口的设计和功能:

接口概述

IChatRecordService 是一个聊天记录服务接口,定义了保存和获取聊天记录的核心功能。

主要功能分类

1. 保存聊天记录(3个方法)

好友聊天记录保存

Task SaveFriendRecordAsync(VmUserInfo sender, string message, VmUserInfo receiver);
  • 用于保存两个用户之间的私聊消息
  • 需要发送人、接收人信息和消息内容

群聊天记录保存

Task SaveGroupRecordAsync(VmUserInfo sender, string groupId, string message, string? fontColor);
  • 用于保存群组聊天消息
  • 包含发送人、群组ID、消息内容,还支持字体颜色设置
  • fontColor 参数可为空,提供了消息样式的灵活性

机器人聊天记录保存

Task SaveRobotRecordAsync(VmUserInfo? sender, string message, string receiveMessage);
  • 用于保存用户与AI机器人的对话
  • 同时保存用户消息和机器人回复
  • sender 可为空,可能支持匿名对话

2. 获取聊天记录(3个方法)

所有获取方法都支持分页功能,返回 IPagedList<VmChatRecord> 类型:

获取好友聊天记录

Task<IPagedList<VmChatRecord>> GetFriendRecordAsync(string sender, string receiver, int pageIndex, int pageSize);

获取机器人聊天记录

Task<IPagedList<VmChatRecord>> GetRobotRecordAsync(string sender, int pageIndex, int pageSize);

获取群组聊天记录

Task<IPagedList<VmChatRecord>> GetGroupRecordAsync(string groupId, int pageIndex, int pageSize);

设计特点

  1. 异步操作:所有方法都是异步的,使用 Task 返回类型,提高系统性能
  2. 分页支持:查询方法都支持分页,避免大量数据加载的性能问题
  3. 类型安全:使用强类型的 VmUserInfoVmChatRecord 视图模型
  4. 场景覆盖全面:支持私聊、群聊、AI对话三种主要聊天场景
  5. 扩展性好:群聊支持字体颜色等扩展属性

这个接口设计遵循了单一职责原则,专门处理聊天记录的持久化和查询操作,为聊天应用提供了完整的数据服务支持。

评论加载中...