招聘模块API.md 15 KB

招聘模块 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-已下线)

响应示例:

{
  "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

响应示例:

{
  "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

请求参数:

{
  "title": "前端工程师",
  "department": "教学",
  "salaryRange": "12k-18k",
  "location": "杭州",
  "description": "负责校园教学管理系统前端开发,使用Vue3+TypeScript技术栈,参与UI设计与实现...",
  "requirements": "计算机相关专业本科及以上学历,2年以上前端开发经验\n精通HTML5/CSS3/JavaScript,熟悉Vue3/React等主流框架...",
  "isActive": "0"
}

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

1.6 更新职位

接口说明: 更新招聘职位信息

请求方式: PUT

请求URL: /rs/job

请求参数: 与新增职位相同,但需要包含jobId字段

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

1.7 删除职位

接口说明: 删除招聘职位

请求方式: DELETE

请求URL: /rs/job/{jobIds}

路径参数:

参数名 类型 是否必须 说明
jobIds string/array 是 职位ID,多个ID用逗号分隔

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

1.8 切换职位状态

接口说明: 切换职位的上下线状态

请求方式: PUT

请求URL: /rs/job/toggle/{jobId}

路径参数:

参数名 类型 是否必须 说明
jobId long 是 职位ID

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

2. 申请管理 API

2.1 申请列表

接口说明: 获取申请记录列表,支持分页和筛选

请求方式: 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": "查询成功"
}

2.2 申请详情

接口说明: 获取申请记录详情

请求方式: 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
  }
}

2.3 提交职位申请

接口说明: 提交职位申请

请求方式: POST

请求URL: /rs/application/apply

请求参数:

{
  "jobId": 1,
  "applicantId": 10
}

响应示例:

{
  "code": 200,
  "msg": "申请提交成功"
}

2.4 更新申请状态

接口说明: 更新申请状态

请求方式: PUT

请求URL: /rs/application/status

请求参数:

参数名 类型 是否必须 说明
applicationId long 是 申请ID
status string 是 状态(pending-待处理, interviewed-已面试, offered-已录用, rejected-已拒绝)
hrNotes string 否 HR备注

响应示例:

{
  "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

请求参数:

{
  "name": "张三",
  "phone": "13800138000",
  "email": "zhangsan@example.com",
  "resumeFilePath": "/upload/resume/resume_20250701123456.pdf",
  "selfIntro": "本人性格开朗,责任心强,有多年软件开发经验..."
}

响应示例:

{
  "code": 200,
  "msg": "操作成功",
  "data": 10 // 返回应聘者ID
}

3.2 获取应聘者信息

接口说明: 获取应聘者详细信息

请求方式: 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
  }
}

3.3 上传简历

接口说明: 上传应聘者简历文件

请求方式: POST

请求URL: /rs/applicant/upload

请求参数:

  • 使用FormData格式,包含file字段

响应示例:

{
  "code": 200,
  "msg": "上传成功",
  "data": "/upload/resume/resume_20250701123456.pdf" // 返回文件路径
}

4. 教育经历 API

4.1 添加教育经历

接口说明: 添加应聘者教育经历

请求方式: POST

请求URL: /rs/education

请求参数:

{
  "applicantId": 10,
  "schoolName": "浙江大学",
  "major": "计算机科学与技术",
  "degree": "硕士",
  "startDate": "2020-09-01",
  "endDate": "2023-07-01",
  "description": "主要研究方向:人工智能与数据挖掘..."
}

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

4.2 教育经历列表

接口说明: 获取应聘者的教育经历列表

请求方式: 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": "主要研究方向:人工智能与数据挖掘..."
    }
  ]
}

5. 工作经历 API

5.1 添加工作经历

接口说明: 添加应聘者工作经历

请求方式: POST

请求URL: /rs/experience

请求参数:

{
  "applicantId": 10,
  "companyName": "杭州科技有限公司",
  "position": "Java开发工程师",
  "startDate": "2018-07-01",
  "endDate": "2020-06-30",
  "isCurrent": "1",
  "description": "负责公司核心业务系统开发和维护..."
}

响应示例:

{
  "code": 200,
  "msg": "操作成功"
}

5.2 工作经历列表

接口说明: 获取应聘者的工作经历列表

请求方式: 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": "负责公司核心业务系统开发和维护..."
    }
  ]
}

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 须登录后调用