Madong-SaaS 5.x 尝鲜招募|动态连接池数千租户无压力 · Nuxt 4 企业官网模版

kzhzjdyw888

企业级 SaaS 极速后台管理系统 · 基于 webman 2.x + Vue 3


🚀 Madong-SaaS 5.x 版本尝鲜招募

企业级 SaaS 极速后台管理系统,终于来了!

Madong-SaaS 5.x 是一款基于 webman 2.x + Vue 3 的企业级 SaaS 后台管理系统,内置完整的多租户架构、插件系统、Web 终端等高级功能,提供从零到一的商业项目快速启动能力。


🎯 5.x 版本核心升级(vs 历史版本)

1. 🔥 动态连接池架构(重大突破)

历史版本痛点

  • 数据库连接配置静态写在 config/database.php
  • 无法动态管理租户数据库连接
  • 大规模租户场景下连接管理混乱

5.x 解决方案

  • 动态连接池TenantConnectionManager 动态管理租户数据库连接
  • 兼容框架 Pool:无缝对接 webman 连接池配置(heartbeat_interval / idle_timeout / max_connections
  • 几千个租户没压力:支持 single / field / database 三种隔离模式,库隔离模式下动态创建连接,自动复用主库配置模板
  • 自定义数据源:每个租户可配置独立的数据库主机、端口、用户名、密码、数据库名
  • 连接复用优化:智能检测连接状态,避免无效连接,死连接自动回收

技术实现

// 5.x 动态连接池架构
TenantConnectionManager::setCurrentConnection($tenantId);
// 自动创建连接池,兼容框架 pool 配置
// 支持 thousands 级租户无压力

2. 🖥️ Web 终端(全新功能)

5.x 新增功能

  • 基于 xterm.js:完整的 Web SSH 终端体验
  • 在线执行命令:支持 bash / php / composer 等命令
  • 查看日志:实时查看应用日志、错误日志
  • 管理进程:启动/停止/重启 webman 进程
  • Symfony Console 集成:支持自定义命令,扩展系统能力

配置驱动

  • config/terminal.php:7777 行完整终端配置
  • 支持多用户、多会话、权限控制

3. 🎨 前端模板系统(二开利器)

历史版本

  • 前端模板固定,难以扩展

5.x 解决方案

  • 双模板架构template/mono/ + template/web/
  • Monorepo 架构template/mono/apps/ 目录,多应用支持
  • 企业官网模板template/web/(Nuxt 4.+),快速搭建企业官网
  • 插件支持web 模板同样支持插件系统,动态注册页面和路由

Mono 模板(管理后台)

  • admin:后台管理前端(Vben Admin 5)
  • platform:平台管理前端
  • install:安装向导前端
  • backend-mock:后端 Mock 服务

Web 模板(企业官网)

  • Nuxt 4.+:基于 Nuxt 4 的企业官网模板
  • 快速搭建:开箱即用的企业官网解决方案
  • 插件支持:支持插件动态注册页面、路由、组件
  • SEO 友好:Nuxt 4 的 SSR/SSG 能力,优化搜索引擎收录

二开友好

# 在 template/mono/apps/ 下添加新的前端应用
mkdir template/mono/apps/my-custom-app
# 自动集成到 Monorepo,共享依赖和配置

# 使用 web 模板快速搭建企业官网
cd template/web
pnpm install
pnpm dev
# 自动启动 Nuxt 4 开发服务器

共享包packages/@core/ + packages/@madong/ + packages/vben-components/


4. 🏢 多租户架构升级

5.x 三种隔离模式 模式 说明 适用场景
single 单租户模式(不隔离) 独立部署,无租户概念
field 字段隔离(共享表,通过 tenant_id 字段区分) 中小规模,成本优先
database 库隔离(每个租户独立数据库) 大规模,安全优先

5.x 新增能力

  • 动态连接管理TenantConnectionManager 自动创建/释放连接
  • 租户上下文TenantContext 全局管理租户信息
  • 自动注入TenantScope 自动注入 tenant_id 条件
  • 白名单机制:指定模型跳过租户过滤(如 Admin::class
  • 跨租户查询:超级管理员可查看所有数据

5. 🔌 插件系统(完整机制)

5.x 插件能力

  • 独立安装/卸载/启用/禁用
  • 后端逻辑:控制器、服务、模型、迁移文件
  • 前端页面:自动注册到 Vue 路由和菜单
  • 依赖管理:插件间依赖声明和检查
  • 数据库迁移:独立迁移文件,自动执行
  • 菜单动态注册:插件可动态注册菜单到后端驱动菜单系统

插件目录结构

backend/plugin/
├── demo/           # 示例插件
└── portal/         # 门户插件

6. ⚡ 代码生成器(14 种)

5.x 支持一键生成

  1. Controller(API 层)
  2. Service(服务层)
  3. DAO(数据访问层)
  4. Model(模型层)
  5. Validate(验证层)
  6. Schema(DTO)
  7. 前端页面(Vue 3)
  8. 路由配置
  9. i18n 翻译文件(后端 PHP + 前端 JSON)
  10. 数据库迁移
  11. 事件(Event)
  12. 监听器(Listener)
  13. 枚举(Enum)
  14. 权限定义

使用方式

php start.php gen:crud --table=order --module=order
# 自动生成全套 CRUD 代码,直接可用

6.5. 💡 轻量级开发模式(插件开发推荐)

历史版本

  • 必须遵循完整 MVC 架构(Controller -> Service -> DAO -> Model)
  • 层次太多,插件开发效率低

5.x 解决方案

  • 两种开发模式

    • 完整 MVC 模式:Controller -> Service -> DAO -> Model(适合复杂业务逻辑)
    • 轻量级模式:Controller + madong/query(适合快速插件开发)
  • 跳过 Service/DAO 层:控制器直接使用 madong/query 处理数据库查询

  • 统一 Swagger 注解路由:所有路由通过 Swagger 注解自动注册,无需手动配置

  • madong/query:强大的查询参数解析和过滤库,简化数据库操作

madong/query 特性

  • 🚀 高性能:轻量级设计,最小化性能开销
  • 🔒 类型安全:使用 PHP 8.1+ 枚举提供编译时类型检查
  • 🎯 灵活配置:支持多种查询模式和参数格式
  • 📝 优雅 API:直观的接口设计,降低学习成本
  • 🔧 易于集成:提供多种集成方式(Trait、依赖注入、门面)
  • 🎛 高度可配置:SelectInput 支持字段过滤、格式限定、自定义返回格式等

轻量级模式示例(控制器直写)

<?php
namespace App\Plugin\MyPlugin\Controller;

use App\AdminApi\Schema\Request\MyPlugin\ListRequest;
use App\AdminApi\Schema\Response\MyPlugin\DetailResponse;
use App\Model\Order;
use support\Request;
use support\Response;
use madong\query\traits\WithQueryParams;

class OrderController extends BaseController
{
    use WithQueryParams;

    // Swagger 注解路由(统一路由注册方式)
    #[OA\Get(
        path: '/adminapi/my-plugin/orders',
        description: '订单列表',
        tags: ['我的插件'],
        security: [['Bearer' => []]],
        responses: [
            new OA\Response(response: 200, description: '成功'),
        ]
    )]
    public function index(ListRequest $request): Response
    {
        // 直接使用 madong/query 处理查询
        return json($this->paginateWithParams(Order::query(), $request->validated(), [
            'allowed_fields' => ['order_no', 'status', 'created_at'],
            'keyword_fields' => ['order_no', 'customer_name'],
            'default_sort' => ['created_at' => 'desc'],
        ]));
    }

    #[OA\Post(
        path: '/adminapi/my-plugin/orders',
        description: '创建订单',
        tags: ['我的插件'],
        security: [['Bearer' => []]],
    )]
    public function store(ListRequest $request): Response
    {
        $data = $request->validated();
        $order = Order::create($data);
        return json(DetailResponse::fromModel($order)->toArray());
    }

    #[OA\Get(
        path: '/adminapi/my-plugin/orders/{id}',
        description: '订单详情',
        tags: ['我的插件'],
        security: [['Bearer' => []]],
    )]
    public function show($id): Response
    {
        $order = Order::find($id);
        return json(DetailResponse::fromModel($order)->toArray());
    }
}

