版本: 1.0.0
日期: 2025-07-02
模块: 人事管理系统 - 招聘模块
所有API需要遵循系统通用规范:
code, msg, data 字段TableDataInfo 类型AjaxResult 类型接口说明: 获取招聘职位列表,支持分页和筛选
请求方式: GET
请求URL: /rs/job/list
请求参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| pageNum | int | 否 | 页码,默认为1 |
| pageSize | int | 否 | 每页记录数,默认为10 |
| title | string | 否 | 职位名称,支持模糊搜索 |
| department | string | 否 | 部门 |
| isActive | string | 否 | 状态(0-在招,1-已下线) |
响应示例:
{
"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": "查询成功"
}
接口说明: 获取公开招聘职位列表,仅返回状态为"在招"的职位
请求方式: GET
请求URL: /rs/job/public/list
请求参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| pageNum | int | 否 | 页码,默认为1 |
| pageSize | int | 否 | 每页记录数,默认为10 |
| title | string | 否 | 职位名称,支持模糊搜索 |
| department | string | 否 | 部门 |
响应示例: 与1.1职位列表接口响应格式相同,但仅包含在招职位
接口说明: 获取招聘职位详细信息
请求方式: GET
请求URL: /rs/job/{jobId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| jobId | long | 是 | 职位ID |
响应示例:
{
"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
}
}
接口说明: 获取公开招聘职位详情,同时增加浏览次数
请求方式: GET
请求URL: /rs/job/public/{jobId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| jobId | long | 是 | 职位ID |
响应示例: 与1.3职位详情接口响应格式相同
接口说明: 新增招聘职位
请求方式: POST
请求URL: /rs/job
请求参数:
{
"title": "前端工程师",
"department": "教学",
"salaryRange": "12k-18k",
"location": "杭州",
"description": "负责校园教学管理系统前端开发,使用Vue3+TypeScript技术栈,参与UI设计与实现...",
"requirements": "计算机相关专业本科及以上学历,2年以上前端开发经验\n精通HTML5/CSS3/JavaScript,熟悉Vue3/React等主流框架...",
"isActive": "0"
}
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 更新招聘职位信息
请求方式: PUT
请求URL: /rs/job
请求参数: 与新增职位相同,但需要包含jobId字段
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 删除招聘职位
请求方式: DELETE
请求URL: /rs/job/{jobIds}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| jobIds | string/array | 是 | 职位ID,多个ID用逗号分隔 |
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 切换职位的上下线状态
请求方式: PUT
请求URL: /rs/job/toggle/{jobId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| jobId | long | 是 | 职位ID |
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 获取申请记录列表,支持分页和筛选
请求方式: GET
请求URL: /rs/application/list
请求参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| pageNum | int | 否 | 页码,默认为1 |
| pageSize | int | 否 | 每页记录数,默认为10 |
| jobTitle | string | 否 | 职位名称 |
| applicantName | string | 否 | 应聘者姓名 |
| status | string | 否 | 状态 |
响应示例:
{
"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": "查询成功"
}
接口说明: 获取申请记录详情
请求方式: GET
请求URL: /rs/application/{applicationId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicationId | long | 是 | 申请ID |
响应示例:
{
"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
}
}
接口说明: 提交职位申请
请求方式: POST
请求URL: /rs/application/apply
请求参数:
{
"jobId": 1,
"applicantId": 10
}
响应示例:
{
"code": 200,
"msg": "申请提交成功"
}
接口说明: 更新申请状态
请求方式: PUT
请求URL: /rs/application/status
请求参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicationId | long | 是 | 申请ID |
| status | string | 是 | 状态(pending-待处理, interviewed-已面试, offered-已录用, rejected-已拒绝) |
| hrNotes | string | 否 | HR备注 |
响应示例:
{
"code": 200,
"msg": "状态更新成功"
}
接口说明: 获取指定应聘者的申请记录
请求方式: GET
请求URL: /rs/application/my/{applicantId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicantId | long | 是 | 应聘者ID |
请求参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| pageNum | int | 否 | 页码,默认为1 |
| pageSize | int | 否 | 每页记录数,默认为10 |
响应示例: 与2.1申请列表接口响应格式相同
接口说明: 保存应聘者基本信息
请求方式: POST
请求URL: /rs/applicant
请求参数:
{
"name": "张三",
"phone": "13800138000",
"email": "zhangsan@example.com",
"resumeFilePath": "/upload/resume/resume_20250701123456.pdf",
"selfIntro": "本人性格开朗,责任心强,有多年软件开发经验..."
}
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": 10 // 返回应聘者ID
}
接口说明: 获取应聘者详细信息
请求方式: GET
请求URL: /rs/applicant/{applicantId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicantId | long | 是 | 应聘者ID |
响应示例:
{
"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
}
}
接口说明: 上传应聘者简历文件
请求方式: POST
请求URL: /rs/applicant/upload
请求参数:
响应示例:
{
"code": 200,
"msg": "上传成功",
"data": "/upload/resume/resume_20250701123456.pdf" // 返回文件路径
}
接口说明: 添加应聘者教育经历
请求方式: POST
请求URL: /rs/education
请求参数:
{
"applicantId": 10,
"schoolName": "浙江大学",
"major": "计算机科学与技术",
"degree": "硕士",
"startDate": "2020-09-01",
"endDate": "2023-07-01",
"description": "主要研究方向:人工智能与数据挖掘..."
}
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 获取应聘者的教育经历列表
请求方式: GET
请求URL: /rs/education/list/{applicantId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicantId | long | 是 | 应聘者ID |
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": [
{
"eduId": 5,
"applicantId": 10,
"schoolName": "浙江大学",
"major": "计算机科学与技术",
"degree": "硕士",
"startDate": "2020-09-01",
"endDate": "2023-07-01",
"gpa": "3.8",
"description": "主要研究方向:人工智能与数据挖掘..."
}
]
}
接口说明: 添加应聘者工作经历
请求方式: POST
请求URL: /rs/experience
请求参数:
{
"applicantId": 10,
"companyName": "杭州科技有限公司",
"position": "Java开发工程师",
"startDate": "2018-07-01",
"endDate": "2020-06-30",
"isCurrent": "1",
"description": "负责公司核心业务系统开发和维护..."
}
响应示例:
{
"code": 200,
"msg": "操作成功"
}
接口说明: 获取应聘者的工作经历列表
请求方式: GET
请求URL: /rs/experience/list/{applicantId}
路径参数:
| 参数名 | 类型 | 是否必须 | 说明 |
|---|---|---|---|
| applicantId | long | 是 | 应聘者ID |
响应示例:
{
"code": 200,
"msg": "操作成功",
"data": [
{
"expId": 8,
"applicantId": 10,
"companyName": "杭州科技有限公司",
"position": "Java开发工程师",
"startDate": "2018-07-01",
"endDate": "2020-06-30",
"isCurrent": "1",
"description": "负责公司核心业务系统开发和维护..."
}
]
}
| 值 | 标签 |
|---|---|
| 教学 | 教学 |
| 行政 | 行政 |
| 科研 | 科研 |
| 值 | 标签 |
|---|---|
| pending | 待处理 |
| interviewed | 已面试 |
| offered | 已录用 |
| rejected | 已拒绝 |
| 权限标识 | 说明 |
|---|---|
| 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 | 导出申请 |
POST /rs/application/submit 须登录后调用