SaaS 多租户招聘管理平台
一个基于 Spring Boot + Vue 2 的企业级 SaaS 多租户招聘管理系统,提供完整的招聘流程管理、审批流程、候选人管理等功能。
项目简介

本平台是一个面向企业的招聘管理系统,支持多租户架构,提供从职位发布、候选人管理、面试安排、Offer 发放到入职办理的全流程管理。系统采用前后端分离架构,后端基于 Spring Boot 2.7.18,前端基于 Vue 2.6.14 + Element UI。
技术栈
后端技术栈
- 核心框架: Spring Boot 2.7.18
- 数据库: MySQL 8.0.33
- ORM框架: MyBatis Plus 3.5.5
- 连接池: Druid 1.2.18
- 缓存: Redis
- 认证授权: Spring Security + JWT (0.11.5)
- API文档: Knife4j 3.0.3 (Swagger增强)
- 工具类: Hutool 5.8.20
- 文件处理: Apache POI 5.2.3, PDFBox 2.0.27
- Java版本: JDK 8
前端技术栈
- 核心框架: Vue 2.6.14
- 路由管理: Vue Router 3.5.3
- 状态管理: Vuex 3.6.2
- UI组件库: Element UI 2.15.14
- HTTP客户端: Axios 1.6.0
- 图表库: ECharts 6.0.0
- 构建工具: Vue CLI 5.0.8
- CSS预处理: Sass 1.69.5
项目结构
github地址:
saas/
├── sass-common/ # 公共模块
│ └── src/main/java/com/saas/common/
│ ├── config/ # 公共配置
│ ├── constant/ # 常量定义
│ ├── exception/ # 异常处理
│ ├── result/ # 统一返回结果
│ └── util/ # 工具类
│
├── sass-domain/ # 领域模型模块
│ └── src/main/java/com/saas/domain/
│ ├── entity/ # 实体类
│ ├── dto/ # 数据传输对象
│ └── vo/ # 视图对象
│
├── sass-dao/ # 数据访问模块
│ └── src/main/java/com/saas/dao/
│ └── mapper/ # MyBatis Mapper接口
│
├── sass-service/ # 业务逻辑模块
│ └── src/main/java/com/saas/service/
│ ├── approval/ # 审批服务
│ ├── recruitment/ # 招聘服务
│ └── user/ # 用户服务
│
├── sass-controller/ # 控制器模块
│ └── src/main/java/com/saas/
│ ├── SaasPlatformApplication.java # 启动类
│ ├── config/ # 配置类
│ └── controller/ # 控制器
│ ├── approval/ # 审批相关接口
│ ├── recruitment/ # 招聘相关接口
│ └── user/ # 用户相关接口
│
├── sass-front/ # 前端项目
│ ├── public/ # 静态资源
│ ├── src/
│ │ ├── api/ # API接口封装
│ │ ├── assets/ # 资源文件
│ │ ├── components/ # 公共组件
│ │ ├── layout/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # Vuex状态管理
│ │ ├── styles/ # 全局样式
│ │ ├── utils/ # 工具函数
│ │ └── views/ # 页面组件
│ ├── package.json
│ └── vue.config.js
│
├── sql/ # 数据库脚本
│ └── saas_platform.sql # 数据库初始化脚本
│
├── logs/ # 日志目录
└── pom.xml # Maven父工程配置
功能模块
1. 招聘管理
- 招聘工作台: 招聘数据概览、待办事项提醒
- 候选人管理: 候选人信息维护、简历导入、标签管理
- 职位管理: 职位发布、编辑、下架、招聘流程配置
- 面试管理: 面试安排、面试评价、面试反馈
- Offer管理: Offer发放、审批流程、Offer模板
- 入职办理: 入职信息收集、入职材料审核、入职进度跟踪
- 流程节点: 招聘流程自定义配置
- 标签管理: 候选人标签分类管理
- 模板管理: 邮件模板、Offer模板配置
- 费用管理: 招聘费用记录与统计
2. 审批管理
- 审批流程配置: 支持多级审批流程配置
- 审批节点配置: 按岗位配置审批节点
- 审批实例管理: 审批流程实例跟踪
- 业务类型管理: 支持多种业务类型审批(Offer发放等)
3. 系统管理
- 用户管理: 用户信息维护、用户状态管理
- 角色管理: 角色权限配置、角色分配
- 组织管理: 组织架构维护、部门管理
- 菜单管理: 系统菜单配置、权限控制
- 租户管理: 多租户信息维护(SaaS特性)
- 操作日志: 用户操作日志记录与查询
4. 报表中心
- 招聘漏斗分析
- 候选人来源统计
- 面试通过率分析
- 招聘周期统计
- 费用统计分析
数据库设计
系统包含以下核心数据表:
系统管理表
sys_user- 用户表sys_role- 角色表sys_role_menu- 角色菜单关联表sys_menu- 菜单表sys_organization- 组织表sys_tenant- 租户表sys_operation_log- 操作日志表sys_business_type- 业务类型表
招聘管理表
rec_candidate- 候选人表rec_position- 职位表rec_interview- 面试表rec_offer- Offer表rec_onboarding- 入职表rec_process_node- 流程节点表rec_tag- 标签表rec_template- 模板表rec_expense- 费用表rec_resume_import- 简历导入记录表
审批管理表
approval_process- 审批流程表approval_node_config- 审批节点配置表approval_node_instance- 审批节点实例表
快速开始
环境要求
- JDK 8+
- Maven 3.6+
- MySQL 8.0+
- Redis 5.0+
- Node.js 14+
后端启动
- 克隆项目
bash
git clone <repository-url>
cd saas
- 导入数据库
bash
mysql -u root -p < sql/saas_platform.sql
- 修改配置
编辑sass-controller/src/main/resources/application.yml,修改数据库和Redis连接信息:
yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/saas_platform
username: root
password: your_password
redis:
host: localhost
port: 6379
- 编译打包
bash
mvn clean install
- 启动应用
bash
cd sass-controller
mvn spring-boot:run
后端服务启动成功后,访问:
- API地址: http://localhost:8082
- API文档: http://localhost:8082/doc.html (Knife4j)
- Druid监控: http://localhost:8082/druid (用户名/密码: admin/admin)
前端启动
- 进入前端目录
bash
cd sass-front
- 安装依赖
bash
npm install
- 开发运行
bash
npm run dev
前端服务启动成功后,访问:http://localhost:8080
- 生产构建
bash
npm run build
配置说明
后端配置
JWT配置
yaml
jwt:
secret: your-secret-key # JWT密钥,建议修改
expiration: 86400000 # Token过期时间(毫秒),默认24小时
MyBatis Plus配置
yaml
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml
global-config:
db-config:
id-type: ASSIGN_ID # 主键生成策略
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
Druid监控配置
yaml
spring:
datasource:
druid:
stat-view-servlet:
enabled: true
url-pattern: /druid/*
login-username: admin
login-password: admin
前端配置
API代理配置
在 vue.config.js 中配置开发环境API代理:
javascript
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:8082',
changeOrigin: true
}
}
}
}
API文档
系统集成了 Knife4j(Swagger增强),启动后端服务后访问:
- 文档地址: http://localhost:8082/doc.html
- Swagger UI: http://localhost:8082/swagger-ui.html
主要API模块:
/api/auth- 认证授权/api/user- 用户管理/api/role- 角色管理/api/organization- 组织管理/api/candidate- 候选人管理/api/position- 职位管理/api/interview- 面试管理/api/offer- Offer管理/api/onboarding- 入职管理/api/approval- 审批管理
默认账号
系统初始化后,默认管理员账号:
- 用户名: admin
- 密码: admin123
注意: 首次登录后请立即修改密码!
开发规范
后端开发规范
- 遵循RESTful API设计规范
- 统一使用
Result<T>返回结果 - 使用Lombok简化代码
- Service层实现业务逻辑,Controller层只负责参数校验和调用
- 使用MyBatis Plus的Wrapper进行复杂查询
前端开发规范
- 组件命名采用PascalCase
- 文件命名采用kebab-case
- 使用ESLint进行代码检查
- 统一使用Axios进行HTTP请求
- 使用Vuex管理全局状态
部署说明
后端部署
- 打包
bash
mvn clean package -DskipTests
- 运行
bash
java -jar sass-controller/target/sass-controller-1.0.0.jar
- 使用外部配置文件
bash
java -jar sass-controller-1.0.0.jar --spring.config.location=/path/to/application.yml
前端部署
- 构建
bash
npm run build
-
部署
将
dist目录下的文件部署到Nginx或其他Web服务器 -
Nginx配置示例
nginx
server {
listen 80;
server_name your-domain.com;
root /path/to/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
location /api {
proxy_pass http://localhost:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
常见问题
1. 数据库连接失败
检查MySQL服务是否启动,以及 application.yml 中的数据库配置是否正确。
2. Redis连接失败
检查Redis服务是否启动,以及 application.yml 中的Redis配置是否正确。
3. 前端跨域问题
后端已配置 CorsConfig 允许跨域,如仍有问题请检查前端代理配置。
4. JWT Token过期
Token默认有效期为24小时,过期后需要重新登录。可在 application.yml 中修改 jwt.expiration 配置。
技术支持
如有问题或建议,请通过以下方式联系:
- 提交Issue
- 发送邮件
许可证
本项目采用 MIT 许可证。
更新日志
v1.0.0 (2025-12-30)
- 初始版本发布
- 实现招聘管理核心功能
- 实现审批流程管理
- 实现系统管理功能
- 前后端分离架构