feat(saas): implement marketplace and tenant onboarding

This commit is contained in:
2026-07-29 13:58:59 +08:00
parent 76606029e2
commit 6db200a2fc
145 changed files with 16862 additions and 94529 deletions

View File

@@ -193,28 +193,6 @@ public sealed class CouponRedemption : AuditableTenantEntity
public DateTimeOffset? UsedAt { get; set; }
}
public sealed class TenantSubscription : AuditableTenantEntity
{
public string PlanCode { get; set; } = string.Empty;
public TenantSubscriptionStatus Status { get; set; } = TenantSubscriptionStatus.Trial;
public DateTimeOffset? StartsAt { get; set; }
public DateTimeOffset? ExpiresAt { get; set; }
public string? BillingCycle { get; set; } = "yearly";
public int AmountCents { get; set; }
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
}
public sealed class TenantUsageRecord : Entity, ITenantOwned
{
public Guid TenantId { get; set; }
public string MetricKey { get; set; } = string.Empty;
public decimal MetricValue { get; set; }
public DateOnly PeriodStart { get; set; }
public DateOnly PeriodEnd { get; set; }
public JsonElement Metadata { get; set; } = JsonDefaults.Object();
public DateTimeOffset CreatedAt { get; set; } = DateTimeOffset.UtcNow;
}
public sealed class CommerceRefundRequest : AuditableTenantEntity
{
public Guid OrderId { get; set; }
@@ -389,7 +367,6 @@ public enum EntitlementScopeType { Tenant, Region, Module, Subject, QuestionBank
public enum EntitlementStatus { Active, Revoked, Expired }
public enum DiscountType { Percent, Fixed }
public enum CouponRedemptionStatus { Claimed, Used, Expired, Cancelled }
public enum TenantSubscriptionStatus { Trial, Active, PastDue, Cancelled, Expired }
public enum CommerceRefundStatus { Requested, Approved, Processing, Succeeded, Failed, Rejected, Cancelled }
public enum RefundEntitlementAction { None, RevokeOnSuccess }
public enum ReconciliationBillType { Payment, Refund, Combined }