# 学业邑规划 - 数据库设计文档 ## 一、设计说明 ### 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. 软删除保留数据可追溯