轻松聘AI开发
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.
 
 
 

6.2 KiB

企业认证接口文档

概述

企业认证模块支持企业提交认证材料,管理员审核通过或拒绝。认证状态包括 PENDING、APPROVED、REJECTED、RESUBMITTED。

认证状态枚举

状态 说明
PENDING 待审核
APPROVED 已通过(终态)
REJECTED 已拒绝
RESUBMITTED 重新提交(待审核)

状态流转规则

PENDING ──> APPROVED (终态)
PENDING ──> REJECTED
REJECTED ──> RESUBMITTED ──> PENDING(重新进入审核)

APPROVED 为终态,不可再流转。


接口列表

1. 企业提交认证

请求方法: POST /companies/me/verification

请求头:

Authorization: Bearer {jwt}
Content-Type: application/json

请求体:

字段 类型 必填 说明
materialsJson String 是 认证材料 JSON(营业执照URL等)

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": {
    "id": 1,
    "companyId": 10,
    "status": "PENDING",
    "submittedBy": 1,
    "materialsJson": "{\"license\":\"url\"}",
    "submittedAt": "2026-08-13T10:00:00",
    "version": 0
  }
}

错误响应:

状态码 错误码 说明
400 1001 缺少 materialsJson
403 2002 非 COMPANY 角色
409 8502 已有待审核的认证申请
409 8503 已通过认证,不可重复提交

权限规则: 仅 COMPANY 角色可调用,企业身份从 JWT 获取。


2. 企业查询认证状态

请求方法: GET /companies/me/verification

请求头:

Authorization: Bearer {jwt}

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": {
    "id": 1,
    "companyId": 10,
    "status": "APPROVED",
    "submittedBy": 1,
    "reviewerId": 100,
    "decisionReason": "材料齐全",
    "submittedAt": "2026-08-13T10:00:00",
    "decidedAt": "2026-08-13T11:00:00",
    "version": 1
  }
}

错误响应:

状态码 错误码 说明
403 2002 非 COMPANY 角色
404 8501 未提交过认证

权限规则: 仅 COMPANY 角色可调用,只能查看自己的认证。


3. 管理员查询认证列表

请求方法: GET /admin/companies/verifications

请求头:

Authorization: Bearer {jwt}

查询参数:

参数 类型 必填 说明
status String 否 按状态筛选 (PENDING/APPROVED/REJECTED/RESUBMITTED)
from ISO DateTime 否 提交时间起始
to ISO DateTime 否 提交时间截止
page int 否 页码(默认 0)
size int 否 每页条数(默认 20,最大 100)

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": {
    "items": [],
    "total": 0,
    "page": 0,
    "size": 20,
    "totalPages": 0
  }
}

错误响应:

状态码 错误码 说明
403 2002 非 ADMIN 角色

权限规则: 仅 ADMIN 角色可调用。


4. 管理员查看认证详情

请求方法: GET /admin/companies/verifications/{id}

请求头:

Authorization: Bearer {jwt}

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": {
    "id": 1,
    "companyId": 10,
    "status": "PENDING",
    "submittedBy": 1,
    "materialsJson": "{\"license\":\"url\"}",
    "submittedAt": "2026-08-13T10:00:00"
  }
}

错误响应:

状态码 错误码 说明
403 2002 非 ADMIN 角色
404 8501 认证记录不存在

权限规则: 仅 ADMIN 角色可调用。


5. 管理员审核决定

请求方法: POST /admin/companies/verifications/{id}/decision

请求头:

Authorization: Bearer {jwt}
Content-Type: application/json

请求体:

字段 类型 必填 说明
decision String 是 APPROVED 或 REJECTED
reason String 条件必填 REJECTED 时必须填写原因

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": {
    "id": 1,
    "companyId": 10,
    "status": "APPROVED",
    "reviewerId": 100,
    "decisionReason": "材料齐全",
    "decidedAt": "2026-08-13T11:00:00",
    "version": 1
  }
}

错误响应:

状态码 错误码 说明
400 1001 decision 无效(非 APPROVED/REJECTED)
400 8505 REJECTED 时缺少原因
403 2002 非 ADMIN 角色
404 8501 认证记录不存在
409 8503 已通过,不可重复审核
409 8504 非法状态流转

权限规则: 仅 ADMIN 角色可调用。审查结果发送通知给企业。

幂等规则: 相同状态重复调用返回 200(幂等返回),但已 APPROVED 状态不可重复审核(返回 409)。


6. 审核历史

请求方法: GET /admin/companies/verifications/history

请求头:

Authorization: Bearer {jwt}

查询参数:

参数 类型 必填 说明
verificationId Long 是 认证记录 ID

成功响应 (200):

{
  "code": 1000,
  "message": "success",
  "data": [
    {
      "id": 1,
      "fromStatus": null,
      "toStatus": "PENDING",
      "actorUserId": 1,
      "reason": "企业提交认证材料",
      "createdAt": "2026-08-13T10:00:00"
    }
  ]
}

错误响应:

状态码 错误码 说明
403 2002 非 ADMIN 角色

权限规则: 仅 ADMIN 角色可调用。


权限规则总结

角色 接口 权限
COMPANY /companies/me/verification (POST/GET) 允许
STUDENT /companies/me/verification (POST/GET) 403
ADMIN /admin/companies/verifications/** 允许
COMPANY /admin/companies/verifications/** 403
STUDENT /admin/companies/verifications/** 403

时间字段和时区

所有时间字段使用 ISO 8601 格式,时区为系统默认(Asia/Shanghai)。

审计日志

所有操作(提交、审核决定)均写入审计日志,包含操作用户、操作类型、IP 地址、User-Agent 等上下文信息。