using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Merchants.Entities;
using TakeoutSaaS.Domain.Merchants.Enums;
namespace TakeoutSaaS.Domain.Merchants.Repositories;
///
/// 商户聚合仓储契约,提供基础 CRUD 与查询能力。
///
public interface IMerchantRepository
{
///
/// 依据标识获取商户。
///
Task FindByIdAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
///
/// 按状态筛选商户列表。
///
Task> SearchAsync(long tenantId, MerchantStatus? status, CancellationToken cancellationToken = default);
///
/// 获取指定商户的员工列表。
///
Task> GetStaffAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
///
/// 获取指定商户的合同列表。
///
Task> GetContractsAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
///
/// 获取指定商户的资质文件列表。
///
Task> GetDocumentsAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
///
/// 新增商户主体。
///
Task AddMerchantAsync(Merchant merchant, CancellationToken cancellationToken = default);
///
/// 新增商户员工。
///
Task AddStaffAsync(MerchantStaff staff, CancellationToken cancellationToken = default);
///
/// 新增商户合同。
///
Task AddContractAsync(MerchantContract contract, CancellationToken cancellationToken = default);
///
/// 新增商户资质文件。
///
Task AddDocumentAsync(MerchantDocument document, CancellationToken cancellationToken = default);
///
/// 持久化变更。
///
Task SaveChangesAsync(CancellationToken cancellationToken = default);
///
/// 更新商户信息。
///
Task UpdateMerchantAsync(Merchant merchant, CancellationToken cancellationToken = default);
///
/// 删除商户。
///
Task DeleteMerchantAsync(long merchantId, long tenantId, CancellationToken cancellationToken = default);
}