# 在线调查问卷系统 API 文档 ## 1. 数据结构 ### 1.1 用户信息 (User) ```json { "id": "Long", "name": "String", // 姓名 "phone": "String", // 手机号码 "workArea": "String", // 工作领域: RD/PROJECT/INSURANCE/FINANCE/OPERATION/CUSTOMER_SERVICE/ADMIN "positionType": "String", // 岗位性质: MANAGEMENT/TECHNICAL/BUSINESS/SUPPORT "createdAt": "DateTime" // 创建时间 } ``` ### 1.2 问题 (Question) ```json { "id": "Long", "questionNumber": "Integer", // 问题序号 "content": "String", // 问题内容 "questionType": "String", // 问题类型: SINGLE_CHOICE/MULTIPLE_CHOICE/TEXT "workArea": "String", // 针对的工作领域(null表示通用问题) "isRequired": "Boolean", // 是否必答 "nextQuestionLogic": "JSON", // 跳转逻辑 "createdAt": "DateTime" // 创建时间 } ``` ### 1.3 选项 (Option) ```json { "id": "Long", "questionId": "Long", // 关联的问题ID "optionCode": "String", // 选项代码(如A、B、C) "content": "String", // 选项内容 "requiresText": "Boolean", // 是否需要填写文本 "createdAt": "DateTime" // 创建时间 } ``` ### 1.4 问卷答案 (SurveyResponse) ```json { "id": "Long", "userId": "Long", // 用户ID "questionId": "Long", // 问题ID "selectedOptions": "List", // 选中的选项代码列表 "textAnswer": "String", // 文本答案 "createdAt": "DateTime" // 创建时间 } ``` ### 1.5 错误信息 (ErrorInfo) ```json { "code": "String", // 错误代码 "message": "String", // 错误消息 "detail": "String", // 错误详情 "timestamp": "Long", // 时间戳 "path": "String" // 请求路径 } ``` ## 2. API 接口 ### 2.1 用户相关接口 #### 2.1.1 用户注册 - **URL**: `/user/register` - **Method**: POST - **请求体**: User对象(不需要id和createdAt) - **响应**: User对象 - **错误码**: - `INVALID_ARGUMENT`: 参数校验失败 - `BAD_REQUEST`: 手机号已被注册 #### 2.1.2 查询用户信息 - **URL**: `/user/{id}` - **Method**: GET - **参数**: - `id`: 用户ID - **响应**: User对象 - **错误码**: - `BAD_REQUEST`: 用户不存在 #### 2.1.3 检查手机号是否已注册 - **URL**: `/user/check/{phone}` - **Method**: GET - **参数**: - `phone`: 手机号 - **响应**: Boolean(true表示已注册) ### 2.2 问题相关接口 #### 2.2.1 获取用户的问题列表 - **URL**: `/question/user/{userId}` - **Method**: GET - **参数**: - `userId`: 用户ID - **响应**: Question对象列表 - **错误码**: - `BAD_REQUEST`: 用户不存在 #### 2.2.2 获取问题的选项列表 - **URL**: `/question/{questionId}/option` - **Method**: GET - **参数**: - `questionId`: 问题ID - **响应**: Option对象列表 #### 2.2.3 获取下一个问题 - **URL**: `/question/next` - **Method**: GET - **参数**: - `userId`: 用户ID - `currentQuestionNumber`: 当前问题序号 - `selectedOptions`: 选中的选项代码列表 - **响应**: Question对象 - **错误码**: - `BAD_REQUEST`: 没有更多问题了 ### 2.3 问卷答案相关接口 #### 2.3.1 提交问卷答案 - **URL**: `/survey/submit/{userId}` - **Method**: POST - **参数**: - `userId`: 用户ID - **请求体**: SurveyResponse对象列表 - **响应**: SurveyResponse对象列表 - **错误码**: - `BAD_REQUEST`: 必答题未回答 #### 2.3.2 获取用户的问卷答案 - **URL**: `/survey/user/{userId}` - **Method**: GET - **参数**: - `userId`: 用户ID - **响应**: SurveyResponse对象列表 #### 2.3.3 获取问题的所有答案 - **URL**: `/survey/question/{questionId}` - **Method**: GET - **参数**: - `questionId`: 问题ID - **响应**: SurveyResponse对象列表 ## 3. 错误处理 所有接口在发生错误时都会返回统一格式的错误信息(ErrorInfo对象): ### 3.1 通用错误码 - `INVALID_ARGUMENT`: 参数校验失败 - `BAD_REQUEST`: 业务逻辑错误 - `DATABASE_ERROR`: 数据库访问错误 - `SYSTEM_ERROR`: 系统错误 ### 3.2 HTTP状态码 - 200: 请求成功 - 400: 请求参数错误或业务逻辑错误 - 500: 服务器内部错误