# 企业报名招聘会接口文档

## 企业报名招聘会并填写岗位

**接口地址：** `POST /app/fair/company/signUp`

**接口说明：** 企业用户报名公共招聘会（PublicJobFair），同时填写参会岗位信息

**请求头：**
```
Authorization: Bearer {token}
Content-Type: application/json
```

**请求参数（Body JSON）：**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| jobFairId | String | 是 | 招聘会ID |
| jobList | Array | 是 | 岗位列表 |

**岗位对象（jobList中的元素）字段：**

| 参数名 | 类型 | 必填 | 说明 |
|--------|------|------|------|
| jobTitle | String | 是 | 职位名称 |
| minSalary | Long | 否 | 最小薪资（元） |
| maxSalary | Long | 否 | 最大薪资（元） |
| education | String | 否 | 学历要求（对应字典education） |
| experience | String | 否 | 工作经验要求（对应字典experience） |
| vacancies | Long | 否 | 招聘人数 |
| jobLocation | String | 否 | 岗位区划 |
| jobAddress | String | 否 | 工作地点 |
| description | String | 否 | 岗位描述 |
| jobCategory | String | 否 | 岗位分类 |
| type | String | 否 | 类型（0常规岗位 1就业见习岗位 2实习实训岗位 3社区实践岗位 4零工） |

**请求示例：**

```json
{
  "jobFairId": "1",
  "jobList": [
    {
      "jobTitle": "Java开发工程师",
      "minSalary": 8000,
      "maxSalary": 15000,
      "education": "本科",
      "experience": "1-3年",
      "vacancies": 5,
      "jobLocation": "石河子市",
      "jobAddress": "石河子市北四路",
      "description": "负责公司核心系统开发",
      "type": "0"
    },
    {
      "jobTitle": "前端开发工程师",
      "minSalary": 7000,
      "maxSalary": 12000,
      "education": "大专",
      "experience": "1年以下",
      "vacancies": 3,
      "jobAddress": "石河子市北四路",
      "description": "负责公司前端页面开发",
      "type": "0"
    }
  ]
}
```

**响应参数：**

| 参数名 | 类型 | 说明 |
|--------|------|------|
| code | Number | 状态码，200 表示成功 |
| msg | String | 提示信息 |
| data | Number | 成功创建的岗位数量 |

**响应示例（成功）：**

```json
{
  "code": 200,
  "msg": "报名成功",
  "data": 2
}
```

**错误响应示例：**

```json
{
  "code": 500,
  "msg": "仅企业用户可报名招聘会"
}
```

```json
{
  "code": 500,
  "msg": "您的企业已报名该招聘会，请勿重复报名"
}
```

---

## cURL 测试示例

```bash
curl -X POST http://localhost:9091/app/fair/company/signUp \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer {your_token}" \
  -d '{
    "jobFairId": "1",
    "jobList": [
      {
        "jobTitle": "Java开发工程师",
        "minSalary": 8000,
        "maxSalary": 15000,
        "education": "本科",
        "experience": "1-3年",
        "vacancies": 5,
        "jobAddress": "石河子市北四路",
        "description": "负责公司核心系统开发"
      }
    ]
  }'
```

---

## 业务逻辑说明

1. 校验当前用户是否为企业用户（is_company_user=0）
2. 通过用户的 idCard（企业信用代码）查询企业信息
3. 检查企业是否已报名该招聘会（查询 public_job_fair_company 表）
4. 创建企业-招聘会关联记录（public_job_fair_company 表）
5. 批量插入岗位信息（job 表）
6. 创建岗位-招聘会关联记录（public_job_fair_job 表）

## 数据表关系

```
public_job_fair (招聘会主表)
    │
    ├── public_job_fair_company (企业关联表)
    │       └── company_id → company 表
    │
    └── public_job_fair_job (岗位关联表)
            ├── job_id → job 表
            └── company_id → company 表
```
