mi-assessment/server/MiAssessment/src/MiAssessment.Model/Data/MiAssessmentDbContext.cs
zpc 21e8ff5372 refactor: 清理遗留实体和无效代码
- 删除无数据库表的实体: UserDetail, UserAddress, PaymentOrder, Admin, AdminLoginLog, AdminOperationLog, Picture, Delivery
- 删除关联服务: AddressService, PaymentService, PaymentOrderService, PaymentRewardDispatcher, DefaultPaymentRewardHandler
- 删除关联接口: IAddressService, IPaymentService, IPaymentOrderService, IPaymentRewardHandler, IPaymentRewardDispatcher
- 删除关联控制器: AddressController
- 删除关联DTO: AddressModels, CreatePaymentOrderRequest, PaymentOrderDto, PaymentOrderQueryRequest
- 删除关联测试: PaymentOrderServicePropertyTests, PaymentRewardDispatcherPropertyTests
- 修复实体字段映射: User, UserLoginLog, UserRefreshToken, Config, OrderNotify
- 更新 NotifyController 移除 IPaymentOrderService 依赖
- 更新 ServiceModule 移除已删除服务的DI注册
- 更新 MiAssessmentDbContext 移除已删除实体的DbSet和OnModelCreating配置
2026-02-20 20:29:34 +08:00

998 lines
42 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<MiAssessmentDbContext> options)
: base(options)
{
}
// ==================== 用户基础表 ====================
public virtual DbSet<User> Users { get; set; }
public virtual DbSet<UserRefreshToken> UserRefreshTokens { get; set; }
public virtual DbSet<UserLoginLog> UserLoginLogs { get; set; }
// ==================== 系统基础表 ====================
public virtual DbSet<Config> Configs { get; set; }
public virtual DbSet<OrderNotify> OrderNotifies { get; set; }
// ==================== 小程序业务表 ====================
public virtual DbSet<Banner> Banners { get; set; }
public virtual DbSet<Promotion> Promotions { get; set; }
public virtual DbSet<BusinessPage> BusinessPages { get; set; }
public virtual DbSet<Planner> Planners { get; set; }
public virtual DbSet<PlannerBooking> PlannerBookings { get; set; }
public virtual DbSet<InviteCode> InviteCodes { get; set; }
public virtual DbSet<Commission> Commissions { get; set; }
public virtual DbSet<Withdrawal> Withdrawals { get; set; }
public virtual DbSet<AssessmentType> AssessmentTypes { get; set; }
public virtual DbSet<Question> Questions { get; set; }
public virtual DbSet<AssessmentRecord> AssessmentRecords { get; set; }
public virtual DbSet<AssessmentAnswer> AssessmentAnswers { get; set; }
public virtual DbSet<AssessmentResult> AssessmentResults { get; set; }
public virtual DbSet<ReportCategory> ReportCategories { get; set; }
public virtual DbSet<Order> 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<User>(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<UserRefreshToken>(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<UserLoginLog>(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<Config>(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<OrderNotify>(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<Banner>(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<Promotion>(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<BusinessPage>(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<Planner>(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<PlannerBooking>(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<InviteCode>(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<Commission>(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<Withdrawal>(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<AssessmentType>(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<Question>(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<AssessmentRecord>(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<AssessmentAnswer>(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<Order>(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<ReportCategory>(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("父分类ID0表示顶级分类");
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<AssessmentResult>(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);
}