using TakeoutSaaS.Domain.Identity.Entities;
namespace TakeoutSaaS.Domain.Identity.Repositories;
///
/// 小程序用户仓储契约。
///
public interface IMiniUserRepository
{
///
/// 根据微信 OpenId 查找小程序用户。
///
/// 微信 OpenId
/// 取消令牌
/// 小程序用户,如果不存在则返回 null
Task FindByOpenIdAsync(string openId, CancellationToken cancellationToken = default);
///
/// 根据用户 ID 查找小程序用户。
///
/// 用户 ID
/// 取消令牌
/// 小程序用户,如果不存在则返回 null
Task FindByIdAsync(long id, CancellationToken cancellationToken = default);
///
/// 按用户标识集合批量查询小程序用户。
///
Task> GetByIdsAsync(
IReadOnlyCollection ids,
long tenantId,
CancellationToken cancellationToken = default);
///
/// 创建或更新小程序用户(如果 OpenId 已存在则更新,否则创建)。
///
/// 微信 OpenId
/// 微信 UnionId(可选)
/// 昵称
/// 头像地址(可选)
/// 租户 ID
/// 取消令牌
/// 创建或更新后的小程序用户
Task CreateOrUpdateAsync(string openId, string? unionId, string? nickname, string? avatar, long tenantId, CancellationToken cancellationToken = default);
}