using System; using System.Collections.Generic; using MiAssessment.Model.Entities; using Microsoft.EntityFrameworkCore; namespace MiAssessment.Model.Data; public partial class MiAssessmentDbContext : DbContext { public MiAssessmentDbContext() { } public MiAssessmentDbContext(DbContextOptions options) : base(options) { } // ==================== 用户基础表 ==================== public virtual DbSet Users { get; set; } public virtual DbSet UserRefreshTokens { get; set; } public virtual DbSet UserLoginLogs { get; set; } // ==================== 系统基础表 ==================== public virtual DbSet Configs { get; set; } public virtual DbSet OrderNotifies { get; set; } // ==================== 小程序业务表 ==================== public virtual DbSet Banners { get; set; } public virtual DbSet Promotions { get; set; } public virtual DbSet BusinessPages { get; set; } public virtual DbSet Planners { get; set; } public virtual DbSet PlannerBookings { get; set; } public virtual DbSet InviteCodes { get; set; } public virtual DbSet Commissions { get; set; } public virtual DbSet Withdrawals { get; set; } public virtual DbSet AssessmentTypes { get; set; } public virtual DbSet Questions { get; set; } public virtual DbSet AssessmentRecords { get; set; } public virtual DbSet AssessmentAnswers { get; set; } public virtual DbSet AssessmentResults { get; set; } public virtual DbSet ReportCategories { get; set; } public virtual DbSet Orders { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { // Connection string is configured in Program.cs via dependency injection // Do not configure here when using DI } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.UseCollation("Chinese_PRC_CI_AS"); // ==================== 用户基础表配置 ==================== modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_users"); entity.ToTable("users", tb => tb.HasComment("用户主表,存储用户基本信息")); entity.HasIndex(e => e.CreateTime, "ix_users_created_at"); entity.HasIndex(e => e.Phone, "ix_users_mobile").HasFilter("([Phone] IS NOT NULL)"); entity.HasIndex(e => e.OpenId, "ix_users_open_id"); entity.HasIndex(e => e.ParentUserId, "ix_users_pid"); entity.HasIndex(e => e.Status, "ix_users_status"); entity.HasIndex(e => e.Uid, "uk_users_uid").IsUnique(); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Uid) .HasMaxLength(6) .HasComment("用户唯一标识"); entity.Property(e => e.OpenId) .HasMaxLength(64) .HasComment("微信openid"); entity.Property(e => e.UnionId) .HasMaxLength(64) .HasComment("微信unionid"); entity.Property(e => e.GzhOpenId) .HasMaxLength(64) .HasComment("公众号openid"); entity.Property(e => e.Phone) .HasMaxLength(20) .HasComment("手机号"); entity.Property(e => e.Nickname) .HasMaxLength(50) .HasComment("昵称"); entity.Property(e => e.Avatar) .HasMaxLength(500) .HasComment("头像URL"); entity.Property(e => e.UserLevel) .HasDefaultValue(1) .HasComment("用户等级:1普通用户 2合伙人 3渠道合伙人"); entity.Property(e => e.ParentUserId) .HasComment("推荐人用户ID"); entity.Property(e => e.InviteCode) .HasMaxLength(10) .HasComment("用户专属邀请码"); entity.Property(e => e.Balance) .HasDefaultValue(0m) .HasComment("可提现余额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.TotalIncome) .HasDefaultValue(0m) .HasComment("累计收益") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.WithdrawnAmount) .HasDefaultValue(0m) .HasComment("已提现金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态: 1正常 0禁用"); entity.Property(e => e.IsTest) .HasComment("是否测试账号: 0否 1是"); entity.Property(e => e.LastLoginTime) .HasComment("最后登录时间"); entity.Property(e => e.LastLoginIp) .HasMaxLength(50) .HasComment("最后登录IP"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_user_refresh_tokens"); entity.ToTable("user_refresh_tokens", tb => tb.HasComment("用户刷新令牌表,存储 Refresh Token 信息用于双 Token 认证机制")); entity.HasIndex(e => e.UserId, "ix_user_refresh_tokens_user_id"); entity.HasIndex(e => e.TokenHash, "ix_user_refresh_tokens_token_hash"); entity.HasIndex(e => e.ExpiresAt, "ix_user_refresh_tokens_expires_at"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.TokenHash) .HasMaxLength(256) .HasComment("Token 哈希值(SHA256)"); entity.Property(e => e.ExpiresAt) .HasComment("过期时间"); entity.Property(e => e.CreatedAt) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.CreatedByIp) .HasMaxLength(50) .HasComment("创建时的 IP 地址"); entity.Property(e => e.RevokedAt) .HasComment("撤销时间"); entity.Property(e => e.RevokedByIp) .HasMaxLength(50) .HasComment("撤销时的 IP 地址"); entity.Property(e => e.ReplacedByToken) .HasMaxLength(256) .HasComment("被替换的新 Token 哈希值"); entity.HasOne(e => e.User) .WithMany() .HasForeignKey(e => e.UserId) .OnDelete(DeleteBehavior.Cascade) .HasConstraintName("fk_user_refresh_tokens_users"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_user_login_logs"); entity.ToTable("user_login_logs", tb => tb.HasComment("用户登录日志表,记录用户每次登录信息")); entity.HasIndex(e => e.UserId, "ix_user_login_logs_user_id"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.LoginType) .HasMaxLength(20) .HasComment("登录类型"); entity.Property(e => e.LoginIp) .HasMaxLength(50) .HasComment("登录IP"); entity.Property(e => e.UserAgent) .HasMaxLength(500) .HasComment("用户代理"); entity.Property(e => e.Platform) .HasMaxLength(20) .HasComment("平台"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1成功 0失败"); entity.Property(e => e.FailReason) .HasMaxLength(200) .HasComment("失败原因"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); }); // ==================== 系统基础表配置 ==================== modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_configs"); entity.ToTable("configs", tb => tb.HasComment("业务配置表,存储业务相关配置信息")); entity.HasIndex(e => e.ConfigKey, "ix_configs_key"); entity.HasIndex(e => e.ConfigKey, "uk_configs_key").IsUnique(); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.ConfigKey) .HasMaxLength(100) .HasComment("配置键名"); entity.Property(e => e.ConfigValue) .HasComment("配置值(JSON格式)"); entity.Property(e => e.ConfigType) .HasMaxLength(50) .HasComment("配置类型"); entity.Property(e => e.Description) .HasMaxLength(500) .HasComment("描述"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_order_notifies"); entity.ToTable("order_notifies", tb => tb.HasComment("支付通知记录表,记录微信支付回调通知")); entity.HasIndex(e => e.OrderNo, "ix_order_notifies_order_no"); entity.HasIndex(e => e.TransactionId, "ix_order_notifies_transaction_id"); entity.HasIndex(e => e.Status, "ix_order_notifies_status"); entity.HasIndex(e => e.CreateTime, "ix_order_notifies_created_at"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.OrderNo) .HasMaxLength(64) .HasComment("商户订单号"); entity.Property(e => e.TransactionId) .HasMaxLength(64) .HasComment("微信支付订单号"); entity.Property(e => e.NotifyUrl) .HasMaxLength(500) .HasComment("回调通知URL"); entity.Property(e => e.NonceStr) .HasMaxLength(64) .HasComment("随机字符串"); entity.Property(e => e.PayTime) .HasComment("支付时间"); entity.Property(e => e.PayAmount) .HasComment("支付金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Status) .HasDefaultValue(0) .HasComment("处理状态:0=待处理,1=处理成功,2=处理失败"); entity.Property(e => e.RetryCount) .HasDefaultValue(0) .HasComment("重试次数"); entity.Property(e => e.Attach) .HasMaxLength(100) .HasComment("附加数据(订单类型)"); entity.Property(e => e.OpenId) .HasMaxLength(100) .HasComment("用户OpenId"); entity.Property(e => e.RawData) .HasComment("原始回调数据"); entity.Property(e => e.ErrorMessage) .HasMaxLength(500) .HasComment("错误信息"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); }); // ==================== 小程序业务表配置 ==================== modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_banners"); entity.ToTable("banners", tb => tb.HasComment("轮播图表")); entity.HasIndex(e => e.Status, "ix_banners_status"); entity.HasIndex(e => e.Sort, "ix_banners_sort"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Title) .HasMaxLength(100) .HasComment("标题"); entity.Property(e => e.ImageUrl) .HasMaxLength(500) .HasComment("图片URL"); entity.Property(e => e.LinkType) .HasComment("跳转类型:0无 1内部页面 2外部链接 3小程序"); entity.Property(e => e.LinkUrl) .HasMaxLength(500) .HasComment("跳转地址"); entity.Property(e => e.AppId) .HasMaxLength(50) .HasComment("小程序AppId"); entity.Property(e => e.Sort) .HasComment("排序,越大越靠前"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0禁用 1启用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_promotions"); entity.ToTable("promotions", tb => tb.HasComment("宣传图表")); entity.HasIndex(e => e.Position, "ix_promotions_position"); entity.HasIndex(e => e.Status, "ix_promotions_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Title) .HasMaxLength(100) .HasComment("标题"); entity.Property(e => e.ImageUrl) .HasMaxLength(500) .HasComment("图片URL"); entity.Property(e => e.Position) .HasDefaultValue(1) .HasComment("位置:1首页底部 2团队页"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0禁用 1启用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_business_pages"); entity.ToTable("business_pages", tb => tb.HasComment("业务介绍页表")); entity.HasIndex(e => e.Status, "ix_business_pages_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Title) .HasMaxLength(100) .HasComment("标题"); entity.Property(e => e.ImageUrl) .HasMaxLength(500) .HasComment("图片URL"); entity.Property(e => e.ShowButton) .HasComment("是否显示操作按钮"); entity.Property(e => e.ButtonText) .HasMaxLength(50) .HasComment("操作按钮文字"); entity.Property(e => e.ButtonLink) .HasMaxLength(500) .HasComment("操作按钮跳转链接"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0禁用 1启用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_planners"); entity.ToTable("planners", tb => tb.HasComment("规划师表")); entity.HasIndex(e => e.Status, "ix_planners_status"); entity.HasIndex(e => e.Sort, "ix_planners_sort"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("姓名"); entity.Property(e => e.Avatar) .HasMaxLength(500) .HasComment("头像URL"); entity.Property(e => e.Introduction) .HasMaxLength(1000) .HasComment("简介"); entity.Property(e => e.Price) .HasComment("咨询价格") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0禁用 1启用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_planner_bookings"); entity.ToTable("planner_bookings", tb => tb.HasComment("规划预约表")); entity.HasIndex(e => e.UserId, "ix_planner_bookings_user_id"); entity.HasIndex(e => e.OrderId, "ix_planner_bookings_order_id"); entity.HasIndex(e => e.PlannerId, "ix_planner_bookings_planner_id"); entity.HasIndex(e => e.Status, "ix_planner_bookings_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.OrderId) .HasComment("订单ID"); entity.Property(e => e.PlannerId) .HasComment("规划师ID"); entity.Property(e => e.BookingDate) .HasComment("预约日期") .HasColumnType("date"); entity.Property(e => e.BookingTime) .HasMaxLength(20) .HasComment("预约时间"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("姓名"); entity.Property(e => e.Phone) .HasMaxLength(20) .HasComment("手机号"); entity.Property(e => e.Gender) .HasComment("性别:1男 2女"); entity.Property(e => e.Grade) .HasComment("年级:1小学 2初中 3高中 4大专 5本科 6研究生及以上"); entity.Property(e => e.MajorName) .HasMaxLength(100) .HasComment("专业名称"); entity.Property(e => e.ScoreChinese) .HasComment("语文成绩"); entity.Property(e => e.ScoreMath) .HasComment("数学成绩"); entity.Property(e => e.ScoreEnglish) .HasComment("英语成绩"); entity.Property(e => e.ScorePhysics) .HasComment("物理成绩"); entity.Property(e => e.ScoreChemistry) .HasComment("化学成绩"); entity.Property(e => e.ScoreBiology) .HasComment("生物成绩"); entity.Property(e => e.ScoreGeography) .HasComment("地理成绩"); entity.Property(e => e.ScorePolitics) .HasComment("政治成绩"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1待确认 2已确认 3已完成 4已取消"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_invite_codes"); entity.ToTable("invite_codes", tb => tb.HasComment("邀请码表")); entity.HasIndex(e => e.Code, "uk_invite_codes_code").IsUnique(); entity.HasIndex(e => e.Status, "ix_invite_codes_status"); entity.HasIndex(e => e.AssignUserId, "ix_invite_codes_assign_user_id"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Code) .HasMaxLength(10) .HasComment("邀请码"); entity.Property(e => e.BatchNo) .HasMaxLength(32) .HasComment("批次号"); entity.Property(e => e.AssignUserId) .HasComment("分配给的用户ID"); entity.Property(e => e.AssignTime) .HasComment("分配时间"); entity.Property(e => e.UseUserId) .HasComment("使用者用户ID"); entity.Property(e => e.UseOrderId) .HasComment("使用的订单ID"); entity.Property(e => e.UseTime) .HasComment("使用时间"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1未分配 2已分配 3已使用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_commissions"); entity.ToTable("commissions", tb => tb.HasComment("佣金记录表")); entity.HasIndex(e => e.UserId, "ix_commissions_user_id"); entity.HasIndex(e => e.FromUserId, "ix_commissions_from_user_id"); entity.HasIndex(e => e.OrderId, "ix_commissions_order_id"); entity.HasIndex(e => e.Status, "ix_commissions_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.UserId) .HasComment("获得佣金的用户ID"); entity.Property(e => e.FromUserId) .HasComment("来源用户ID"); entity.Property(e => e.OrderId) .HasComment("关联订单ID"); entity.Property(e => e.OrderAmount) .HasComment("订单金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.CommissionRate) .HasComment("佣金比例") .HasColumnType("decimal(5, 2)"); entity.Property(e => e.CommissionAmount) .HasComment("佣金金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Level) .HasComment("层级:1直接下级 2间接下级"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1待结算 2已结算"); entity.Property(e => e.SettleTime) .HasComment("结算时间"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_withdrawals"); entity.ToTable("withdrawals", tb => tb.HasComment("提现记录表")); entity.HasIndex(e => e.WithdrawalNo, "uk_withdrawals_no").IsUnique(); entity.HasIndex(e => e.UserId, "ix_withdrawals_user_id"); entity.HasIndex(e => e.Status, "ix_withdrawals_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.WithdrawalNo) .HasMaxLength(32) .HasComment("提现单号"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.Amount) .HasComment("提现金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.BeforeBalance) .HasComment("提现前余额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.AfterBalance) .HasComment("提现后余额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1申请中 2提现中 3已提现 4已取消"); entity.Property(e => e.AuditUserId) .HasComment("审核人ID"); entity.Property(e => e.AuditTime) .HasComment("审核时间"); entity.Property(e => e.AuditRemark) .HasMaxLength(500) .HasComment("审核备注"); entity.Property(e => e.PayTime) .HasComment("打款时间"); entity.Property(e => e.PayTransactionId) .HasMaxLength(64) .HasComment("打款交易号"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_assessment_types"); entity.ToTable("assessment_types", tb => tb.HasComment("测评类型表")); entity.HasIndex(e => e.Code, "uk_assessment_types_code").IsUnique(); entity.HasIndex(e => e.Status, "ix_assessment_types_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("测评名称"); entity.Property(e => e.Code) .HasMaxLength(50) .HasComment("测评编码"); entity.Property(e => e.ImageUrl) .HasMaxLength(500) .HasComment("入口图片URL"); entity.Property(e => e.DetailImageUrl) .HasMaxLength(500) .HasComment("详情横幅图URL"); entity.Property(e => e.IntroContent) .HasComment("介绍内容"); entity.Property(e => e.Price) .HasComment("价格") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.QuestionCount) .HasDefaultValue(80) .HasComment("题目数量"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0已下线 1已上线 2即将上线"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_questions"); entity.ToTable("questions", tb => tb.HasComment("题目表")); entity.HasIndex(e => new { e.AssessmentTypeId, e.QuestionNo }, "uk_questions_type_no").IsUnique(); entity.HasIndex(e => e.AssessmentTypeId, "ix_questions_assessment_type_id"); entity.HasIndex(e => e.Status, "ix_questions_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.AssessmentTypeId) .HasComment("测评类型ID"); entity.Property(e => e.QuestionNo) .HasComment("题号"); entity.Property(e => e.Content) .HasMaxLength(1000) .HasComment("题目内容"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:0禁用 1启用"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_assessment_records"); entity.ToTable("assessment_records", tb => tb.HasComment("测评记录表")); entity.HasIndex(e => e.UserId, "ix_assessment_records_user_id"); entity.HasIndex(e => e.OrderId, "ix_assessment_records_order_id"); entity.HasIndex(e => e.AssessmentTypeId, "ix_assessment_records_assessment_type_id"); entity.HasIndex(e => e.Status, "ix_assessment_records_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.OrderId) .HasComment("订单ID"); entity.Property(e => e.AssessmentTypeId) .HasComment("测评类型ID"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("测评人姓名"); entity.Property(e => e.Phone) .HasMaxLength(20) .HasComment("手机号"); entity.Property(e => e.Gender) .HasComment("性别:1男 2女"); entity.Property(e => e.Age) .HasComment("年龄"); entity.Property(e => e.EducationStage) .HasComment("学业阶段:1小学及以下 2初中 3高中 4大专 5本科 6研究生及以上"); entity.Property(e => e.Province) .HasMaxLength(50) .HasComment("省份"); entity.Property(e => e.City) .HasMaxLength(50) .HasComment("城市"); entity.Property(e => e.District) .HasMaxLength(50) .HasComment("区县"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1待测评 2测评中 3生成中 4已完成"); entity.Property(e => e.StartTime) .HasComment("开始答题时间"); entity.Property(e => e.SubmitTime) .HasComment("提交答题时间"); entity.Property(e => e.CompleteTime) .HasComment("报告生成完成时间"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_assessment_answers"); entity.ToTable("assessment_answers", tb => tb.HasComment("测评答案表")); entity.HasIndex(e => e.RecordId, "ix_assessment_answers_record_id"); entity.HasIndex(e => e.QuestionId, "ix_assessment_answers_question_id"); entity.HasIndex(e => new { e.RecordId, e.QuestionId }, "uk_assessment_answers_record_question").IsUnique(); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.RecordId) .HasComment("测评记录ID"); entity.Property(e => e.QuestionId) .HasComment("题目ID"); entity.Property(e => e.QuestionNo) .HasComment("题号"); entity.Property(e => e.AnswerValue) .HasComment("答案值(1-10)"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); }); modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_orders"); entity.ToTable("orders", tb => tb.HasComment("订单表")); entity.HasIndex(e => e.OrderNo, "uk_orders_order_no").IsUnique(); entity.HasIndex(e => e.UserId, "ix_orders_user_id"); entity.HasIndex(e => e.OrderType, "ix_orders_order_type"); entity.HasIndex(e => e.Status, "ix_orders_status"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.OrderNo) .HasMaxLength(32) .HasComment("订单编号"); entity.Property(e => e.UserId) .HasComment("用户ID"); entity.Property(e => e.OrderType) .HasComment("订单类型:1测评订单 2学业规划订单"); entity.Property(e => e.ProductId) .HasComment("商品ID"); entity.Property(e => e.ProductName) .HasMaxLength(100) .HasComment("商品名称"); entity.Property(e => e.Amount) .HasComment("订单金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.PayAmount) .HasComment("实付金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.PayType) .HasComment("支付方式:1微信支付 2邀请码"); entity.Property(e => e.InviteCodeId) .HasComment("使用的邀请码ID"); entity.Property(e => e.Status) .HasDefaultValue(1) .HasComment("状态:1待支付 2已支付 3已完成 4退款中 5已退款 6已取消"); entity.Property(e => e.PayTime) .HasComment("支付时间"); entity.Property(e => e.TransactionId) .HasMaxLength(64) .HasComment("微信支付交易号"); entity.Property(e => e.RefundTime) .HasComment("退款时间"); entity.Property(e => e.RefundAmount) .HasComment("退款金额") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.RefundReason) .HasMaxLength(500) .HasComment("退款原因"); entity.Property(e => e.Remark) .HasMaxLength(500) .HasComment("备注"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); // ==================== 报告分类表配置 ==================== modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_report_categories"); entity.ToTable("report_categories", tb => tb.HasComment("报告分类表")); entity.HasIndex(e => e.AssessmentTypeId, "ix_report_categories_assessment_type_id"); entity.HasIndex(e => e.ParentId, "ix_report_categories_parent_id"); entity.HasIndex(e => e.CategoryType, "ix_report_categories_category_type"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.AssessmentTypeId) .HasComment("测评类型ID"); entity.Property(e => e.ParentId) .HasComment("父分类ID,0表示顶级分类"); entity.Property(e => e.Name) .HasMaxLength(50) .HasComment("分类名称"); entity.Property(e => e.Code) .HasMaxLength(50) .HasComment("分类编码"); entity.Property(e => e.CategoryType) .HasComment("分类类型:1八大智能 2个人特质 3细分能力 4先天学习 5学习能力 6大脑类型 7性格类型 8未来能力"); entity.Property(e => e.ScoreRule) .HasDefaultValue(1) .HasComment("计分规则:1累加(1-10分) 2二值(0/1分)"); entity.Property(e => e.Sort) .HasComment("排序"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); entity.Property(e => e.UpdateTime) .HasDefaultValueSql("(getdate())") .HasComment("更新时间"); entity.Property(e => e.IsDeleted) .HasDefaultValue(false) .HasComment("软删除标记"); }); // ==================== 测评结果表配置 ==================== modelBuilder.Entity(entity => { entity.HasKey(e => e.Id).HasName("pk_assessment_results"); entity.ToTable("assessment_results", tb => tb.HasComment("测评结果表")); entity.HasIndex(e => e.RecordId, "ix_assessment_results_record_id"); entity.HasIndex(e => e.CategoryId, "ix_assessment_results_category_id"); entity.Property(e => e.Id) .HasComment("主键ID"); entity.Property(e => e.RecordId) .HasComment("测评记录ID"); entity.Property(e => e.CategoryId) .HasComment("分类ID"); entity.Property(e => e.Score) .HasComment("得分") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.MaxScore) .HasComment("满分") .HasColumnType("decimal(10, 2)"); entity.Property(e => e.Percentage) .HasComment("百分比") .HasColumnType("decimal(5, 2)"); entity.Property(e => e.Rank) .HasComment("排名(同类型内)"); entity.Property(e => e.StarLevel) .HasComment("星级(1-5)"); entity.Property(e => e.CreateTime) .HasDefaultValueSql("(getdate())") .HasComment("创建时间"); }); OnModelCreatingPartial(modelBuilder); } partial void OnModelCreatingPartial(ModelBuilder modelBuilder); }