mi-assessment/docs/数据库设计文档.md
2026-02-21 23:48:39 +08:00

705 lines
26 KiB
Markdown
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.

# 学业邑规划 - 数据库设计文档
## 一、设计说明
### 1.1 数据库信息
- **数据库类型**SQL Server 2022
- **字符集**UTF-8
- **排序规则**Chinese_PRC_CI_AS
### 1.2 命名规范
- 表名snake_case 命名,如 `users`、`assessment_records`
- 字段名PascalCase 命名,如 `UserId`、`CreateTime`
- 主键:`Id`bigint 自增)
- 外键:`表名Id`,如 `UserId`、`OrderId`
- 时间字段:`CreateTime`、`UpdateTime`
- 状态字段:`Status`
- 软删除:`IsDeleted`bit
### 1.3 SQL 脚本位置
- 业务数据库:`server/MiAssessment/scripts/init_business_db.sql`
- 管理后台数据库:`server/MiAssessment/scripts/init_admin_db.sql`
### 1.3 通用字段
每张业务表包含以下通用字段:
| 字段 | 类型 | 说明 |
|---|---|---|
| Id | bigint | 主键,自增 |
| CreateTime | datetime2 | 创建时间 |
| UpdateTime | datetime2 | 更新时间 |
| IsDeleted | bit | 软删除标记默认0 |
---
## 二、表结构设计
### 2.1 用户模块
#### 2.1.1 users用户表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Uid | nvarchar(6) | 是 | - | 用户UID6位数字 |
| OpenId | nvarchar(64) | 是 | - | 微信OpenId |
| UnionId | nvarchar(64) | 否 | - | 微信UnionId |
| GzhOpenId | nvarchar(64) | 否 | - | 公众号OpenId |
| Phone | nvarchar(20) | 否 | - | 手机号 |
| Nickname | nvarchar(50) | 否 | - | 昵称 |
| Avatar | nvarchar(500) | 否 | - | 头像URL |
| UserLevel | int | 是 | 1 | 用户等级1普通用户 2合伙人 3渠道合伙人 |
| ParentUserId | bigint | 否 | - | 上级用户ID |
| InviteCode | nvarchar(10) | 否 | - | 用户专属邀请码 |
| Balance | decimal(10,2) | 是 | 0 | 可提现余额 |
| TotalIncome | decimal(10,2) | 是 | 0 | 累计收益 |
| WithdrawnAmount | decimal(10,2) | 是 | 0 | 已提现金额 |
| Status | int | 是 | 1 | 状态0禁用 1正常 |
| IsTest | int | 是 | 0 | 是否测试用户 |
| LastLoginTime | datetime2 | 否 | - | 最后登录时间 |
| LastLoginIp | nvarchar(50) | 否 | - | 最后登录IP |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- UK_users_uid (Uid) UNIQUE
- UK_users_open_id (OpenId) UNIQUE
- IX_users_phone (Phone)
- IX_users_parent_user_id (ParentUserId)
- IX_users_user_level (UserLevel)
#### 2.1.2 user_refresh_tokens刷新令牌表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| UserId | bigint | 是 | - | 用户ID |
| TokenHash | nvarchar(256) | 是 | - | Token哈希值 |
| ExpiresAt | datetime2 | 是 | - | 过期时间 |
| CreatedAt | datetime2 | 是 | GETDATE() | 创建时间 |
| CreatedByIp | nvarchar(50) | 否 | - | 创建IP |
| RevokedAt | datetime2 | 否 | - | 撤销时间 |
| RevokedByIp | nvarchar(50) | 否 | - | 撤销IP |
| ReplacedByToken | nvarchar(256) | 否 | - | 替换Token |
#### 2.1.3 user_login_logs登录日志表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| UserId | bigint | 是 | - | 用户ID |
| LoginType | nvarchar(20) | 是 | - | 登录类型 |
| LoginIp | nvarchar(50) | 否 | - | 登录IP |
| UserAgent | nvarchar(500) | 否 | - | 用户代理 |
| Platform | nvarchar(20) | 否 | - | 平台 |
| Status | int | 是 | 1 | 状态0失败 1成功 |
| FailReason | nvarchar(200) | 否 | - | 失败原因 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
---
### 2.2 内容管理模块
#### 2.2.1 banners轮播图表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Title | nvarchar(100) | 否 | - | 标题 |
| ImageUrl | nvarchar(500) | 是 | - | 图片URL |
| LinkType | int | 是 | 0 | 跳转类型0无 1内部页面 2外部链接 3小程序 |
| LinkUrl | nvarchar(500) | 否 | - | 跳转地址 |
| AppId | nvarchar(50) | 否 | - | 小程序AppId |
| Sort | int | 是 | 0 | 排序,越大越靠前 |
| Status | int | 是 | 1 | 状态0禁用 1启用 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
#### 2.2.2 promotions宣传图表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Title | nvarchar(100) | 否 | - | 标题 |
| ImageUrl | nvarchar(500) | 是 | - | 图片URL |
| Position | int | 是 | 1 | 位置1首页底部 2团队页 |
| Sort | int | 是 | 0 | 排序 |
| Status | int | 是 | 1 | 状态0禁用 1启用 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
---
### 2.3 测评模块
#### 2.3.1 AssessmentType测评类型表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Name | nvarchar(50) | 是 | - | 测评名称 |
| Code | nvarchar(50) | 是 | - | 测评编码,如 MI多元智能 |
| ImageUrl | nvarchar(500) | 是 | - | 入口图片 |
| IntroContent | nvarchar(max) | 否 | - | 介绍内容(富文本/图片) |
| Price | decimal(10,2) | 是 | 0 | 价格 |
| QuestionCount | int | 是 | 80 | 题目数量 |
| Sort | int | 是 | 0 | 排序 |
| Status | int | 是 | 1 | 状态0已下线 1已上线 2即将上线 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
#### 2.3.2 Question题目表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| AssessmentTypeId | bigint | 是 | - | 测评类型ID |
| QuestionNo | int | 是 | - | 题号 |
| Content | nvarchar(1000) | 是 | - | 题目内容 |
| Sort | int | 是 | 0 | 排序 |
| Status | int | 是 | 1 | 状态0禁用 1启用 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_Question_AssessmentTypeId (AssessmentTypeId)
- UK_Question_TypeNo (AssessmentTypeId, QuestionNo) UNIQUE
#### 2.3.3 ReportCategory报告分类表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| AssessmentTypeId | bigint | 是 | - | 测评类型ID |
| ParentId | bigint | 否 | 0 | 父分类ID0为顶级 |
| Name | nvarchar(50) | 是 | - | 分类名称 |
| Code | nvarchar(50) | 是 | - | 分类编码 |
| CategoryType | int | 是 | - | 分类类型1八大智能 2个人特质 3细分能力 4先天学习 5学习能力 6大脑类型 7性格类型 8未来能力 |
| ScoreRule | int | 是 | 1 | 计分规则1累加(1-10分) 2二值(0/1分) |
| Sort | int | 是 | 0 | 排序 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_ReportCategory_AssessmentTypeId (AssessmentTypeId)
- IX_ReportCategory_ParentId (ParentId)
#### 2.3.4 QuestionCategoryMapping题目分类映射表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| QuestionId | bigint | 是 | - | 题目ID |
| CategoryId | bigint | 是 | - | 分类ID |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
**索引**
- IX_QuestionCategoryMapping_QuestionId (QuestionId)
- IX_QuestionCategoryMapping_CategoryId (CategoryId)
- UK_QuestionCategoryMapping (QuestionId, CategoryId) UNIQUE
#### 2.3.5 ReportConclusion报告结论表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| CategoryId | bigint | 是 | - | 分类ID |
| ConclusionType | int | 是 | - | 结论类型1最强 2较强 3较弱 4最弱 |
| Title | nvarchar(100) | 否 | - | 结论标题 |
| Content | nvarchar(max) | 是 | - | 结论内容(富文本) |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_ReportConclusion_CategoryId (CategoryId)
---
### 2.4 测评记录模块
#### 2.4.1 AssessmentRecord测评记录表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| UserId | bigint | 是 | - | 用户ID |
| OrderId | bigint | 是 | - | 订单ID |
| AssessmentTypeId | bigint | 是 | - | 测评类型ID |
| Name | nvarchar(50) | 是 | - | 测评人姓名 |
| Phone | nvarchar(20) | 是 | - | 手机号 |
| Gender | int | 是 | - | 性别1男 2女 |
| Age | int | 是 | - | 年龄 |
| EducationStage | int | 是 | - | 学业阶段1小学及以下 2初中 3高中 4大专 5本科 6研究生及以上 |
| Province | nvarchar(50) | 是 | - | 省份 |
| City | nvarchar(50) | 是 | - | 城市 |
| District | nvarchar(50) | 是 | - | 区县 |
| Status | int | 是 | 1 | 状态1待测评 2测评中 3生成中 4已完成 |
| StartTime | datetime2 | 否 | - | 开始答题时间 |
| SubmitTime | datetime2 | 否 | - | 提交答题时间 |
| CompleteTime | datetime2 | 否 | - | 报告生成完成时间 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_AssessmentRecord_UserId (UserId)
- IX_AssessmentRecord_OrderId (OrderId)
- IX_AssessmentRecord_Status (Status)
#### 2.4.2 AssessmentAnswer测评答案表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| RecordId | bigint | 是 | - | 测评记录ID |
| QuestionId | bigint | 是 | - | 题目ID |
| QuestionNo | int | 是 | - | 题号 |
| AnswerValue | int | 是 | - | 答案值1-10 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
**索引**
- IX_AssessmentAnswer_RecordId (RecordId)
- UK_AssessmentAnswer (RecordId, QuestionId) UNIQUE
#### 2.4.3 AssessmentResult测评结果表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| RecordId | bigint | 是 | - | 测评记录ID |
| CategoryId | bigint | 是 | - | 分类ID |
| Score | decimal(10,2) | 是 | - | 得分 |
| MaxScore | decimal(10,2) | 是 | - | 满分 |
| Percentage | decimal(5,2) | 是 | - | 百分比 |
| Rank | int | 是 | - | 排名(同类型内) |
| StarLevel | int | 是 | - | 星级1-5 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
**索引**
- IX_AssessmentResult_RecordId (RecordId)
- IX_AssessmentResult_CategoryId (CategoryId)
---
### 2.5 订单模块
#### 2.5.1 orders订单表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| OrderNo | nvarchar(32) | 是 | - | 订单编号 |
| UserId | bigint | 是 | - | 用户ID |
| OrderType | int | 是 | - | 订单类型1测评订单 2学业规划订单 |
| ProductId | bigint | 是 | - | 商品ID测评类型ID/规划师ID |
| ProductName | nvarchar(100) | 是 | - | 商品名称 |
| Amount | decimal(10,2) | 是 | - | 订单金额 |
| PayAmount | decimal(10,2) | 是 | - | 实付金额 |
| PayType | int | 否 | - | 支付方式1微信支付 2邀请码 |
| InviteCodeId | bigint | 否 | - | 使用的邀请码ID |
| Status | int | 是 | 1 | 状态1待支付 2已支付 3已完成 4退款中 5已退款 6已取消 |
| PayTime | datetime2 | 否 | - | 支付时间 |
| TransactionId | nvarchar(64) | 否 | - | 微信支付交易号 |
| RefundTime | datetime2 | 否 | - | 退款时间 |
| RefundAmount | decimal(10,2) | 否 | - | 退款金额 |
| RefundReason | nvarchar(500) | 否 | - | 退款原因 |
| Remark | nvarchar(500) | 否 | - | 备注 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- UK_orders_order_no (OrderNo) UNIQUE
- IX_orders_user_id (UserId)
- IX_orders_status (Status)
- IX_orders_create_time (CreateTime)
- IX_orders_order_type (OrderType)
#### 2.5.2 order_notifies订单通知表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| OrderNo | nvarchar(64) | 是 | - | 订单编号 |
| TransactionId | nvarchar(64) | 否 | - | 微信交易号 |
| NotifyUrl | nvarchar(500) | 否 | - | 通知URL |
| NonceStr | nvarchar(64) | 否 | - | 随机字符串 |
| PayTime | datetime2 | 否 | - | 支付时间 |
| PayAmount | decimal(10,2) | 是 | 0 | 支付金额 |
| Status | int | 是 | 0 | 状态0待处理 1已处理 |
| RetryCount | int | 是 | 0 | 重试次数 |
| Attach | nvarchar(100) | 否 | - | 附加数据 |
| OpenId | nvarchar(100) | 否 | - | 支付者OpenId |
| RawData | nvarchar(max) | 否 | - | 原始数据 |
| ErrorMessage | nvarchar(500) | 否 | - | 错误信息 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
---
### 2.6 学业规划模块
#### 2.6.1 Planner规划师表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Name | nvarchar(50) | 是 | - | 姓名 |
| Avatar | nvarchar(500) | 是 | - | 头像 |
| Introduction | nvarchar(1000) | 否 | - | 简介 |
| Price | decimal(10,2) | 是 | - | 咨询价格 |
| Sort | int | 是 | 0 | 排序 |
| Status | int | 是 | 1 | 状态0禁用 1启用 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
#### 2.6.2 PlannerBooking规划预约表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| UserId | bigint | 是 | - | 用户ID |
| OrderId | bigint | 是 | - | 订单ID |
| PlannerId | bigint | 是 | - | 规划师ID |
| BookingDate | date | 是 | - | 预约日期 |
| BookingTime | nvarchar(20) | 是 | - | 预约时间,如"15:00" |
| Name | nvarchar(50) | 是 | - | 姓名 |
| Phone | nvarchar(20) | 是 | - | 手机号 |
| Gender | int | 是 | - | 性别1男 2女 |
| Grade | int | 是 | - | 年级1小学 2初中 3高中 4大专 5本科 6研究生及以上 |
| MajorName | nvarchar(100) | 否 | - | 专业名称(大专及以上) |
| ScoreChinese | int | 否 | - | 语文成绩 |
| ScoreMath | int | 否 | - | 数学成绩 |
| ScoreEnglish | int | 否 | - | 英语成绩 |
| ScorePhysics | int | 否 | - | 物理成绩 |
| ScoreChemistry | int | 否 | - | 化学成绩 |
| ScoreBiology | int | 否 | - | 生物成绩 |
| ScoreGeography | int | 否 | - | 地理成绩 |
| ScorePolitics | int | 否 | - | 政治成绩 |
| Status | int | 是 | 1 | 状态1待确认 2已确认 3已完成 4已取消 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_PlannerBooking_UserId (UserId)
- IX_PlannerBooking_PlannerId (PlannerId)
- IX_PlannerBooking_BookingDate (BookingDate)
---
### 2.7 分销模块
#### 2.7.1 InviteCode邀请码表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| Code | nvarchar(10) | 是 | - | 邀请码5位大写字母 |
| BatchNo | nvarchar(32) | 否 | - | 批次号 |
| AssignUserId | bigint | 否 | - | 分配给的用户ID合伙人 |
| AssignTime | datetime2 | 否 | - | 分配时间 |
| UseUserId | bigint | 否 | - | 使用者用户ID |
| UseOrderId | bigint | 否 | - | 使用的订单ID |
| UseTime | datetime2 | 否 | - | 使用时间 |
| Status | int | 是 | 1 | 状态1未分配 2已分配 3已使用 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- UK_InviteCode_Code (Code) UNIQUE
- IX_InviteCode_AssignUserId (AssignUserId)
- IX_InviteCode_Status (Status)
#### 2.7.2 Commission佣金记录表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| UserId | bigint | 是 | - | 获得佣金的用户ID |
| FromUserId | bigint | 是 | - | 来源用户ID下级 |
| OrderId | bigint | 是 | - | 关联订单ID |
| OrderAmount | decimal(10,2) | 是 | - | 订单金额 |
| CommissionRate | decimal(5,2) | 是 | - | 佣金比例如30.00表示30% |
| CommissionAmount | decimal(10,2) | 是 | - | 佣金金额 |
| Level | int | 是 | - | 层级1直接下级 2间接下级 |
| Status | int | 是 | 1 | 状态1待结算 2已结算 |
| SettleTime | datetime2 | 否 | - | 结算时间 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- IX_Commission_UserId (UserId)
- IX_Commission_FromUserId (FromUserId)
- IX_Commission_OrderId (OrderId)
#### 2.7.3 Withdrawal提现记录表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| WithdrawalNo | nvarchar(32) | 是 | - | 提现单号 |
| UserId | bigint | 是 | - | 用户ID |
| Amount | decimal(10,2) | 是 | - | 提现金额 |
| BeforeBalance | decimal(10,2) | 是 | - | 提现前余额 |
| AfterBalance | decimal(10,2) | 是 | - | 提现后余额 |
| Status | int | 是 | 1 | 状态1申请中 2提现中 3已提现 4已取消 |
| AuditUserId | bigint | 否 | - | 审核人ID |
| AuditTime | datetime2 | 否 | - | 审核时间 |
| AuditRemark | nvarchar(500) | 否 | - | 审核备注 |
| PayTime | datetime2 | 否 | - | 打款时间 |
| PayTransactionId | nvarchar(64) | 否 | - | 打款交易号 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- UK_Withdrawal_WithdrawalNo (WithdrawalNo) UNIQUE
- IX_Withdrawal_UserId (UserId)
- IX_Withdrawal_Status (Status)
---
### 2.8 系统配置模块
#### 2.8.1 configs系统配置表
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| Id | bigint | 是 | 自增 | 主键 |
| ConfigKey | nvarchar(100) | 是 | - | 配置键 |
| ConfigValue | nvarchar(max) | 是 | - | 配置值 |
| ConfigType | nvarchar(50) | 是 | - | 配置类型 |
| Description | nvarchar(500) | 否 | - | 描述 |
| Sort | int | 是 | 0 | 排序 |
| CreateTime | datetime2 | 是 | GETDATE() | 创建时间 |
| UpdateTime | datetime2 | 是 | GETDATE() | 更新时间 |
| IsDeleted | bit | 是 | 0 | 软删除 |
**索引**
- UK_configs_key (ConfigKey) UNIQUE
**预置配置项**
| ConfigKey | ConfigType | 说明 |
|---|---|---|
| assessment_price | price | 测评价格 |
| commission_rate_level1 | commission | 一级佣金比例 |
| commission_rate_level2 | commission | 二级佣金比例 |
| commission_rate_direct | commission | 无上级时直接佣金比例 |
| withdraw_min_amount | withdraw | 最低提现金额 |
| service_phone | contact | 客服电话 |
| service_wechat | contact | 客服微信 |
| user_agreement | agreement | 用户协议内容 |
| privacy_policy | agreement | 隐私政策内容 |
| about_us_content | content | 关于我们内容 |
---
## 三、ER关系图
```
┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ User │────<│ Order │>────│ InviteCode │
└─────────────┘ └─────────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────────┐
│ Commission │ │AssessmentRecord │
└─────────────┘ └─────────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────────┐ ┌─────────────┐
│ Withdrawal │ │AssessmentAnswer │ │AssessmentResult│
└─────────────┘ └─────────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│ Question │────────>│ReportCategory│
└─────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────┐
│QuestionCategoryMapping│ │ReportConclusion│
└─────────────────────┘ └─────────────┘
```
---
## 四、核心业务关系说明
### 4.1 用户与分销关系
```
User.ParentUserId -> User.Id (自关联,上下级关系)
Commission.UserId -> User.Id (佣金归属)
Commission.FromUserId -> User.Id (佣金来源)
```
### 4.2 测评流程关系
```
Order -> AssessmentRecord -> AssessmentAnswer -> Question
-> AssessmentResult -> ReportCategory -> ReportConclusion
```
### 4.3 题目与分类映射
```
Question <-> QuestionCategoryMapping <-> ReportCategory
(多对多关系:一道题可属于多个分类,一个分类包含多道题)
```
---
## 五、数据字典
### 5.1 用户等级 (UserLevel)
| 值 | 说明 |
|---|---|
| 1 | 普通用户 |
| 2 | 合伙人 |
| 3 | 渠道合伙人 |
### 5.2 订单类型 (OrderType)
| 值 | 说明 |
|---|---|
| 1 | 测评订单 |
| 2 | 学业规划订单 |
### 5.3 订单状态 (Order.Status)
| 值 | 说明 |
|---|---|
| 1 | 待支付 |
| 2 | 已支付 |
| 3 | 已完成 |
| 4 | 退款中 |
| 5 | 已退款 |
| 6 | 已取消 |
### 5.4 测评记录状态 (AssessmentRecord.Status)
| 值 | 说明 |
|---|---|
| 1 | 待测评 |
| 2 | 测评中 |
| 3 | 生成中 |
| 4 | 已完成 |
### 5.5 报告分类类型 (ReportCategory.CategoryType)
| 值 | 说明 |
|---|---|
| 1 | 八大智能 |
| 2 | 个人特质 |
| 3 | 细分能力 |
| 4 | 先天学习类型 |
| 5 | 学习关键能力 |
| 6 | 科学大脑类型 |
| 7 | 性格类型 |
| 8 | 未来发展能力 |
### 5.6 计分规则 (ReportCategory.ScoreRule)
| 值 | 说明 |
|---|---|
| 1 | 累加计分选项1-10对应1-10分 |
| 2 | 二值计分选项1-5得0分6-10得1分 |
### 5.7 结论类型 (ReportConclusion.ConclusionType)
| 值 | 说明 |
|---|---|
| 1 | 最强 |
| 2 | 较强 |
| 3 | 较弱 |
| 4 | 最弱 |
### 5.8 邀请码状态 (InviteCode.Status)
| 值 | 说明 |
|---|---|
| 1 | 未分配 |
| 2 | 已分配 |
| 3 | 已使用 |
### 5.9 提现状态 (Withdrawal.Status)
| 值 | 说明 |
|---|---|
| 1 | 申请中 |
| 2 | 提现中 |
| 3 | 已提现 |
| 4 | 已取消 |
### 5.10 学业阶段 (EducationStage)
| 值 | 说明 |
|---|---|
| 1 | 小学及以下 |
| 2 | 初中 |
| 3 | 高中 |
| 4 | 大专 |
| 5 | 本科 |
| 6 | 研究生及以上 |
---
## 六、表汇总
| 序号 | 表名 | 说明 | 模块 |
|---|---|---|---|
| 1 | users | 用户表 | 用户模块 |
| 2 | user_refresh_tokens | 刷新令牌表 | 用户模块 |
| 3 | user_login_logs | 登录日志表 | 用户模块 |
| 4 | banners | 轮播图表 | 内容管理 |
| 5 | promotions | 宣传图表 | 内容管理 |
| 6 | assessment_types | 测评类型表 | 测评模块 |
| 7 | questions | 题目表 | 测评模块 |
| 8 | report_categories | 报告分类表 | 测评模块 |
| 9 | question_category_mappings | 题目分类映射表 | 测评模块 |
| 10 | report_conclusions | 报告结论表 | 测评模块 |
| 11 | orders | 订单表 | 订单模块 |
| 12 | order_notifies | 订单通知表 | 订单模块 |
| 13 | assessment_records | 测评记录表 | 测评记录 |
| 14 | assessment_answers | 测评答案表 | 测评记录 |
| 15 | assessment_results | 测评结果表 | 测评记录 |
| 16 | planners | 规划师表 | 学业规划 |
| 17 | planner_bookings | 规划预约表 | 学业规划 |
| 18 | invite_codes | 邀请码表 | 分销模块 |
| 19 | commissions | 佣金记录表 | 分销模块 |
| 20 | withdrawals | 提现记录表 | 分销模块 |
| 21 | configs | 系统配置表 | 系统配置 |
**共计 21 张业务表**
---
## 七、初始化数据
### 7.1 系统配置初始数据
```sql
INSERT INTO configs (ConfigKey, ConfigValue, ConfigType, Description)
VALUES
('assessment_price', '99.00', 'price', N'测评价格'),
('commission_rate_level1', '0.30', 'commission', N'一级分销佣金比例'),
('commission_rate_level2', '0.10', 'commission', N'二级分销佣金比例'),
('commission_rate_direct', '0.40', 'commission', N'无上级时直接佣金比例'),
('withdraw_min_amount', '10.00', 'withdraw', N'最低提现金额'),
('service_phone', '400-000-0000', 'contact', N'客服电话'),
('service_wechat', '', 'contact', N'客服微信'),
('user_agreement', '', 'agreement', N'用户协议内容'),
('privacy_policy', '', 'agreement', N'隐私政策内容'),
('about_us_content', '', 'content', N'关于我们内容');
```
### 7.2 测评类型初始数据
```sql
INSERT INTO assessment_types (Name, Code, Price, QuestionCount, Sort, Status)
VALUES (N'多元智能测评', 'MI_ASSESSMENT', 99.00, 80, 1, 1);
```
---
## 八、备注
### 8.1 性能优化建议
1. 对高频查询字段建立索引
2. 大文本字段(如报告结论)考虑分表存储
3. 历史数据定期归档
### 8.2 扩展预留
1. User 表预留 UnionId 字段,支持多端打通
2. Order 表预留 Remark 字段,支持业务扩展
3. SystemConfig 表支持动态配置扩展
### 8.3 安全考虑
1. 手机号等敏感信息加密存储
2. 支付相关字段记录完整交易信息
3. 软删除保留数据可追溯