20260612-招聘会管理模块开发记录.md 8.2 KB

招聘会管理模块开发记录

开发日期

2026-06-12

模块概述

本次开发实现了"招聘会管理"模块的完整后端+前端代码,参考 InternshipPost(见习岗位管理)模块的代码模式,采用单表CRUD架构。

数据来源

  1. 省系统:省一体化平台(粤就业小程序)数据回流
  2. 市系统:本地招聘会数据录入
  3. 其他:第三方数据导入或同步

业务逻辑

  • 招聘会信息以省一体化平台回流为准,点击查看页面链接跳转到省一体化平台招聘会页面
  • 前端操作栏仅保留"查看"按钮(符合需求),后台管理端可进行新增操作

一、后端代码

文件 路径 说明
RecruitmentFair.java org.jeecg.modules.zjrs.recruitmentfair.entity 实体类,@TableName("recruitment_fair"),继承JeecgEntity,包含11个业务字段
RecruitmentFairMapper.java org.jeecg.modules.zjrs.recruitmentfair.mapper Mapper接口,继承BaseMapper(此表不需要自定义JOIN查询)
RecruitmentFairMapper.xml org.jeecg.modules.zjrs.recruitmentfair.mapper.xml Mapper XML,基础配置(空mapper)
IRecruitmentFairService.java org.jeecg.modules.zjrs.recruitmentfair.service Service接口,继承IService
RecruitmentFairServiceImpl.java org.jeecg.modules.zjrs.recruitmentfair.service.impl Service实现类
RecruitmentFairController.java org.jeecg.modules.zjrs.recruitmentfair.controller Controller,继承JeecgController,使用QueryGenerator自动构建查询条件

关键设计:

  • /list 接口使用 QueryGenerator 自动构建查询条件(不需要自定义queryPageList)
  • 权限前缀:recruitment_fair
  • 实体类继承 JeecgEntity(id, createBy, createTime, updateBy, updateTime)
  • 日期字段使用VARCHAR(需求文档标注为"短文本",因省平台回流数据日期格式不统一)

1.1 实体字段设计

字段 Java属性 DB列 类型 必填 字典 说明
招聘会名称 fairName FAIR_NAME String
招聘会类型 fairType FAIR_TYPE String
招聘会主体 fairSubject FAIR_SUBJECT String
举办方式 holdMethod HOLD_METHOD String fair_hold_method 现场/网络
线上举办日期 onlineHoldDate ONLINE_HOLD_DATE String 短文本格式
线下举办日期 offlineHoldDate OFFLINE_HOLD_DATE String 短文本格式
主办单位 hostUnit HOST_UNIT String
举办地点 holdLocation HOLD_LOCATION String
数据来源 dataSource DATA_SOURCE String fair_data_source 省系统/市系统/其他
状态 status STATUS String fair_status 未开始/进行中/已结束
省平台链接 provinceLink PROVINCE_LINK String 省平台详情页URL

1.2 Controller API

方法 URL 权限 说明
GET /recruitmentFair/list 分页列表查询
POST /recruitmentFair/add recruitment_fair:add 新增
PUT/POST /recruitmentFair/edit recruitment_fair:edit 编辑
DELETE /recruitmentFair/delete recruitment_fair:delete 删除
DELETE /recruitmentFair/deleteBatch recruitment_fair:deleteBatch 批量删除
GET /recruitmentFair/queryById 通过id查询
GET /recruitmentFair/exportXls recruitment_fair:exportXls 导出Excel
POST /recruitmentFair/importExcel recruitment_fair:importExcel 导入Excel

二、前端代码

文件 路径 说明
RecruitmentFair.api.ts views/recruitmentfair/ API定义,基础路径 /recruitmentFair
RecruitmentFair.data.ts views/recruitmentfair/ 列定义(7列)和高级查询配置(3个查询条件)
RecruitmentFairList.vue views/recruitmentfair/ 列表页面
RecruitmentFairForm.vue views/recruitmentfair/components/ 表单组件,单卡片布局
RecruitmentFairModal.vue views/recruitmentfair/components/ 弹窗组件

