using System; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace TakeoutSaaS.Infrastructure.Migrations { /// public partial class UpdateTenantBillingSchema : Migration { /// protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn( name: "RefundReason", table: "tenant_payments", type: "character varying(512)", maxLength: 512, nullable: true, comment: "退款原因。"); migrationBuilder.AddColumn( name: "RefundedAt", table: "tenant_payments", type: "timestamp with time zone", nullable: true, comment: "退款时间。"); migrationBuilder.AddColumn( name: "VerifiedAt", table: "tenant_payments", type: "timestamp with time zone", nullable: true, comment: "审核时间。"); migrationBuilder.AddColumn( name: "VerifiedBy", table: "tenant_payments", type: "bigint", nullable: true, comment: "审核人 ID(管理员)。"); migrationBuilder.AlterColumn( 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( name: "BillingType", table: "tenant_billing_statements", type: "integer", nullable: false, defaultValue: 0, comment: "账单类型(订阅账单/配额包账单/手动账单/续费账单)。"); migrationBuilder.AddColumn( name: "Currency", table: "tenant_billing_statements", type: "character varying(8)", maxLength: 8, nullable: false, defaultValue: "CNY", comment: "货币类型(默认 CNY)。"); migrationBuilder.AddColumn( name: "DiscountAmount", table: "tenant_billing_statements", type: "numeric(18,2)", precision: 18, scale: 2, nullable: false, defaultValue: 0m, comment: "折扣金额。"); migrationBuilder.AddColumn( name: "Notes", table: "tenant_billing_statements", type: "character varying(512)", maxLength: 512, nullable: true, comment: "备注信息(如:人工备注、取消原因等)。"); migrationBuilder.AddColumn( name: "OverdueNotifiedAt", table: "tenant_billing_statements", type: "timestamp with time zone", nullable: true, comment: "逾期通知时间。"); migrationBuilder.AddColumn( name: "ReminderSentAt", table: "tenant_billing_statements", type: "timestamp with time zone", nullable: true, comment: "提醒发送时间(续费提醒、逾期提醒等)。"); migrationBuilder.AddColumn( name: "SubscriptionId", table: "tenant_billing_statements", type: "bigint", nullable: true, comment: "关联的订阅 ID(仅当 BillingType 为 Subscription 或 Renewal 时有值)。"); migrationBuilder.AddColumn( 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" }); } /// 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( 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: "应付金额(原始金额)。"); } } }