Files
TakeoutSaaS.TenantApi/src/Infrastructure/TakeoutSaaS.Infrastructure/Migrations/20251217160046_UpdateTenantBillingSchema.cs
2026-02-17 12:12:01 +08:00

238 lines
8.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace TakeoutSaaS.Infrastructure.Migrations
{
/// <inheritdoc />
public partial class UpdateTenantBillingSchema : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "RefundReason",
table: "tenant_payments",
type: "character varying(512)",
maxLength: 512,
nullable: true,
comment: "退款原因。");
migrationBuilder.AddColumn<DateTime>(
name: "RefundedAt",
table: "tenant_payments",
type: "timestamp with time zone",
nullable: true,
comment: "退款时间。");
migrationBuilder.AddColumn<DateTime>(
name: "VerifiedAt",
table: "tenant_payments",
type: "timestamp with time zone",
nullable: true,
comment: "审核时间。");
migrationBuilder.AddColumn<long>(
name: "VerifiedBy",
table: "tenant_payments",
type: "bigint",
nullable: true,
comment: "审核人 ID管理员。");
migrationBuilder.AlterColumn<decimal>(
name: "AmountDue",
table: "tenant_billing_statements",
type: "numeric(18,2)",
precision: 18,
scale: 2,
nullable: false,
comment: "应付金额(原始金额)。",
oldClrType: typeof(decimal),
oldType: "numeric(18,2)",
oldPrecision: 18,
oldScale: 2,
oldComment: "应付金额。");
migrationBuilder.AddColumn<int>(
name: "BillingType",
table: "tenant_billing_statements",
type: "integer",
nullable: false,
defaultValue: 0,
comment: "账单类型(订阅账单/配额包账单/手动账单/续费账单)。");
migrationBuilder.AddColumn<string>(
name: "Currency",
table: "tenant_billing_statements",
type: "character varying(8)",
maxLength: 8,
nullable: false,
defaultValue: "CNY",
comment: "货币类型(默认 CNY。");
migrationBuilder.AddColumn<decimal>(
name: "DiscountAmount",
table: "tenant_billing_statements",
type: "numeric(18,2)",
precision: 18,
scale: 2,
nullable: false,
defaultValue: 0m,
comment: "折扣金额。");
migrationBuilder.AddColumn<string>(
name: "Notes",
table: "tenant_billing_statements",
type: "character varying(512)",
maxLength: 512,
nullable: true,
comment: "备注信息(如:人工备注、取消原因等)。");
migrationBuilder.AddColumn<DateTime>(
name: "OverdueNotifiedAt",
table: "tenant_billing_statements",
type: "timestamp with time zone",
nullable: true,
comment: "逾期通知时间。");
migrationBuilder.AddColumn<DateTime>(
name: "ReminderSentAt",
table: "tenant_billing_statements",
type: "timestamp with time zone",
nullable: true,
comment: "提醒发送时间(续费提醒、逾期提醒等)。");
migrationBuilder.AddColumn<long>(
name: "SubscriptionId",
table: "tenant_billing_statements",
type: "bigint",
nullable: true,
comment: "关联的订阅 ID仅当 BillingType 为 Subscription 或 Renewal 时有值)。");
migrationBuilder.AddColumn<decimal>(
name: "TaxAmount",
table: "tenant_billing_statements",
type: "numeric(18,2)",
precision: 18,
scale: 2,
nullable: false,
defaultValue: 0m,
comment: "税费金额。");
migrationBuilder.CreateIndex(
name: "idx_payment_billing_paidat",
table: "tenant_payments",
columns: new[] { "BillingStatementId", "PaidAt" });
migrationBuilder.CreateIndex(
name: "idx_payment_transaction_no",
table: "tenant_payments",
column: "TransactionNo",
filter: "\"TransactionNo\" IS NOT NULL");
migrationBuilder.CreateIndex(
name: "idx_billing_created_at",
table: "tenant_billing_statements",
column: "CreatedAt");
migrationBuilder.CreateIndex(
name: "idx_billing_status_duedate",
table: "tenant_billing_statements",
columns: new[] { "Status", "DueDate" },
filter: "\"Status\" IN (0, 2)");
migrationBuilder.CreateIndex(
name: "idx_billing_tenant_status_duedate",
table: "tenant_billing_statements",
columns: new[] { "TenantId", "Status", "DueDate" });
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "idx_payment_billing_paidat",
table: "tenant_payments");
migrationBuilder.DropIndex(
name: "idx_payment_transaction_no",
table: "tenant_payments");
migrationBuilder.DropIndex(
name: "idx_billing_created_at",
table: "tenant_billing_statements");
migrationBuilder.DropIndex(
name: "idx_billing_status_duedate",
table: "tenant_billing_statements");
migrationBuilder.DropIndex(
name: "idx_billing_tenant_status_duedate",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "RefundReason",
table: "tenant_payments");
migrationBuilder.DropColumn(
name: "RefundedAt",
table: "tenant_payments");
migrationBuilder.DropColumn(
name: "VerifiedAt",
table: "tenant_payments");
migrationBuilder.DropColumn(
name: "VerifiedBy",
table: "tenant_payments");
migrationBuilder.DropColumn(
name: "BillingType",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "Currency",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "DiscountAmount",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "Notes",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "OverdueNotifiedAt",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "ReminderSentAt",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "SubscriptionId",
table: "tenant_billing_statements");
migrationBuilder.DropColumn(
name: "TaxAmount",
table: "tenant_billing_statements");
migrationBuilder.AlterColumn<decimal>(
name: "AmountDue",
table: "tenant_billing_statements",
type: "numeric(18,2)",
precision: 18,
scale: 2,
nullable: false,
comment: "应付金额。",
oldClrType: typeof(decimal),
oldType: "numeric(18,2)",
oldPrecision: 18,
oldScale: 2,
oldComment: "应付金额(原始金额)。");
}
}
}