238 lines
8.3 KiB
C#
238 lines
8.3 KiB
C#
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: "应付金额(原始金额)。");
|
||
}
|
||
}
|
||
}
|