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)

  • 初始版本发布
  • 实现招聘管理核心功能
  • 实现审批流程管理
  • 实现系统管理功能
  • 前后端分离架构
相关推荐
sheji34162 小时前
【开题答辩全过程】以 基于spring boot的停车管理系统为例,包含答辩的问题和答案
java·spring boot·后端
重生之后端学习2 小时前
21. 合并两个有序链表
java·算法·leetcode·链表·职场和发展
南屿欣风2 小时前
Sentinel 熔断规则 - 异常比例(order & product 示例)笔记
java·开发语言
u0104058362 小时前
使用Java实现高性能的异步编程:CompletableFuture与Reactive Streams
java·开发语言
专注VB编程开发20年2 小时前
c#Type数组转成字符串的名称
java·开发语言
中年程序员一枚2 小时前
多数据源的springboot进行动态连接方案
java·spring boot·后端
w***76552 小时前
SpringBoot集成MQTT客户端
java·spring boot·后端
编程饭碗2 小时前
【多线程编程】
java·开发语言
北鹿不麋鹿2 小时前
自学Java手记:Map集合,Arrays工具类和Lambda表达式
java