feat: 套餐管理与配额校验能力

This commit is contained in:
2025-12-03 20:17:55 +08:00
parent ea33e6fefe
commit 19137f3cf7
25 changed files with 996 additions and 4 deletions

View File

@@ -0,0 +1,42 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Tenants.Entities;
namespace TakeoutSaaS.Domain.Tenants.Repositories;
/// <summary>
/// 租户套餐仓储。
/// </summary>
public interface ITenantPackageRepository
{
/// <summary>
/// 按 ID 查询套餐。
/// </summary>
Task<TenantPackage?> FindByIdAsync(long id, CancellationToken cancellationToken = default);
/// <summary>
/// 按关键词与启用状态搜索套餐。
/// </summary>
Task<IReadOnlyList<TenantPackage>> SearchAsync(string? keyword, bool? isActive, CancellationToken cancellationToken = default);
/// <summary>
/// 新增套餐。
/// </summary>
Task AddAsync(TenantPackage package, CancellationToken cancellationToken = default);
/// <summary>
/// 更新套餐。
/// </summary>
Task UpdateAsync(TenantPackage package, CancellationToken cancellationToken = default);
/// <summary>
/// 删除套餐。
/// </summary>
Task DeleteAsync(long id, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}

View File

@@ -0,0 +1,38 @@
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using TakeoutSaaS.Domain.Tenants.Entities;
using TakeoutSaaS.Domain.Tenants.Enums;
namespace TakeoutSaaS.Domain.Tenants.Repositories;
/// <summary>
/// 租户配额使用仓储。
/// </summary>
public interface ITenantQuotaUsageRepository
{
/// <summary>
/// 获取租户指定配额的使用情况。
/// </summary>
Task<TenantQuotaUsage?> FindAsync(long tenantId, TenantQuotaType quotaType, CancellationToken cancellationToken = default);
/// <summary>
/// 按租户批量获取配额使用记录。
/// </summary>
Task<IReadOnlyList<TenantQuotaUsage>> GetByTenantAsync(long tenantId, CancellationToken cancellationToken = default);
/// <summary>
/// 新增配额使用记录。
/// </summary>
Task AddAsync(TenantQuotaUsage usage, CancellationToken cancellationToken = default);
/// <summary>
/// 更新配额使用记录。
/// </summary>
Task UpdateAsync(TenantQuotaUsage usage, CancellationToken cancellationToken = default);
/// <summary>
/// 持久化。
/// </summary>
Task SaveChangesAsync(CancellationToken cancellationToken = default);
}