Spring Boot + Vue 2 的企业级 SaaS 多租户招聘管理系统

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地址:

https://github.com/1124875284/saas.git

复制代码
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+

后端启动

  1. 克隆项目
bash 复制代码
git clone <repository-url>
cd saas
  1. 导入数据库
bash 复制代码
mysql -u root -p < sql/saas_platform.sql
  1. 修改配置
    编辑 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
  1. 编译打包
bash 复制代码
mvn clean install
  1. 启动应用
bash 复制代码
cd sass-controller
mvn spring-boot:run

后端服务启动成功后,访问:

前端启动

  1. 进入前端目录
bash 复制代码
cd sass-front
  1. 安装依赖
bash 复制代码
npm install
  1. 开发运行
bash 复制代码
npm run dev

前端服务启动成功后,访问:http://localhost:8080

  1. 生产构建
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增强),启动后端服务后访问:

主要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管理全局状态

部署说明

后端部署

  1. 打包
bash 复制代码
mvn clean package -DskipTests
  1. 运行
bash 复制代码
java -jar sass-controller/target/sass-controller-1.0.0.jar
  1. 使用外部配置文件
bash 复制代码
java -jar sass-controller-1.0.0.jar --spring.config.location=/path/to/application.yml

前端部署

  1. 构建
bash 复制代码
npm run build
  1. 部署

    dist 目录下的文件部署到Nginx或其他Web服务器

  2. 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)

  • 初始版本发布
  • 实现招聘管理核心功能
  • 实现审批流程管理
  • 实现系统管理功能
  • 前后端分离架构
相关推荐
陌殇殇1 天前
001 Spring AI Alibaba框架整合百炼大模型平台 — 快速入门
人工智能·spring boot·ai
言慢行善1 天前
sqlserver模糊查询问题
java·数据库·sqlserver
专吃海绵宝宝菠萝屋的派大星1 天前
使用Dify对接自己开发的mcp
java·服务器·前端
大数据新鸟1 天前
操作系统之虚拟内存
java·服务器·网络
Tong Z1 天前
常见的限流算法和实现原理
java·开发语言
凭君语未可1 天前
Java 中的实现类是什么
java·开发语言
He少年1 天前
【基础知识、Skill、Rules和MCP案例介绍】
java·前端·python
克里斯蒂亚诺更新1 天前
myeclipse的pojie
java·ide·myeclipse
迷藏4941 天前
**eBPF实战进阶:从零构建网络流量监控与过滤系统**在现代云原生架构中,**网络可观测性**和**安全隔离**已成为
java·网络·python·云原生·架构