feat: 新增配额包/支付相关实体与迁移
App:新增 operation_logs/quota_packages/tenant_payments/tenant_quota_package_purchases 表 Identity:修正 Avatar 字段类型(varchar(256)->text),保持现有数据不变
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Tenants.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 运营操作日志。
|
||||
/// </summary>
|
||||
public sealed class OperationLog : AuditableEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 操作类型:BatchExtend, BatchRemind, StatusChange 等。
|
||||
/// </summary>
|
||||
public string OperationType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 目标类型:Subscription, Bill 等。
|
||||
/// </summary>
|
||||
public string TargetType { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 目标ID列表(JSON)。
|
||||
/// </summary>
|
||||
public string? TargetIds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作人ID。
|
||||
/// </summary>
|
||||
public string? OperatorId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作人名称。
|
||||
/// </summary>
|
||||
public string? OperatorName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作参数(JSON)。
|
||||
/// </summary>
|
||||
public string? Parameters { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 操作结果(JSON)。
|
||||
/// </summary>
|
||||
public string? Result { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否成功。
|
||||
/// </summary>
|
||||
public bool Success { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using TakeoutSaaS.Domain.Tenants.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Tenants.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 配额包定义(平台提供的可购买配额包)。
|
||||
/// </summary>
|
||||
public sealed class QuotaPackage : AuditableEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 配额包名称。
|
||||
/// </summary>
|
||||
public string Name { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// 配额类型。
|
||||
/// </summary>
|
||||
public TenantQuotaType QuotaType { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 配额数值。
|
||||
/// </summary>
|
||||
public decimal QuotaValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 价格。
|
||||
/// </summary>
|
||||
public decimal Price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否上架。
|
||||
/// </summary>
|
||||
public bool IsActive { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// 排序。
|
||||
/// </summary>
|
||||
public int SortOrder { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// 描述。
|
||||
/// </summary>
|
||||
public string? Description { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using TakeoutSaaS.Domain.Tenants.Enums;
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Tenants.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 租户支付记录。
|
||||
/// </summary>
|
||||
public sealed class TenantPayment : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 关联的账单 ID。
|
||||
/// </summary>
|
||||
public long BillingStatementId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付金额。
|
||||
/// </summary>
|
||||
public decimal Amount { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付方式。
|
||||
/// </summary>
|
||||
public PaymentMethod Method { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付状态。
|
||||
/// </summary>
|
||||
public PaymentStatus Status { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 交易号。
|
||||
/// </summary>
|
||||
public string? TransactionNo { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付凭证 URL。
|
||||
/// </summary>
|
||||
public string? ProofUrl { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 支付时间。
|
||||
/// </summary>
|
||||
public DateTime? PaidAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注信息。
|
||||
/// </summary>
|
||||
public string? Notes { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
using TakeoutSaaS.Shared.Abstractions.Entities;
|
||||
|
||||
namespace TakeoutSaaS.Domain.Tenants.Entities;
|
||||
|
||||
/// <summary>
|
||||
/// 租户配额包购买记录。
|
||||
/// </summary>
|
||||
public sealed class TenantQuotaPackagePurchase : MultiTenantEntityBase
|
||||
{
|
||||
/// <summary>
|
||||
/// 配额包 ID。
|
||||
/// </summary>
|
||||
public long QuotaPackageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 购买时的配额值。
|
||||
/// </summary>
|
||||
public decimal QuotaValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 购买价格。
|
||||
/// </summary>
|
||||
public decimal Price { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 购买时间。
|
||||
/// </summary>
|
||||
public DateTime PurchasedAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 过期时间(可选)。
|
||||
/// </summary>
|
||||
public DateTime? ExpiredAt { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注。
|
||||
/// </summary>
|
||||
public string? Notes { get; set; }
|
||||
}
|
||||
Reference in New Issue
Block a user