From 55eba8873416394b1d885a263311059e7954d8ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=A1=BA=E4=B8=9C?= <577732344@qq.com> Date: Sun, 11 Jan 2026 02:15:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=9B=E8=81=98=E4=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/cms-public-job-fair-api.md | 411 ++++++++++++++++++ .../cms/controller/app/AppFairController.java | 26 ++ .../app/PublicJobFairController.java | 63 +++ .../cms/CmsPublicJobFairController.java | 172 ++++++++ .../ruoyi/cms/domain/rc/JobFairSignUp.java | 38 ++ .../ruoyi/cms/domain/rc/JobFairSignUpVO.java | 44 ++ .../ruoyi/cms/domain/rc/PublicJobFair.java | 162 +++++++ .../cms/domain/rc/PublicJobFairCompany.java | 45 ++ .../cms/domain/rc/PublicJobFairCompanyVO.java | 40 ++ .../cms/domain/rc/PublicJobFairDetail.java | 52 +++ .../ruoyi/cms/domain/rc/PublicJobFairJob.java | 48 ++ .../cms/domain/rc/PublicJobFairQuery.java | 34 ++ .../cms/domain/rc/PublicJobFairResponse.java | 88 ++++ .../cms/mapper/rc/JobFairSignUpMapper.java | 18 + .../cms/mapper/rc/PublicJobFairMapper.java | 96 ++++ .../cms/service/impl/ESJobSearchImpl.java | 2 +- .../cms/service/rc/IJobFairSignUpService.java | 17 + .../cms/service/rc/IPublicJobFairService.java | 88 ++++ .../rc/impl/JobFairSignUpServiceImpl.java | 63 +++ .../rc/impl/PublicJobFairServiceImpl.java | 207 +++++++++ .../mapper/rc/JobFairSignUpMapper.xml | 25 ++ .../mapper/rc/PublicJobFairMapper.xml | 238 ++++++++++ sql/public_job_fair.sql | 142 ++++++ sql/public_job_fair_data.sql | 10 + sql/rc_job_fair_sign_up.sql | 32 ++ 25 files changed, 2160 insertions(+), 1 deletion(-) create mode 100644 docs/cms-public-job-fair-api.md create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/PublicJobFairController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPublicJobFairController.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUp.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUpVO.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompany.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompanyVO.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairDetail.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairJob.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairQuery.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairResponse.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/JobFairSignUpMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/PublicJobFairMapper.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IJobFairSignUpService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IPublicJobFairService.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/JobFairSignUpServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java create mode 100644 ruoyi-bussiness/src/main/resources/mapper/rc/JobFairSignUpMapper.xml create mode 100644 ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml create mode 100644 sql/public_job_fair.sql create mode 100644 sql/public_job_fair_data.sql create mode 100644 sql/rc_job_fair_sign_up.sql diff --git a/docs/cms-public-job-fair-api.md b/docs/cms-public-job-fair-api.md new file mode 100644 index 0000000..5023bd4 --- /dev/null +++ b/docs/cms-public-job-fair-api.md @@ -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 | 已取消 | diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java index 8bfad01..319b268 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/AppFairController.java @@ -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)); + } } diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/PublicJobFairController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/PublicJobFairController.java new file mode 100644 index 0000000..325eab2 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/app/PublicJobFairController.java @@ -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 list = publicJobFairService.getEnterprisesWithJobs(jobFairId); + return success(list); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPublicJobFairController.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPublicJobFairController.java new file mode 100644 index 0000000..f18647e --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/controller/cms/CmsPublicJobFairController.java @@ -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; + +/** + * 公共招聘会管理Controller(CMS后台) + */ +@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 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 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 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 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)); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUp.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUp.java new file mode 100644 index 0000000..18b8c4e --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUp.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUpVO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUpVO.java new file mode 100644 index 0000000..c8e7b10 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/JobFairSignUpVO.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java new file mode 100644 index 0000000..f62d5b8 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFair.java @@ -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 companyList; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompany.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompany.java new file mode 100644 index 0000000..45c88ea --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompany.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompanyVO.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompanyVO.java new file mode 100644 index 0000000..e9aa69d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairCompanyVO.java @@ -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 jobInfoList; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairDetail.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairDetail.java new file mode 100644 index 0000000..22235d4 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairDetail.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairJob.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairJob.java new file mode 100644 index 0000000..fe5a12b --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairJob.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairQuery.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairQuery.java new file mode 100644 index 0000000..0f9c8f8 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairQuery.java @@ -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; +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairResponse.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairResponse.java new file mode 100644 index 0000000..e17e78c --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/domain/rc/PublicJobFairResponse.java @@ -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 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 navigatepageNums; + + @ApiModelProperty("导航第一页") + private Integer navigateFirstPage; + + @ApiModelProperty("导航最后一页") + private Integer navigateLastPage; + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/JobFairSignUpMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/JobFairSignUpMapper.java new file mode 100644 index 0000000..c0a418d --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/JobFairSignUpMapper.java @@ -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 checkSignUp(@Param("jobFairId") Long jobFairId, @Param("userId") Long userId); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/PublicJobFairMapper.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/PublicJobFairMapper.java new file mode 100644 index 0000000..c2b9fa0 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/mapper/rc/PublicJobFairMapper.java @@ -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 { + + /** + * 分页查询招聘会列表 + */ + List selectPublicJobFairList(@Param("query") PublicJobFairQuery query); + + /** + * 查询招聘会详情 + */ + PublicJobFairDetail selectPublicJobFairDetailById(@Param("jobFairId") String jobFairId); + + /** + * 查询招聘会关联的企业列表 + */ + List selectCompanyListByJobFairId(@Param("jobFairId") String jobFairId); + + /** + * 查询招聘会关联的岗位列表 + */ + List 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 companies); + + /** + * 删除招聘会企业关联 + */ + int deleteJobFairCompanyById(@Param("id") String id); + + /** + * 添加岗位到招聘会 + */ + int insertJobFairJob(PublicJobFairJob job); + + /** + * 批量添加岗位到招聘会 + */ + int insertJobFairJobBatch(@Param("list") List jobs); + + /** + * 删除招聘会岗位关联 + */ + int deleteJobFairJobById(@Param("id") String id); + + /** + * 查询招聘会报名列表(包含用户信息) + */ + List selectSignUpListByJobFairId(@Param("jobFairId") String jobFairId); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java index ce0f0dd..3390c8a 100644 --- a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/impl/ESJobSearchImpl.java @@ -67,7 +67,7 @@ public class ESJobSearchImpl implements IESJobSearchService /** * 项目启动时,初始化索引及数据 */ - @PostConstruct +// @PostConstruct public void init() { boolean isLockAcquired = false; diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IJobFairSignUpService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IJobFairSignUpService.java new file mode 100644 index 0000000..017b3d4 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IJobFairSignUpService.java @@ -0,0 +1,17 @@ +package com.ruoyi.cms.service.rc; + +/** + * 招聘会报名Service接口 + */ +public interface IJobFairSignUpService { + + /** + * 报名招聘会 + */ + int signUp(Long jobFairId); + + /** + * 取消报名 + */ + int cancelSignUp(Long jobFairId); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IPublicJobFairService.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IPublicJobFairService.java new file mode 100644 index 0000000..a0bb7c0 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/IPublicJobFairService.java @@ -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 getEnterprisesWithJobs(String jobFairId); + + // ========== CMS后台管理接口 ========== + + /** + * 查询招聘会列表(CMS) + */ + List 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 companies); + + /** + * 移除招聘会企业 + */ + int removeCompany(String id); + + /** + * 添加岗位到招聘会 + */ + int addJob(PublicJobFairJob job); + + /** + * 批量添加岗位到招聘会 + */ + int addJobBatch(List jobs); + + /** + * 移除招聘会岗位 + */ + int removeJob(String id); + + /** + * 查询招聘会报名列表 + */ + List selectSignUpList(String jobFairId); +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/JobFairSignUpServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/JobFairSignUpServiceImpl.java new file mode 100644 index 0000000..e0a36d5 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/JobFairSignUpServiceImpl.java @@ -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 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); + } +} diff --git a/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java new file mode 100644 index 0000000..16821a4 --- /dev/null +++ b/ruoyi-bussiness/src/main/java/com/ruoyi/cms/service/rc/impl/PublicJobFairServiceImpl.java @@ -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 list = publicJobFairMapper.selectPublicJobFairList(query); + PageInfo 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 getEnterprisesWithJobs(String jobFairId) { + List companyList = publicJobFairMapper.selectCompanyListByJobFairId(jobFairId); + + if (companyList != null && !companyList.isEmpty()) { + for (PublicJobFairCompanyVO company : companyList) { + List jobList = publicJobFairMapper.selectJobListByJobFairIdAndCompanyId(jobFairId, company.getCompanyId()); + company.setJobInfoList(jobList); + } + } + return companyList; + } + + // ========== CMS后台管理接口实现 ========== + + @Override + public List selectList(PublicJobFairQuery query) { + return publicJobFairMapper.selectPublicJobFairList(query); + } + + @Override + public PublicJobFair selectById(String jobFairId) { + PublicJobFair jobFair = publicJobFairMapper.selectPublicJobFairById(jobFairId); + if (jobFair != null) { + // 查询关联的企业及岗位 + List 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 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 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 selectSignUpList(String jobFairId) { + return publicJobFairMapper.selectSignUpListByJobFairId(jobFairId); + } +} diff --git a/ruoyi-bussiness/src/main/resources/mapper/rc/JobFairSignUpMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/rc/JobFairSignUpMapper.xml new file mode 100644 index 0000000..d4dcefb --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/rc/JobFairSignUpMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml b/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml new file mode 100644 index 0000000..debecb4 --- /dev/null +++ b/ruoyi-bussiness/src/main/resources/mapper/rc/PublicJobFairMapper.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + 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' + ) + + + + update public_job_fair + + job_fair_title = #{jobFairTitle}, + job_fair_address = #{jobFairAddress}, + job_fair_type = #{jobFairType}, + job_fair_start_time = #{jobFairStartTime}, + job_fair_end_time = #{jobFairEndTime}, + job_fair_host_unit = #{jobFairHostUnit}, + job_fair_help_unit = #{jobFairHelpUnit}, + job_fair_organize_unit = #{jobFairOrganizeUnit}, + job_fair_introduction = #{jobFairIntroduction}, + job_fair_remark = #{jobFairRemark}, + job_fair_phone = #{jobFairPhone}, + job_fair_image = #{jobFairImage}, + job_fair_area_image = #{jobFairAreaImage}, + job_fair_venue_id = #{jobFairVenueId}, + job_fair_sign_up_start_time = #{jobFairSignUpStartTime}, + job_fair_sign_up_end_time = #{jobFairSignUpEndTime}, + enterprise_num = #{enterpriseNum}, + booth_num = #{boothNum}, + division_name = #{divisionName}, + dept_code_last = #{deptCodeLast}, + dept_code_all = #{deptCodeAll}, + job_fair_category = #{jobFairCategory}, + latitude = #{latitude}, + longitude = #{longitude}, + update_by = #{updateBy}, + update_time = #{updateTime} + + where job_fair_id = #{jobFairId} + + + + update public_job_fair set del_flag = '2' + where job_fair_id in + + #{jobFairId} + + + + + 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 into public_job_fair_company (id, job_fair_id, company_id, create_by, create_time, del_flag) + values + + (#{item.id}, #{item.jobFairId}, #{item.companyId}, #{item.createBy}, #{item.createTime}, '0') + + + + + update public_job_fair_company set del_flag = '2' where id = #{id} + + + + 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 into public_job_fair_job (id, job_fair_id, job_id, company_id, create_by, create_time, del_flag) + values + + (#{item.id}, #{item.jobFairId}, #{item.jobId}, #{item.companyId}, #{item.createBy}, #{item.createTime}, '0') + + + + + update public_job_fair_job set del_flag = '2' where id = #{id} + + + + + + + + + + + + + + + + diff --git a/sql/public_job_fair.sql b/sql/public_job_fair.sql new file mode 100644 index 0000000..87642d0 --- /dev/null +++ b/sql/public_job_fair.sql @@ -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' +); diff --git a/sql/public_job_fair_data.sql b/sql/public_job_fair_data.sql new file mode 100644 index 0000000..12c6235 --- /dev/null +++ b/sql/public_job_fair_data.sql @@ -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'); diff --git a/sql/rc_job_fair_sign_up.sql b/sql/rc_job_fair_sign_up.sql new file mode 100644 index 0000000..8e79079 --- /dev/null +++ b/sql/rc_job_fair_sign_up.sql @@ -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);