学生就业招聘管理系统
创建于 2025 年 3 月 2 日
项目介绍
学生就业招聘管理系统是一个面向高校就业管理工作的三端协同平台,项目在若依 RuoYi 3.8.9(前后端分离版)基础上,于 ruoyi-admin/src/main/java/com/ruoyi/app 下新增了一整套 app 业务包,覆盖”学生求职 → 企业招聘 → 学校管理”的完整链路。
系统按角色拆分为三条业务主线:学生端维护个人简历(在线信息 + 附件简历文件)、浏览企业发布的进行中岗位并投递,处理面试邀请与 offer(接受、拒绝、放弃并填写原因),最后填报就业信息并上传三方协议;企业端维护企业资料与营业执照,发布/结束招聘岗位,从简历库中检索学生并发起面试邀请,记录面试结果,向通过面试的学生发放 offer;管理员端负责学生与企业账号管理、企业资质审核、就业信息审核,以及按专业统计就业率的数据看板。数据库脚本 sql/ry20250302.sql 预置了亿纬锂能、网易、4399 等真实企业及学生、企业用户的演示数据,从操作日志看项目自 2025-03-02 起持续迭代至 2025-04-22,已具备完整可运行状态。
项目架构
项目沿用若依经典的 Maven 多模块结构,后端以 ruoyi-admin 为启动模块,业务代码集中在 com.ruoyi.app 包下,前端在 ruoyi-ui/src/views/app 中按角色组织页面:
| 模块 | 技术栈 | 说明 |
|---|---|---|
ruoyi-admin | Spring Boot 2.5.15、Spring Security 5.7、Druid 1.2.23 | 启动模块与 Web 层,app/controller 下 8 个 Controller 暴露 /app/* REST 接口 |
ruoyi-app 业务包 | MyBatis-Plus 3.5.4 + mybatis-plus-join(MPJLambdaWrapper)、PageHelper、Redis | 六张业务表的领域对象、Mapper 与 Service,多表联查(企业名/学生名/岗位名)通过 MPJLambdaWrapper 左连接完成 |
ruoyi-ui | Vue 2 + Element UI(若依标准前端) | src/views/app/stu 学生端、app/company 企业端、app/admin 管理端、app/stat 统计看板,共 11 个业务页面 |
sql/ry20250302.sql | MySQL 8(utf8mb4) | 全库脚本:若依系统表 + 6 张业务表(app_company、app_recruitment、app_resume、app_interview、app_offer、app_employment)+ 菜单、字典、演示数据 |
业务表设计围绕招聘状态机展开:app_interview 用 type 区分”学生投递(0)/企业邀请(1)“,status 记录待回复/已接受/已拒绝,result 记录面试结果;app_offer 以 interview_id 关联面试记录,third_party_agreement 标记三方协议签署状态;app_employment 的 audit_status 支撑管理员对就业信息的审核;app_company 的 audit_status 支撑企业资质审核。数据隔离方面,企业只能看到自己的数据(lqw.eq(AppCompany::getUserId, SecurityUtils.getUserId())),学生列表接口强制绑定当前登录用户 ID。
核心功能
学生端:app/stu/index 首页加载进行中招聘信息(listForStudent 仅返回 status=0 的岗位,联查企业名称);resume 简历管理支持在线编辑姓名、性别、年龄、专业、学历、技能、自我介绍并上传附件简历(doc/docx/pdf,上传文件按日期归档于 uploadPath/upload);interview 面试邀请区分”投递/邀请”两种来源,学生可接受或拒绝(填写拒绝原因);offer 我的 offer 支持接受、放弃(登记 giveUpReason)与签署三方协议;empl 就业信息填报可记录企业、岗位、地点、薪资、专业相关度并上传三方协议文件,新增/修改后自动回到”待审核”状态。
企业端:company/index 企业资料管理含企业类型、规模、行业、简介与营业执照图片上传;zpxx 招聘信息发布支持职位描述、薪资范围、学历/经验要求、招聘人数与上/下架;jlgl 简历库检索仅展示正常状态简历,支持按姓名、性别、专业、学历筛选;msyq 面试管理发起面试邀请(addByCompany 自动置 type=1),也可从面试记录直接发放 offer(addByCompanyOffer 依据 interview_id 回填企业与学生);offer offer 管理维护发放、接受、签署三方协议的全过程。
管理端:admin/impl 就业信息审核页可查看学生填报去向与三方协议附件(支持下载),审核通过/拒绝并写回 audit_status;stat 就业率统计按专业字典 app_resume_major 分组,以”审核通过”的就业记录为分子、简历学生数为分母计算就业率,未审核/被拒记录不计入。此外,AppOfferController.countByStudent 实现了关键业务约束:学生一旦签署三方协议(thirdPartyAgreement=1),再接受其他 offer 会被拦截并提示”已经签署三方协议,不能接受其他offer”。
功能截图
暂无运行截图。
快速上手
项目为标准的若依前后端分离工程,本地启动步骤如下:
- 准备环境:JDK 1.8+、Maven 3.6+、MySQL 5.7/8.0、Redis、Node.js(前端构建);
- 创建数据库并导入
sql/ry20250302.sql(含系统表、业务表、菜单、字典与演示数据); - 修改
ruoyi-admin/src/main/resources/application-druid.yml中的数据库连接信息,确认application.yml中的 Redis 配置; - 启动后端:执行
ruoyi-admin下的RuoYiApplication(默认端口 8080); - 启动前端:进入
ruoyi-ui执行npm install后npm run dev(默认端口 80/1024 代理到后端); - 登录系统:使用
admin/admin123进入管理端,也可使用 SQL 中预置的student01、student02(学生)与qiye01、qiye02(企业用户)演示账号体验不同角色。
总结
学生就业招聘管理系统是在若依框架上完成度较高的一次业务落地,把”简历 → 投递/邀请 → 面试 → offer → 三方协议 → 就业审核 → 就业率统计”这条真实的高校就业链路完整串了起来。实现上有几个值得借鉴的点:一是通过 MPJLambdaWrapper 在 Service 层直接联查企业名、学生名等展示字段,避免为列表页单独写 XML SQL;二是把”投递”与”邀请”统一建模在 app_interview.type 上,一套接口支撑双向流程;三是用 audit_status/third_party_agreement 等状态字段实现审核与排他约束,保证统计口径和业务规则的一致性。
同时也能看到若依二次开发的典型取舍:复用框架的用户/角色/菜单/字典与操作日志体系,业务层只关心六张业务表,开发效率高;但也保留了若依风格的不足,例如个别 Service 中对象赋值不够严谨(offer 生成逻辑中插入对象与 mapper 命名混用)、部分查询条件仅支持等值匹配等。总体而言,作为就业管理场景的中小型系统,其架构清晰、链路完整、演示数据真实,适合作为若依业务开发的学习范本。