关键设计:

  • 查询区域:招聘会名称(a-input)、举办方式(a-select,字典fair_hold_method)、状态(a-select,字典fair_status)
  • 表单单卡片布局:包含11个业务字段,2列排列
  • 仅"举办地点"为必填验证字段
  • 列表字典翻译:holdMethod、status、dataSource
  • 操作栏仅"查看"按钮(符合需求文档功能范围:查看、新增)
  • 表格标题区:新增按钮(v-auth="recruitment_fair:add")、导出按钮(v-auth="recruitment_fair:exportXls")

三、SQL文件

文件 路径 说明
招聘会管理-建表.sql .docs/sql/ DDL建表语句,达梦数据库
招聘会管理-字典数据.sql .docs/sql/ 字典数据初始化(fair_hold_method、fair_status、fair_data_source)
招聘会管理-菜单权限.sql .docs/sql/ 菜单及按钮权限初始化,达梦数据库
招聘会管理-测试数据.sql .docs/sql/ 6条测试数据,覆盖不同来源/方式/状态
V20260612_1__menu_insert_RecruitmentFair.sql flyway/sql/mysql/ Flyway迁移脚本,MySQL语法

3.1 Flyway菜单结构

  • 一级菜单"招聘会管理":id=178060100000600, sort_no=2.30
  • 二级菜单"招聘会管理":id=178060100000610, component=recruitmentfair/RecruitmentFairList
  • 按钮权限:add(611), edit(612), delete(613), deleteBatch(614), exportXls(615), importExcel(616)
  • 角色授权(admin):ID从178060100000620开始

3.2 字典数据

字典编码 名称 字典项
fair_hold_method 举办方式 现场、网络
fair_status 招聘会状态 未开始、进行中、已结束
fair_data_source 数据来源 省系统、市系统、其他

3.3 测试数据

6条测试数据覆盖以下场景:

  • 3种数据来源:省系统(3条)、市系统(2条)、其他(1条)
  • 2种举办方式:现场(4条)、网络(2条)
  • 3种状态:进行中(2条)、未开始(2条)、已结束(2条)
  • 省系统数据附带省平台链接(provinceLink),市系统和其他数据无链接

四、部署步骤

  1. 数据库初始化(达梦DM8):

    -- 依次执行
    @招聘会管理-建表.sql
    @招聘会管理-字典数据.sql
    @招聘会管理-菜单权限.sql
    @招聘会管理-测试数据.sql
    
  2. 后端启动:

    • 重新编译并启动 jeecg-system-start 模块
    • 验证 Swagger UI 中 /recruitmentFair 路径的API可正常调用
  3. 前端启动:

    • Vite自动发现 views/recruitmentfair/ 目录下的组件
    • 菜单通过后台接口加载,无需前端额外配置
  4. 验证:

    • 登录管理后台,确认"招聘会管理"一级菜单显示
    • 测试列表查询、新增、查看功能
    • 测试Excel导出功能

五、避坑记录

  1. 日期字段类型选择: 需求文档明确标注日期字段类型为"短文本",而非日期选择器。原因是省一体化平台回流的数据日期格式不统一(可能为"2026年6月"、"2026-06-01至2026-06-30"等格式),使用VARCHAR类型更灵活。

  2. 操作栏按钮限制: 需求文档仅列出"查看"和"新增"功能,因此前端操作栏仅展示"查看"按钮,"新增"按钮放在表格标题区。后端仍提供完整CRUD能力以备后用。

  3. 省平台链接展示: 仅省系统来源的数据显示省平台链接,市系统和其他来源不显示。详情页面可根据dataSource字段动态控制链接的展示。

  4. 菜单sort_no选择: 招聘会管理在需求文档中列在第3.5节(就业指导之后、深度分析之前),因此sort_no设为2.30,位于两者之间。


五、Bug 修复(2026-06-13)

5.1 RecruitmentFairModal.add() 表单禁用残留

  • 问题:先点击"查看"(disableSubmit=true)再点击"新增"(add() 未重置 disableSubmit),表单仍处于禁用状态无法输入
  • 修复:add() 方法开头增加 disableSubmit.value = false;

5.2 RecruitmentFairForm.vue 表单验证

  • 验证规则 validatorRules 仅包含 holdLocation 必填,其他字段无校验