feat: complete phase six backoffice operations

This commit is contained in:
2026-07-28 14:31:43 +08:00
parent 747ff59d76
commit 99e4e43122
31 changed files with 23504 additions and 26 deletions

View File

@@ -1338,6 +1338,221 @@ namespace Tiku.Infrastructure.Persistence.Migrations
});
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceAdjustmentVoucher", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id")
.HasDefaultValueSql("gen_random_uuid()");
b.Property<int>("AmountCents")
.HasColumnType("integer")
.HasColumnName("amount_cents");
b.Property<Guid?>("BatchId")
.HasColumnType("uuid")
.HasColumnName("batch_id");
b.Property<DateTimeOffset?>("ClosedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("closed_at");
b.Property<DateTimeOffset>("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at")
.HasDefaultValueSql("now()");
b.Property<Guid?>("CreatedBy")
.HasColumnType("uuid")
.HasColumnName("created_by");
b.Property<string>("Currency")
.IsRequired()
.HasMaxLength(10)
.HasColumnType("character varying(10)")
.HasColumnName("currency");
b.Property<string>("Direction")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("direction");
b.Property<Guid?>("IssueId")
.HasColumnType("uuid")
.HasColumnName("issue_id");
b.Property<Guid?>("ItemId")
.HasColumnType("uuid")
.HasColumnName("item_id");
b.Property<JsonElement>("Metadata")
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("metadata")
.HasDefaultValueSql("'{}'::jsonb");
b.Property<Guid?>("OrderId")
.HasColumnType("uuid")
.HasColumnName("order_id");
b.Property<Guid?>("PaymentId")
.HasColumnType("uuid")
.HasColumnName("payment_id");
b.Property<string>("ProofAssetKey")
.HasMaxLength(500)
.HasColumnType("character varying(500)")
.HasColumnName("proof_asset_key");
b.Property<string>("Reason")
.IsRequired()
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("reason");
b.Property<Guid?>("RefundRequestId")
.HasColumnType("uuid")
.HasColumnName("refund_request_id");
b.Property<DateTimeOffset?>("ReviewedAt")
.HasColumnType("timestamp with time zone")
.HasColumnName("reviewed_at");
b.Property<Guid?>("ReviewedBy")
.HasColumnType("uuid")
.HasColumnName("reviewed_by");
b.Property<string>("Status")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("status");
b.Property<Guid>("TenantId")
.HasColumnType("uuid")
.HasColumnName("tenant_id");
b.Property<DateTimeOffset>("UpdatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("updated_at")
.HasDefaultValueSql("now()");
b.Property<string>("VoucherNo")
.IsRequired()
.HasMaxLength(100)
.HasColumnType("character varying(100)")
.HasColumnName("voucher_no");
b.HasKey("Id")
.HasName("pk_commerce_adjustment_vouchers");
b.HasAlternateKey("TenantId", "Id")
.HasName("ak_commerce_adjustment_vouchers_tenant_id_id");
b.HasIndex("CreatedBy")
.HasDatabaseName("ix_commerce_adjustment_vouchers_created_by");
b.HasIndex("ReviewedBy")
.HasDatabaseName("ix_commerce_adjustment_vouchers_reviewed_by");
b.HasIndex("TenantId", "BatchId")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_batch_id");
b.HasIndex("TenantId", "ItemId")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_item_id");
b.HasIndex("TenantId", "OrderId")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_order_id");
b.HasIndex("TenantId", "PaymentId")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_payment_id");
b.HasIndex("TenantId", "RefundRequestId")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_refund_request_id");
b.HasIndex("TenantId", "VoucherNo")
.IsUnique()
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_voucher_no");
b.HasIndex("TenantId", "IssueId", "CreatedAt")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_issue_id_created_at");
b.HasIndex("TenantId", "Status", "CreatedAt")
.HasDatabaseName("ix_commerce_adjustment_vouchers_tenant_id_status_created_at");
b.ToTable("commerce_adjustment_vouchers", null, t =>
{
t.HasCheckConstraint("ck_commerce_adjustment_vouchers_amount", "amount_cents > 0");
});
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceAdjustmentVoucherEvent", b =>
{
b.Property<Guid>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uuid")
.HasColumnName("id")
.HasDefaultValueSql("gen_random_uuid()");
b.Property<Guid?>("ActorUserId")
.HasColumnType("uuid")
.HasColumnName("actor_user_id");
b.Property<DateTimeOffset>("CreatedAt")
.ValueGeneratedOnAdd()
.HasColumnType("timestamp with time zone")
.HasColumnName("created_at")
.HasDefaultValueSql("now()");
b.Property<JsonElement>("Details")
.ValueGeneratedOnAdd()
.HasColumnType("jsonb")
.HasColumnName("details")
.HasDefaultValueSql("'{}'::jsonb");
b.Property<string>("FromStatus")
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("from_status");
b.Property<string>("Note")
.HasMaxLength(1000)
.HasColumnType("character varying(1000)")
.HasColumnName("note");
b.Property<Guid>("TenantId")
.HasColumnType("uuid")
.HasColumnName("tenant_id");
b.Property<string>("ToStatus")
.IsRequired()
.HasMaxLength(32)
.HasColumnType("character varying(32)")
.HasColumnName("to_status");
b.Property<Guid>("VoucherId")
.HasColumnType("uuid")
.HasColumnName("voucher_id");
b.HasKey("Id")
.HasName("pk_commerce_adjustment_voucher_events");
b.HasAlternateKey("TenantId", "Id")
.HasName("ak_commerce_adjustment_voucher_events_tenant_id_id");
b.HasIndex("ActorUserId")
.HasDatabaseName("ix_commerce_adjustment_voucher_events_actor_user_id");
b.HasIndex("TenantId", "VoucherId", "CreatedAt")
.HasDatabaseName("ix_commerce_adjustment_voucher_events_tenant_id_voucher_id_cre~");
b.ToTable("commerce_adjustment_voucher_events", (string)null);
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceReconciliationBatch", b =>
{
b.Property<Guid>("Id")
@@ -12937,7 +13152,7 @@ namespace Tiku.Infrastructure.Persistence.Migrations
.HasColumnType("character varying(32)")
.HasColumnName("result");
b.Property<Guid>("TenantId")
b.Property<Guid?>("TenantId")
.HasColumnType("uuid")
.HasColumnName("tenant_id");
@@ -12953,9 +13168,6 @@ namespace Tiku.Infrastructure.Persistence.Migrations
b.HasKey("Id")
.HasName("pk_auth_login_events");
b.HasAlternateKey("TenantId", "Id")
.HasName("ak_auth_login_events_tenant_id_id");
b.HasIndex("UserId")
.HasDatabaseName("ix_auth_login_events_user_id");
@@ -14640,6 +14852,94 @@ namespace Tiku.Infrastructure.Persistence.Migrations
.HasConstraintName("fk_code_batches_tenants_tenant_id");
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceAdjustmentVoucher", b =>
{
b.HasOne("Tiku.Domain.Identity.User", null)
.WithMany()
.HasForeignKey("CreatedBy")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_users_created_by");
b.HasOne("Tiku.Domain.Identity.User", null)
.WithMany()
.HasForeignKey("ReviewedBy")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_users_reviewed_by");
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_commerce_adjustment_vouchers_tenants_tenant_id");
b.HasOne("Tiku.Domain.Commerce.CommerceReconciliationBatch", null)
.WithMany()
.HasForeignKey("TenantId", "BatchId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_commerce_reconciliation_batche~");
b.HasOne("Tiku.Domain.Commerce.CommerceReconciliationIssue", null)
.WithMany()
.HasForeignKey("TenantId", "IssueId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_commerce_reconciliation_issues~");
b.HasOne("Tiku.Domain.Commerce.CommerceReconciliationItem", null)
.WithMany()
.HasForeignKey("TenantId", "ItemId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_commerce_reconciliation_items_~");
b.HasOne("Tiku.Domain.Commerce.Order", null)
.WithMany()
.HasForeignKey("TenantId", "OrderId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_orders_tenant_id_order_id");
b.HasOne("Tiku.Domain.Commerce.Payment", null)
.WithMany()
.HasForeignKey("TenantId", "PaymentId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_payments_tenant_id_payment_id");
b.HasOne("Tiku.Domain.Commerce.CommerceRefundRequest", null)
.WithMany()
.HasForeignKey("TenantId", "RefundRequestId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_vouchers_commerce_refund_requests_tenan~");
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceAdjustmentVoucherEvent", b =>
{
b.HasOne("Tiku.Domain.Identity.User", null)
.WithMany()
.HasForeignKey("ActorUserId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_commerce_adjustment_voucher_events_users_actor_user_id");
b.HasOne("Tiku.Domain.Tenancy.Tenant", null)
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_commerce_adjustment_voucher_events_tenants_tenant_id");
b.HasOne("Tiku.Domain.Commerce.CommerceAdjustmentVoucher", null)
.WithMany()
.HasForeignKey("TenantId", "VoucherId")
.HasPrincipalKey("TenantId", "Id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_commerce_adjustment_voucher_events_commerce_adjustment_vouc~");
});
modelBuilder.Entity("Tiku.Domain.Commerce.CommerceReconciliationBatch", b =>
{
b.HasOne("Tiku.Domain.Identity.User", null)
@@ -17401,7 +17701,6 @@ namespace Tiku.Infrastructure.Persistence.Migrations
.WithMany()
.HasForeignKey("TenantId")
.OnDelete(DeleteBehavior.SetNull)
.IsRequired()
.HasConstraintName("fk_auth_login_events_tenants_tenant_id");
b.HasOne("Tiku.Domain.Identity.User", null)