完整 MVC 模式示例(复杂业务)

<?php
namespace App\AdminApi\Controller\Order;

use App\AdminApi\Service\OrderService;
use App\AdminApi\Schema\Request\Order\ListRequest;
use support\Request;
use support\Response;

class OrderController extends Crud
{
    protected OrderService $service;

    public function __construct(OrderService $service)
    {
        $this->service = $service;
    }

    // Swagger 注解路由(自动生成 API 文档)
    #[OA\Get(
        path: '/adminapi/orders',
        description: '订单列表',
        tags: ['订单管理'],
        security: [['Bearer' => []]],
    )]
    public function index(ListRequest $request): Response
    {
        return $this->service->paginate($request->validated());
    }
}
两种模式对比 特性 完整 MVC 模式 轻量级模式
适用场景 复杂业务逻辑 快速插件开发
层次 Controller -> Service -> DAO -> Model Controller + Model
查询方式 Service 调用 DAO Controller 直接使用 madong/query
路由注解 Swagger 注解(统一方式) Swagger 注解(统一方式)
API 文档 自动生成 自动生成
开发效率 较低(需要创建多个文件) 较高(控制器直写)
代码生成器 支持(生成全套代码) 支持(仅生成 Controller 和 Model)

7. 🔐 方法级权限(PHP 8.2+ Attribute)

