forked from baskbuddy/zhangshun
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.2 KiB
3.2 KiB
企业候选人看板 API
1. 企业候选人列表
GET /api/v1/company/candidates?[jobId][&status][&keyword][&sort][&order][&page][&size]
请求参数
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| jobId | Long | 否 | 全部 | 按岗位筛选 |
| status | String | 否 | 全部 | SUBMITTED/VIEWED/INTERVIEW/HIRED/REJECTED/WITHDRAWN |
| keyword | String | 否 | — | 学生姓名/学校/学历关键词搜索 |
| sort | String | 否 | createdAt | createdAt/updatedAt |
| order | String | 否 | desc | asc/desc |
| page | int | 否 | 0 | 页码 (0-based) |
| size | int | 否 | 20 | 每页条数 (1-100) |
权限
COMPANY 角色,从 JWT 获取用户 → 查 Company → 用 companyId 过滤数据。
响应
{
"code": 200,
"message": "ok",
"data": {
"items": [{
"applicationId": 1,
"jobId": 10,
"jobTitle": "Java 后端工程师",
"status": "SUBMITTED",
"candidateName": "张三",
"candidateSchool": "清华大学",
"candidateEducation": "本科",
"candidateGraduationYear": 2026,
"candidateAvatarUrl": "https://...",
"createdAt": "2026-08-15T10:00:00",
"updatedAt": "2026-08-16T14:00:00"
}],
"total": 156,
"page": 0,
"size": 20,
"totalPages": 8
},
"requestId": "abc-123",
"timestamp": "2026-08-17T15:00:00Z"
}
错误码
| 状态码 | 错误码 | 说明 |
|---|---|---|
| 400 | 1001 | 参数非法 (page<0, size<1或>100, 无效status/sort/order, keyword>100, jobId<=0) |
| 401 | — | 未认证 |
| 403 | 2002 | 非 COMPANY 角色 |
| 404 | 5001 | 企业不存在 |
2. 企业候选人详情
GET /api/v1/company/candidates/{applicationId}
权限
COMPANY 角色,且该投递对应的岗位必须属于当前企业。
响应
{
"code": 200,
"message": "ok",
"data": {
"applicationId": 1,
"jobId": 10,
"jobTitle": "Java 后端工程师",
"jobCity": "北京",
"jobEmploymentType": "全职",
"status": "SUBMITTED",
"coverLetter": "尊敬的HR...",
"createdAt": "2026-08-15T10:00:00",
"updatedAt": "2026-08-16T14:00:00",
"candidateName": "张三",
"candidateAvatarUrl": "https://...",
"candidateBio": "热爱编程...",
"candidateLocation": "北京",
"candidateSchool": "清华大学",
"candidateEducation": "本科",
"candidateGraduationYear": 2026,
"candidateSkills": ["Java", "Spring Boot", "MySQL"]
},
"requestId": "abc-123",
"timestamp": "2026-08-17T15:00:00Z"
}
错误码
| 状态码 | 错误码 | 说明 |
|---|---|---|
| 400 | 1001 | 参数非法 |
| 401 | — | 未认证 |
| 403 | 2002 | 非 COMPANY 角色 |
| 403 | 8004 | 投递不属于本企业 |
| 404 | 5001 | 企业不存在 |
| 404 | 8002 | 投递不存在 |
安全说明
- companyId 从 JWT 推导,不接受请求参数
- 所有数据限定在
jobs.company_id = :companyId,天然隔离 - 不返回
studentUserId、phone、passwordHash、email、原始resumeUrl - 列表不返回
coverLetter,详情返回coverLetter - 详情使用单次 JOIN 查询 (applications + jobs + student_profiles + users),不产生 N+1