// using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; using TakeoutSaaS.Infrastructure.App.Persistence; #nullable disable namespace TakeoutSaaS.Infrastructure.Migrations { [DbContext(typeof(TakeoutAppDbContext))] partial class TakeoutAppDbContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "10.0.0") .HasAnnotation("Relational:MaxIdentifierLength", 63); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); modelBuilder.Entity("TakeoutSaaS.Domain.Analytics.Entities.MetricAlertRule", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ConditionJson") .IsRequired() .HasColumnType("text") .HasComment("触发条件 JSON。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Enabled") .HasColumnType("boolean") .HasComment("是否启用。"); b.Property("MetricDefinitionId") .HasColumnType("bigint") .HasComment("关联指标。"); b.Property("NotificationChannels") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("通知渠道。"); b.Property("Severity") .HasColumnType("integer") .HasComment("告警级别。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MetricDefinitionId", "Severity"); b.ToTable("metric_alert_rules", null, t => { t.HasComment("指标告警规则。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Analytics.Entities.MetricDefinition", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Code") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("指标编码。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DefaultAggregation") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("默认聚合方式。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("说明。"); b.Property("DimensionsJson") .HasColumnType("text") .HasComment("维度描述 JSON。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("指标名称。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Code") .IsUnique(); b.ToTable("metric_definitions", null, t => { t.HasComment("指标定义,描述可观测的数据点。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Analytics.Entities.MetricSnapshot", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DimensionKey") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("维度键(JSON)。"); b.Property("MetricDefinitionId") .HasColumnType("bigint") .HasComment("指标定义 ID。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("Value") .HasPrecision(18, 4) .HasColumnType("numeric(18,4)") .HasComment("数值。"); b.Property("WindowEnd") .HasColumnType("timestamp with time zone") .HasComment("统计时间窗口结束。"); b.Property("WindowStart") .HasColumnType("timestamp with time zone") .HasComment("统计时间窗口开始。"); b.HasKey("Id"); b.HasIndex("TenantId", "MetricDefinitionId", "DimensionKey", "WindowStart", "WindowEnd") .IsUnique(); b.ToTable("metric_snapshots", null, t => { t.HasComment("指标快照,用于大盘展示。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Coupons.Entities.Coupon", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Code") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("券码或序列号。"); b.Property("CouponTemplateId") .HasColumnType("bigint") .HasComment("模板标识。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpireAt") .HasColumnType("timestamp with time zone") .HasComment("到期时间。"); b.Property("IssuedAt") .HasColumnType("timestamp with time zone") .HasComment("发放时间。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("订单 ID(已使用时记录)。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UsedAt") .HasColumnType("timestamp with time zone") .HasComment("使用时间。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("归属用户。"); b.HasKey("Id"); b.HasIndex("TenantId", "Code") .IsUnique(); b.ToTable("coupons", null, t => { t.HasComment("用户领取的券。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Coupons.Entities.CouponTemplate", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AllowStack") .HasColumnType("boolean") .HasComment("是否允许叠加其他优惠。"); b.Property("ChannelsJson") .HasColumnType("text") .HasComment("发放渠道(JSON)。"); b.Property("ClaimedQuantity") .HasColumnType("integer") .HasComment("已领取数量。"); b.Property("CouponType") .HasColumnType("integer") .HasComment("券类型。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("备注。"); b.Property("DiscountCap") .HasColumnType("numeric") .HasComment("折扣上限(针对折扣券)。"); b.Property("MinimumSpend") .HasColumnType("numeric") .HasComment("最低消费门槛。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("模板名称。"); b.Property("ProductScopeJson") .HasColumnType("text") .HasComment("适用品类或商品范围(JSON)。"); b.Property("RelativeValidDays") .HasColumnType("integer") .HasComment("有效天数(相对发放时间)。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("StoreScopeJson") .HasColumnType("text") .HasComment("适用门店 ID 集合(JSON)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TotalQuantity") .HasColumnType("integer") .HasComment("总发放数量上限。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("ValidFrom") .HasColumnType("timestamp with time zone") .HasComment("可用开始时间。"); b.Property("ValidTo") .HasColumnType("timestamp with time zone") .HasComment("可用结束时间。"); b.Property("Value") .HasColumnType("numeric") .HasComment("面值或折扣额度。"); b.HasKey("Id"); b.ToTable("coupon_templates", null, t => { t.HasComment("优惠券模板。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Coupons.Entities.PromotionCampaign", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AudienceDescription") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("目标人群描述。"); b.Property("BannerUrl") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("营销素材(如 banner)。"); b.Property("Budget") .HasColumnType("numeric") .HasComment("预算金额。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndAt") .HasColumnType("timestamp with time zone") .HasComment("结束时间。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("活动名称。"); b.Property("PromotionType") .HasColumnType("integer") .HasComment("活动类型。"); b.Property("RulesJson") .IsRequired() .HasColumnType("text") .HasComment("活动规则 JSON。"); b.Property("StartAt") .HasColumnType("timestamp with time zone") .HasComment("开始时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("活动状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.ToTable("promotion_campaigns", null, t => { t.HasComment("营销活动配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.CustomerService.Entities.ChatMessage", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ChatSessionId") .HasColumnType("bigint") .HasComment("会话标识。"); b.Property("Content") .IsRequired() .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("消息内容。"); b.Property("ContentType") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("消息类型(文字/图片/语音等)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsRead") .HasColumnType("boolean") .HasComment("是否已读。"); b.Property("ReadAt") .HasColumnType("timestamp with time zone") .HasComment("读取时间。"); b.Property("SenderType") .HasColumnType("integer") .HasComment("发送方类型。"); b.Property("SenderUserId") .HasColumnType("bigint") .HasComment("发送方用户 ID。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "ChatSessionId", "CreatedAt"); b.ToTable("chat_messages", null, t => { t.HasComment("会话消息。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.CustomerService.Entities.ChatSession", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AgentUserId") .HasColumnType("bigint") .HasComment("当前客服员工 ID。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CustomerUserId") .HasColumnType("bigint") .HasComment("顾客用户 ID。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndedAt") .HasColumnType("timestamp with time zone") .HasComment("结束时间。"); b.Property("IsBotActive") .HasColumnType("boolean") .HasComment("是否机器人接待中。"); b.Property("SessionCode") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("会话编号。"); b.Property("StartedAt") .HasColumnType("timestamp with time zone") .HasComment("开始时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("会话状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("所属门店(可空为平台)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "SessionCode") .IsUnique(); b.ToTable("chat_sessions", null, t => { t.HasComment("客服会话。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.CustomerService.Entities.SupportTicket", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AssignedAgentId") .HasColumnType("bigint") .HasComment("指派的客服。"); b.Property("ClosedAt") .HasColumnType("timestamp with time zone") .HasComment("关闭时间。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CustomerUserId") .HasColumnType("bigint") .HasComment("客户用户 ID。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .IsRequired() .HasColumnType("text") .HasComment("工单详情。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("关联订单(如有)。"); b.Property("Priority") .HasColumnType("integer") .HasComment("优先级。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("Subject") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("工单主题。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TicketNo") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("工单编号。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "TicketNo") .IsUnique(); b.ToTable("support_tickets", null, t => { t.HasComment("客服工单。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.CustomerService.Entities.TicketComment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AttachmentsJson") .HasColumnType("text") .HasComment("附件 JSON。"); b.Property("AuthorUserId") .HasColumnType("bigint") .HasComment("评论人 ID。"); b.Property("Content") .IsRequired() .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("评论内容。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsInternal") .HasColumnType("boolean") .HasComment("是否内部备注。"); b.Property("SupportTicketId") .HasColumnType("bigint") .HasComment("工单标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "SupportTicketId"); b.ToTable("ticket_comments", null, t => { t.HasComment("工单评论/流转记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Deliveries.Entities.DeliveryEvent", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveryOrderId") .HasColumnType("bigint") .HasComment("配送单标识。"); b.Property("EventType") .HasColumnType("integer") .HasComment("事件类型。"); b.Property("Message") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("事件描述。"); b.Property("OccurredAt") .HasColumnType("timestamp with time zone") .HasComment("发生时间。"); b.Property("Payload") .HasColumnType("text") .HasComment("原始数据 JSON。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "DeliveryOrderId", "EventType"); b.ToTable("delivery_events", null, t => { t.HasComment("配送状态事件流水。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Deliveries.Entities.DeliveryOrder", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CourierName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("骑手姓名。"); b.Property("CourierPhone") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("骑手电话。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveredAt") .HasColumnType("timestamp with time zone") .HasComment("完成时间。"); b.Property("DeliveryFee") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("配送费。"); b.Property("DispatchedAt") .HasColumnType("timestamp with time zone") .HasComment("下发时间。"); b.Property("FailureReason") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("异常原因。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("获取或设置关联订单 ID。"); b.Property("PickedUpAt") .HasColumnType("timestamp with time zone") .HasComment("取餐时间。"); b.Property("Provider") .HasColumnType("integer") .HasComment("配送服务商。"); b.Property("ProviderOrderId") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("第三方配送单号。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "OrderId") .IsUnique(); b.ToTable("delivery_orders", null, t => { t.HasComment("配送单。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Distribution.Entities.AffiliateOrder", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AffiliatePartnerId") .HasColumnType("bigint") .HasComment("推广人标识。"); b.Property("BuyerUserId") .HasColumnType("bigint") .HasComment("用户 ID。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EstimatedCommission") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("预计佣金。"); b.Property("OrderAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("订单金额。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("关联订单。"); b.Property("SettledAt") .HasColumnType("timestamp with time zone") .HasComment("结算完成时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("当前状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "AffiliatePartnerId", "OrderId") .IsUnique(); b.ToTable("affiliate_orders", null, t => { t.HasComment("分销订单记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Distribution.Entities.AffiliatePartner", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ChannelType") .HasColumnType("integer") .HasComment("渠道类型。"); b.Property("CommissionRate") .HasColumnType("numeric") .HasComment("分成比例(0-1)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DisplayName") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("昵称或渠道名称。"); b.Property("Phone") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("联系电话。"); b.Property("Remarks") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("审核备注。"); b.Property("Status") .HasColumnType("integer") .HasComment("当前状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户 ID(如绑定平台账号)。"); b.HasKey("Id"); b.HasIndex("TenantId", "DisplayName"); b.ToTable("affiliate_partners", null, t => { t.HasComment("分销/推广合作伙伴。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Distribution.Entities.AffiliatePayout", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AffiliatePartnerId") .HasColumnType("bigint") .HasComment("合作伙伴标识。"); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("结算金额。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("PaidAt") .HasColumnType("timestamp with time zone") .HasComment("打款时间。"); b.Property("Period") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("结算周期描述。"); b.Property("Remarks") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "AffiliatePartnerId", "Period") .IsUnique(); b.ToTable("affiliate_payouts", null, t => { t.HasComment("佣金结算记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Engagement.Entities.CheckInCampaign", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AllowMakeupCount") .HasColumnType("integer") .HasComment("支持补签次数。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("活动描述。"); b.Property("EndDate") .HasColumnType("timestamp with time zone") .HasComment("结束日期。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("活动名称。"); b.Property("RewardsJson") .IsRequired() .HasColumnType("text") .HasComment("连签奖励 JSON。"); b.Property("StartDate") .HasColumnType("timestamp with time zone") .HasComment("开始日期。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Name"); b.ToTable("checkin_campaigns", null, t => { t.HasComment("签到活动配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Engagement.Entities.CheckInRecord", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CheckInCampaignId") .HasColumnType("bigint") .HasComment("活动标识。"); b.Property("CheckInDate") .HasColumnType("timestamp with time zone") .HasComment("签到日期(本地)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsMakeup") .HasColumnType("boolean") .HasComment("是否补签。"); b.Property("RewardJson") .IsRequired() .HasColumnType("text") .HasComment("获得奖励 JSON。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户标识。"); b.HasKey("Id"); b.HasIndex("TenantId", "CheckInCampaignId", "UserId", "CheckInDate") .IsUnique(); b.ToTable("checkin_records", null, t => { t.HasComment("用户签到记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Engagement.Entities.CommunityComment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AuthorUserId") .HasColumnType("bigint") .HasComment("评论人。"); b.Property("Content") .IsRequired() .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("评论内容。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsDeleted") .HasColumnType("boolean") .HasComment("状态。"); b.Property("ParentId") .HasColumnType("bigint") .HasComment("父级评论 ID。"); b.Property("PostId") .HasColumnType("bigint") .HasComment("动态标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "PostId", "CreatedAt"); b.ToTable("community_comments", null, t => { t.HasComment("社区评论。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Engagement.Entities.CommunityPost", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AuthorUserId") .HasColumnType("bigint") .HasComment("作者用户 ID。"); b.Property("CommentCount") .HasColumnType("integer") .HasComment("评论数。"); b.Property("Content") .IsRequired() .HasColumnType("text") .HasComment("内容。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("LikeCount") .HasColumnType("integer") .HasComment("点赞数。"); b.Property("MediaJson") .HasColumnType("text") .HasComment("媒体资源 JSON。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Title") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("标题。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "AuthorUserId", "CreatedAt"); b.ToTable("community_posts", null, t => { t.HasComment("社区动态。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Engagement.Entities.CommunityReaction", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("PostId") .HasColumnType("bigint") .HasComment("动态 ID。"); b.Property("ReactedAt") .HasColumnType("timestamp with time zone") .HasComment("时间戳。"); b.Property("ReactionType") .HasColumnType("integer") .HasComment("反应类型。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户 ID。"); b.HasKey("Id"); b.HasIndex("TenantId", "PostId", "UserId") .IsUnique(); b.ToTable("community_reactions", null, t => { t.HasComment("社区互动反馈。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.GroupBuying.Entities.GroupOrder", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CancelledAt") .HasColumnType("timestamp with time zone") .HasComment("取消时间。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CurrentCount") .HasColumnType("integer") .HasComment("当前已参与人数。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndAt") .HasColumnType("timestamp with time zone") .HasComment("结束时间。"); b.Property("GroupOrderNo") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("拼单编号。"); b.Property("GroupPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("拼团价格。"); b.Property("LeaderUserId") .HasColumnType("bigint") .HasComment("团长用户 ID。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("关联商品或套餐。"); b.Property("StartAt") .HasColumnType("timestamp with time zone") .HasComment("开始时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("拼团状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("SucceededAt") .HasColumnType("timestamp with time zone") .HasComment("成团时间。"); b.Property("TargetCount") .HasColumnType("integer") .HasComment("成团需要的人数。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "GroupOrderNo") .IsUnique(); b.ToTable("group_orders", null, t => { t.HasComment("拼单活动。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.GroupBuying.Entities.GroupParticipant", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("GroupOrderId") .HasColumnType("bigint") .HasComment("拼单活动标识。"); b.Property("JoinedAt") .HasColumnType("timestamp with time zone") .HasComment("参与时间。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("对应订单标识。"); b.Property("Status") .HasColumnType("integer") .HasComment("参与状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户标识。"); b.HasKey("Id"); b.HasIndex("TenantId", "GroupOrderId", "UserId") .IsUnique(); b.ToTable("group_participants", null, t => { t.HasComment("拼单参与者。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Inventory.Entities.InventoryAdjustment", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AdjustmentType") .HasColumnType("integer") .HasComment("调整类型。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("InventoryItemId") .HasColumnType("bigint") .HasComment("对应的库存记录标识。"); b.Property("OccurredAt") .HasColumnType("timestamp with time zone") .HasComment("发生时间。"); b.Property("OperatorId") .HasColumnType("bigint") .HasComment("操作人标识。"); b.Property("Quantity") .HasColumnType("integer") .HasComment("调整数量,正数增加,负数减少。"); b.Property("Reason") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("原因说明。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "InventoryItemId", "OccurredAt"); b.ToTable("inventory_adjustments", null, t => { t.HasComment("库存调整记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Inventory.Entities.InventoryBatch", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BatchNumber") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("批次编号。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpireDate") .HasColumnType("timestamp with time zone") .HasComment("过期日期。"); b.Property("ProductSkuId") .HasColumnType("bigint") .HasComment("SKU 标识。"); b.Property("ProductionDate") .HasColumnType("timestamp with time zone") .HasComment("生产日期。"); b.Property("Quantity") .HasColumnType("integer") .HasComment("入库数量。"); b.Property("RemainingQuantity") .HasColumnType("integer") .HasComment("剩余数量。"); b.Property("RowVersion") .IsConcurrencyToken() .IsRequired() .ValueGeneratedOnAddOrUpdate() .HasColumnType("bytea") .HasComment("并发控制字段。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "ProductSkuId", "BatchNumber") .IsUnique(); b.ToTable("inventory_batches", null, t => { t.HasComment("SKU 批次信息。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Inventory.Entities.InventoryItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BatchConsumeStrategy") .HasColumnType("integer") .HasComment("批次扣减策略。"); b.Property("BatchNumber") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("批次编号,可为空表示混批。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpireDate") .HasColumnType("timestamp with time zone") .HasComment("过期日期。"); b.Property("IsPresale") .HasColumnType("boolean") .HasComment("是否预售商品。"); b.Property("IsSoldOut") .HasColumnType("boolean") .HasComment("是否标记售罄。"); b.Property("Location") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("储位或仓位信息。"); b.Property("MaxQuantityPerOrder") .HasColumnType("integer") .HasComment("单品限购(覆盖商品级 MaxQuantityPerOrder)。"); b.Property("PresaleCapacity") .HasColumnType("integer") .HasComment("预售名额(上限)。"); b.Property("PresaleEndTime") .HasColumnType("timestamp with time zone") .HasComment("预售结束时间(UTC)。"); b.Property("PresaleLocked") .HasColumnType("integer") .HasComment("当前预售已锁定数量。"); b.Property("PresaleStartTime") .HasColumnType("timestamp with time zone") .HasComment("预售开始时间(UTC)。"); b.Property("ProductSkuId") .HasColumnType("bigint") .HasComment("SKU 标识。"); b.Property("QuantityOnHand") .HasColumnType("integer") .HasComment("可用库存。"); b.Property("QuantityReserved") .HasColumnType("integer") .HasComment("已锁定库存(订单占用)。"); b.Property("RowVersion") .IsConcurrencyToken() .IsRequired() .ValueGeneratedOnAddOrUpdate() .HasColumnType("bytea") .HasComment("并发控制字段。"); b.Property("SafetyStock") .HasColumnType("integer") .HasComment("安全库存阈值。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "ProductSkuId", "BatchNumber"); b.ToTable("inventory_items", null, t => { t.HasComment("SKU 在门店的库存信息。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Inventory.Entities.InventoryLockRecord", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasComment("过期时间(UTC)。"); b.Property("IdempotencyKey") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("幂等键。"); b.Property("IsPresale") .HasColumnType("boolean") .HasComment("是否预售锁定。"); b.Property("ProductSkuId") .HasColumnType("bigint") .HasComment("SKU ID。"); b.Property("Quantity") .HasColumnType("integer") .HasComment("锁定数量。"); b.Property("RowVersion") .IsConcurrencyToken() .IsRequired() .ValueGeneratedOnAddOrUpdate() .HasColumnType("bytea") .HasComment("并发控制字段。"); b.Property("Status") .HasColumnType("integer") .HasComment("锁定状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店 ID。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "IdempotencyKey") .IsUnique(); b.HasIndex("TenantId", "StoreId", "ProductSkuId", "Status"); b.ToTable("inventory_lock_records", null, t => { t.HasComment("库存锁定记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Membership.Entities.MemberGrowthLog", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ChangeValue") .HasColumnType("integer") .HasComment("变动数量。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CurrentValue") .HasColumnType("integer") .HasComment("当前成长值。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("MemberId") .HasColumnType("bigint") .HasComment("会员标识。"); b.Property("Notes") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注。"); b.Property("OccurredAt") .HasColumnType("timestamp with time zone") .HasComment("发生时间。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MemberId", "OccurredAt"); b.ToTable("member_growth_logs", null, t => { t.HasComment("成长值变动日志。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Membership.Entities.MemberPointLedger", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BalanceAfterChange") .HasColumnType("integer") .HasComment("变动后余额。"); b.Property("ChangeAmount") .HasColumnType("integer") .HasComment("变动数量,可为负值。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpireAt") .HasColumnType("timestamp with time zone") .HasComment("过期时间(如适用)。"); b.Property("MemberId") .HasColumnType("bigint") .HasComment("会员标识。"); b.Property("OccurredAt") .HasColumnType("timestamp with time zone") .HasComment("发生时间。"); b.Property("Reason") .HasColumnType("integer") .HasComment("变动原因。"); b.Property("SourceId") .HasColumnType("bigint") .HasComment("来源 ID(订单、活动等)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MemberId", "OccurredAt"); b.ToTable("member_point_ledgers", null, t => { t.HasComment("积分变动流水。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Membership.Entities.MemberProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AvatarUrl") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("头像。"); b.Property("BirthDate") .HasColumnType("timestamp with time zone") .HasComment("生日。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("GrowthValue") .HasColumnType("integer") .HasComment("成长值/经验值。"); b.Property("JoinedAt") .HasColumnType("timestamp with time zone") .HasComment("注册时间。"); b.Property("MemberTierId") .HasColumnType("bigint") .HasComment("当前会员等级 ID。"); b.Property("Mobile") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("手机号。"); b.Property("Nickname") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("昵称。"); b.Property("PointsBalance") .HasColumnType("integer") .HasComment("会员积分余额。"); b.Property("Status") .HasColumnType("integer") .HasComment("会员状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户标识。"); b.HasKey("Id"); b.HasIndex("TenantId", "Mobile") .IsUnique(); b.ToTable("member_profiles", null, t => { t.HasComment("会员档案。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Membership.Entities.MemberTier", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("BenefitsJson") .IsRequired() .HasColumnType("text") .HasComment("等级权益(JSON)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("等级名称。"); b.Property("RequiredGrowth") .HasColumnType("integer") .HasComment("所需成长值。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("member_tiers", null, t => { t.HasComment("会员等级定义。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.Merchant", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("详细地址。"); b.Property("BrandAlias") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("品牌简称或别名。"); b.Property("BrandName") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("品牌名称(对外展示)。"); b.Property("BusinessLicenseImageUrl") .HasColumnType("text") .HasComment("营业执照扫描件地址。"); b.Property("BusinessLicenseNumber") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("营业执照号。"); b.Property("Category") .HasColumnType("text") .HasComment("品牌所属品类,如火锅、咖啡等。"); b.Property("City") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所在城市。"); b.Property("ContactEmail") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("联系邮箱。"); b.Property("ContactPhone") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("联系电话。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("District") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所在区县。"); b.Property("JoinedAt") .HasColumnType("timestamp with time zone") .HasComment("入驻时间。"); b.Property("LastReviewedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次审核时间。"); b.Property("Latitude") .HasColumnType("double precision") .HasComment("纬度信息。"); b.Property("LegalPerson") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("法人或负责人姓名。"); b.Property("LogoUrl") .HasColumnType("text") .HasComment("品牌 Logo。"); b.Property("Longitude") .HasColumnType("double precision") .HasComment("经度信息。"); b.Property("Province") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所在省份。"); b.Property("ReviewRemarks") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("审核备注或驳回原因。"); b.Property("ServicePhone") .HasColumnType("text") .HasComment("客服电话。"); b.Property("Status") .HasColumnType("integer") .HasComment("入驻状态。"); b.Property("SupportEmail") .HasColumnType("text") .HasComment("客服邮箱。"); b.Property("TaxNumber") .HasColumnType("text") .HasComment("税号/统一社会信用代码。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId"); b.ToTable("merchants", null, t => { t.HasComment("商户主体信息,承载入驻和资质审核结果。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.MerchantAuditLog", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Action") .HasColumnType("integer") .HasComment("动作类型。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("详情描述。"); b.Property("MerchantId") .HasColumnType("bigint") .HasComment("商户标识。"); b.Property("OperatorId") .HasColumnType("bigint") .HasComment("操作人 ID。"); b.Property("OperatorName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("操作人名称。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Title") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("标题。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MerchantId"); b.ToTable("merchant_audit_logs", null, t => { t.HasComment("商户入驻审核日志。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.MerchantCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DisplayOrder") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasComment("显示顺序,越小越靠前。"); b.Property("IsActive") .HasColumnType("boolean") .HasComment("是否可用。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("类目名称。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Name") .IsUnique(); b.ToTable("merchant_categories", null, t => { t.HasComment("商户可选类目。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.MerchantContract", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ContractNumber") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("合同编号。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndDate") .HasColumnType("timestamp with time zone") .HasComment("合同结束时间。"); b.Property("FileUrl") .IsRequired() .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("合同文件存储地址。"); b.Property("MerchantId") .HasColumnType("bigint") .HasComment("所属商户标识。"); b.Property("SignedAt") .HasColumnType("timestamp with time zone") .HasComment("签署时间。"); b.Property("StartDate") .HasColumnType("timestamp with time zone") .HasComment("合同开始时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("合同状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TerminatedAt") .HasColumnType("timestamp with time zone") .HasComment("终止时间。"); b.Property("TerminationReason") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("终止原因。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MerchantId", "ContractNumber") .IsUnique(); b.ToTable("merchant_contracts", null, t => { t.HasComment("商户合同记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.MerchantDocument", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DocumentNumber") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("证照编号。"); b.Property("DocumentType") .HasColumnType("integer") .HasComment("证照类型。"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasComment("到期日期。"); b.Property("FileUrl") .IsRequired() .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("证照文件链接。"); b.Property("IssuedAt") .HasColumnType("timestamp with time zone") .HasComment("签发日期。"); b.Property("MerchantId") .HasColumnType("bigint") .HasComment("所属商户标识。"); b.Property("Remarks") .HasColumnType("text") .HasComment("审核备注或驳回原因。"); b.Property("Status") .HasColumnType("integer") .HasComment("审核状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MerchantId", "DocumentType"); b.ToTable("merchant_documents", null, t => { t.HasComment("商户提交的资质或证照材料。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Merchants.Entities.MerchantStaff", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Email") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("邮箱地址。"); b.Property("IdentityUserId") .HasColumnType("bigint") .HasComment("登录账号 ID(指向统一身份体系)。"); b.Property("MerchantId") .HasColumnType("bigint") .HasComment("所属商户标识。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("员工姓名。"); b.Property("PermissionsJson") .HasColumnType("text") .HasComment("自定义权限(JSON)。"); b.Property("Phone") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("手机号。"); b.Property("RoleType") .HasColumnType("integer") .HasComment("员工角色类型。"); b.Property("Status") .HasColumnType("integer") .HasComment("员工状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("可选的关联门店 ID。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "MerchantId", "Phone"); b.ToTable("merchant_staff", null, t => { t.HasComment("商户员工账号,支持门店维度分配。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Navigation.Entities.MapLocation", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("地址。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Landmark") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("打车/导航落点描述。"); b.Property("Latitude") .HasColumnType("double precision") .HasComment("纬度。"); b.Property("Longitude") .HasColumnType("double precision") .HasComment("经度。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("名称。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("关联门店 ID,可空表示独立 POI。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId"); b.ToTable("map_locations", null, t => { t.HasComment("地图 POI 信息,用于门店定位和推荐。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Navigation.Entities.NavigationRequest", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Channel") .HasColumnType("integer") .HasComment("来源通道(小程序、H5 等)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("RequestedAt") .HasColumnType("timestamp with time zone") .HasComment("请求时间。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店 ID。"); b.Property("TargetApp") .HasColumnType("integer") .HasComment("跳转的地图应用。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户 ID。"); b.HasKey("Id"); b.HasIndex("TenantId", "UserId", "StoreId", "RequestedAt"); b.ToTable("navigation_requests", null, t => { t.HasComment("用户发起的导航请求日志。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Ordering.Entities.CartItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AttributesJson") .HasColumnType("text") .HasComment("扩展 JSON(规格、加料选项等)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("商品或 SKU 标识。"); b.Property("ProductName") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("商品名称快照。"); b.Property("ProductSkuId") .HasColumnType("bigint") .HasComment("SKU 标识。"); b.Property("Quantity") .HasColumnType("integer") .HasComment("数量。"); b.Property("Remark") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("自定义备注(口味要求)。"); b.Property("ShoppingCartId") .HasColumnType("bigint") .HasComment("所属购物车标识。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UnitPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("单价快照。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "ShoppingCartId"); b.ToTable("cart_items", null, t => { t.HasComment("购物车条目。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Ordering.Entities.CartItemAddon", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CartItemId") .HasColumnType("bigint") .HasComment("所属购物车条目。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExtraPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("附加价格。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("选项名称。"); b.Property("OptionId") .HasColumnType("bigint") .HasComment("选项 ID(可对应 ProductAddonOption)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.ToTable("cart_item_addons", null, t => { t.HasComment("购物车条目的加料/附加项。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Ordering.Entities.CheckoutSession", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExpiresAt") .HasColumnType("timestamp with time zone") .HasComment("过期时间(UTC)。"); b.Property("SessionToken") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("会话 Token。"); b.Property("Status") .HasColumnType("integer") .HasComment("会话状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户标识。"); b.Property("ValidationResultJson") .IsRequired() .HasColumnType("text") .HasComment("校验结果明细 JSON。"); b.HasKey("Id"); b.HasIndex("TenantId", "SessionToken") .IsUnique(); b.ToTable("checkout_sessions", null, t => { t.HasComment("结账会话,记录校验上下文。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Ordering.Entities.ShoppingCart", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveryPreference") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("履约方式(堂食/自提/配送)缓存。"); b.Property("LastModifiedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次修改时间(UTC)。"); b.Property("Status") .HasColumnType("integer") .HasComment("购物车状态,包含正常/锁定。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TableContext") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("桌码或场景标识(扫码点餐)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("用户标识。"); b.HasKey("Id"); b.HasIndex("TenantId", "UserId", "StoreId") .IsUnique(); b.ToTable("shopping_carts", null, t => { t.HasComment("用户购物车,按租户/门店隔离。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Orders.Entities.Order", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CancelReason") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("取消原因。"); b.Property("CancelledAt") .HasColumnType("timestamp with time zone") .HasComment("取消时间。"); b.Property("Channel") .HasColumnType("integer") .HasComment("下单渠道。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CustomerName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("顾客姓名。"); b.Property("CustomerPhone") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("顾客手机号。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveryType") .HasColumnType("integer") .HasComment("履约类型。"); b.Property("DiscountAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("优惠金额。"); b.Property("FinishedAt") .HasColumnType("timestamp with time zone") .HasComment("完成时间。"); b.Property("ItemsAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("商品总额。"); b.Property("OrderNo") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("订单号。"); b.Property("PaidAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("实付金额。"); b.Property("PaidAt") .HasColumnType("timestamp with time zone") .HasComment("支付时间。"); b.Property("PayableAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("应付金额。"); b.Property("PaymentStatus") .HasColumnType("integer") .HasComment("支付状态。"); b.Property("QueueNumber") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("排队号(如有)。"); b.Property("Remark") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("备注。"); b.Property("ReservationId") .HasColumnType("bigint") .HasComment("预约 ID。"); b.Property("Status") .HasColumnType("integer") .HasComment("当前状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店。"); b.Property("TableNo") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("就餐桌号。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "OrderNo") .IsUnique(); b.HasIndex("TenantId", "StoreId", "Status"); b.ToTable("orders", null, t => { t.HasComment("交易订单。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Orders.Entities.OrderItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AttributesJson") .HasColumnType("text") .HasComment("自定义属性 JSON。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DiscountAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("折扣金额。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("订单 ID。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("商品 ID。"); b.Property("ProductName") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("商品名称。"); b.Property("Quantity") .HasColumnType("integer") .HasComment("数量。"); b.Property("SkuName") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("SKU/规格描述。"); b.Property("SubTotal") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("小计。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Unit") .HasMaxLength(16) .HasColumnType("character varying(16)") .HasComment("单位。"); b.Property("UnitPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("单价。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("OrderId"); b.HasIndex("TenantId", "OrderId"); b.ToTable("order_items", null, t => { t.HasComment("订单明细。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Orders.Entities.OrderStatusHistory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Notes") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注信息。"); b.Property("OccurredAt") .HasColumnType("timestamp with time zone") .HasComment("发生时间。"); b.Property("OperatorId") .HasColumnType("bigint") .HasComment("操作人标识(可为空表示系统)。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("订单标识。"); b.Property("Status") .HasColumnType("integer") .HasComment("变更后的状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "OrderId", "OccurredAt"); b.ToTable("order_status_histories", null, t => { t.HasComment("订单状态流转记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Orders.Entities.RefundRequest", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("申请金额。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("关联订单标识。"); b.Property("ProcessedAt") .HasColumnType("timestamp with time zone") .HasComment("审核完成时间。"); b.Property("Reason") .IsRequired() .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("申请原因。"); b.Property("RefundNo") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("退款单号。"); b.Property("RequestedAt") .HasColumnType("timestamp with time zone") .HasComment("用户提交时间。"); b.Property("ReviewNotes") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("审核备注。"); b.Property("Status") .HasColumnType("integer") .HasComment("退款状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "RefundNo") .IsUnique(); b.ToTable("refund_requests", null, t => { t.HasComment("售后/退款申请。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Payments.Entities.PaymentRecord", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("支付金额。"); b.Property("ChannelTransactionId") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("第三方渠道单号。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Method") .HasColumnType("integer") .HasComment("支付方式。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("关联订单。"); b.Property("PaidAt") .HasColumnType("timestamp with time zone") .HasComment("支付完成时间。"); b.Property("Payload") .HasColumnType("text") .HasComment("原始回调内容。"); b.Property("Remark") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("错误/备注。"); b.Property("Status") .HasColumnType("integer") .HasComment("支付状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TradeNo") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("平台交易号。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "OrderId"); b.ToTable("payment_records", null, t => { t.HasComment("支付流水。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Payments.Entities.PaymentRefundRecord", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Amount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("退款金额。"); b.Property("ChannelRefundId") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("渠道退款流水号。"); b.Property("CompletedAt") .HasColumnType("timestamp with time zone") .HasComment("完成时间。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("OrderId") .HasColumnType("bigint") .HasComment("关联订单标识。"); b.Property("Payload") .HasColumnType("text") .HasComment("渠道返回的原始数据 JSON。"); b.Property("PaymentRecordId") .HasColumnType("bigint") .HasComment("原支付记录标识。"); b.Property("RequestedAt") .HasColumnType("timestamp with time zone") .HasComment("退款请求时间。"); b.Property("Status") .HasColumnType("integer") .HasComment("退款状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "PaymentRecordId"); b.ToTable("payment_refund_records", null, t => { t.HasComment("支付渠道退款流水。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.Product", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CategoryId") .HasColumnType("bigint") .HasComment("所属分类。"); b.Property("CoverImage") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("主图。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasColumnType("text") .HasComment("商品描述。"); b.Property("EnableDelivery") .HasColumnType("boolean") .HasComment("支持配送。"); b.Property("EnableDineIn") .HasColumnType("boolean") .HasComment("支持堂食。"); b.Property("EnablePickup") .HasColumnType("boolean") .HasComment("支持自提。"); b.Property("GalleryImages") .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("Gallery 图片逗号分隔。"); b.Property("IsFeatured") .HasColumnType("boolean") .HasComment("是否热门推荐。"); b.Property("MaxQuantityPerOrder") .HasColumnType("integer") .HasComment("最大每单限购。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("商品名称。"); b.Property("OriginalPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("原价。"); b.Property("Price") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("现价。"); b.Property("SpuCode") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("商品编码。"); b.Property("Status") .HasColumnType("integer") .HasComment("商品状态。"); b.Property("StockQuantity") .HasColumnType("integer") .HasComment("库存数量(可选)。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("所属门店。"); b.Property("Subtitle") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("副标题/卖点。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Unit") .HasMaxLength(16) .HasColumnType("character varying(16)") .HasComment("售卖单位(份/杯等)。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "SpuCode") .IsUnique(); b.HasIndex("TenantId", "StoreId"); b.ToTable("products", null, t => { t.HasComment("商品(SPU)信息。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductAddonGroup", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsRequired") .HasColumnType("boolean") .HasComment("是否必选。"); b.Property("MaxSelect") .HasColumnType("integer") .HasComment("最大选择数量。"); b.Property("MinSelect") .HasColumnType("integer") .HasComment("最小选择数量。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("分组名称。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("所属商品。"); b.Property("SelectionType") .HasColumnType("integer") .HasComment("选择类型。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "ProductId", "Name"); b.ToTable("product_addon_groups", null, t => { t.HasComment("加料/做法分组。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductAddonOption", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AddonGroupId") .HasColumnType("bigint") .HasComment("所属加料分组。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExtraPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("附加价格。"); b.Property("IsDefault") .HasColumnType("boolean") .HasComment("是否默认选项。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("选项名称。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.ToTable("product_addon_options", null, t => { t.HasComment("加料选项。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductAttributeGroup", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsRequired") .HasColumnType("boolean") .HasComment("是否必选。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("分组名称,例如“辣度”“份量”。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("所属商品标识。"); b.Property("SelectionType") .HasColumnType("integer") .HasComment("选择类型(单选/多选)。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("显示排序。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("关联门店,可为空表示所有门店共享。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "Name"); b.ToTable("product_attribute_groups", null, t => { t.HasComment("商品规格/属性分组。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductAttributeOption", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AttributeGroupId") .HasColumnType("bigint") .HasComment("所属规格组。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ExtraPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("附加价格。"); b.Property("IsDefault") .HasColumnType("boolean") .HasComment("是否默认选中。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("选项名称。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "AttributeGroupId", "Name") .IsUnique(); b.ToTable("product_attribute_options", null, t => { t.HasComment("商品规格选项。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductCategory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("分类描述。"); b.Property("IsEnabled") .HasColumnType("boolean") .HasComment("是否启用。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("分类名称。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("所属门店。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId"); b.ToTable("product_categories", null, t => { t.HasComment("商品分类。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductMediaAsset", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Caption") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("描述或标题。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("MediaType") .HasColumnType("integer") .HasComment("媒体类型。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("商品标识。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("Url") .IsRequired() .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("媒资链接。"); b.HasKey("Id"); b.ToTable("product_media_assets", null, t => { t.HasComment("商品媒资素材。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductPricingRule", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ConditionsJson") .IsRequired() .HasColumnType("text") .HasComment("条件描述(JSON),如会员等级、渠道等。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndTime") .HasColumnType("timestamp with time zone") .HasComment("生效结束时间。"); b.Property("Price") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("特殊价格。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("所属商品。"); b.Property("RuleType") .HasColumnType("integer") .HasComment("策略类型。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("StartTime") .HasColumnType("timestamp with time zone") .HasComment("生效开始时间。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("WeekdaysJson") .HasColumnType("text") .HasComment("生效星期(JSON 数组)。"); b.HasKey("Id"); b.HasIndex("TenantId", "ProductId", "RuleType"); b.ToTable("product_pricing_rules", null, t => { t.HasComment("商品价格策略,支持会员价/时段价等。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Products.Entities.ProductSku", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AttributesJson") .IsRequired() .HasColumnType("text") .HasComment("规格属性 JSON(记录选项 ID)。"); b.Property("Barcode") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("条形码。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("OriginalPrice") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("原价。"); b.Property("Price") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("售价。"); b.Property("ProductId") .HasColumnType("bigint") .HasComment("所属商品标识。"); b.Property("SkuCode") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("SKU 编码。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("StockQuantity") .HasColumnType("integer") .HasComment("可售库存。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("Weight") .HasPrecision(10, 3) .HasColumnType("numeric(10,3)") .HasComment("重量(千克)。"); b.HasKey("Id"); b.HasIndex("TenantId", "SkuCode") .IsUnique(); b.ToTable("product_skus", null, t => { t.HasComment("商品 SKU,记录具体规格组合价格。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Queues.Entities.QueueTicket", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CalledAt") .HasColumnType("timestamp with time zone") .HasComment("叫号时间。"); b.Property("CancelledAt") .HasColumnType("timestamp with time zone") .HasComment("取消时间。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EstimatedWaitMinutes") .HasColumnType("integer") .HasComment("预计等待分钟。"); b.Property("ExpiredAt") .HasColumnType("timestamp with time zone") .HasComment("过号时间。"); b.Property("PartySize") .HasColumnType("integer") .HasComment("就餐人数。"); b.Property("Remark") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("获取或设置所属门店 ID。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TicketNumber") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("排队编号。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId"); b.HasIndex("TenantId", "StoreId", "TicketNumber") .IsUnique(); b.ToTable("queue_tickets", null, t => { t.HasComment("排队叫号。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Reservations.Entities.Reservation", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CancelledAt") .HasColumnType("timestamp with time zone") .HasComment("取消时间。"); b.Property("CheckInCode") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("核销码/到店码。"); b.Property("CheckedInAt") .HasColumnType("timestamp with time zone") .HasComment("实际签到时间。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CustomerName") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("客户姓名。"); b.Property("CustomerPhone") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("联系电话。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("PeopleCount") .HasColumnType("integer") .HasComment("用餐人数。"); b.Property("Remark") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("备注。"); b.Property("ReservationNo") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("预约号。"); b.Property("ReservationTime") .HasColumnType("timestamp with time zone") .HasComment("预约时间(UTC)。"); b.Property("Status") .HasColumnType("integer") .HasComment("状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店。"); b.Property("TablePreference") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("桌型/标签。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "ReservationNo") .IsUnique(); b.HasIndex("TenantId", "StoreId"); b.ToTable("reservations", null, t => { t.HasComment("预约/预订记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.Store", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("详细地址。"); b.Property("Announcement") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("门店公告。"); b.Property("BusinessHours") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("门店营业时段描述(备用字符串)。"); b.Property("City") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所在城市。"); b.Property("Code") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("门店编码,便于扫码及外部对接。"); b.Property("Country") .HasColumnType("text") .HasComment("所在国家或地区。"); b.Property("CoverImageUrl") .HasColumnType("text") .HasComment("门店海报。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveryRadiusKm") .HasPrecision(6, 2) .HasColumnType("numeric(6,2)") .HasComment("默认配送半径(公里)。"); b.Property("Description") .HasColumnType("text") .HasComment("门店描述或公告。"); b.Property("District") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("区县信息。"); b.Property("Latitude") .HasColumnType("double precision") .HasComment("纬度。"); b.Property("Longitude") .HasColumnType("double precision") .HasComment("高德/腾讯地图经度。"); b.Property("ManagerName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("门店负责人姓名。"); b.Property("MerchantId") .HasColumnType("bigint") .HasComment("所属商户标识。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("门店名称。"); b.Property("Phone") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("联系电话。"); b.Property("Province") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所在省份。"); b.Property("Status") .HasColumnType("integer") .HasComment("门店当前运营状态。"); b.Property("SupportsDelivery") .HasColumnType("boolean") .HasComment("是否支持配送。"); b.Property("SupportsDineIn") .HasColumnType("boolean") .HasComment("是否支持堂食。"); b.Property("SupportsPickup") .HasColumnType("boolean") .HasComment("是否支持自提。"); b.Property("SupportsQueueing") .HasColumnType("boolean") .HasComment("支持排队叫号。"); b.Property("SupportsReservation") .HasColumnType("boolean") .HasComment("支持预约。"); b.Property("Tags") .HasColumnType("text") .HasComment("门店标签(逗号分隔)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Code") .IsUnique(); b.HasIndex("TenantId", "MerchantId"); b.ToTable("stores", null, t => { t.HasComment("门店信息,承载营业配置与能力。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreBusinessHour", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CapacityLimit") .HasColumnType("integer") .HasComment("最大接待容量或单量限制。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DayOfWeek") .HasColumnType("integer") .HasComment("星期几,0 表示周日。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndTime") .HasColumnType("interval") .HasComment("结束时间(本地时间)。"); b.Property("HourType") .HasColumnType("integer") .HasComment("时段类型(正常营业、休息、预约等)。"); b.Property("Notes") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注。"); b.Property("StartTime") .HasColumnType("interval") .HasComment("开始时间(本地时间)。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "DayOfWeek"); b.ToTable("store_business_hours", null, t => { t.HasComment("门店营业时段配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreDeliveryZone", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DeliveryFee") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("配送费。"); b.Property("EstimatedMinutes") .HasColumnType("integer") .HasComment("预计送达分钟。"); b.Property("MinimumOrderAmount") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("起送价。"); b.Property("PolygonGeoJson") .IsRequired() .HasColumnType("text") .HasComment("GeoJSON 表示的多边形范围。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("ZoneName") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("区域名称。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "ZoneName"); b.ToTable("store_delivery_zones", null, t => { t.HasComment("门店配送范围配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreEmployeeShift", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndTime") .HasColumnType("interval") .HasComment("结束时间。"); b.Property("Notes") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("备注。"); b.Property("RoleType") .HasColumnType("integer") .HasComment("排班角色。"); b.Property("ShiftDate") .HasColumnType("timestamp with time zone") .HasComment("班次日期。"); b.Property("StaffId") .HasColumnType("bigint") .HasComment("员工标识。"); b.Property("StartTime") .HasColumnType("interval") .HasComment("开始时间。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "ShiftDate", "StaffId") .IsUnique(); b.ToTable("store_employee_shifts", null, t => { t.HasComment("门店员工排班记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreHoliday", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("Date") .HasColumnType("timestamp with time zone") .HasComment("日期。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("IsClosed") .HasColumnType("boolean") .HasComment("是否全天闭店。"); b.Property("Reason") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("说明内容。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "Date") .IsUnique(); b.ToTable("store_holidays", null, t => { t.HasComment("门店休息日或特殊营业日。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StorePickupSetting", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AllowDaysAhead") .HasColumnType("integer") .HasComment("可预约天数(含当天)。"); b.Property("AllowToday") .HasColumnType("boolean") .HasComment("是否允许当天自提。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DefaultCutoffMinutes") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(30) .HasComment("默认截单分钟(开始前多少分钟截止)。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("MaxQuantityPerOrder") .HasColumnType("integer") .HasComment("单笔自提最大份数。"); b.Property("RowVersion") .IsConcurrencyToken() .IsRequired() .ValueGeneratedOnAddOrUpdate() .HasColumnType("bytea") .HasComment("并发控制字段。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId") .IsUnique(); b.ToTable("store_pickup_settings", null, t => { t.HasComment("门店自提配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StorePickupSlot", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Capacity") .HasColumnType("integer") .HasComment("容量(份数)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CutoffMinutes") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(30) .HasComment("截单分钟(开始前多少分钟截止)。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EndTime") .HasColumnType("interval") .HasComment("当天结束时间(UTC)。"); b.Property("IsEnabled") .HasColumnType("boolean") .HasComment("是否启用。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("档期名称。"); b.Property("ReservedCount") .HasColumnType("integer") .HasComment("已占用数量。"); b.Property("RowVersion") .IsConcurrencyToken() .IsRequired() .ValueGeneratedOnAddOrUpdate() .HasColumnType("bytea") .HasComment("并发控制字段。"); b.Property("StartTime") .HasColumnType("interval") .HasComment("当天开始时间(UTC)。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("Weekdays") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("适用星期(逗号分隔 1-7)。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "Name"); b.ToTable("store_pickup_slots", null, t => { t.HasComment("门店自提档期。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreTable", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AreaId") .HasColumnType("bigint") .HasComment("所在区域 ID。"); b.Property("Capacity") .HasColumnType("integer") .HasComment("可容纳人数。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("QrCodeUrl") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("桌码二维码地址。"); b.Property("Status") .HasColumnType("integer") .HasComment("当前桌台状态。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TableCode") .IsRequired() .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("桌码。"); b.Property("Tags") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("桌台标签(堂食、快餐等)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "TableCode") .IsUnique(); b.ToTable("store_tables", null, t => { t.HasComment("桌台信息与二维码绑定。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Stores.Entities.StoreTableArea", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("区域描述。"); b.Property("Name") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("区域名称。"); b.Property("SortOrder") .HasColumnType("integer") .HasComment("排序值。"); b.Property("StoreId") .HasColumnType("bigint") .HasComment("门店标识。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StoreId", "Name") .IsUnique(); b.ToTable("store_table_areas", null, t => { t.HasComment("门店桌台区域配置。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.Tenant", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Address") .HasColumnType("text") .HasComment("详细地址信息。"); b.Property("City") .HasColumnType("text") .HasComment("所在城市。"); b.Property("Code") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("租户短编码,作为跨系统引用的唯一标识。"); b.Property("ContactEmail") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("主联系人邮箱。"); b.Property("ContactName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("主联系人姓名。"); b.Property("ContactPhone") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("主联系人电话。"); b.Property("Country") .HasColumnType("text") .HasComment("所在国家/地区。"); b.Property("CoverImageUrl") .HasColumnType("text") .HasComment("品牌海报或封面图。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EffectiveFrom") .HasColumnType("timestamp with time zone") .HasComment("服务生效时间(UTC)。"); b.Property("EffectiveTo") .HasColumnType("timestamp with time zone") .HasComment("服务到期时间(UTC)。"); b.Property("Industry") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("所属行业,如餐饮、零售等。"); b.Property("LegalEntityName") .HasColumnType("text") .HasComment("法人或公司主体名称。"); b.Property("LogoUrl") .HasMaxLength(256) .HasColumnType("character varying(256)") .HasComment("LOGO 图片地址。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("租户全称或品牌名称。"); b.Property("PrimaryOwnerUserId") .HasColumnType("bigint") .HasComment("系统内对应的租户所有者账号 ID。"); b.Property("Province") .HasColumnType("text") .HasComment("所在省份或州。"); b.Property("Remarks") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("备注信息,用于运营记录特殊说明。"); b.Property("ShortName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("对外展示的简称。"); b.Property("Status") .HasColumnType("integer") .HasComment("租户当前状态,涵盖审核、启用、停用等场景。"); b.Property("SuspendedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次暂停服务时间。"); b.Property("SuspensionReason") .HasColumnType("text") .HasComment("暂停或终止的原因说明。"); b.Property("Tags") .HasColumnType("text") .HasComment("业务标签集合(逗号分隔)。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("Website") .HasColumnType("text") .HasComment("官网或主要宣传链接。"); b.HasKey("Id"); b.HasIndex("Code") .IsUnique(); b.HasIndex("ContactPhone") .IsUnique(); b.ToTable("tenants", null, t => { t.HasComment("平台租户信息,描述租户的生命周期与基础资料。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantAnnouncement", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AnnouncementType") .HasColumnType("integer") .HasComment("公告类型。"); b.Property("Content") .IsRequired() .HasColumnType("text") .HasComment("公告正文(可为 Markdown/HTML,前端自行渲染)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EffectiveFrom") .HasColumnType("timestamp with time zone") .HasComment("生效时间(UTC)。"); b.Property("EffectiveTo") .HasColumnType("timestamp with time zone") .HasComment("失效时间(UTC),为空表示长期有效。"); b.Property("IsActive") .HasColumnType("boolean") .HasComment("是否启用。"); b.Property("Priority") .HasColumnType("integer") .HasComment("展示优先级,数值越大越靠前。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Title") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("公告标题。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "AnnouncementType", "IsActive"); b.HasIndex("TenantId", "EffectiveFrom", "EffectiveTo"); b.ToTable("tenant_announcements", null, t => { t.HasComment("租户公告。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantAnnouncementRead", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AnnouncementId") .HasColumnType("bigint") .HasComment("公告 ID。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ReadAt") .HasColumnType("timestamp with time zone") .HasComment("已读时间。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UserId") .HasColumnType("bigint") .HasComment("已读用户 ID(后台账号),为空表示租户级已读。"); b.HasKey("Id"); b.HasIndex("TenantId", "AnnouncementId", "UserId") .IsUnique(); b.ToTable("tenant_announcement_reads", null, t => { t.HasComment("租户公告已读记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantAuditLog", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Action") .HasColumnType("integer") .HasComment("操作类型。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("CurrentStatus") .HasColumnType("integer") .HasComment("新状态。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("详细描述。"); b.Property("OperatorId") .HasColumnType("bigint") .HasComment("操作人 ID。"); b.Property("OperatorName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("操作人名称。"); b.Property("PreviousStatus") .HasColumnType("integer") .HasComment("原状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("关联的租户标识。"); b.Property("Title") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("日志标题。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId"); b.ToTable("tenant_audit_logs", null, t => { t.HasComment("租户运营审核日志。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantBillingStatement", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AmountDue") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("应付金额。"); b.Property("AmountPaid") .HasPrecision(18, 2) .HasColumnType("numeric(18,2)") .HasComment("实付金额。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("DueDate") .HasColumnType("timestamp with time zone") .HasComment("到期日。"); b.Property("LineItemsJson") .HasColumnType("text") .HasComment("账单明细 JSON,记录各项费用。"); b.Property("PeriodEnd") .HasColumnType("timestamp with time zone") .HasComment("账单周期结束时间。"); b.Property("PeriodStart") .HasColumnType("timestamp with time zone") .HasComment("账单周期开始时间。"); b.Property("StatementNo") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("账单编号,供对账查询。"); b.Property("Status") .HasColumnType("integer") .HasComment("当前付款状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "StatementNo") .IsUnique(); b.ToTable("tenant_billing_statements", null, t => { t.HasComment("租户账单,用于呈现周期性收费。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantNotification", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Channel") .HasColumnType("integer") .HasComment("发布通道(站内、邮件、短信等)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Message") .IsRequired() .HasMaxLength(1024) .HasColumnType("character varying(1024)") .HasComment("通知正文。"); b.Property("MetadataJson") .HasColumnType("text") .HasComment("附加元数据 JSON。"); b.Property("ReadAt") .HasColumnType("timestamp with time zone") .HasComment("租户是否已阅读。"); b.Property("SentAt") .HasColumnType("timestamp with time zone") .HasComment("推送时间。"); b.Property("Severity") .HasColumnType("integer") .HasComment("通知重要级别。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("Title") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("通知标题。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "Channel", "SentAt"); b.ToTable("tenant_notifications", null, t => { t.HasComment("面向租户的站内通知或消息推送。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantPackage", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("Description") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("套餐描述,包含适用场景、权益等。"); b.Property("FeaturePoliciesJson") .HasColumnType("text") .HasComment("权益明细 JSON,记录自定义特性开关。"); b.Property("IsActive") .HasColumnType("boolean") .HasComment("是否仍可售卖。"); b.Property("MaxAccountCount") .HasColumnType("integer") .HasComment("允许创建的最大账号数。"); b.Property("MaxDeliveryOrders") .HasColumnType("integer") .HasComment("每月可调用的配送单数量上限。"); b.Property("MaxSmsCredits") .HasColumnType("integer") .HasComment("每月短信额度上限。"); b.Property("MaxStorageGb") .HasColumnType("integer") .HasComment("存储容量上限(GB)。"); b.Property("MaxStoreCount") .HasColumnType("integer") .HasComment("允许的最大门店数。"); b.Property("MonthlyPrice") .HasColumnType("numeric") .HasComment("月付价格,单位:人民币元。"); b.Property("Name") .IsRequired() .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("套餐名称,展示给租户的简称。"); b.Property("PackageType") .HasColumnType("integer") .HasComment("套餐分类(试用、标准、旗舰等)。"); b.Property("SortOrder") .ValueGeneratedOnAdd() .HasColumnType("integer") .HasDefaultValue(0) .HasComment("展示排序,数值越小越靠前。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("YearlyPrice") .HasColumnType("numeric") .HasComment("年付价格,单位:人民币元。"); b.HasKey("Id"); b.HasIndex("IsActive", "SortOrder"); b.ToTable("tenant_packages", null, t => { t.HasComment("平台提供的租户套餐定义。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantQuotaUsage", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("LastResetAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次重置时间。"); b.Property("LimitValue") .HasColumnType("numeric") .HasComment("当前配额上限。"); b.Property("QuotaType") .HasColumnType("integer") .HasComment("配额类型,例如门店数、短信条数等。"); b.Property("ResetCycle") .HasColumnType("text") .HasComment("配额刷新周期描述(如月、年)。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.Property("UsedValue") .HasColumnType("numeric") .HasComment("已消耗的数量。"); b.HasKey("Id"); b.HasIndex("TenantId", "QuotaType") .IsUnique(); b.ToTable("tenant_quota_usages", null, t => { t.HasComment("租户配额使用情况快照。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantReviewClaim", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("ClaimedAt") .HasColumnType("timestamp with time zone") .HasComment("领取时间(UTC)。"); b.Property("ClaimedBy") .HasColumnType("bigint") .HasComment("领取人用户 ID。"); b.Property("ClaimedByName") .IsRequired() .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("领取人名称(展示用快照)。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("ReleasedAt") .HasColumnType("timestamp with time zone") .HasComment("释放时间(UTC),未释放时为 null。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("被领取的租户 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("ClaimedBy"); b.HasIndex("TenantId") .IsUnique() .HasFilter("\"ReleasedAt\" IS NULL AND \"DeletedAt\" IS NULL"); b.ToTable("tenant_review_claims", null, t => { t.HasComment("租户入驻审核领取记录(防止多管理员并发审核)。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantSubscription", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AutoRenew") .HasColumnType("boolean") .HasComment("是否开启自动续费。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EffectiveFrom") .HasColumnType("timestamp with time zone") .HasComment("订阅生效时间(UTC)。"); b.Property("EffectiveTo") .HasColumnType("timestamp with time zone") .HasComment("订阅到期时间(UTC)。"); b.Property("NextBillingDate") .HasColumnType("timestamp with time zone") .HasComment("下一个计费时间,配合自动续费使用。"); b.Property("Notes") .HasColumnType("text") .HasComment("运营备注信息。"); b.Property("ScheduledPackageId") .HasColumnType("bigint") .HasComment("若已排期升降配,对应的新套餐 ID。"); b.Property("Status") .HasColumnType("integer") .HasComment("订阅当前状态。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("所属租户 ID。"); b.Property("TenantPackageId") .HasColumnType("bigint") .HasComment("当前订阅关联的套餐标识。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "TenantPackageId"); b.ToTable("tenant_subscriptions", null, t => { t.HasComment("租户套餐订阅记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantSubscriptionHistory", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("Amount") .HasColumnType("numeric") .HasComment("相关费用。"); b.Property("ChangeType") .HasColumnType("integer") .HasComment("变更类型。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("Currency") .HasMaxLength(8) .HasColumnType("character varying(8)") .HasComment("币种。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("EffectiveFrom") .HasColumnType("timestamp with time zone") .HasComment("生效时间。"); b.Property("EffectiveTo") .HasColumnType("timestamp with time zone") .HasComment("到期时间。"); b.Property("FromPackageId") .HasColumnType("bigint") .HasComment("原套餐 ID。"); b.Property("Notes") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("备注。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("租户标识。"); b.Property("TenantSubscriptionId") .HasColumnType("bigint") .HasComment("对应的订阅 ID。"); b.Property("ToPackageId") .HasColumnType("bigint") .HasComment("新套餐 ID。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId", "TenantSubscriptionId"); b.ToTable("tenant_subscription_histories", null, t => { t.HasComment("租户套餐订阅变更记录。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Tenants.Entities.TenantVerificationProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("bigint") .HasComment("实体唯一标识。"); NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); b.Property("AdditionalDataJson") .HasColumnType("text") .HasComment("附加资料(JSON)。"); b.Property("BankAccountName") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("开户名。"); b.Property("BankAccountNumber") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("银行账号。"); b.Property("BankName") .HasMaxLength(128) .HasColumnType("character varying(128)") .HasComment("银行名称。"); b.Property("BusinessLicenseNumber") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("营业执照编号。"); b.Property("BusinessLicenseUrl") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("营业执照文件地址。"); b.Property("CreatedAt") .HasColumnType("timestamp with time zone") .HasComment("创建时间(UTC)。"); b.Property("CreatedBy") .HasColumnType("bigint") .HasComment("创建人用户标识,匿名或系统操作时为 null。"); b.Property("DeletedAt") .HasColumnType("timestamp with time zone") .HasComment("软删除时间(UTC),未删除时为 null。"); b.Property("DeletedBy") .HasColumnType("bigint") .HasComment("删除人用户标识(软删除),未删除时为 null。"); b.Property("LegalPersonIdBackUrl") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("法人身份证反面。"); b.Property("LegalPersonIdFrontUrl") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("法人身份证正面。"); b.Property("LegalPersonIdNumber") .HasMaxLength(32) .HasColumnType("character varying(32)") .HasComment("法人身份证号。"); b.Property("LegalPersonName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("法人姓名。"); b.Property("ReviewRemarks") .HasMaxLength(512) .HasColumnType("character varying(512)") .HasComment("审核备注。"); b.Property("ReviewedAt") .HasColumnType("timestamp with time zone") .HasComment("审核时间。"); b.Property("ReviewedBy") .HasColumnType("bigint") .HasComment("审核人 ID。"); b.Property("ReviewedByName") .HasMaxLength(64) .HasColumnType("character varying(64)") .HasComment("审核人姓名。"); b.Property("Status") .HasColumnType("integer") .HasComment("实名状态。"); b.Property("SubmittedAt") .HasColumnType("timestamp with time zone") .HasComment("提交时间。"); b.Property("TenantId") .HasColumnType("bigint") .HasComment("对应的租户标识。"); b.Property("UpdatedAt") .HasColumnType("timestamp with time zone") .HasComment("最近一次更新时间(UTC),从未更新时为 null。"); b.Property("UpdatedBy") .HasColumnType("bigint") .HasComment("最后更新人用户标识,匿名或系统操作时为 null。"); b.HasKey("Id"); b.HasIndex("TenantId") .IsUnique(); b.ToTable("tenant_verification_profiles", null, t => { t.HasComment("租户实名认证资料。"); }); }); modelBuilder.Entity("TakeoutSaaS.Domain.Orders.Entities.OrderItem", b => { b.HasOne("TakeoutSaaS.Domain.Orders.Entities.Order", null) .WithMany() .HasForeignKey("OrderId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); #pragma warning restore 612, 618 } } }