5.x 权限控制

  • 原生 #[Permission] 属性:细粒度到每个 API 接口
  • 自动注册:通过 Swagger 注解自动注册路由和权限
  • RBAC 模型:角色-权限-用户,完整权限体系
  • 菜单权限:后端驱动菜单渲染,自动校验权限

示例代码

#[Permission('order:list', '订单列表')]
public function list(): Response
{
    // 只有拥有 'order:list' 权限的用户才能访问
}

8. 📡 SSE 实时通信

5.x 实时能力

  • 服务端推送:基于 SSE(Server-sent Events)
  • 实时通知:消息通知、待办提醒
  • 安装进度:插件安装、数据库迁移进度实时展示
  • 队列监控:Redis 队列任务执行状态实时推送

⚡ 技术栈(5.x 版本)

后端

  • PHP 8.2+ + webman 2.x(基于 Workerman)
  • MySQL 5.7+ / 8.0+ + Redis 5.0+
  • Swagger API 文档自动生成(统一路由注册方式)
  • madong/query:强大的查询参数解析和过滤库
  • JWT 双 Token 认证(Access Token + Refresh Token)
  • Redis 队列 + 事件系统 + 定时任务
  • 动态连接池:兼容框架 Pool,支持 thousands 级租户

前端

  • Vue 3.5+ + Vite 6.x + TypeScript 5.x(管理后台)
  • Nuxt 4.+(企业官网模板)
  • Element Plus 2.9+ + vxe-table 4.12+
  • Pinia 2.x + Vue Router 4.x
  • Monorepo(pnpm)架构,双模板支持(Mono + Web)

🏗️ 系统架构(5.x 版本)

┌─────────────────────────────────────────────────────┐
│                     用户层                         │
│  Admin 后台管理    Platform 平台管理    API 接口   │
└─────────────────────────────────────────────────────┘
                         ▼
┌─────────────────────────────────────────────────────┐
│                    webman 2.x                      │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ 控制器层  │  │ 服务层    │  │ DAO 层   │      │
│  └──────────┘  └──────────┘  └──────────┘      │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐      │
│  │ 模型层    │  │ Schema   │  │ 验证层    │      │
│  └──────────┘  └──────────┘  └──────────┘      │
│  ┌──────────────────────────────────────────┐     │
│  │         插件系统 (Plugin)                  │     │
│  └──────────────────────────────────────────┘     │
│  ┌──────────────────────────────────────────┐     │
│  │     多租户架构 (TenantConnectionManager)   │     │
│  │  - 动态连接池                             │     │
│  │  - 三种隔离模式                           │     │
│  │  - 几千租户无压力                         │     │
│  └──────────────────────────────────────────┘     │
└─────────────────────────────────────────────────────┘
                         ▼
