mi-assessment/uniapp/docs/API文档.md
2026-02-09 08:02:54 +08:00

921 lines
16 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.

# 学业邑规划 - 小程序 API 文档
本文档定义了小程序端调用的所有后端接口。
---
## 一、接口规范
### 1.1 基础信息
| 项目 | 说明 |
|------|------|
| 基础地址 | 开发环境:`http://localhost:5000`<br>生产环境:`https://api.example.com` |
| 请求方式 | GET / POST |
| 数据格式 | JSON |
| 认证方式 | Bearer Token |
### 1.2 请求头
```
Content-Type: application/json
Authorization: Bearer {token}
```
### 1.3 响应格式
```json
{
"code": 0,
"message": "success",
"data": {}
}
```
### 1.4 错误码
| 错误码 | 说明 |
|--------|------|
| 0 | 成功 |
| 1001 | 参数错误 |
| 1002 | 未登录 |
| 1003 | 登录已过期 |
| 1004 | 无权限 |
| 2001 | 业务错误 |
| 5000 | 系统错误 |
---
## 二、用户模块
### 2.1 微信登录
**接口**`POST /api/user/login`
**描述**:微信小程序登录
**请求参数**
```typescript
interface LoginRequest {
/** 微信 code */
code: string
/** 加密手机号数据 */
encryptedData: string
/** 加密向量 */
iv: string
/** 邀请人ID可选 */
inviteUserId?: number
}
```
**响应数据**
```typescript
interface LoginResponse {
/** 访问令牌 */
token: string
/** 刷新令牌 */
refreshToken: string
/** 用户信息 */
userInfo: UserInfo
}
interface UserInfo {
id: number
uid: string
nickname: string
avatar: string
phone: string
userLevel: number // 1普通用户 2合伙人 3渠道合伙人
createTime: string
}
```
---
### 2.2 获取用户信息
**接口**`GET /api/user/getProfile`
**描述**:获取当前登录用户信息
**响应数据**
```typescript
interface UserInfo {
id: number
uid: string
nickname: string
avatar: string
phone: string
userLevel: number
balance: number // 可提现余额
totalIncome: number // 累计收益
createTime: string
}
```
---
### 2.3 更新用户信息
**接口**`POST /api/user/updateProfile`
**描述**:更新用户昵称
**请求参数**
```typescript
interface UpdateProfileRequest {
nickname: string
}
```
**响应数据**`boolean`
---
### 2.4 更新头像
**接口**`POST /api/user/updateAvatar`
**描述**:更新用户头像
**请求参数**
```typescript
interface UpdateAvatarRequest {
/** 头像文件Base64 或 URL */
avatar: string
}
```
**响应数据**
```typescript
interface UpdateAvatarResponse {
/** 新头像 URL */
avatarUrl: string
}
```
---
## 三、首页模块
### 3.1 获取 Banner 列表
**接口**`GET /api/home/getBannerList`
**描述**:获取首页轮播图列表
**响应数据**
```typescript
interface BannerItem {
id: number
title: string
imageUrl: string
linkType: number // 0无跳转 1内部页面 2外部链接 3小程序
linkUrl: string
appId?: string // 小程序 AppId
}
type Response = BannerItem[]
```
---
### 3.2 获取测评入口列表
**接口**`GET /api/home/getAssessmentList`
**描述**:获取测评类型列表
**响应数据**
```typescript
interface AssessmentType {
id: number
name: string
code: string
imageUrl: string
price: number
status: number // 0已下线 1已上线 2即将上线
}
type Response = AssessmentType[]
```
---
### 3.3 获取宣传图列表
**接口**`GET /api/home/getPromotionList`
**描述**:获取首页底部宣传图
**响应数据**
```typescript
interface PromotionItem {
id: number
title: string
imageUrl: string
}
type Response = PromotionItem[]
```
---
## 四、团队模块
### 4.1 获取团队介绍
**接口**`GET /api/team/getInfo`
**描述**:获取团队介绍图片
**响应数据**
```typescript
interface TeamInfo {
images: string[] // 图片列表
}
```
---
## 五、测评模块
### 5.1 获取测评介绍
**接口**`GET /api/assessment/getIntro`
**描述**:获取测评介绍内容(基本信息页顶部)
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| typeId | number | 是 | 测评类型ID |
**响应数据**
```typescript
interface AssessmentIntro {
/** 介绍内容富文本或图片URL */
content: string
/** 内容类型text / image */
contentType: string
/** 测评价格 */
price: number
}
```
---
### 5.2 获取题目列表
**接口**`GET /api/assessment/getQuestionList`
**描述**:获取测评题目列表
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| typeId | number | 是 | 测评类型ID |
**响应数据**
```typescript
interface Question {
id: number
questionNo: number
content: string
}
type Response = Question[]
```
---
### 5.3 提交测评答案
**接口**`POST /api/assessment/submitAnswers`
**描述**:提交测评答案
**请求参数**
```typescript
interface SubmitAnswersRequest {
/** 测评记录ID */
recordId: number
/** 答案列表 */
answers: {
questionId: number
answerValue: number // 1-10
}[]
}
```
**响应数据**
```typescript
interface SubmitAnswersResponse {
/** 是否提交成功 */
success: boolean
/** 报告预计生成时间(秒) */
estimatedTime: number
}
```
---
### 5.4 查询报告生成状态
**接口**`GET /api/assessment/getResultStatus`
**描述**:查询测评报告生成状态
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| recordId | number | 是 | 测评记录ID |
**响应数据**
```typescript
interface ResultStatus {
/** 状态1待测评 2测评中 3生成中 4已完成 */
status: number
/** 是否完成 */
isCompleted: boolean
}
```
---
### 5.5 获取测评结果
**接口**`GET /api/assessment/getResult`
**描述**:获取测评报告详情
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| recordId | number | 是 | 测评记录ID |
**响应数据**
```typescript
interface AssessmentResult {
/** 基本信息 */
basicInfo: {
name: string
age: number
educationStage: string
testDate: string
}
/** 八大智能分析 */
intelligenceAnalysis: {
items: IntelligenceItem[]
topTwo: IntelligenceConclusion[]
bottomTwo: IntelligenceConclusion[]
}
/** 个人特质分析 */
traitAnalysis: {
items: TraitItem[]
topConclusion: string
}
/** 40项细分能力 */
abilityAnalysis: {
groups: AbilityGroup[]
topTen: AbilityItem[]
bottomTen: AbilityItem[]
}
/** 其他分析... */
}
interface IntelligenceItem {
name: string
code: string
score: number
maxScore: number
percentage: number
rank: number
}
interface IntelligenceConclusion {
name: string
rank: number
rankName: string // 最强五星 / 较强五星 / 相对较弱
conclusion: string
}
```
---
### 5.6 验证邀请码
**接口**`POST /api/assessment/verifyInviteCode`
**描述**:验证测评邀请码
**请求参数**
```typescript
interface VerifyInviteCodeRequest {
/** 邀请码5位大写字母 */
code: string
}
```
**响应数据**
```typescript
interface VerifyInviteCodeResponse {
/** 是否有效 */
isValid: boolean
/** 错误信息(无效时) */
errorMessage?: string // "邀请码有误" / "邀请码已被使用"
/** 邀请码ID有效时 */
inviteCodeId?: number
}
```
---
### 5.7 获取往期测评列表
**接口**`GET /api/assessment/getHistoryList`
**描述**:获取用户的往期测评记录
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认20 |
**响应数据**
```typescript
interface AssessmentHistory {
id: number
orderNo: string
assessmentName: string
status: number // 3生成中 4已完成
statusText: string
testDate: string
}
interface PageResponse {
list: AssessmentHistory[]
total: number
page: number
pageSize: number
totalPages: number
}
```
---
## 六、订单模块
### 6.1 获取订单列表
**接口**`GET /api/order/getList`
**描述**:获取用户订单列表
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码默认1 |
| pageSize | number | 否 | 每页数量默认20 |
| orderType | number | 否 | 订单类型1测评 2学业规划 |
**响应数据**
```typescript
interface OrderItem {
id: number
orderNo: string
orderType: number
productName: string
amount: number
status: number
statusText: string
createTime: string
/** 测评记录ID测评订单 */
assessmentRecordId?: number
}
interface PageResponse {
list: OrderItem[]
total: number
page: number
pageSize: number
totalPages: number
}
```
---
### 6.2 获取订单详情
**接口**`GET /api/order/getDetail`
**描述**:获取订单详情
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| orderId | number | 是 | 订单ID |
**响应数据**
```typescript
interface OrderDetail {
id: number
orderNo: string
orderType: number
productId: number
productName: string
amount: number
payAmount: number
payType: number
status: number
statusText: string
payTime?: string
createTime: string
/** 测评相关 */
assessmentRecord?: {
id: number
status: number
name: string
phone: string
}
/** 学业规划相关 */
plannerBooking?: {
id: number
plannerName: string
bookingDate: string
bookingTime: string
}
}
```
---
### 6.3 创建订单
**接口**`POST /api/order/create`
**描述**:创建订单
**请求参数**
```typescript
interface CreateOrderRequest {
/** 订单类型1测评 2学业规划 */
orderType: number
/** 商品ID测评类型ID / 规划师ID */
productId: number
/** 测评基本信息(测评订单必填) */
assessmentInfo?: {
name: string
phone: string
gender: number
age: number
educationStage: number
province: string
city: string
district: string
}
/** 规划预约信息(学业规划订单必填) */
plannerInfo?: {
bookingDate: string
bookingTime: string
name: string
phone: string
gender: number
grade: number
majorName?: string
scoreChinese?: number
scoreMath?: number
scoreEnglish?: number
scorePhysics?: number
scoreChemistry?: number
scoreBiology?: number
scoreGeography?: number
scorePolitics?: number
}
/** 邀请码ID使用邀请码时 */
inviteCodeId?: number
}
```
**响应数据**
```typescript
interface CreateOrderResponse {
/** 订单ID */
orderId: number
/** 订单编号 */
orderNo: string
/** 支付金额 */
payAmount: number
/** 是否需要支付(使用邀请码时为 false */
needPay: boolean
/** 测评记录ID测评订单 */
assessmentRecordId?: number
}
```
---
### 6.4 发起支付
**接口**`POST /api/order/pay`
**描述**:发起微信支付
**请求参数**
```typescript
interface PayRequest {
/** 订单ID */
orderId: number
}
```
**响应数据**
```typescript
interface PayResponse {
/** 微信支付参数 */
timeStamp: string
nonceStr: string
package: string
signType: string
paySign: string
}
```
---
### 6.5 查询支付结果
**接口**`GET /api/order/getPayResult`
**描述**:查询订单支付结果
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| orderId | number | 是 | 订单ID |
**响应数据**
```typescript
interface PayResult {
/** 是否支付成功 */
isPaid: boolean
/** 订单状态 */
status: number
/** 测评记录ID测评订单 */
assessmentRecordId?: number
}
```
---
## 七、学业规划模块
### 7.1 获取规划师列表
**接口**`GET /api/planner/getList`
**描述**:获取规划师列表
**响应数据**
```typescript
interface PlannerInfo {
id: number
name: string
avatar: string
introduction: string
price: number
}
type Response = PlannerInfo[]
```
---
### 7.2 预约规划
**接口**`POST /api/planner/book`
**描述**:预约学业规划(创建订单并支付)
**请求参数**:同 `创建订单` 接口的 `plannerInfo`
**响应数据**:同 `创建订单` 接口
---
## 八、分销模块
### 8.1 获取邀请信息
**接口**`GET /api/invite/getInfo`
**描述**:获取邀请页面信息
**响应数据**
```typescript
interface InviteInfo {
/** 邀请链接 */
inviteUrl: string
/** 邀请码 */
inviteCode: string
/** 已提现金额 */
withdrawnAmount: number
/** 待提现金额 */
pendingAmount: number
/** 邀请人数 */
inviteCount: number
}
```
---
### 8.2 生成邀请二维码
**接口**`GET /api/invite/getQrcode`
**描述**:生成邀请二维码图片
**响应数据**
```typescript
interface QrcodeResponse {
/** 二维码图片 URL */
qrcodeUrl: string
}
```
---
### 8.3 获取邀请记录
**接口**`GET /api/invite/getRecordList`
**描述**:获取邀请记录列表
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码 |
| pageSize | number | 否 | 每页数量 |
**响应数据**
```typescript
interface InviteRecord {
/** 用户ID */
userId: number
/** 用户昵称 */
nickname: string
/** 用户头像 */
avatar: string
/** 用户UID */
uid: string
/** 注册日期 */
registerDate: string
/** 贡献佣金 */
commission: number
}
interface PageResponse {
list: InviteRecord[]
total: number
page: number
pageSize: number
totalPages: number
}
```
---
### 8.4 获取佣金信息
**接口**`GET /api/invite/getCommission`
**描述**:获取佣金详情
**响应数据**
```typescript
interface CommissionInfo {
/** 累计收益 */
totalIncome: number
/** 已提现 */
withdrawnAmount: number
/** 待提现 */
pendingAmount: number
}
```
---
### 8.5 申请提现
**接口**`POST /api/invite/applyWithdraw`
**描述**:申请提现
**请求参数**
```typescript
interface ApplyWithdrawRequest {
/** 提现金额整数最低1元 */
amount: number
}
```
**响应数据**
```typescript
interface ApplyWithdrawResponse {
/** 是否成功 */
success: boolean
/** 错误信息 */
errorMessage?: string // "超出待提现金额"
/** 提现单号 */
withdrawalNo?: string
}
```
---
### 8.6 获取提现记录
**接口**`GET /api/invite/getWithdrawList`
**描述**:获取提现记录列表
**请求参数**
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| page | number | 否 | 页码 |
| pageSize | number | 否 | 每页数量 |
**响应数据**
```typescript
interface WithdrawRecord {
id: number
withdrawalNo: string
amount: number
status: number // 1申请中 2提现中 3已提现 4已取消
statusText: string
createTime: string
payTime?: string
}
interface PageResponse {
list: WithdrawRecord[]
total: number
page: number
pageSize: number
totalPages: number
}
```
---
## 九、系统模块
### 9.1 获取用户协议
**接口**`GET /api/system/getAgreement`
**描述**:获取用户协议内容
**响应数据**
```typescript
interface AgreementResponse {
/** 协议内容(富文本) */
content: string
}
```
---
### 9.2 获取隐私政策
**接口**`GET /api/system/getPrivacy`
**描述**:获取隐私政策内容
**响应数据**
```typescript
interface PrivacyResponse {
/** 政策内容(富文本) */
content: string
}
```
---
### 9.3 获取关于我们
**接口**`GET /api/system/getAbout`
**描述**:获取关于我们内容
**响应数据**
```typescript
interface AboutResponse {
/** 内容(富文本) */
content: string
/** 版本号 */
version: string
}
```