# 招聘模块 API 文档 **版本:** 1.0.0 **日期:** 2025-07-02 **模块:** 人事管理系统 - 招聘模块 ## API 基础信息 所有API需要遵循系统通用规范: - 请求Header中必须包含Token - 响应格式统一为JSON,包含 `code`, `msg`, `data` 字段 - 分页接口返回格式为 `TableDataInfo` 类型 - 非分页接口返回格式为 `AjaxResult` 类型 ## 1. 职位管理 API ### 1.1 职位列表 **接口说明:** 获取招聘职位列表,支持分页和筛选 **请求方式:** GET **请求URL:** `/rs/job/list` **请求参数:** | 参数名 | 类型 | 是否必须 | 说明 | |-----------|--------|---------|------------------------| | pageNum | int | 否 | 页码,默认为1 | | pageSize | int | 否 | 每页记录数,默认为10 | | title | string | 否 | 职位名称,支持模糊搜索 | | department| string | 否 | 部门 | | isActive | string | 否 | 状态(0-在招,1-已下线)| **响应示例:** ```json { "total": 15, "rows": [ { "jobId": 1, "title": "高级Java开发工程师", "department": "教学", "salaryRange": "15k-25k", "location": "杭州", "description": "负责校园教学管理系统的开发和维护...", "requirements": "计算机相关专业本科及以上学历,3年以上Java开发经验...", "isActive": "0", "viewCount": 356, "createBy": 1, "createTime": "2025-06-01 10:00:00", "updateBy": 1, "updateTime": "2025-06-15 15:30:00", "applicantCount": 12 } ], "code": 200, "msg": "查询成功" } ``` ### 1.2 公开职位列表 **接口说明:** 获取公开招聘职位列表,仅返回状态为"在招"的职位 **请求方式:** GET **请求URL:** `/rs/job/public/list` **请求参数:** | 参数名 | 类型 | 是否必须 | 说明 | |-----------|--------|---------|----------------------| | pageNum | int | 否 | 页码,默认为1 | | pageSize | int | 否 | 每页记录数,默认为10 | | title | string | 否 | 职位名称,支持模糊搜索| | department| string | 否 | 部门 | **响应示例:** 与1.1职位列表接口响应格式相同,但仅包含在招职位 ### 1.3 职位详情 **接口说明:** 获取招聘职位详细信息 **请求方式:** GET **请求URL:** `/rs/job/{jobId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------|--------|---------|--------| | jobId | long | 是 | 职位ID | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "jobId": 1, "title": "高级Java开发工程师", "department": "教学", "salaryRange": "15k-25k", "location": "杭州", "description": "负责校园教学管理系统的开发和维护,参与核心模块设计与实现,优化系统性能,解决技术难题。\n作为团队核心成员,参与技术方案评审,指导初级开发人员,确保项目按时高质量交付。", "requirements": "计算机相关专业本科及以上学历,3年以上Java开发经验\n精通Java核心技术,熟悉Spring Boot、MyBatis等主流框架\n熟练掌握MySQL数据库设计与优化\n有教育行业相关系统开发经验者优先\n良好的沟通能力和团队协作精神", "isActive": "0", "viewCount": 356, "createBy": 1, "createTime": "2025-06-01 10:00:00", "updateBy": 1, "updateTime": "2025-06-15 15:30:00", "applicantCount": 12 } } ``` ### 1.4 职位详情(公开) **接口说明:** 获取公开招聘职位详情,同时增加浏览次数 **请求方式:** GET **请求URL:** `/rs/job/public/{jobId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------|--------|---------|--------| | jobId | long | 是 | 职位ID | **响应示例:** 与1.3职位详情接口响应格式相同 ### 1.5 新增职位 **接口说明:** 新增招聘职位 **请求方式:** POST **请求URL:** `/rs/job` **请求参数:** ```json { "title": "前端工程师", "department": "教学", "salaryRange": "12k-18k", "location": "杭州", "description": "负责校园教学管理系统前端开发,使用Vue3+TypeScript技术栈,参与UI设计与实现...", "requirements": "计算机相关专业本科及以上学历,2年以上前端开发经验\n精通HTML5/CSS3/JavaScript,熟悉Vue3/React等主流框架...", "isActive": "0" } ``` **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ### 1.6 更新职位 **接口说明:** 更新招聘职位信息 **请求方式:** PUT **请求URL:** `/rs/job` **请求参数:** 与新增职位相同,但需要包含jobId字段 **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ### 1.7 删除职位 **接口说明:** 删除招聘职位 **请求方式:** DELETE **请求URL:** `/rs/job/{jobIds}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |---------|-------------|---------|--------------------------| | jobIds | string/array| 是 | 职位ID,多个ID用逗号分隔 | **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ### 1.8 切换职位状态 **接口说明:** 切换职位的上下线状态 **请求方式:** PUT **请求URL:** `/rs/job/toggle/{jobId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------|--------|---------|--------| | jobId | long | 是 | 职位ID | **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ## 2. 申请管理 API ### 2.1 申请列表 **接口说明:** 获取申请记录列表,支持分页和筛选 **请求方式:** GET **请求URL:** `/rs/application/list` **请求参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------------|--------|---------|------------------------| | pageNum | int | 否 | 页码,默认为1 | | pageSize | int | 否 | 每页记录数,默认为10 | | jobTitle | string | 否 | 职位名称 | | applicantName| string | 否 | 应聘者姓名 | | status | string | 否 | 状态 | **响应示例:** ```json { "total": 25, "rows": [ { "applicationId": 1, "jobId": 1, "applicantId": 10, "jobTitle": "高级Java开发工程师", "applicantName": "张三", "applyTime": "2025-07-01 09:15:30", "status": "pending", "hrNotes": null, "createTime": "2025-07-01 09:15:30", "updateTime": null } ], "code": 200, "msg": "查询成功" } ``` ### 2.2 申请详情 **接口说明:** 获取申请记录详情 **请求方式:** GET **请求URL:** `/rs/application/{applicationId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------------|--------|---------|---------| | applicationId| long | 是 | 申请ID | **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "applicationId": 1, "jobId": 1, "applicantId": 10, "jobTitle": "高级Java开发工程师", "applicantName": "张三", "applyTime": "2025-07-01 09:15:30", "status": "pending", "hrNotes": null, "createTime": "2025-07-01 09:15:30", "updateTime": null } } ``` ### 2.3 提交职位申请 **接口说明:** 提交职位申请 **请求方式:** POST **请求URL:** `/rs/application/apply` **请求参数:** ```json { "jobId": 1, "applicantId": 10 } ``` **响应示例:** ```json { "code": 200, "msg": "申请提交成功" } ``` ### 2.4 更新申请状态 **接口说明:** 更新申请状态 **请求方式:** PUT **请求URL:** `/rs/application/status` **请求参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------------|--------|---------|-------------------------------------------------------| | applicationId| long | 是 | 申请ID | | status | string | 是 | 状态(pending-待处理, interviewed-已面试, offered-已录用, rejected-已拒绝)| | hrNotes | string | 否 | HR备注 | **响应示例:** ```json { "code": 200, "msg": "状态更新成功" } ``` ### 2.5 我的申请列表 **接口说明:** 获取指定应聘者的申请记录 **请求方式:** GET **请求URL:** `/rs/application/my/{applicantId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |------------|--------|---------|---------| | applicantId| long | 是 | 应聘者ID| **请求参数:** | 参数名 | 类型 | 是否必须 | 说明 | |--------------|--------|---------|-------------------| | pageNum | int | 否 | 页码,默认为1 | | pageSize | int | 否 | 每页记录数,默认为10 | **响应示例:** 与2.1申请列表接口响应格式相同 ## 3. 应聘者管理 API ### 3.1 保存应聘者信息 **接口说明:** 保存应聘者基本信息 **请求方式:** POST **请求URL:** `/rs/applicant` **请求参数:** ```json { "name": "张三", "phone": "13800138000", "email": "zhangsan@example.com", "resumeFilePath": "/upload/resume/resume_20250701123456.pdf", "selfIntro": "本人性格开朗,责任心强,有多年软件开发经验..." } ``` **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": 10 // 返回应聘者ID } ``` ### 3.2 获取应聘者信息 **接口说明:** 获取应聘者详细信息 **请求方式:** GET **请求URL:** `/rs/applicant/{applicantId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |------------|--------|---------|---------| | applicantId| long | 是 | 应聘者ID| **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": { "applicantId": 10, "userId": 100, "name": "张三", "phone": "13800138000", "email": "zhangsan@example.com", "resumeFilePath": "/upload/resume/resume_20250701123456.pdf", "selfIntro": "本人性格开朗,责任心强,有多年软件开发经验...", "currentStatus": "active", "createTime": "2025-07-01 09:15:30", "updateTime": null } } ``` ### 3.3 上传简历 **接口说明:** 上传应聘者简历文件 **请求方式:** POST **请求URL:** `/rs/applicant/upload` **请求参数:** - 使用FormData格式,包含file字段 **响应示例:** ```json { "code": 200, "msg": "上传成功", "data": "/upload/resume/resume_20250701123456.pdf" // 返回文件路径 } ``` ## 4. 教育经历 API ### 4.1 添加教育经历 **接口说明:** 添加应聘者教育经历 **请求方式:** POST **请求URL:** `/rs/education` **请求参数:** ```json { "applicantId": 10, "schoolName": "浙江大学", "major": "计算机科学与技术", "degree": "硕士", "startDate": "2020-09-01", "endDate": "2023-07-01", "description": "主要研究方向:人工智能与数据挖掘..." } ``` **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ### 4.2 教育经历列表 **接口说明:** 获取应聘者的教育经历列表 **请求方式:** GET **请求URL:** `/rs/education/list/{applicantId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |------------|--------|---------|---------| | applicantId| long | 是 | 应聘者ID| **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": [ { "eduId": 5, "applicantId": 10, "schoolName": "浙江大学", "major": "计算机科学与技术", "degree": "硕士", "startDate": "2020-09-01", "endDate": "2023-07-01", "gpa": "3.8", "description": "主要研究方向:人工智能与数据挖掘..." } ] } ``` ## 5. 工作经历 API ### 5.1 添加工作经历 **接口说明:** 添加应聘者工作经历 **请求方式:** POST **请求URL:** `/rs/experience` **请求参数:** ```json { "applicantId": 10, "companyName": "杭州科技有限公司", "position": "Java开发工程师", "startDate": "2018-07-01", "endDate": "2020-06-30", "isCurrent": "1", "description": "负责公司核心业务系统开发和维护..." } ``` **响应示例:** ```json { "code": 200, "msg": "操作成功" } ``` ### 5.2 工作经历列表 **接口说明:** 获取应聘者的工作经历列表 **请求方式:** GET **请求URL:** `/rs/experience/list/{applicantId}` **路径参数:** | 参数名 | 类型 | 是否必须 | 说明 | |------------|--------|---------|---------| | applicantId| long | 是 | 应聘者ID| **响应示例:** ```json { "code": 200, "msg": "操作成功", "data": [ { "expId": 8, "applicantId": 10, "companyName": "杭州科技有限公司", "position": "Java开发工程师", "startDate": "2018-07-01", "endDate": "2020-06-30", "isCurrent": "1", "description": "负责公司核心业务系统开发和维护..." } ] } ``` ## 6. 数据字典 ### 部门字典(rs_department) | 值 | 标签 | |---------|--------| | 教学 | 教学 | | 行政 | 行政 | | 科研 | 科研 | ### 申请状态字典(rs_application_status) | 值 | 标签 | |-----------|--------| | pending | 待处理 | | interviewed| 已面试 | | offered | 已录用 | | rejected | 已拒绝 | ## 7. 权限设计 | 权限标识 | 说明 | |-----------------------|------------------------| | rs:job:list | 查看职位列表 | | rs:job:query | 查询职位详情 | | rs:job:add | 新增职位 | | rs:job:edit | 编辑职位 | | rs:job:remove | 删除职位 | | rs:job:export | 导出职位 | | rs:application:list | 查看申请列表 | | rs:application:query | 查询申请详情 | | rs:application:add | 新增申请 | | rs:application:edit | 编辑申请 | | rs:application:remove | 删除申请 | | rs:application:export | 导出申请 | ## 8. 注意事项 1. 职位申请提交前需要先保存应聘者信息,获取applicantId 2. 职位状态更改会影响前台展示,下线的职位不会在公开列表中展示 3. 所有API请求需要在Header中附带Token 4. 公开的API(如public/list、public/{jobId})可以通过权限配置允许匿名访问;`POST /rs/application/submit` 须登录后调用