┌─────────────────────────────────────────────────────┐
│                   数据层                            │
│  MySQL (业务数据)    Redis (缓存/队列)             │
└─────────────────────────────────────────────────────┘

📦 核心模块(6 大分组)

分组 说明 核心模块
foundation 基础支撑 MVC 基类、异常处理、工具类
infrastructure 基础设施 缓存、日志、监控、调度
security 安全认证 JWT、验证码
communication 通信通知 邮件、短信、WebSocket 推送
io 文件 IO Excel 导出、文件上传、雪花 ID
business 业务模块 代码生成器、插件系统、多租户、路由组织

🎯 适用场景

  • SaaS 平台:开箱即用的多租户架构,快速搭建 SaaS 应用
  • 企业后台:完整的 RBAC 权限 + 菜单管理,适合企业级后台系统
  • 企业官网:基于 Nuxt 4.+ 的企业官网模板,快速搭建 SEO 友好的企业官网
  • 插件化系统:需要动态扩展功能的系统,插件可独立开发、独立部署
  • 快速原型:代码生成器一键生成 CRUD,大幅缩短开发周期

📚 完整文档

  • 介绍:系统概述、核心特性、技术栈
  • 快速开始:安装部署、环境要求、初始化配置
  • 前端:Vue 3 开发规范、Monorepo 架构、Vben Admin 5
  • 后端:webman 2.x 开发规范、MVC 架构、28 个配置文件
  • 二开:插件开发、代码生成器、二次开发指南
  • FAQ:常见问题、故障排查
  • Skills:69 个开发规范(AI 工具友好)
  • Changelog:版本更新日志

🔥 如何尝鲜

Madong-SaaS 5.x 版本现已开放尝鲜申请!

请在 Gitee 上提交 Issue 申请尝鲜资格:

👉 点击这里申请尝鲜

申请通过后,我们将为您提供

  • ✅ Madong-SaaS 5.x 完整源码
  • ✅ 详细安装部署文档
  • ✅ 技术支持群(微信/QQ)
  • ✅ 优先体验新功能
  • ✅ 二次开发指导(模板系统、插件开发、轻量级开发模式)

📞 获取帮助


🎁 5.x 版本亮点总结

特性 历史版本 5.x 版本
连接池 静态配置 config/database.php 动态连接池,兼容框架 Pool,几千租户无压力
Web 终端 ❌ 无 ✅ 基于 xterm.js,在线执行命令、查看日志
前端模板 固定模板 ✅ 双模板:mono/(管理后台)+ web/(Nuxt 4.+ 企业官网)
企业官网 ❌ 无 template/web/ Nuxt 4.+ 模板,快速搭建 SEO 友好的企业官网
多租户 基础字段隔离 ✅ 三种隔离模式 + 动态连接管理
插件系统 ❌ 无 ✅ 完整插件生命周期管理,web 模板同样支持插件
代码生成器 基础 CRUD ✅ 14 种生成器,全套代码一键生成
权限控制 路由级权限 ✅ 方法级权限(PHP 8.2+ Attribute)
实时通信 ❌ 无 ✅ SSE 服务端推送
开发模式 必须完整 MVC ✅ 灵活选择:完整 MVC 或轻量级控制器直写
查询方式 手动拼接 SQL madong/query 自动解析查询参数
路由注解 ❌ 无 ✅ 统一 Swagger 注解,自动生成 API 文档

Madong-SaaS 5.x · 企业级 SaaS 极速后台管理系统的终极解决方案

基于 webman 2.x + Vue 3 · 动态连接池 · 多租户架构 · 插件系统 · Web 终端 · 代码生成器 · 轻量级开发模式


立即申请尝鲜 👉 https://gitee.com/motion-code/madong/issues/IJWQK1

135 3 0
3个评论

calvin

好东西

  • 暂无评论
会飞的鱼

推荐 支持开源 参与开源 共建生态

  • 暂无评论
10bang

5.x来了,尝鲜走起

  • 暂无评论

kzhzjdyw888

880
积分
0
获赞数
0
粉丝数
2023-06-07 加入
🔝