# Multienty
**Repository Path**: kutasms/multienty
## Basic Information
- **Project Name**: Multienty
- **Description**: SaaS多租户微服务框架底座
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://kutashop.cn
- **GVP Project**: No
## Statistics
- **Stars**: 27
- **Forks**: 6
- **Created**: 2024-02-25
- **Last Updated**: 2025-12-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# SAAS多租户解决方案 (Spring微服务版)
[English](./README.md) | 简体中文








Multienty集成了多个优秀的中间件,为您提供一站式多租户SAAS平台开发解决方案。
本项目基于Springboot***2.6.13***. 在接入之前请确认您的开发环境可支持, 请参考如下架构图:

## 特性
- 支持数据库自动部署和迁移
- 集成远程配置
- 集成流式网关和OAuth授权
- 支持节点间PRC通信
- 支持分布式数据库事务
- 全栈代码生成(前端+后端)
- 支持数据分片、读写分离
- 支持访问链路熔断
- 支持动态数据源
- 集成消息队列(+延迟队列)
- 支持热插拔式插件开发
- 集成基础数据库
- 集成工作流引擎
- 集成数据大屏
- 集成微信第三方平台
## 案例
本项目已用于商业项目,项目提供测试帐号可前往->
## [在线DEMO传送门](https://kutashop.cn)




大神跳过, 小白可前往以下传送门看入门教程:
[传送门 CSDN - SaaS平台开发实战专栏](https://blog.csdn.net/baiyinianhua/category_12585918.html)
## 依赖缺失
由于Multienty对mybatis-plus、数据大屏等项目源码进行过改造,所以版本跟公网版本有所差异,我们提供了百度网盘压缩包
链接:https://pan.baidu.com/s/1LYhPHkOmO7s7cM013fzHFA?pwd=u1pa
提取码:u1pa
## 网关 & OAuth鉴权
Multienty已实现网关和OAuth鉴权模块,包括用户名+密码, 手机号+短信验证码, 微信小程序鉴权三种模式。
- multienty-gateway **网关服务** 默认端口9999
- multienty-oauth **授权服务** 默认端口9998
## 数据库
Multienty 集成了 ***Shardingsphere***, ***DynamicDatasource***以及***Flyway***, 可提供稳定的数据分片, 数据加密, 数据迁移, 多数据源, 以及读写分离等能力.
### 关联查询
***mybatis-plus-join-boot-starter*** 继承自 mybatis-plus,扩展了关联查询.在此基础上,我们对其进行了进一步封装,以便您可以轻松地在代码中执行关联查询。
例:
```
List list = selectJoinList(OrderDTO.class, MTJoinWrappers.lambda(Order.class)
.selectAll(Order.class)
.selectAssociation(OrderDetail.class, OrderDTO::getDetail)
.leftJoin(OrderDetail.class, OrderDetail::getOrderId, Order::getOrderId)
.eq(Order::getTenantId, tenantId)
.eq(Order::getTradeId, tradeId)
.ge(Order::getCreateTime, TimeUtil.minTime(createTime.toLocalDate()))
.le(Order::getCreateTime, TimeUtil.maxTime(createTime.toLocalDate()))
);
```
## 代码生成
在基础库的Controller中, 我们封装了 ***/code/generate*** 接口. 普通的CURD操作可以通过调用这个接口,只需点击一下就可以生成代码。代码生成规则可以在Nacos中配置,并支持热更新,而无需重新启动应用程序。
Multienty可以识别***shardingsphere***中配置的分片规则,并自动生成基于分片的源代码。
此外,我们还为后端管理UI提供各种页面代码生成。更多详情请月度 ***/vue/code/generate***接口相关信息,并且我们提供了vue代码生成配置文件示例。
## Nacos配置中心
Multienty已经实现了nacos配置的获取和更新。请开发您自己的UI界面。建议与ShardingArgorithTool合作,实现独立租户的动态创建和更新。
## 服务监听
spring-boot-admin可以提供服务监控功能,并可以在服务异常时发送电子邮件,**multienty admin**集成了spring-boot-admin并简化了配置。

## 基础数据表
multienty-core-mysql-resource 模块提供了一些基础数据库表配置,您可以在自己的项目Maven pom文件中引用, 然后在nacos配置中开启如下设置,flyway将自动完成基础数据表的生成。基础数据表的pojo,mapper,service, serviceImpl, controller已在multienty-core模块中加入,您不用再次生成。
```
spring.multienty.base-module-enabled = true
```
## 策略实现
- 文件上传
- 已实现本地和阿里云oss方式上传。
- 支付
- 已实现微信支付v3接口.
- 短信发送
- 已实现阿里云短信发送.
## 更多特性
如您想了解更多特性,可咨询本项目作者或自行阅读源代码
```
wx: kutasms
email:7437280@qq.com
```
## 第三方组件列表
- redis 3.7.1
- druid 1.2.9
- dubbo 3.0.8
- dynamic datasource 4.2.0
- mybatis-plus 3.5.5
- redisson 3.9.1
- flyway 7.15.0
- nacos 2.2.0
- shardingsphere 5.2.1
- sentinel 1.8.6
- seata 1.6.1
- jjwt 0.11.1
- amqp 2.4.9
## 贡献者
如果您对此项目有兴趣,可联系作者一起开发,欢迎各位的加入。