招聘会

This commit is contained in:
2026-01-11 02:15:16 +08:00
parent e12d8157a7
commit 55eba88734
25 changed files with 2160 additions and 1 deletions

View File

@@ -0,0 +1,411 @@
# CMS 公共招聘会管理接口文档
## 基础路径
`/cms/publicJobFair`
---
## 界面功能操作指南
### 页面一:招聘会列表页
```
┌─────────────────────────────────────────────────────────────────┐
│ 公共招聘会管理 │
├─────────────────────────────────────────────────────────────────┤
│ 招聘会标题: [________] 类型: [全部▼] [搜索] [重置] [+新增] │
├─────────────────────────────────────────────────────────────────┤
│ □ | 标题 | 地址 | 类型 | 开始时间 | 操作 │
│ ───────────────────────────────────────────────────────────── │
│ □ | 春风行动招聘会 | 人力市场 | 线下 | 2026-01-20 | 编辑 删除 │
│ □ | 高校毕业生专场 | 线上 | 线上 | 2026-02-15 | 编辑 删除 │
├─────────────────────────────────────────────────────────────────┤
│ 共 2 条 < 1 > │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 搜索 | 点击【搜索】按钮 | `GET /list` |
| 重置 | 点击【重置】按钮 | 清空条件后调用 `GET /list` |
| 新增 | 点击【+新增】按钮 | 打开新增弹窗 |
| 编辑 | 点击行内【编辑】 | `GET /{id}` 获取详情后打开编辑弹窗 |
| 删除 | 点击行内【删除】 | 确认后调用 `DELETE /{ids}` |
| 批量删除 | 勾选多行后点击【删除】 | `DELETE /{ids}` (逗号分隔) |
---
### 页面二:新增/编辑招聘会弹窗
```
┌─────────────────────────────────────────────────────────────────┐
│ 新增招聘会 [×] │
├─────────────────────────────────────────────────────────────────┤
│ 招聘会标题*: [________________________________] │
│ 招聘会地址*: [________________________________] │
│ 招聘会类型*: ○线上 ●线下 │
│ 开始时间*: [2026-01-20 09:00:00 📅] │
│ 结束时间*: [2026-01-20 17:00:00 📅] │
│ 报名开始时间: [2026-01-10 00:00:00 📅] │
│ 报名结束时间: [2026-01-19 23:59:59 📅] │
│ 主办单位: [________________________________] │
│ 协办单位: [________________________________] │
│ 承办单位: [________________________________] │
│ 联系电话: [________________] │
│ 招聘会简介: [________________________________] │
│ [________________________________] │
│ │
│ 地图选点: [点击选择位置 🗺️] │
│ ┌─────────────────────────────────────────┐ │
│ │ │ │
│ │ 高德地图选点组件 │ │
│ │ 📍 │ │
│ │ │ │
│ └─────────────────────────────────────────┘ │
│ 经度: [86.0419 ] 纬度: [44.3066 ] │
├─────────────────────────────────────────────────────────────────┤
│ [取消] [确定] │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 地图选点 | 点击地图或搜索地址 | 高德地图API自动填充经纬度 |
| 确定(新增) | 填写表单后点击【确定】 | `POST /` |
| 确定(编辑) | 修改表单后点击【确定】 | `PUT /` |
| 取消 | 点击【取消】或【×】 | 关闭弹窗 |
---
### 页面三:招聘会详情页(含企业岗位管理)
```
┌─────────────────────────────────────────────────────────────────┐
│ 招聘会详情: 春风行动专场招聘会 [返回列表] │
├─────────────────────────────────────────────────────────────────┤
│ 基本信息 │
│ ───────────────────────────────────────────────────────────── │
│ 标题: 春风行动专场招聘会 类型: 线下 │
│ 地址: 石河子市人力资源市场 电话: 0993-2012345 │
│ 时间: 2026-01-20 09:00 ~ 17:00 │
│ 报名时间: 2026-01-10 ~ 2026-01-19 │
├─────────────────────────────────────────────────────────────────┤
│ 参会企业及岗位 [+添加企业] │
│ ───────────────────────────────────────────────────────────── │
│ ▼ 新疆某某科技有限公司 (互联网/100-499人) [移除企业] │
│ ├─ Java开发工程师 | 8K-15K | 本科 | 招2人 [+添加岗位] [移除]│
│ └─ 前端开发工程师 | 7K-12K | 大专 | 招3人 [移除]│
│ ▼ 石河子农业发展有限公司 (农业/50-99人) [移除企业] │
│ └─ 农业技术员 | 5K-8K | 大专 | 招5人 [移除]│
├─────────────────────────────────────────────────────────────────┤
│ 报名人员 [查看全部报名] │
│ ───────────────────────────────────────────────────────────── │
│ 张三 | 13800138000 | 2026-01-15 10:30 | 已报名 │
│ 李四 | 13900139000 | 2026-01-16 14:20 | 已报名 │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 进入详情 | 列表页点击【编辑】或行 | `GET /{jobFairId}` |
| 添加企业 | 点击【+添加企业】 | 打开企业选择弹窗 |
| 移除企业 | 点击企业行【移除企业】 | `DELETE /company/{id}` |
| 添加岗位 | 点击企业下【+添加岗位】 | 打开岗位选择弹窗 |
| 移除岗位 | 点击岗位行【移除】 | `DELETE /job/{id}` |
| 查看全部报名 | 点击【查看全部报名】 | 跳转报名列表页 |
---
### 页面四:添加企业弹窗
```
┌─────────────────────────────────────────────────────────────────┐
│ 选择企业 [×] │
├─────────────────────────────────────────────────────────────────┤
│ 企业名称: [________] [搜索] │
├─────────────────────────────────────────────────────────────────┤
│ □ | 企业名称 | 行业 | 规模 | 类型 │
│ ───────────────────────────────────────────────────────────── │
│ ☑ | 新疆某某科技有限公司 | 互联网 | 100-499人 | 民营 │
│ ☑ | 石河子农业发展有限公司 | 农业 | 50-99人 | 国企 │
│ □ | 某某建筑工程公司 | 建筑 | 500-999人 | 民营 │
├─────────────────────────────────────────────────────────────────┤
│ [取消] [确定添加] │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 搜索企业 | 输入名称点击【搜索】 | 调用企业列表接口 |
| 确定添加(单个) | 勾选1个企业点击【确定添加】 | `POST /company` |
| 确定添加(多个) | 勾选多个企业点击【确定添加】 | `POST /company/batch` |
---
### 页面五:添加岗位弹窗
```
┌─────────────────────────────────────────────────────────────────┐
│ 选择岗位 - 新疆某某科技有限公司 [×] │
├─────────────────────────────────────────────────────────────────┤
│ 岗位名称: [________] [搜索] │
├─────────────────────────────────────────────────────────────────┤
│ □ | 岗位名称 | 薪资 | 学历 | 经验 | 招聘人数 │
│ ───────────────────────────────────────────────────────────── │
│ ☑ | Java开发工程师 | 8K-15K | 本科 | 3-5年 | 2人 │
│ ☑ | 前端开发工程师 | 7K-12K | 大专 | 1-3年 | 3人 │
│ □ | 产品经理 | 10K-20K | 本科 | 5年以上| 1人 │
├─────────────────────────────────────────────────────────────────┤
│ [取消] [确定添加] │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 搜索岗位 | 输入名称点击【搜索】 | 调用该企业岗位列表接口 |
| 确定添加(单个) | 勾选1个岗位点击【确定添加】 | `POST /job` |
| 确定添加(多个) | 勾选多个岗位点击【确定添加】 | `POST /job/batch` |
---
### 页面六:报名人员列表页
```
┌─────────────────────────────────────────────────────────────────┐
│ 报名人员 - 春风行动专场招聘会 [返回详情] │
├─────────────────────────────────────────────────────────────────┤
│ 用户名: [________] 状态: [全部▼] [搜索] [重置] [导出] │
├─────────────────────────────────────────────────────────────────┤
│ 用户名 | 姓名 | 手机号 | 报名时间 | 状态 │
│ ───────────────────────────────────────────────────────────── │
│ zhangsan | 张三 | 13800138000 | 2026-01-15 10:30:00 | 已报名 │
│ lisi | 李四 | 13900139000 | 2026-01-16 14:20:00 | 已报名 │
│ wangwu | 王五 | 13700137000 | 2026-01-17 09:15:00 | 已取消 │
├─────────────────────────────────────────────────────────────────┤
│ 共 3 条 < 1 > │
└─────────────────────────────────────────────────────────────────┘
```
| 操作 | 触发方式 | 调用接口 |
|------|---------|---------|
| 搜索 | 点击【搜索】按钮 | `GET /signups/{jobFairId}` |
| 重置 | 点击【重置】按钮 | 清空条件后调用 `GET /signups/{jobFairId}` |
| 导出 | 点击【导出】按钮 | 可扩展导出接口 |
---
## 接口详情
### 1. 查询招聘会列表
- **URL**: `GET /cms/publicJobFair/list`
- **权限**: `cms:publicJobFair:list`
- **请求参数**:
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| pageNum | Integer | 否 | 页码默认1 |
| pageSize | Integer | 否 | 每页条数默认10 |
| jobFairTitle | String | 否 | 招聘会标题(模糊查询) |
| jobFairType | String | 否 | 招聘会类型1-线上 2-线下) |
- **响应示例**:
```json
{
"code": 200,
"rows": [{
"jobFairId": "1",
"jobFairTitle": "2026年春风行动专场招聘会",
"jobFairAddress": "石河子市人力资源市场",
"jobFairType": "2",
"jobFairStartTime": "2026-01-20 10:00:00",
"jobFairEndTime": "2026-01-20 16:00:00",
"enterpriseNum": "3",
"boothNum": "10"
}],
"total": 1
}
```
---
### 2. 获取招聘会详情(含企业及岗位)
- **URL**: `GET /cms/publicJobFair/{jobFairId}`
- **权限**: `cms:publicJobFair:query`
- **响应示例**:
```json
{
"code": 200,
"data": {
"jobFairId": "1",
"jobFairTitle": "2026年春风行动专场招聘会",
"jobFairAddress": "石河子市人力资源市场",
"jobFairType": "2",
"jobFairStartTime": "2026-01-20 10:00:00",
"jobFairEndTime": "2026-01-20 16:00:00",
"jobFairHostUnit": "石河子市人社局",
"jobFairIntroduction": "招聘会简介...",
"latitude": 44.3066,
"longitude": 86.0419,
"companyList": [{
"id": "company-relation-id",
"companyId": 100,
"companyName": "新疆某某科技有限公司",
"scale": "100-499人",
"industry": "互联网/IT",
"companyType": "民营企业",
"jobInfoList": [{
"jobId": 200,
"jobTitle": "Java开发工程师",
"minSalary": 8000,
"maxSalary": 15000,
"education": "本科",
"experience": "3-5年",
"vacancies": 2
}]
}]
}
}
```
---
### 3. 新增招聘会
- **URL**: `POST /cms/publicJobFair`
- **权限**: `cms:publicJobFair:add`
- **请求体**:
```json
{
"jobFairTitle": "招聘会标题",
"jobFairAddress": "招聘会地址",
"jobFairType": "2",
"jobFairStartTime": "2026-02-01 09:00:00",
"jobFairEndTime": "2026-02-01 17:00:00",
"jobFairHostUnit": "主办单位",
"jobFairIntroduction": "招聘会简介",
"jobFairPhone": "联系电话",
"jobFairSignUpStartTime": "2026-01-20 00:00:00",
"jobFairSignUpEndTime": "2026-01-31 23:59:59",
"latitude": 44.3066,
"longitude": 86.0419
}
```
---
### 4. 修改招聘会
- **URL**: `PUT /cms/publicJobFair`
- **权限**: `cms:publicJobFair:edit`
- **请求体**: 同新增,需包含 `jobFairId`
---
### 5. 删除招聘会
- **URL**: `DELETE /cms/publicJobFair/{jobFairIds}`
- **权限**: `cms:publicJobFair:remove`
- **说明**: 支持批量删除多个ID用逗号分隔
---
### 6. 添加企业到招聘会
- **URL**: `POST /cms/publicJobFair/company`
- **权限**: `cms:publicJobFair:edit`
- **请求体**:
```json
{
"jobFairId": "1",
"companyId": 100
}
```
---
### 7. 批量添加企业
- **URL**: `POST /cms/publicJobFair/company/batch`
- **请求体**:
```json
[
{"jobFairId": "1", "companyId": 100},
{"jobFairId": "1", "companyId": 101}
]
```
---
### 8. 移除招聘会企业
- **URL**: `DELETE /cms/publicJobFair/company/{id}`
- **说明**: `id` 为关联表主键
---
### 9. 添加岗位到招聘会
- **URL**: `POST /cms/publicJobFair/job`
- **请求体**:
```json
{
"jobFairId": "1",
"jobId": 200,
"companyId": 100
}
```
---
### 10. 批量添加岗位
- **URL**: `POST /cms/publicJobFair/job/batch`
- **请求体**:
```json
[
{"jobFairId": "1", "jobId": 200, "companyId": 100},
{"jobFairId": "1", "jobId": 201, "companyId": 100}
]
```
---
### 11. 移除招聘会岗位
- **URL**: `DELETE /cms/publicJobFair/job/{id}`
---
### 12. 查询招聘会报名列表
- **URL**: `GET /cms/publicJobFair/signups/{jobFairId}`
- **权限**: `cms:publicJobFair:query`
- **响应示例**:
```json
{
"code": 200,
"rows": [{
"id": 1,
"jobFairId": 1,
"userId": 1,
"userName": "zhangsan",
"realName": "张三",
"phone": "13800138000",
"signUpTime": "2026-01-15 10:30:00",
"status": "0"
}],
"total": 1
}
```
---
### 13. 查询招聘会企业及岗位
- **URL**: `GET /cms/publicJobFair/companies/{jobFairId}`
- **权限**: `cms:publicJobFair:query`
---
## 数据字典
### 招聘会类型 (jobFairType)
| 值 | 说明 |
|---|------|
| 1 | 线上招聘会 |
| 2 | 线下招聘会 |
### 报名状态 (status)
| 值 | 说明 |
|---|------|
| 0 | 已报名 |
| 1 | 已取消 |

View File

@@ -4,11 +4,13 @@ package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.JobFair;
import com.ruoyi.cms.service.IFairCollectionService;
import com.ruoyi.cms.service.IJobFairService;
import com.ruoyi.cms.service.rc.IJobFairSignUpService;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -30,6 +32,8 @@ public class AppFairController extends BaseController
private IJobFairService jobFairService;
@Autowired
private IFairCollectionService fairCollectionService;
@Autowired
private IJobFairSignUpService jobFairSignUpService;
/**
* 招聘会列表
*/
@@ -71,4 +75,26 @@ public class AppFairController extends BaseController
{
return toAjax(fairCollectionService.cancel(fairId));
}
/**
* 报名招聘会
*/
@BussinessLog(title = "报名招聘会")
@ApiOperation("报名招聘会")
@PostMapping("/signUp/{fairId}")
public AjaxResult signUp(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(jobFairSignUpService.signUp(fairId));
}
/**
* 取消报名招聘会
*/
@BussinessLog(title = "取消报名招聘会")
@ApiOperation("取消报名招聘会")
@DeleteMapping("/signUp/{fairId}")
public AjaxResult cancelSignUp(@ApiParam("招聘会id") @PathVariable Long fairId)
{
return toAjax(jobFairSignUpService.cancelSignUp(fairId));
}
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.controller.app;
import com.ruoyi.cms.domain.rc.PublicJobFairCompanyVO;
import com.ruoyi.cms.domain.rc.PublicJobFairDetail;
import com.ruoyi.cms.domain.rc.PublicJobFairQuery;
import com.ruoyi.cms.domain.rc.PublicJobFairResponse;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.common.annotation.BussinessLog;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公共招聘会Controller石河子
*/
@Slf4j
@RestController
@RequestMapping("/app/jobfair/public/jobfair")
@Api(tags = "公共接口:招聘会(石河子)")
public class PublicJobFairController extends BaseController {
@Autowired
private IPublicJobFairService publicJobFairService;
/**
* 分页查询招聘会列表
*/
@BussinessLog(title = "公共招聘会列表")
@ApiOperation("分页查询招聘会列表")
@GetMapping("/page")
public PublicJobFairResponse page(PublicJobFairQuery query) {
return publicJobFairService.getJobFairPage(query);
}
/**
* 获取招聘会详情
*/
@BussinessLog(title = "公共招聘会详情")
@ApiOperation("获取招聘会详情")
@GetMapping("/detail")
public AjaxResult detail(@ApiParam("招聘会ID") @RequestParam String jobFairId) {
PublicJobFairDetail detail = publicJobFairService.getJobFairDetail(jobFairId);
return success(detail);
}
/**
* 获取招聘会企业及岗位列表
*/
@BussinessLog(title = "招聘会企业及岗位列表")
@ApiOperation("获取招聘会企业及岗位列表")
@GetMapping("/enterprises-with-jobs-by-job-fair-id")
public AjaxResult enterprisesWithJobs(@ApiParam("招聘会ID") @RequestParam String jobFairId) {
List<PublicJobFairCompanyVO> list = publicJobFairService.getEnterprisesWithJobs(jobFairId);
return success(list);
}
}

View File

@@ -0,0 +1,172 @@
package com.ruoyi.cms.controller.cms;
import com.ruoyi.cms.domain.rc.*;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.enums.BusinessType;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 公共招聘会管理ControllerCMS后台
*/
@RestController
@RequestMapping("/cms/publicJobFair")
@Api(tags = "后台:公共招聘会管理")
public class CmsPublicJobFairController extends BaseController {
@Autowired
private IPublicJobFairService publicJobFairService;
/**
* 查询招聘会列表
*/
@ApiOperation("查询招聘会列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:list')")
@GetMapping("/list")
public TableDataInfo list(PublicJobFairQuery query) {
startPage();
List<PublicJobFair> list = publicJobFairService.selectList(query);
return getDataTable(list);
}
/**
* 获取招聘会详情
*/
@ApiOperation("获取招聘会详情")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/{jobFairId}")
public AjaxResult getInfo(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
return success(publicJobFairService.selectById(jobFairId));
}
/**
* 新增招聘会
*/
@ApiOperation("新增招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:add')")
@Log(title = "公共招聘会", businessType = BusinessType.INSERT)
@PostMapping
public AjaxResult add(@RequestBody PublicJobFair publicJobFair) {
return toAjax(publicJobFairService.insert(publicJobFair));
}
/**
* 修改招聘会
*/
@ApiOperation("修改招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "公共招聘会", businessType = BusinessType.UPDATE)
@PutMapping
public AjaxResult edit(@RequestBody PublicJobFair publicJobFair) {
return toAjax(publicJobFairService.update(publicJobFair));
}
/**
* 删除招聘会
*/
@ApiOperation("删除招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:remove')")
@Log(title = "公共招聘会", businessType = BusinessType.DELETE)
@DeleteMapping("/{jobFairIds}")
public AjaxResult remove(@ApiParam("招聘会ID数组") @PathVariable String[] jobFairIds) {
return toAjax(publicJobFairService.deleteByIds(jobFairIds));
}
/**
* 添加企业到招聘会
*/
@ApiOperation("添加企业到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会添加企业", businessType = BusinessType.INSERT)
@PostMapping("/company")
public AjaxResult addCompany(@RequestBody PublicJobFairCompany company) {
return toAjax(publicJobFairService.addCompany(company));
}
/**
* 批量添加企业到招聘会
*/
@ApiOperation("批量添加企业到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会批量添加企业", businessType = BusinessType.INSERT)
@PostMapping("/company/batch")
public AjaxResult addCompanyBatch(@RequestBody List<PublicJobFairCompany> companies) {
return toAjax(publicJobFairService.addCompanyBatch(companies));
}
/**
* 移除招聘会企业
*/
@ApiOperation("移除招聘会企业")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "移除招聘会企业", businessType = BusinessType.DELETE)
@DeleteMapping("/company/{id}")
public AjaxResult removeCompany(@ApiParam("关联ID") @PathVariable String id) {
return toAjax(publicJobFairService.removeCompany(id));
}
/**
* 添加岗位到招聘会
*/
@ApiOperation("添加岗位到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会添加岗位", businessType = BusinessType.INSERT)
@PostMapping("/job")
public AjaxResult addJob(@RequestBody PublicJobFairJob job) {
return toAjax(publicJobFairService.addJob(job));
}
/**
* 批量添加岗位到招聘会
*/
@ApiOperation("批量添加岗位到招聘会")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "招聘会批量添加岗位", businessType = BusinessType.INSERT)
@PostMapping("/job/batch")
public AjaxResult addJobBatch(@RequestBody List<PublicJobFairJob> jobs) {
return toAjax(publicJobFairService.addJobBatch(jobs));
}
/**
* 移除招聘会岗位
*/
@ApiOperation("移除招聘会岗位")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:edit')")
@Log(title = "移除招聘会岗位", businessType = BusinessType.DELETE)
@DeleteMapping("/job/{id}")
public AjaxResult removeJob(@ApiParam("关联ID") @PathVariable String id) {
return toAjax(publicJobFairService.removeJob(id));
}
/**
* 查询招聘会报名列表
*/
@ApiOperation("查询招聘会报名列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/signups/{jobFairId}")
public TableDataInfo getSignUpList(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
startPage();
List<JobFairSignUpVO> list = publicJobFairService.selectSignUpList(jobFairId);
return getDataTable(list);
}
/**
* 查询招聘会关联的企业列表
*/
@ApiOperation("查询招聘会关联的企业列表")
@PreAuthorize("@ss.hasPermi('cms:publicJobFair:query')")
@GetMapping("/companies/{jobFairId}")
public AjaxResult getCompanyList(@ApiParam("招聘会ID") @PathVariable String jobFairId) {
return success(publicJobFairService.getEnterprisesWithJobs(jobFairId));
}
}

View File

@@ -0,0 +1,38 @@
package com.ruoyi.cms.domain.rc;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* 招聘会报名对象
*/
@Data
@ApiModel("招聘会报名")
@TableName("rc_job_fair_sign_up")
public class JobFairSignUp extends BaseEntity {
@TableId(value = "id", type = IdType.AUTO)
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("招聘会ID")
private Long jobFairId;
@ApiModelProperty("用户ID")
private Long userId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名时间")
private Date signUpTime;
@ApiModelProperty("状态 0正常 1已取消")
private String status;
}

View File

@@ -0,0 +1,44 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会报名信息VO包含用户信息
*/
@Data
@ApiModel("招聘会报名信息")
public class JobFairSignUpVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("报名ID")
private Long id;
@ApiModelProperty("招聘会ID")
private Long jobFairId;
@ApiModelProperty("用户ID")
private Long userId;
@ApiModelProperty("用户名")
private String userName;
@ApiModelProperty("真实姓名")
private String realName;
@ApiModelProperty("手机号")
private String phone;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名时间")
private Date signUpTime;
@ApiModelProperty("状态 0正常 1已取消")
private String status;
}

View File

@@ -0,0 +1,162 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 公共招聘会信息对象(对接石河子/喀什地区)
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会信息")
public class PublicJobFair implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会地址")
private String jobFairAddress;
@ApiModelProperty("招聘会类型")
private String jobFairType;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会开始时间")
private Date jobFairStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会结束时间")
private Date jobFairEndTime;
@ApiModelProperty("主办单位")
private String jobFairHostUnit;
@ApiModelProperty("协办单位")
private String jobFairHelpUnit;
@ApiModelProperty("承办单位")
private String jobFairOrganizeUnit;
@ApiModelProperty("招聘会简介")
private String jobFairIntroduction;
@ApiModelProperty("备注")
private String jobFairRemark;
@ApiModelProperty("联系电话")
private String jobFairPhone;
@ApiModelProperty("招聘会图片")
private String jobFairImage;
@ApiModelProperty("招聘会区域图片")
private String jobFairAreaImage;
@ApiModelProperty("创建人")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新人")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("招聘会场馆ID")
private String jobFairVenueId;
@ApiModelProperty("场馆区域展位信息")
private String jobFairVenueAreaAndBoothInfo;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名开始时间")
private Date jobFairSignUpStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("报名结束时间")
private Date jobFairSignUpEndTime;
@ApiModelProperty("是否报名")
private String isSignUp;
@ApiModelProperty("企业数量")
private String enterpriseNum;
@ApiModelProperty("区域展位信息")
private String jobFairAreaAndBoothInfo;
@ApiModelProperty("人员ID")
private String personId;
@ApiModelProperty("企业ID")
private String enterpriseId;
@ApiModelProperty("投递数量")
private String deliverNum;
@ApiModelProperty("企业审核状态")
private String enterpriseReviewStatus;
@ApiModelProperty("企业审核意见")
private String enterpriseReviewComments;
@ApiModelProperty("简历数量")
private String resumeCount;
@ApiModelProperty("展位数量")
private String boothNum;
@ApiModelProperty("区域展位名称")
private String jobFairAreaBoothName;
@ApiModelProperty("我的岗位数量")
private String myJobNum;
@ApiModelProperty("省份")
private String divisionProvince;
@ApiModelProperty("城市")
private String divisionCity;
@ApiModelProperty("区县")
private String divisionCounty;
@ApiModelProperty("区域名称")
private String divisionName;
@ApiModelProperty("校验码")
private String checkCode;
@ApiModelProperty("部门编码(末级)")
private String deptCodeLast;
@ApiModelProperty("部门编码(全部)")
private String deptCodeAll;
@ApiModelProperty("招聘会类别")
private String jobFairCategory;
@ApiModelProperty("纬度")
private java.math.BigDecimal latitude;
@ApiModelProperty("经度")
private java.math.BigDecimal longitude;
@ApiModelProperty("参加的企业及岗位列表")
private java.util.List<PublicJobFairCompanyVO> companyList;
}

View File

@@ -0,0 +1,45 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会-企业关联对象
*/
@Data
@ApiModel("招聘会-企业关联")
public class PublicJobFairCompany implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("创建者")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新者")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标志")
private String delFlag;
}

View File

@@ -0,0 +1,40 @@
package com.ruoyi.cms.domain.rc;
import com.ruoyi.cms.domain.Job;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 招聘会企业VO
*/
@Data
@ApiModel("招聘会企业VO")
public class PublicJobFairCompanyVO implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("企业记录ID")
private String id;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("企业名称")
private String companyName;
@ApiModelProperty("企业规模")
private String scale;
@ApiModelProperty("所属行业")
private String industry;
@ApiModelProperty("企业类型")
private String companyType;
@ApiModelProperty("在招职位列表")
private List<Job> jobInfoList;
}

View File

@@ -0,0 +1,52 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* 公共招聘会详情
*/
@Data
@ApiModel("公共招聘会详情")
public class PublicJobFairDetail implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会地址")
private String jobFairAddress;
@ApiModelProperty("招聘会简介")
private String jobFairIntroduction;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会开始时间")
private Date jobFairStartTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("招聘会结束时间")
private Date jobFairEndTime;
@ApiModelProperty("招聘会类型 1-线上 2-线下")
private Integer jobFairType;
@ApiModelProperty("纬度")
private BigDecimal latitude;
@ApiModelProperty("经度")
private BigDecimal longitude;
@ApiModelProperty("是否已报名 0-未报名 1-已报名")
private Integer isSignUp;
}

View File

@@ -0,0 +1,48 @@
package com.ruoyi.cms.domain.rc;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
/**
* 招聘会-岗位关联对象
*/
@Data
@ApiModel("招聘会-岗位关联")
public class PublicJobFairJob implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("主键ID")
private String id;
@ApiModelProperty("招聘会ID")
private String jobFairId;
@ApiModelProperty("岗位ID")
private Long jobId;
@ApiModelProperty("企业ID")
private Long companyId;
@ApiModelProperty("创建者")
private String createBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新者")
private String updateBy;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标志")
private String delFlag;
}

View File

@@ -0,0 +1,34 @@
package com.ruoyi.cms.domain.rc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
/**
* 公共招聘会查询参数
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会查询参数")
public class PublicJobFairQuery implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("页码")
private Integer pageNum = 1;
@ApiModelProperty("每页数量")
private Integer pageSize = 10;
@ApiModelProperty("招聘会标题")
private String jobFairTitle;
@ApiModelProperty("招聘会类型")
private String jobFairType;
@ApiModelProperty("招聘会举办时间格式yyyy-MM-dd")
private String zphjbsj;
}

View File

@@ -0,0 +1,88 @@
package com.ruoyi.cms.domain.rc;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 公共招聘会响应对象
* @author kiro
* @date 2026-01-10
*/
@Data
@ApiModel("公共招聘会响应")
public class PublicJobFairResponse implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("状态码")
private Integer code;
@ApiModelProperty("消息")
private String msg;
@ApiModelProperty("数据")
private PageData data;
@Data
public static class PageData implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("总数")
private Long total;
@ApiModelProperty("列表")
private List<PublicJobFair> list;
@ApiModelProperty("当前页码")
private Integer pageNum;
@ApiModelProperty("每页数量")
private Integer pageSize;
@ApiModelProperty("当前页数量")
private Integer size;
@ApiModelProperty("起始行")
private Integer startRow;
@ApiModelProperty("结束行")
private Integer endRow;
@ApiModelProperty("总页数")
private Integer pages;
@ApiModelProperty("上一页")
private Integer prePage;
@ApiModelProperty("下一页")
private Integer nextPage;
@ApiModelProperty("是否第一页")
private Boolean isFirstPage;
@ApiModelProperty("是否最后一页")
private Boolean isLastPage;
@ApiModelProperty("是否有上一页")
private Boolean hasPreviousPage;
@ApiModelProperty("是否有下一页")
private Boolean hasNextPage;
@ApiModelProperty("导航页数")
private Integer navigatePages;
@ApiModelProperty("导航页码")
private List<Integer> navigatepageNums;
@ApiModelProperty("导航第一页")
private Integer navigateFirstPage;
@ApiModelProperty("导航最后一页")
private Integer navigateLastPage;
}
}

View File

@@ -0,0 +1,18 @@
package com.ruoyi.cms.mapper.rc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.rc.JobFairSignUp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 招聘会报名Mapper接口
*/
@Mapper
public interface JobFairSignUpMapper extends BaseMapper<JobFairSignUp> {
/**
* 检查是否已报名
*/
JobFairSignUp checkSignUp(@Param("jobFairId") Long jobFairId, @Param("userId") Long userId);
}

View File

@@ -0,0 +1,96 @@
package com.ruoyi.cms.mapper.rc;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.rc.*;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 公共招聘会Mapper接口
*/
public interface PublicJobFairMapper extends BaseMapper<PublicJobFair> {
/**
* 分页查询招聘会列表
*/
List<PublicJobFair> selectPublicJobFairList(@Param("query") PublicJobFairQuery query);
/**
* 查询招聘会详情
*/
PublicJobFairDetail selectPublicJobFairDetailById(@Param("jobFairId") String jobFairId);
/**
* 查询招聘会关联的企业列表
*/
List<PublicJobFairCompanyVO> selectCompanyListByJobFairId(@Param("jobFairId") String jobFairId);
/**
* 查询招聘会关联的岗位列表
*/
List<Job> selectJobListByJobFairIdAndCompanyId(@Param("jobFairId") String jobFairId, @Param("companyId") Long companyId);
/**
* 检查用户是否已报名
*/
Integer checkUserSignUp(@Param("jobFairId") String jobFairId, @Param("personId") Long personId);
// ========== CMS后台管理接口 ==========
/**
* 根据ID查询招聘会
*/
PublicJobFair selectPublicJobFairById(@Param("jobFairId") String jobFairId);
/**
* 新增招聘会
*/
int insertPublicJobFair(PublicJobFair publicJobFair);
/**
* 修改招聘会
*/
int updatePublicJobFair(PublicJobFair publicJobFair);
/**
* 批量删除招聘会
*/
int deletePublicJobFairByIds(@Param("jobFairIds") String[] jobFairIds);
/**
* 添加企业到招聘会
*/
int insertJobFairCompany(PublicJobFairCompany company);
/**
* 批量添加企业到招聘会
*/
int insertJobFairCompanyBatch(@Param("list") List<PublicJobFairCompany> companies);
/**
* 删除招聘会企业关联
*/
int deleteJobFairCompanyById(@Param("id") String id);
/**
* 添加岗位到招聘会
*/
int insertJobFairJob(PublicJobFairJob job);
/**
* 批量添加岗位到招聘会
*/
int insertJobFairJobBatch(@Param("list") List<PublicJobFairJob> jobs);
/**
* 删除招聘会岗位关联
*/
int deleteJobFairJobById(@Param("id") String id);
/**
* 查询招聘会报名列表(包含用户信息)
*/
List<JobFairSignUpVO> selectSignUpListByJobFairId(@Param("jobFairId") String jobFairId);
}

View File

@@ -67,7 +67,7 @@ public class ESJobSearchImpl implements IESJobSearchService
/**
* 项目启动时,初始化索引及数据
*/
@PostConstruct
// @PostConstruct
public void init()
{
boolean isLockAcquired = false;

View File

@@ -0,0 +1,17 @@
package com.ruoyi.cms.service.rc;
/**
* 招聘会报名Service接口
*/
public interface IJobFairSignUpService {
/**
* 报名招聘会
*/
int signUp(Long jobFairId);
/**
* 取消报名
*/
int cancelSignUp(Long jobFairId);
}

View File

@@ -0,0 +1,88 @@
package com.ruoyi.cms.service.rc;
import com.ruoyi.cms.domain.rc.*;
import java.util.List;
/**
* 公共招聘会Service接口
*/
public interface IPublicJobFairService {
/**
* 分页查询招聘会列表APP端
*/
PublicJobFairResponse getJobFairPage(PublicJobFairQuery query);
/**
* 获取招聘会详情APP端
*/
PublicJobFairDetail getJobFairDetail(String jobFairId);
/**
* 获取招聘会企业及岗位列表
*/
List<PublicJobFairCompanyVO> getEnterprisesWithJobs(String jobFairId);
// ========== CMS后台管理接口 ==========
/**
* 查询招聘会列表CMS
*/
List<PublicJobFair> selectList(PublicJobFairQuery query);
/**
* 根据ID查询招聘会
*/
PublicJobFair selectById(String jobFairId);
/**
* 新增招聘会
*/
int insert(PublicJobFair publicJobFair);
/**
* 修改招聘会
*/
int update(PublicJobFair publicJobFair);
/**
* 批量删除招聘会
*/
int deleteByIds(String[] jobFairIds);
/**
* 添加企业到招聘会
*/
int addCompany(PublicJobFairCompany company);
/**
* 批量添加企业到招聘会
*/
int addCompanyBatch(List<PublicJobFairCompany> companies);
/**
* 移除招聘会企业
*/
int removeCompany(String id);
/**
* 添加岗位到招聘会
*/
int addJob(PublicJobFairJob job);
/**
* 批量添加岗位到招聘会
*/
int addJobBatch(List<PublicJobFairJob> jobs);
/**
* 移除招聘会岗位
*/
int removeJob(String id);
/**
* 查询招聘会报名列表
*/
List<JobFairSignUpVO> selectSignUpList(String jobFairId);
}

View File

@@ -0,0 +1,63 @@
package com.ruoyi.cms.service.rc.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.cms.domain.rc.JobFairSignUp;
import com.ruoyi.cms.mapper.rc.JobFairSignUpMapper;
import com.ruoyi.cms.service.rc.IJobFairSignUpService;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.SiteSecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 招聘会报名Service业务层处理
*/
@Service
public class JobFairSignUpServiceImpl extends ServiceImpl<JobFairSignUpMapper, JobFairSignUp> implements IJobFairSignUpService {
@Autowired
private JobFairSignUpMapper jobFairSignUpMapper;
@Override
public int signUp(Long jobFairId) {
Long userId = SiteSecurityUtils.getUserId();
// 检查是否已有报名记录
JobFairSignUp existSignUp = jobFairSignUpMapper.checkSignUp(jobFairId, userId);
if (existSignUp != null) {
// 已有记录
if ("0".equals(existSignUp.getStatus())) {
throw new ServiceException("您已报名该招聘会,请勿重复报名");
}
// 已取消的记录,重新激活
existSignUp.setStatus("0");
existSignUp.setSignUpTime(new Date());
return jobFairSignUpMapper.updateById(existSignUp);
}
// 新增报名记录
JobFairSignUp signUp = new JobFairSignUp();
signUp.setJobFairId(jobFairId);
signUp.setUserId(userId);
signUp.setSignUpTime(new Date());
signUp.setStatus("0");
return jobFairSignUpMapper.insert(signUp);
}
@Override
public int cancelSignUp(Long jobFairId) {
Long userId = SiteSecurityUtils.getUserId();
JobFairSignUp existSignUp = jobFairSignUpMapper.checkSignUp(jobFairId, userId);
if (existSignUp == null || "1".equals(existSignUp.getStatus())) {
throw new ServiceException("您未报名该招聘会");
}
existSignUp.setStatus("1"); // 已取消
return jobFairSignUpMapper.updateById(existSignUp);
}
}

View File

@@ -0,0 +1,207 @@
package com.ruoyi.cms.service.rc.impl;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.ruoyi.cms.domain.Job;
import com.ruoyi.cms.domain.rc.*;
import com.ruoyi.cms.mapper.rc.PublicJobFairMapper;
import com.ruoyi.cms.service.rc.IPublicJobFairService;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.SiteSecurityUtils;
import com.ruoyi.common.utils.uuid.IdUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 公共招聘会Service实现
*/
@Slf4j
@Service
public class PublicJobFairServiceImpl implements IPublicJobFairService {
@Autowired
private PublicJobFairMapper publicJobFairMapper;
@Override
public PublicJobFairResponse getJobFairPage(PublicJobFairQuery query) {
PageHelper.startPage(query.getPageNum(), query.getPageSize());
List<PublicJobFair> list = publicJobFairMapper.selectPublicJobFairList(query);
PageInfo<PublicJobFair> pageInfo = new PageInfo<>(list);
PublicJobFairResponse response = new PublicJobFairResponse();
response.setCode(200);
PublicJobFairResponse.PageData pageData = new PublicJobFairResponse.PageData();
pageData.setTotal(pageInfo.getTotal());
pageData.setList(list);
pageData.setPageNum(pageInfo.getPageNum());
pageData.setPageSize(pageInfo.getPageSize());
pageData.setSize(pageInfo.getSize());
pageData.setStartRow((int) pageInfo.getStartRow());
pageData.setEndRow((int) pageInfo.getEndRow());
pageData.setPages(pageInfo.getPages());
pageData.setPrePage(pageInfo.getPrePage());
pageData.setNextPage(pageInfo.getNextPage());
pageData.setIsFirstPage(pageInfo.isIsFirstPage());
pageData.setIsLastPage(pageInfo.isIsLastPage());
pageData.setHasPreviousPage(pageInfo.isHasPreviousPage());
pageData.setHasNextPage(pageInfo.isHasNextPage());
pageData.setNavigatePages(pageInfo.getNavigatePages());
pageData.setNavigatepageNums(Arrays.stream(pageInfo.getNavigatepageNums()).boxed().collect(Collectors.toList()));
pageData.setNavigateFirstPage(pageInfo.getNavigateFirstPage());
pageData.setNavigateLastPage(pageInfo.getNavigateLastPage());
response.setData(pageData);
return response;
}
@Override
public PublicJobFairDetail getJobFairDetail(String jobFairId) {
PublicJobFairDetail detail = publicJobFairMapper.selectPublicJobFairDetailById(jobFairId);
if (detail == null) {
return null;
}
// 获取当前登录用户ID
Long userId = null;
try {
if (SiteSecurityUtils.isLogin()) {
userId = SiteSecurityUtils.getUserId();
}
} catch (Exception e) {
// 未登录,忽略
}
// 检查用户是否已报名
if (userId != null) {
Integer count = publicJobFairMapper.checkUserSignUp(jobFairId, userId);
detail.setIsSignUp(count != null && count > 0 ? 1 : 0);
} else {
detail.setIsSignUp(0);
}
return detail;
}
@Override
public List<PublicJobFairCompanyVO> getEnterprisesWithJobs(String jobFairId) {
List<PublicJobFairCompanyVO> companyList = publicJobFairMapper.selectCompanyListByJobFairId(jobFairId);
if (companyList != null && !companyList.isEmpty()) {
for (PublicJobFairCompanyVO company : companyList) {
List<Job> jobList = publicJobFairMapper.selectJobListByJobFairIdAndCompanyId(jobFairId, company.getCompanyId());
company.setJobInfoList(jobList);
}
}
return companyList;
}
// ========== CMS后台管理接口实现 ==========
@Override
public List<PublicJobFair> selectList(PublicJobFairQuery query) {
return publicJobFairMapper.selectPublicJobFairList(query);
}
@Override
public PublicJobFair selectById(String jobFairId) {
PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId);
if (jobFair != null) {
// 查询关联的企业及岗位
List<PublicJobFairCompanyVO> companyList = getEnterprisesWithJobs(jobFairId);
jobFair.setCompanyList(companyList);
}
return jobFair;
}
@Override
@Transactional
public int insert(PublicJobFair publicJobFair) {
publicJobFair.setJobFairId(IdUtils.fastSimpleUUID());
publicJobFair.setCreateTime(new Date());
publicJobFair.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertPublicJobFair(publicJobFair);
}
@Override
@Transactional
public int update(PublicJobFair publicJobFair) {
publicJobFair.setUpdateTime(new Date());
publicJobFair.setUpdateBy(SecurityUtils.getUsername());
return publicJobFairMapper.updatePublicJobFair(publicJobFair);
}
@Override
@Transactional
public int deleteByIds(String[] jobFairIds) {
return publicJobFairMapper.deletePublicJobFairByIds(jobFairIds);
}
@Override
@Transactional
public int addCompany(PublicJobFairCompany company) {
company.setId(IdUtils.fastSimpleUUID());
company.setCreateTime(new Date());
company.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertJobFairCompany(company);
}
@Override
@Transactional
public int addCompanyBatch(List<PublicJobFairCompany> companies) {
String username = SecurityUtils.getUsername();
Date now = new Date();
for (PublicJobFairCompany company : companies) {
company.setId(IdUtils.fastSimpleUUID());
company.setCreateTime(now);
company.setCreateBy(username);
}
return publicJobFairMapper.insertJobFairCompanyBatch(companies);
}
@Override
@Transactional
public int removeCompany(String id) {
return publicJobFairMapper.deleteJobFairCompanyById(id);
}
@Override
@Transactional
public int addJob(PublicJobFairJob job) {
job.setId(IdUtils.fastSimpleUUID());
job.setCreateTime(new Date());
job.setCreateBy(SecurityUtils.getUsername());
return publicJobFairMapper.insertJobFairJob(job);
}
@Override
@Transactional
public int addJobBatch(List<PublicJobFairJob> jobs) {
String username = SecurityUtils.getUsername();
Date now = new Date();
for (PublicJobFairJob job : jobs) {
job.setId(IdUtils.fastSimpleUUID());
job.setCreateTime(now);
job.setCreateBy(username);
}
return publicJobFairMapper.insertJobFairJobBatch(jobs);
}
@Override
@Transactional
public int removeJob(String id) {
return publicJobFairMapper.deleteJobFairJobById(id);
}
@Override
public List<JobFairSignUpVO> selectSignUpList(String jobFairId) {
return publicJobFairMapper.selectSignUpListByJobFairId(jobFairId);
}
}

View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cms.mapper.rc.JobFairSignUpMapper">
<resultMap type="com.ruoyi.cms.domain.rc.JobFairSignUp" id="JobFairSignUpResult">
<id property="id" column="id"/>
<result property="jobFairId" column="job_fair_id"/>
<result property="userId" column="user_id"/>
<result property="signUpTime" column="sign_up_time"/>
<result property="status" column="status"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="remark" column="remark"/>
</resultMap>
<select id="checkSignUp" resultMap="JobFairSignUpResult">
select id, job_fair_id, user_id, sign_up_time, status
from rc_job_fair_sign_up
where job_fair_id = #{jobFairId} and user_id = #{userId} and del_flag = '0'
order by sign_up_time desc limit 1
</select>
</mapper>

View File

@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.cms.mapper.rc.PublicJobFairMapper">
<resultMap type="com.ruoyi.cms.domain.rc.PublicJobFair" id="PublicJobFairResult">
<result property="jobFairId" column="job_fair_id"/>
<result property="jobFairTitle" column="job_fair_title"/>
<result property="jobFairAddress" column="job_fair_address"/>
<result property="jobFairType" column="job_fair_type"/>
<result property="jobFairStartTime" column="job_fair_start_time"/>
<result property="jobFairEndTime" column="job_fair_end_time"/>
<result property="jobFairHostUnit" column="job_fair_host_unit"/>
<result property="jobFairHelpUnit" column="job_fair_help_unit"/>
<result property="jobFairOrganizeUnit" column="job_fair_organize_unit"/>
<result property="jobFairIntroduction" column="job_fair_introduction"/>
<result property="jobFairRemark" column="job_fair_remark"/>
<result property="jobFairPhone" column="job_fair_phone"/>
<result property="jobFairImage" column="job_fair_image"/>
<result property="jobFairAreaImage" column="job_fair_area_image"/>
<result property="createBy" column="create_by"/>
<result property="createTime" column="create_time"/>
<result property="updateBy" column="update_by"/>
<result property="updateTime" column="update_time"/>
<result property="jobFairVenueId" column="job_fair_venue_id"/>
<result property="jobFairSignUpStartTime" column="job_fair_sign_up_start_time"/>
<result property="jobFairSignUpEndTime" column="job_fair_sign_up_end_time"/>
<result property="isSignUp" column="is_sign_up"/>
<result property="enterpriseNum" column="enterprise_num"/>
<result property="boothNum" column="booth_num"/>
<result property="divisionName" column="division_name"/>
<result property="deptCodeLast" column="dept_code_last"/>
<result property="deptCodeAll" column="dept_code_all"/>
<result property="jobFairCategory" column="job_fair_category"/>
</resultMap>
<resultMap type="com.ruoyi.cms.domain.rc.PublicJobFairDetail" id="DetailResult">
<result property="jobFairId" column="job_fair_id"/>
<result property="jobFairTitle" column="job_fair_title"/>
<result property="jobFairAddress" column="job_fair_address"/>
<result property="jobFairIntroduction" column="job_fair_introduction"/>
<result property="jobFairStartTime" column="job_fair_start_time"/>
<result property="jobFairEndTime" column="job_fair_end_time"/>
<result property="jobFairType" column="job_fair_type"/>
<result property="latitude" column="latitude"/>
<result property="longitude" column="longitude"/>
</resultMap>
<resultMap type="com.ruoyi.cms.domain.rc.PublicJobFairCompanyVO" id="CompanyVOResult">
<result property="id" column="id"/>
<result property="companyId" column="company_id"/>
<result property="companyName" column="name"/>
<result property="scale" column="scale"/>
<result property="industry" column="industry"/>
<result property="companyType" column="nature"/>
</resultMap>
<sql id="selectPublicJobFairVo">
select job_fair_id, job_fair_title, job_fair_address, job_fair_type, job_fair_start_time, job_fair_end_time,
job_fair_host_unit, job_fair_help_unit, job_fair_organize_unit, job_fair_introduction, job_fair_remark,
job_fair_phone, job_fair_image, job_fair_area_image, create_by, create_time, update_by, update_time,
job_fair_venue_id, job_fair_sign_up_start_time, job_fair_sign_up_end_time, enterprise_num, booth_num,
division_name, dept_code_last, dept_code_all, job_fair_category
from public_job_fair
</sql>
<select id="selectPublicJobFairList" resultMap="PublicJobFairResult">
<include refid="selectPublicJobFairVo"/>
<where>
del_flag = '0'
<if test="query.jobFairTitle != null and query.jobFairTitle != ''">
and job_fair_title like concat('%', #{query.jobFairTitle}, '%')
</if>
<if test="query.jobFairType != null and query.jobFairType != ''">
and job_fair_type = #{query.jobFairType}
</if>
<if test="query.zphjbsj != null and query.zphjbsj != ''">
and to_char(job_fair_start_time, 'YYYY-MM-DD') &lt;= #{query.zphjbsj}
and to_char(job_fair_end_time, 'YYYY-MM-DD') &gt;= #{query.zphjbsj}
</if>
</where>
order by job_fair_start_time desc
</select>
<select id="selectPublicJobFairDetailById" resultMap="DetailResult">
select job_fair_id, job_fair_title, job_fair_address, job_fair_introduction,
job_fair_start_time, job_fair_end_time, job_fair_type, latitude, longitude
from public_job_fair
where job_fair_id = #{jobFairId} and del_flag = '0'
</select>
<select id="selectCompanyListByJobFairId" resultMap="CompanyVOResult">
select pfc.id, pfc.company_id, c.name, c.scale, c.industry, c.nature
from public_job_fair_company pfc
left join company c on pfc.company_id = c.company_id
where pfc.job_fair_id = #{jobFairId} and pfc.del_flag = '0'
order by pfc.create_time desc
</select>
<select id="selectJobListByJobFairIdAndCompanyId" resultType="com.ruoyi.cms.domain.Job">
select j.job_id, j.job_title, j.min_salary, j.max_salary, j.education, j.experience,
j.company_name, j.job_location, j.job_location_area_code, j.posting_date, j.vacancies,
j.company_id, j.description, j.job_category
from public_job_fair_job pfj
inner join job j on pfj.job_id = j.job_id
where pfj.job_fair_id = #{jobFairId} and pfj.company_id = #{companyId} and pfj.del_flag = '0' and j.del_flag = '0'
order by j.create_time desc
</select>
<select id="checkUserSignUp" resultType="java.lang.Integer">
select count(1) from rc_job_fair_sign_up
where job_fair_id = #{jobFairId}::bigint and user_id = #{personId} and del_flag = '0' and status = '0'
</select>
<!-- ========== CMS后台管理SQL ========== -->
<select id="selectPublicJobFairById" resultMap="PublicJobFairResult">
<include refid="selectPublicJobFairVo"/>
where job_fair_id = #{jobFairId} and del_flag = '0'
</select>
<insert id="insertPublicJobFair">
insert into public_job_fair (
job_fair_id, job_fair_title, job_fair_address, job_fair_type,
job_fair_start_time, job_fair_end_time, job_fair_host_unit, job_fair_help_unit,
job_fair_organize_unit, job_fair_introduction, job_fair_remark, job_fair_phone,
job_fair_image, job_fair_area_image, job_fair_venue_id,
job_fair_sign_up_start_time, job_fair_sign_up_end_time,
enterprise_num, booth_num, division_name, dept_code_last, dept_code_all,
job_fair_category, latitude, longitude,
create_by, create_time, del_flag
) values (
#{jobFairId}, #{jobFairTitle}, #{jobFairAddress}, #{jobFairType},
#{jobFairStartTime}, #{jobFairEndTime}, #{jobFairHostUnit}, #{jobFairHelpUnit},
#{jobFairOrganizeUnit}, #{jobFairIntroduction}, #{jobFairRemark}, #{jobFairPhone},
#{jobFairImage}, #{jobFairAreaImage}, #{jobFairVenueId},
#{jobFairSignUpStartTime}, #{jobFairSignUpEndTime},
#{enterpriseNum}, #{boothNum}, #{divisionName}, #{deptCodeLast}, #{deptCodeAll},
#{jobFairCategory}, #{latitude}, #{longitude},
#{createBy}, #{createTime}, '0'
)
</insert>
<update id="updatePublicJobFair">
update public_job_fair
<set>
<if test="jobFairTitle != null">job_fair_title = #{jobFairTitle},</if>
<if test="jobFairAddress != null">job_fair_address = #{jobFairAddress},</if>
<if test="jobFairType != null">job_fair_type = #{jobFairType},</if>
<if test="jobFairStartTime != null">job_fair_start_time = #{jobFairStartTime},</if>
<if test="jobFairEndTime != null">job_fair_end_time = #{jobFairEndTime},</if>
<if test="jobFairHostUnit != null">job_fair_host_unit = #{jobFairHostUnit},</if>
<if test="jobFairHelpUnit != null">job_fair_help_unit = #{jobFairHelpUnit},</if>
<if test="jobFairOrganizeUnit != null">job_fair_organize_unit = #{jobFairOrganizeUnit},</if>
<if test="jobFairIntroduction != null">job_fair_introduction = #{jobFairIntroduction},</if>
<if test="jobFairRemark != null">job_fair_remark = #{jobFairRemark},</if>
<if test="jobFairPhone != null">job_fair_phone = #{jobFairPhone},</if>
<if test="jobFairImage != null">job_fair_image = #{jobFairImage},</if>
<if test="jobFairAreaImage != null">job_fair_area_image = #{jobFairAreaImage},</if>
<if test="jobFairVenueId != null">job_fair_venue_id = #{jobFairVenueId},</if>
<if test="jobFairSignUpStartTime != null">job_fair_sign_up_start_time = #{jobFairSignUpStartTime},</if>
<if test="jobFairSignUpEndTime != null">job_fair_sign_up_end_time = #{jobFairSignUpEndTime},</if>
<if test="enterpriseNum != null">enterprise_num = #{enterpriseNum},</if>
<if test="boothNum != null">booth_num = #{boothNum},</if>
<if test="divisionName != null">division_name = #{divisionName},</if>
<if test="deptCodeLast != null">dept_code_last = #{deptCodeLast},</if>
<if test="deptCodeAll != null">dept_code_all = #{deptCodeAll},</if>
<if test="jobFairCategory != null">job_fair_category = #{jobFairCategory},</if>
<if test="latitude != null">latitude = #{latitude},</if>
<if test="longitude != null">longitude = #{longitude},</if>
update_by = #{updateBy},
update_time = #{updateTime}
</set>
where job_fair_id = #{jobFairId}
</update>
<update id="deletePublicJobFairByIds">
update public_job_fair set del_flag = '2'
where job_fair_id in
<foreach item="jobFairId" collection="jobFairIds" open="(" separator="," close=")">
#{jobFairId}
</foreach>
</update>
<insert id="insertJobFairCompany">
insert into public_job_fair_company (id, job_fair_id, company_id, create_by, create_time, del_flag)
values (#{id}, #{jobFairId}, #{companyId}, #{createBy}, #{createTime}, '0')
</insert>
<insert id="insertJobFairCompanyBatch">
insert into public_job_fair_company (id, job_fair_id, company_id, create_by, create_time, del_flag)
values
<foreach item="item" collection="list" separator=",">
(#{item.id}, #{item.jobFairId}, #{item.companyId}, #{item.createBy}, #{item.createTime}, '0')
</foreach>
</insert>
<update id="deleteJobFairCompanyById">
update public_job_fair_company set del_flag = '2' where id = #{id}
</update>
<insert id="insertJobFairJob">
insert into public_job_fair_job (id, job_fair_id, job_id, company_id, create_by, create_time, del_flag)
values (#{id}, #{jobFairId}, #{jobId}, #{companyId}, #{createBy}, #{createTime}, '0')
</insert>
<insert id="insertJobFairJobBatch">
insert into public_job_fair_job (id, job_fair_id, job_id, company_id, create_by, create_time, del_flag)
values
<foreach item="item" collection="list" separator=",">
(#{item.id}, #{item.jobFairId}, #{item.jobId}, #{item.companyId}, #{item.createBy}, #{item.createTime}, '0')
</foreach>
</insert>
<update id="deleteJobFairJobById">
update public_job_fair_job set del_flag = '2' where id = #{id}
</update>
<resultMap type="com.ruoyi.cms.domain.rc.JobFairSignUpVO" id="SignUpVOResult">
<result property="id" column="id"/>
<result property="jobFairId" column="job_fair_id"/>
<result property="userId" column="user_id"/>
<result property="userName" column="user_name"/>
<result property="realName" column="nick_name"/>
<result property="phone" column="phonenumber"/>
<result property="signUpTime" column="sign_up_time"/>
<result property="status" column="status"/>
</resultMap>
<select id="selectSignUpListByJobFairId" resultMap="SignUpVOResult">
select s.id, s.job_fair_id, s.user_id, s.sign_up_time, s.status,
u.user_name, u.nick_name, u.phonenumber
from rc_job_fair_sign_up s
left join sys_user u on s.user_id = u.user_id
where s.job_fair_id = #{jobFairId}::bigint and s.del_flag = '0'
order by s.sign_up_time desc
</select>
</mapper>

142
sql/public_job_fair.sql Normal file
View File

@@ -0,0 +1,142 @@
-- 公共招聘会信息表(石河子)
-- 瀚高数据库
-- 删除之前创建的不需要的表
DROP TABLE IF EXISTS "public_job_fair_area";
DROP TABLE IF EXISTS "public_job_fair_booth";
-- 删除旧表(如果存在)
DROP TABLE IF EXISTS "public_job_fair_signup";
DROP TABLE IF EXISTS "public_job_fair_job";
DROP TABLE IF EXISTS "public_job_fair_company";
DROP TABLE IF EXISTS "public_job_fair";
-- 招聘会主表
CREATE TABLE "public_job_fair" (
"job_fair_id" VARCHAR(64) PRIMARY KEY,
"job_fair_title" VARCHAR(500),
"job_fair_address" VARCHAR(500),
"job_fair_type" VARCHAR(10),
"job_fair_start_time" TIMESTAMP,
"job_fair_end_time" TIMESTAMP,
"job_fair_host_unit" VARCHAR(200),
"job_fair_help_unit" VARCHAR(200),
"job_fair_organize_unit" VARCHAR(200),
"job_fair_introduction" TEXT,
"job_fair_remark" VARCHAR(500),
"job_fair_phone" VARCHAR(50),
"job_fair_image" VARCHAR(500),
"job_fair_area_image" VARCHAR(500),
"create_by" VARCHAR(64),
"create_time" TIMESTAMP,
"update_by" VARCHAR(64),
"update_time" TIMESTAMP,
"job_fair_venue_id" VARCHAR(64),
"job_fair_sign_up_start_time" TIMESTAMP,
"job_fair_sign_up_end_time" TIMESTAMP,
"enterprise_num" VARCHAR(20),
"booth_num" VARCHAR(20),
"division_name" VARCHAR(200),
"dept_code_last" VARCHAR(50),
"dept_code_all" VARCHAR(200),
"job_fair_category" VARCHAR(50),
"latitude" DECIMAL(10,7),
"longitude" DECIMAL(10,7),
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "public_job_fair" IS '公共招聘会信息表';
COMMENT ON COLUMN "public_job_fair"."job_fair_type" IS '招聘会类型 1-线上 2-线下';
COMMENT ON COLUMN "public_job_fair"."latitude" IS '纬度';
COMMENT ON COLUMN "public_job_fair"."longitude" IS '经度';
COMMENT ON COLUMN "public_job_fair"."del_flag" IS '删除标志0正常 2删除';
-- 招聘会-企业关联表
CREATE TABLE "public_job_fair_company" (
"id" VARCHAR(64) PRIMARY KEY,
"job_fair_id" VARCHAR(64),
"company_id" BIGINT,
"create_by" VARCHAR(64),
"create_time" TIMESTAMP,
"update_by" VARCHAR(64),
"update_time" TIMESTAMP,
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "public_job_fair_company" IS '招聘会-企业关联表';
-- 招聘会-岗位关联表
CREATE TABLE "public_job_fair_job" (
"id" VARCHAR(64) PRIMARY KEY,
"job_fair_id" VARCHAR(64),
"job_id" BIGINT,
"company_id" BIGINT,
"create_by" VARCHAR(64),
"create_time" TIMESTAMP,
"update_by" VARCHAR(64),
"update_time" TIMESTAMP,
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "public_job_fair_job" IS '招聘会-岗位关联表';
-- 招聘会-用户报名表
CREATE TABLE "public_job_fair_signup" (
"id" VARCHAR(64) PRIMARY KEY,
"job_fair_id" VARCHAR(64),
"person_id" BIGINT,
"create_by" VARCHAR(64),
"create_time" TIMESTAMP,
"update_by" VARCHAR(64),
"update_time" TIMESTAMP,
"del_flag" CHAR(1) DEFAULT '0'
);
COMMENT ON TABLE "public_job_fair_signup" IS '招聘会-用户报名表';
-- 创建索引
CREATE INDEX "idx_public_job_fair_type" ON "public_job_fair"("job_fair_type");
CREATE INDEX "idx_public_job_fair_start_time" ON "public_job_fair"("job_fair_start_time");
CREATE INDEX "idx_public_job_fair_company_fair_id" ON "public_job_fair_company"("job_fair_id");
CREATE INDEX "idx_public_job_fair_company_company_id" ON "public_job_fair_company"("company_id");
CREATE INDEX "idx_public_job_fair_job_fair_id" ON "public_job_fair_job"("job_fair_id");
CREATE INDEX "idx_public_job_fair_job_job_id" ON "public_job_fair_job"("job_id");
CREATE INDEX "idx_public_job_fair_signup_fair_id" ON "public_job_fair_signup"("job_fair_id");
CREATE INDEX "idx_public_job_fair_signup_person_id" ON "public_job_fair_signup"("person_id");
-- 插入石河子招聘会测试数据
INSERT INTO "public_job_fair" (
"job_fair_id", "job_fair_title", "job_fair_address", "job_fair_type",
"job_fair_start_time", "job_fair_end_time", "job_fair_host_unit", "job_fair_help_unit",
"job_fair_organize_unit", "job_fair_introduction", "job_fair_phone",
"create_time", "update_time", "job_fair_venue_id",
"job_fair_sign_up_start_time", "job_fair_sign_up_end_time",
"enterprise_num", "booth_num", "division_name", "dept_code_last", "dept_code_all",
"job_fair_category", "latitude", "longitude", "del_flag"
) VALUES (
'1',
'2026年石河子市春风行动暨就业援助月专场招聘会',
'石河子市人力资源市场(石河子市北四路)',
'2',
'2026-01-20 10:00:00',
'2026-01-20 16:00:00',
'石河子市人力资源和社会保障局',
'石河子市就业服务中心',
'石河子市公共就业服务中心',
'为促进石河子市劳动者就业创业,搭建用人单位与求职者双向交流平台,特举办本次春风行动暨就业援助月专场招聘会。',
'0993-2012345',
'2026-01-10 09:00:00',
'2026-01-10 09:00:00',
'1',
'2026-01-10 09:00:00',
'2026-01-19 18:00:00',
'3',
'10',
'石河子市',
'659001000000',
'659001000000',
'社会招聘',
44.3066,
86.0419,
'0'
);

View File

@@ -0,0 +1,10 @@
-- 招聘会关联数据(石河子)
-- job_fair_id = 1
-- 插入招聘会-企业关联
INSERT INTO "public_job_fair_company" ("id", "job_fair_id", "company_id", "create_by", "create_time", "update_by", "update_time", "del_flag")
VALUES ('1', '1', 82158, 'admin', now(), 'admin', now(), '0');
-- 插入招聘会-岗位关联
INSERT INTO "public_job_fair_job" ("id", "job_fair_id", "job_id", "company_id", "create_by", "create_time", "update_by", "update_time", "del_flag")
VALUES ('1', '1', 119156166, 82158, 'admin', now(), 'admin', now(), '0');

View File

@@ -0,0 +1,32 @@
-- 招聘会报名表 (PostgreSQL)
DROP TABLE IF EXISTS rc_job_fair_sign_up;
CREATE TABLE rc_job_fair_sign_up (
id BIGSERIAL PRIMARY KEY,
job_fair_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
sign_up_time TIMESTAMP,
status CHAR(1) DEFAULT '0',
del_flag CHAR(1) DEFAULT '0',
create_by VARCHAR(64) DEFAULT '',
create_time TIMESTAMP,
update_by VARCHAR(64) DEFAULT '',
update_time TIMESTAMP,
remark VARCHAR(500)
);
COMMENT ON TABLE rc_job_fair_sign_up IS '招聘会报名表';
COMMENT ON COLUMN rc_job_fair_sign_up.id IS '主键ID';
COMMENT ON COLUMN rc_job_fair_sign_up.job_fair_id IS '招聘会ID';
COMMENT ON COLUMN rc_job_fair_sign_up.user_id IS '用户ID';
COMMENT ON COLUMN rc_job_fair_sign_up.sign_up_time IS '报名时间';
COMMENT ON COLUMN rc_job_fair_sign_up.status IS '状态 0正常 1已取消';
COMMENT ON COLUMN rc_job_fair_sign_up.del_flag IS '删除标志 0正常 2删除';
COMMENT ON COLUMN rc_job_fair_sign_up.create_by IS '创建者';
COMMENT ON COLUMN rc_job_fair_sign_up.create_time IS '创建时间';
COMMENT ON COLUMN rc_job_fair_sign_up.update_by IS '更新者';
COMMENT ON COLUMN rc_job_fair_sign_up.update_time IS '更新时间';
COMMENT ON COLUMN rc_job_fair_sign_up.remark IS '备注';
CREATE INDEX idx_job_fair_sign_up_fair_id ON rc_job_fair_sign_up(job_fair_id);
CREATE INDEX idx_job_fair_sign_up_user_id ON rc_job_fair_sign_up(user_id);
CREATE UNIQUE INDEX uk_fair_user ON rc_job_fair_sign_up(job_fair_id, user_id);