# jeedp-saas
**Repository Path**: ydc123/jeedp-saas
## Basic Information
- **Project Name**: jeedp-saas
- **Description**: java快速开发平台-多租户版
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-09-08
- **Last Updated**: 2026-09-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Jeedp-SaaS 多租户快速开发框架
**Java 企业级多租户 SaaS 快速开发平台 | 共享数据库隔离 | 开箱即用 | 多端统一**
---
## 简介
Jeedp-SaaS 是基于 Jeedp 单机版改造的多租户 SaaS 企业级快速开发平台。采用**共享数据库 + tenant_id 字段隔离**方案,通过 MyBatis-Plus TenantLineInnerInterceptor 实现自动租户过滤,通过请求头 X-Tenant-Id 识别租户身份。提供租户管理、租户套餐、用户权限管理、数据权限控制、操作审计、系统监控等基础能力。
## 技术栈
| 层级 | 技术 | 版本 |
|------|------|------|
| 后端框架 | Spring Boot | 2.7.18 |
| 权限认证 | Sa-Token | 1.39.0 |
| ORM | MyBatis-Plus | 3.5.7 |
| 连接池 | Druid | 1.2.23 |
| 缓存 | Redis | - |
| 配置加密 | Jasypt | 3.0.5 |
| 工具库 | Hutool | 5.8.30 |
| JSON | Fastjson2 | 2.0.52 |
| 系统监控 | OSHI | 6.6.2 |
| 表格导出 | Apache Fesod | 2.0.2-incubating |
| Web 前端 | Vue 3 + Arco Design | Vue 3.4 / Arco 2.56 |
| 移动端 | UniApp | Vue 3 |
| 构建工具 | Vite | 5.3 |
| 数据库 | PostgreSQL | - |
| JDK | JDK | 1.8 |
## 功能模块
### 租户管理
| 模块 | 说明 |
|------|------|
| 租户管理 | 租户创建/启停用/过期管理,创建时自动初始化机构、角色、管理员账号 |
| 租户套餐 | 菜单权限套餐配置,控制不同租户可用的功能模块 |
### 系统管理
| 模块 | 说明 |
|------|------|
| 用户管理 | 系统用户配置,支持数据权限过滤 |
| 机构管理 | 组织机构树形维护(公司/部门/小组) |
| 岗位管理 | 用户职务配置 |
| 角色管理 | 角色权限分配、数据范围划分、子角色配置 |
| 菜单管理 | 系统菜单、路由、按钮权限标识配置 |
| 字典管理 | 系统常用固定数据维护 |
| 参数管理 | 系统动态配置参数 |
### 系统监控
| 模块 | 说明 |
|------|------|
| 在线用户 | 当前活跃用户状态监控,支持强退 |
| 定时任务 | 在线添加/修改/删除任务调度,含执行日志 |
| 操作日志 | 系统正常操作与异常信息日志记录 |
| 登录日志 | 登录记录查询,包含异常登录信息 |
| 服务监控 | CPU、内存、磁盘、JVM 等系统信息 |
| 缓存监控 | 系统缓存信息查询与命令统计 |
### 通知公告
系统公告信息发布与维护,支持已读状态追踪。
## 项目结构
```
jeedp-saas/
├── jeedp-saas-server/ # 后端服务(Spring Boot + 多租户)
│ ├── src/main/java/com/jeedpsaas/
│ │ ├── common/ # 公共模块(工具类、注解、异常、常量、租户上下文)
│ │ ├── config/ # 配置类(租户拦截器、多租户插件、数据源等)
│ │ ├── framework/ # 框架集成(Sa-Token 权限 + 数据权限 AOP)
│ │ ├── monitor/ # 监控模块
│ │ └── system/ # 系统管理模块(含租户管理 CRUD)
│ ├── sql/ # 数据库初始化脚本(含 tenant_id)
│ └── pom.xml
├── jeedp-saas-web/ # Web 管理端(Vue 3 + Arco Design)
│ ├── src/
│ │ ├── api/ # 接口请求(含租户管理/套餐接口)
│ │ ├── views/ # 页面组件(含租户管理/套餐页面)
│ │ ├── layout/ # 布局组件
│ │ ├── router/ # 路由配置
│ │ └── store/ # 状态管理(含租户状态)
│ └── package.json
├── jeedp-saas-app-uniapp/ # 移动端(UniApp + Vue 3)
│ ├── pages/ # 页面
│ ├── api/ # 接口请求
│ ├── store/ # 状态管理(含租户状态)
│ └── manifest.json
└── jeedp-saas-doc/ # 项目文档 + 单机版参考源码
```
## 快速开始
### 环境要求
- JDK 1.8+
- PostgreSQL 12+
- Redis 6+
- Node.js 16+
- Maven 3.6+
### 1. 克隆项目
```bash
git clone <仓库地址>
```
### 2. 初始化数据库
```bash
# 创建数据库并执行初始化脚本
psql -U postgres -d jeedp_saas -f jeedp-saas-server/sql/jeedp_saas_postgres.sql
```
### 3. 启动后端
```bash
cd jeedp-saas-server
# 方式一:IDEA 直接运行(需配置环境变量)
# 环境变量:JASYPT_ENCRYPTOR_PASSWORD=jeedp2026!
# 方式二:命令行启动
mvn spring-boot:run -Dspring-boot.run.arguments="--jasypt.encryptor.password=jeedp2026!"
```
后端服务默认启动在 `http://localhost:8080`
### 4. 启动 Web 前端
```bash
cd jeedp-saas-web
npm install
npm run dev
```
Web 前端默认启动在 `http://localhost:5173`
### 5. 启动移动端(可选)
使用 HBuilderX 打开 `jeedp-saas-app-uniapp` 目录,运行到浏览器或模拟器。
### 默认账号
| 账号 | 密码 | 角色 |
|------|------|------|
| admin | admin123 | 超级管理员 |
## 核心特性
### 多租户架构
- **数据隔离**:共享数据库 + tenant_id 字段,MyBatis-Plus TenantLineInnerInterceptor 自动 SQL 过滤
- **租户识别**:请求头 X-Tenant-Id 传递租户标识,登录时支持租户编码识别
- **租户套餐**:通过套餐管理控制不同租户可用的功能菜单
- **租户初始化**:创建租户自动初始化机构、角色、管理员账号
- **平台超管**:tenant_id='0' 的平台租户可查看所有数据,不受租户过滤限制
### 权限体系
- **接口权限**:基于 Sa-Token 的 `@SaCheckPermission` 注解,按钮级权限控制
- **数据权限**:`@DataScope` 注解 + AOP 切面,支持全部/自定义/机构/本人等 5 种数据范围
- **子角色机制**:支持角色层级配置,用户管理时自动按子角色范围过滤可选角色
- **超级管理员**:admin 账号自动拥有通配权限 `*:*:*`
### 安全防护
- **配置加密**:数据库密码、Redis 密码等敏感配置采用 Jasypt AES 加密存储
- **敏感字段加密**:手机号、邮箱等字段数据库存储密文,查询时自动加解密
- **脱敏显示**:列表接口自动脱敏手机号、邮箱等敏感信息
- **密码策略**:支持密码强度校验、登录失败锁定、密码过期提醒
### 操作审计
- **操作日志**:`@Log` 注解自动记录增删改操作,含请求参数和响应结果
- **登录日志**:记录登录 IP、浏览器、操作系统、登录状态
- **在线用户**:实时查看当前活跃会话,支持强制下线
## 相关文档
- [后端使用说明](jeedp-saas-server/README.md)
- [Web 前端说明](jeedp-saas-web/README.md)
## License
本项目仅供学习和内部使用。