705 lines
26 KiB
Markdown
705 lines
26 KiB
Markdown
# 学业邑规划 - 数据库设计文档
|
||
|
||
## 一、设计说明
|
||
|
||
### 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) | 是 | - | 用户UID,6位数字 |
|
||
| 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 | 父分类ID,0为顶级 |
|
||
| 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. 软删除保留数据可追溯 |