# 基于SSM+Vue的招聘管理系统 **Repository Path**: he___e/recruit-sys ## Basic Information - **Project Name**: 基于SSM+Vue的招聘管理系统 - **Description**: 本系统是一个面向求职者、招聘公司和管理员的综合招聘管理平台。系统支持求职者浏览职位、投递简历、管理个人资料;支持公司发布职位、查看收到的简历、在线沟通;支持管理员管理用户、岗位分类、公告及数据统计。 项目采用前后端分离架构,后端基于 Spring + Spring MVC + MyBatis,前端基于 Vue.js + Element UI,数据库使用 MySQL。 - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: MyBatis, MySQL, Vue, Spring-MVC, Spring ## README # 招聘管理系统 ## 📌 一、项目简介 本项目是一款面向求职者、企业、管理员的招聘管理平台,基于 SSM + Vue 前后端分离架构开发。系统划分三类操作角色,覆盖招聘场景常规业务流程。 项目实现职位检索、简历管理、技能标签匹配、岗位投递、投递状态记录、企业岗位管理、用户权限管控、数据统计、私信沟通、平台公告等基础功能,业务流程完整,可满足基础招聘平台使用需求。 --- ## 🛠️ 二、技术架构 ### 2.1 后端技术栈 - 核心框架:Spring、Spring MVC、MyBatis - 数据库:MySQL 5.7 / 8.0(全局 utf8mb4 字符集,兼容特殊字符与 Emoji) - 工具组件:PageHelper 分页插件、MD5 加盐密码加密 - 会话校验:HttpSession 实现登录态管理与权限拦截 - 部署构建:Tomcat 9.0、Maven 项目构建工具 - 技术实现:技能标签匹配、投递日志记录、数据库唯一键防重复投递、事务管理 ### 2.2 前端技术栈 - 核心框架:Vue 2.x - UI 组件库:Element UI - 网络请求:Axios - 路由管理:Vue Router - 构建工具:Vue CLI、Webpack - 可视化组件:ECharts --- ## ✨ 三、系统角色与核心功能 ### 3.1 求职者端(普通用户) - 账号权限:支持注册登录,基于 Session 维持登录状态 - 职位服务:支持关键词、城市、薪资区间筛选职位,查看职位详情,收藏、取消收藏职位 - 简历管理:维护个人基本信息、学历工龄、工作与项目经历、技能标签,支持上传证书与简历附件 - 智能推荐:依据简历技能标签匹配相关岗位,展示推荐职位,可快速投递 - 岗位投递:校验重复投递行为,投递成功自动生成初始投递日志 - 进度溯源:通过时间轴展示投递全流程状态变更 - 在线沟通:可与企业方双向私信交流、查看消息 ### 3.2 企业端(招聘方) - 企业信息运维:编辑完善企业简介、联系方式、企业Logo等资料 - 职位管理:发布、编辑、上下架、删除职位,绑定岗位分类与技能标签 - 简历处理:查看企业收到的投递简历,按状态筛选,查阅简历详情与附件 - 状态流转:修改简历投递状态,系统自动记录状态变更日志 - 人才沟通:主动联系求职者,回复咨询私信 ### 3.3 管理员端(平台后台) - 用户管理:管理求职者与企业账号,可查询、启用禁用账号、重置密码 - 岗位分类管理:对三级岗位分类进行增删改查操作 - 公告管理:发布、编辑、删除平台公告,管控公告发布状态 - 数据统计:统计平台用户、职位、投递相关数据,展示近七日投递趋势图表 --- ## 💡 四、核心特色功能详解 ### 4.1 简历-职位技能匹配推荐 系统搭建技能标签数据表,企业发布职位时绑定对应岗位技能,求职者在简历中填写自身技能。后端根据技能关键词相似度,为用户匹配相关岗位,完成职位推荐。 ### 4.2 投递日志全程溯源机制 求职者投递职位后,系统自动生成初始投递日志。企业每次更改投递状态,都会记录新旧状态、操作人、操作时间与备注内容。前端以时间轴形式展示全部变更记录,可追溯整个投递流程。 ### 4.3 多层防重复投递机制 结合业务代码校验与数据库唯一索引双重限制,避免同一份简历重复投递同一个职位,保障平台数据规范统一。 --- ## 💻 五、环境要求 - 运行环境:JDK 1.8+、Tomcat 9.0 - 数据库:MySQL 5.7 / 8.0(utf8mb4 字符集) - 构建工具:Maven 3.6+ - 前端环境:Node.js 14+、npm 6+ - 开发工具:IDEA / Eclipse、VS Code --- ## 🚀 六、快速部署启动 ### 6.1 数据库初始化 1. 手动创建数据库 recruit_db,设置字符集为 utf8mb4,排序规则为 utf8mb4_general_ci; 2. 执行项目 recruit.sql 脚本,自动完成建表、岗位分类、测试用户、职位、技能、投递日志等全套数据初始化。 ### 6.2 后端部署启动 1. 修改 jdbc.properties 文件,替换为本地数据库账号、密码; 2. IDEA 配置 Tomcat 9.0,将项目以 war exploded 形式部署; 3. 启动 Tomcat 服务,后端默认运行端口:8077; > 如需修改请一并修改前端部分文件中静态资源传递URL中的端口号 4. 项目已预配置跨域、静态资源映射、文件上传路径,无需额外修改。 ### 6.3 前端部署启动 1. 进入前端项目目录,执行 npm install 安装所有依赖; 2. 修改 vue.config.js 代理配置,对齐后端服务端口; 3. 执行 npm run serve 启动前端项目,默认端口:8082。 --- ### 当前项目中硬编码端口号位置清单 | 文件 | 行/位置 | 当前值 | 是否需要改 | |------|---------|--------|-------------| | **spring-mvc.xml** | `` 的 `allowed-origins` | `http://localhost:8082` | ✅ 如果前端端口变化,需同步修改 | | **CorsFilter.java** | `setHeader("Access-Control-Allow-Origin", ...)` | `http://localhost:8082` | ✅ 如果启用此 Filter,需同步修改 | | **vue.config.js** | `proxy.target` 和 `devServer.port` | `8077` 和 `8082` | ✅ 端口变化时需修改 | | **seeker/Profile.vue**(求职者端) | `avatarFullUrl` 计算属性 | `http://localhost:8077${this.avatarUrl}` | ✅ 硬编码后端地址 | | **seeker/ResumeEdit.vue** | `getFullUrl` 方法 | `http://localhost:8077${url}` | ✅ 硬编码后端地址 | | **company/ReceivedResume.vue** | `previewImage`、`previewPdf`、`downloadFile` | `http://localhost:8077${url}` | ✅ 硬编码后端地址 | | **company/Profile.vue**(公司端) | 图片预览拼接 | `http://localhost:8077` | ✅ 硬编码后端地址 | --- ## 🔑 七、测试账号信息 所有测试账号统一密码:1234 - 👑 管理员端:admin / 1234 - 👤 求职者端:user1、user2 / 1234 - 🏢 企业端:company1、company2 / 1234 支持用户自主注册账号,管理员专属账号可通过数据库 MD5 加盐语句手动插入创建。 --- ## ❓ 八、常见问题解决方案 - 提示「请先创建简历」:投递职位前需要先完善个人简历,否则无法发起投递 - 重复投递报错:系统限制同一简历不可重复投递同一个职位 - 推荐职位为空:简历未填写技能标签,无匹配数据,无法生成推荐岗位 - 投递日志无数据:检查投递接口执行情况与项目事务配置 - 图片/附件无法访问:核对前后端端口一致,检查后端静态资源映射配置 - 后端接口404:检查 Tomcat 部署配置,保证前后端端口统一以及端口号未被占用 > 端口号问题请核对**硬编码端口号位置清单** --- ## 📈 九、项目扩展计划 - 接入 WebSocket 实现实时消息推送 - 新增企业评分、岗位评论功能 - 支持简历、岗位数据 Excel 导出 - 接入短信/邮箱验证码,实现安全注册登录(√邮箱验证码已实现) - 优化算法,实现多维度权重技能精准匹配(已加入多行为融合、时间衰退机制及推荐权重等) --- ## 📄 十、许可证 本项目仅用于课程学习、技术交流,未经作者授权,禁止用于任何商业用途。