# PracticePlatformStudent **Repository Path**: Kumono/practice-platform-student ## Basic Information - **Project Name**: PracticePlatformStudent - **Description**: 实习通微信小程序学生端 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-09 - **Last Updated**: 2026-02-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 实习管理小程序 - 前端对接文档 ## 项目介绍 这是一个微信小程序实习管理系统,学生可以通过小程序提交实习申请、查看申请进度、管理个人信息等。 ## 技术栈 - 微信小程序原生框架 - Mock 数据系统(开发调试用) ## 环境配置 ### 开发环境 ```javascript // app.js globalData: { baseUrl: 'http://localhost:8080', // 后端服务器地址 mockEnabled: true // Mock 模式开关 } ``` ### 生产环境 部署时将 `mockEnabled` 设置为 `false`,并修改 `baseUrl` 为生产环境地址。 ## API 接口文档 ### 通用说明 **请求格式:** - Content-Type: `application/json` - 认证方式: `Bearer Token` (在 Header 中添加 `Authorization` 字段) **响应格式:** ```json { "code": 200, // 200=成功, 0=失败 "msg": "提示信息", "data": {} // 响应数据 } ``` --- ## 1. 认证模块 ### 1.1 微信授权登录 **接口:** `POST /api/auth/wechat-login` **请求参数:** ```json { "code": "微信登录凭证", "userInfo": { "nickName": "用户昵称", "avatarUrl": "用户头像URL" } } ``` **响应数据:** ```json { "token": "JWT Token", "studentId": "学生ID", "userInfo": { "openId": "微信OpenID", "nickName": "昵称", "avatarUrl": "头像URL", "studentNo": "学号", "name": "姓名", "schoolId": "学校ID", "schoolName": "学校名称" } } ``` ### 1.2 绑定学生信息 **接口:** `POST /student/bind` **请求参数:** ```json { "schoolId": "学校ID", "studentNo": "学号", "name": "姓名", "phone": "手机号" } ``` **响应数据:** ```json { "success": true } ``` ### 1.3 发送验证码 **接口:** `POST /sms/send` **请求参数:** ```json { "phone": "手机号" } ``` **响应数据:** ```json { "success": true } ``` ### 1.4 验证手机号 **接口:** `POST /student/verify/phone` **请求参数:** ```json { "phone": "手机号", "code": "验证码" } ``` **响应数据:** ```json { "success": true } ``` --- ## 2. 用户信息模块 ### 2.1 获取学生信息 **接口:** `POST /api/student/info/get` **请求参数:** ```json {} ``` **响应数据:** ```json { "studentNo": "2021001", "name": "张三", "schoolId": "1", "schoolName": "清华大学", "deptName": "计算机系", "majorName": "软件工程", "className": "软21班", "grade": "2021级", "phone": "13800138000", "email": "zhangsan@example.com", "expectCity": "北京", "expectPositionType": "技术", "expectStartDate": "2025-03-01", "expectEndDate": "2025-08-31", "needAccommodation": false, "resumeUrl": "简历URL(可为null)" } ``` ### 2.2 更新学生信息 **接口:** `POST /api/student/info/update` **请求参数:** ```json { "deptName": "学院", "majorName": "专业", "className": "班级", "grade": "年级", "phone": "手机号" } ``` **响应数据:** ```json { "updateTime": "2025-01-29T10:00:00Z" } ``` ### 2.3 更新实习偏好 **接口:** `POST /student/preference/update` **请求参数:** ```json { "expectCity": "期望城市", "expectPositionType": "期望岗位类型", "expectStartDate": "2025-03-01", "expectEndDate": "2025-08-31", "needAccommodation": false } ``` **响应数据:** ```json { "success": true } ``` ### 2.4 上传简历 **接口:** `POST /student/resume/upload` **请求参数:** ```json { "fileUrl": "文件URL" } ``` **响应数据:** ```json { "url": "简历文件URL", "name": "简历文件名", "size": 102400 } ``` ### 2.5 删除简历 **接口:** `POST /student/resume/delete` **请求参数:** ```json {} ``` **响应数据:** ```json { "success": true } ``` --- ## 3. 实习岗位模块 ### 3.1 获取岗位列表 **接口:** `POST /position/list` **请求参数:** ```json { "pageNum": 1, "pageSize": 10, "city": "城市(可选)", "positionType": "岗位类型(可选)", "keyword": "搜索关键词(可选)" } ``` **响应数据:** ```json { "list": [ { "id": "1", "title": "前端开发工程师", "companyId": "1", "companyName": "腾讯科技有限公司", "city": "深圳", "positionType": "技术", "salaryMin": 8000, "salaryMax": 12000, "description": "岗位描述", "requirements": "岗位要求", "benefits": "福利待遇", "recruitCount": 5, "postDate": "2025-01-01" } ], "total": 100, "pageNum": 1, "pageSize": 10, "totalPages": 10 } ``` ### 3.2 获取岗位详情 **接口:** `POST /position/detail` **请求参数:** ```json { "id": "岗位ID" } ``` **响应数据:** ```json { "id": "1", "title": "前端开发工程师", "companyId": "1", "companyName": "腾讯科技有限公司", "companyLogo": "公司Logo URL", "companySize": "100-499人", "companyIndustry": "互联网", "city": "深圳", "positionType": "技术", "salaryMin": 8000, "salaryMax": 12000, "description": "岗位描述", "requirements": "岗位要求", "benefits": "福利待遇", "recruitCount": 5, "postDate": "2025-01-01", "isApplied": false } ``` --- ## 4. 申请模块 ### 4.1 获取申请列表 **接口:** `POST /application/list` **请求参数:** ```json { "pageNum": 1, "pageSize": 10, "status": "状态(可选)" } ``` **响应数据:** ```json { "list": [ { "id": "1", "applicationNo": "APP20250129001", "type": "position", "status": "pending", "statusText": "待审核", "statusClass": "warning", "createTime": "2025-01-29 10:00:00", "companyName": "腾讯科技有限公司", "positionTitle": "前端开发工程师", "city": "深圳", "startDate": "2025-03-01", "endDate": "2025-08-31", "canWithdraw": true, "canResubmit": false, "enterpriseAgreed": false, "enterpriseRejected": false, "schoolAgreed": false, "schoolRejected": false, "rejectReason": null, "internshipId": null } ], "total": 10, "pageNum": 1, "pageSize": 10 } ``` ### 4.2 获取申请详情 **接口:** `POST /application/detail` **请求参数:** ```json { "id": "申请ID" } ``` **响应数据:** ```json { "id": "1", "applicationNo": "APP20250129001", "type": "position", "status": "pending", "statusText": "待审核", "statusClass": "warning", "createTime": "2025-01-29 10:00:00", "companyName": "腾讯科技有限公司", "positionTitle": "前端开发工程师", "city": "深圳", "startDate": "2025-03-01", "endDate": "2025-08-31", "description": "个人说明", "remark": "备注信息", "attachments": [ { "name": "简历.pdf", "url": "https://example.com/file.pdf" } ], "canWithdraw": true, "canResubmit": false, "enterpriseAgreed": false, "enterpriseRejected": false, "schoolAgreed": false, "schoolRejected": false, "rejectReason": null, "internshipId": null, "records": [ { "id": "1", "operator": "企业HR", "time": "2025-01-29 11:00:00", "action": "提交申请", "remark": "" } ] } ``` ### 4.3 创建岗位申请 **接口:** `POST /application/position/create` **请求参数:** ```json { "positionId": "岗位ID", "startDate": "2025-03-01", "endDate": "2025-08-31", "description": "个人说明", "attachments": ["附件URL1", "附件URL2"] } ``` **响应数据:** ```json { "applicationId": "申请ID", "applicationNo": "申请编号" } ``` ### 4.4 创建自主实习申请 **接口:** `POST /application/custom/create` **请求参数:** ```json { "companyName": "企业名称", "companyCode": "统一社会信用代码", "companyAddress": "企业地址", "companyContact": "企业联系人", "companyPhone": "企业联系电话", "positionTitle": "岗位名称", "city": "工作城市", "positionType": "岗位类型", "startDate": "2025-03-01", "endDate": "2025-08-31", "description": "个人说明", "attachments": ["附件URL1", "附件URL2"] } ``` **响应数据:** ```json { "applicationId": "申请ID", "applicationNo": "申请编号" } ``` ### 4.5 撤回申请 **接口:** `POST /application/withdraw` **请求参数:** ```json { "id": "申请ID" } ``` **响应数据:** ```json { "success": true } ``` --- ## 5. 消息模块 ### 5.1 获取消息列表 **接口:** `POST /message/list` **请求参数:** ```json { "pageNum": 1, "pageSize": 10 } ``` **响应数据:** ```json { "list": [ { "id": "1", "title": "实习申请审核通过", "content": "恭喜您的实习申请已通过审核...", "type": "SYSTEM", "isRead": 0, "createTime": "2025-01-28 14:30:00" } ], "total": 20, "pageNum": 1, "pageSize": 10, "unreadCount": 5 } ``` ### 5.2 获取消息详情 **接口:** `POST /message/detail` **请求参数:** ```json { "messageId": "消息ID" } ``` **响应数据:** ```json { "id": "1", "title": "实习申请审核通过", "content": "恭喜您的实习申请已通过审核...", "type": "SYSTEM", "isRead": 0, "createTime": "2025-01-28T14:30:00", "sender": "系统", "senderAvatar": "" } ``` ### 5.3 标记消息已读 **接口:** `POST /message/read` **请求参数:** ```json { "messageId": "消息ID" } ``` **响应数据:** ```json { "success": true } ``` --- ## 6. 通用模块 ### 6.1 获取学校列表 **接口:** `POST /common/school/list` **请求参数:** ```json {} ``` **响应数据:** ```json { "list": [ { "id": "1", "schoolName": "清华大学" } ] } ``` ### 6.2 文件上传 **接口:** `POST /common/file/upload` **请求类型:** `multipart/form-data` **请求参数:** - file: 文件(form-data) **响应数据:** ```json { "url": "文件访问URL", "name": "文件名", "size": 102400 } ``` --- ## Mock 数据说明 ### Mock 模式 开发时使用 Mock 数据,无需后端服务即可测试所有功能。 **Mock 配置文件:** `miniprogram/mock/index.js` **启用/禁用 Mock:** ```javascript // miniprogram/app.js globalData: { mockEnabled: true // true=使用Mock, false=连接真实后端 } ``` ### 切换到真实后端 1. 在 `app.js` 中设置: ```javascript mockEnabled: false baseUrl: 'https://your-backend-api.com' ``` 2. 确保后端实现了上述所有 API 接口 3. 接口格式必须符合本文档规范 --- ## 状态码说明 ### 申请状态 (status) | 状态值 | 说明 | 显示文本 | 样式类 | |--------|------|----------|--------| | pending | 待审核 | 待审核 | warning | | approved | 已通过 | 已通过 | success | | rejected | 已拒绝 | 已拒绝 | error | | withdrawn | 已撤回 | 已撤回 | info | ### 消息类型 (type) | 类型值 | 说明 | |--------|------| | SYSTEM | 系统消息 | | NOTICE | 通知公告 | | REMINDER | 提醒消息 | ### 岗位类型 (positionType) | 类型值 | 说明 | |--------|------| | 技术 | 技术岗位 | | 产品 | 产品岗位 | | 设计 | 设计岗位 | | 运营 | 运营岗位 | | 市场 | 市场岗位 | | 其他 | 其他岗位 | --- ## 常见问题 ### 1. Token 失效处理 当接口返回 401 或 token 过期时,前端会自动跳转到登录页。 ### 2. 文件上传限制 - 单个文件最大 10MB - 支持的格式:PDF、DOC、DOCX、JPG、PNG ### 3. 分页说明 所有列表接口支持分页: - `pageNum`: 页码(从 1 开始) - `pageSize`: 每页数量(建议 10-20) --- ## 联系方式 如有问题,请联系前端开发团队。