前言
做了好几年管理系统,每次给客户上 OA、CRM 或者 SaaS,总觉得重复造轮子的事情太多。表单、列表、审批流程、打印模板……这些东西几乎每个项目都要从头写一遍,但真正的业务逻辑却只占 20%。
项目地址:gitee.com/dongyang1234/i-paas-management-platform
先看看到底有啥东西
四大可视化设计器 —— 零代码搭业务
这是整个平台的核心,业务人员不用写一行代码,拖拽 + 配置就能产出可运行的应用。
|
设计器
|
能力
|
|
表单设计器
|
40+ 组件(输入框、下拉、日期、子表、关联查询、签名、富文本、条码、文件上传……),拖拽出表单后一键生成运行态页面
|
|
列表设计器
|
配置列、排序、筛选、分页、自定义按钮、批量操作,自动绑定对应表单的数据
|
|
流程设计器
|
基于 Flowable 7 的 BPMN 可视化建模,支持网关、子流程、定时器、条件表达式、候选人配置
|
|
打印设计器
|
类 Word 的可视化打印模板编辑,支持套打、动态变量、条码/二维码、图片,所见即所得
|
全链路联动
表单设计 ──→ 列表展示 ──→ 流程审批 ──→ 打印输出
│ │ │ │
└── 数据模型自动生成 ─────────┘ │
└── 字段作为流程变量 ─────────┘ │
└── 审批状态驱动列表显示 ─────┘ │
└── 流程完成触发打印模板渲染 ─────────────────┘
设计器产出的就是几段 JSON 配置,存数据库,改完即生效——不需要重新部署,不需要重启服务。这点对敏捷迭代来说太重要了。
多租户 SaaS 架构
-
从第一天就按 SaaS 来设计的,不只是个单体管理系统:
-
租户隔离:支持物理隔离(一个租户一个数据库)和逻辑隔离(共享数据库、字段区分)两种模式
-
套餐管理:给每个租户开不同的模块权限
-
组织架构:集团 → 公司 → 部门 → 岗位,四级树形
-
权限体系:租户管理员 → 用户 → 角色 → 菜单 → 数据权限(行级数据隔离)
-
实时推送:基于 SignalR 的站内信、审批通知
完整的业务套件
光有框架不行,得有东西能直接用。平台已经沉淀了一套商城 + 会员 + 支付的完整业务,全部是用自己的设计器搭出来的,算是对框架最好的验证。
|
模块
|
覆盖范围
|
|
系统管理
|
用户、角色、菜单、部门、岗位、字典、参数、通知、文件、数据源、代码生成
|
|
流程中心
|
模型设计、实例管理、待办/已办、抄送、委派、加签
|
|
商城商品
|
SPU/SKU、品牌、分类、属性、规格、评论
|
|
营销活动
|
秒杀、砍价、拼团、满减、优惠券、积分、抽奖、DIY 装修
|
|
交易订单
|
下单、发货、售后、物流、自提、分销佣金
|
|
会员中心
|
等级、标签、分组、积分、签到、余额
|
|
支付网关
|
微信/支付宝/钱包/Mock 多渠道、退款、对账
|
|
微信公众号
|
账号、菜单、自动回复、消息群发、粉丝管理
|
|
基础设施
|
定时任务(Cron/Groovy)、短信、邮件、LDAP、缓存监控
|
|
财务报表
|
资金报表、出入库统计、销售库存、利润排行
|
|
数据大屏
|
首页仪表盘、ECharts、待办、日程、快捷方式
|
技术栈
后端
|
组件
|
版本
|
用途
|
|
Spring Boot
|
3.5
|
基础框架
|
|
JDK
|
21
|
语言运行时
|
|
MyBatis Plus
|
3.5
|
ORM + 代码生成
|
|
Flowable
|
7.x
|
BPM 流程引擎
|
|
Sa-Token
|
1.37
|
认证鉴权
|
|
Redis + Redisson
|
7.x
|
缓存 + 分布式锁
|
|
Druid
|
1.2
|
连接池 + 动态数据源
|
|
Knife4j
|
4.x
|
OpenAPI 3 接口文档
|
|
XXL-Job
|
2.4
|
分布式任务调度
|
|
SignalR
|
—
|
实时 WebSocket 推送
|
|
Hutool
|
5.8
|
工具库
|
|
前端
|
|
|
|
组件
|
版本
|
用途
|
|
:-----------
|
:—
|
:------
|
|
Vue
|
3.4
|
前端框架
|
|
Element Plus
|
2.7
|
UI 组件库
|
|
Vite
|
5.x
|
构建工具
|
|
TypeScript
|
5.x
|
类型安全
|
|
Pinia
|
2.x
|
状态管理
|
|
UnoCSS
|
0.60
|
原子化 CSS
|
|
wangeditor
|
5.x
|
富文本编辑器
|
|
@logicflow
|
2.x
|
流程设计器底层
|
开源策略 —— Demo 能跑,但核心源码保护
这次放出来的是 Demo 项目,既能独立编译运行完整系统,又不会泄露核心业务源码。具体做法:
demo/
├── README.md
├── manage_demo.sql # 完整数据库(496 张表 + 示例数据)
├── backend/ # 完整可编译 Maven 项目
│ ├── pom.xml # Spring Boot parent + 本地仓库引用
│ ├── start.sh / stop.sh # 启动脚本
│ ├── src/main/java/
│ │ └── cn/dyang/manage/server/
│ │ ├── ManageServerApplication.java 🔓 入口源码(开源)
│ │ └── controller/DefaultController.java 🔓
│ ├── src/main/resources/ # 配置文件
│ └── repo/ # 本地 Maven 仓库
│ └── cn/dyang/... # 38 个内部模块的 jar + pom(闭源)
└── frontend/ # 完整 manage-ui 前端项目
-
开源的:入口源码、配置、pom.xml 构建脚本、完整前端代码
-
闭源的:38 个内部业务模块(通过本地 Maven 仓库 repo/ 以 jar 形式引入),其中 manage-module-form-biz 还加了 ClassFinal 加密保护
-
能编译:直接 mvn clean package 就能打包出可执行 jar
-
能运行:配好 MySQL + Redis,加个 -javaagent 参数就能启动
⚠️ 为什么用 -javaagent?因为 ClassFinal 加密的模块需要一个 premain agent 来解密加载,fat jar 内部的嵌套 jar 不能作为 agent,所以启动时要显式指到外部的 jar 文件。
快速上手
环境要求
|
组件
|
版本
|
|
JDK
|
21+
|
|
Maven
|
3.8+
|
|
MySQL
|
8.0+
|
|
Redis
|
6.0+
|
|
Node.js
|
18+(前端构建)
|
后端
# 1. Clone
git clone https://gitee.com/dongyang1234/i-paas-management-platform.git
cd manage-demo/backend
# 2. 建库导数据
mysql -u root -p -e "CREATE DATABASE manage_demo DEFAULT CHARACTER SET utf8mb4;"
mysql -u root -p manage_demo < ../manage_demo.sql
# 3. 改数据库配置(src/main/resources/application-local.yaml)
# 改成你本地的 MySQL / Redis 地址
# 4. 编译打包
mvn clean package -DskipTests
# 产物:target/manage-server-demo.jar + target/lib/
# 5. 启动(Windows)
java "-javaagent:./target/lib/manage-module-form-biz-2.3.0-jdk21-SNAPSHOT.jar" ^
"-Dspring.profiles.active=local" ^
"-cp" "target/manage-server-demo.jar;target/lib/*" ^
"cn.dyang.manage.server.ManageServerApplication"
# 或者直接用脚本
start.bat
前端
cd manage-demo/frontend
npm install
npm run dev # http://localhost:3000
IDEA 里调试
1. 打开 demo/backend/ 目录(pom.xml 根目录)
2. Run → Edit Configurations → 新建 Application
3. Main class:cn.dyang.manage.server.ManageServerApplication
4. VM options 务必加上:
-javaagent:E:\你的路径\demo\backend\target\lib\manage-module-form-biz-2.3.0-jdk21-SNAPSHOT.jar
-Dspring.profiles.active=local
适用场景
|
场景
|
为什么选它
|
|
企业内部 OA / CRM / ERP 轻量版
|
四大设计器快速搭表单、列表、审批流,多部门数据隔离
|
|
SaaS 产品快速原型
|
多租户架构现成的,设计器改改配置就是一套新应用
|
|
数据采集 / 审批类应用
|
表单 + 流程联动,收集完直接走审批
|
|
复杂打印套打
|
珠宝、医药、物流这些行业单据套打特别常见,打印设计器就是为这个做的
|
|
想学 Spring Boot + Vue 全栈项目管理
|
完整的前后端分离项目,Maven 多模块,技术栈新,值得看看
|
一些心路历程
-
这套平台最早是我做另一个珠宝 ERP 项目时顺手搭的脚手架,后来越做越大,干脆抽出来单独成了平台。大半年时间,踩的坑不少:
-
Flowable 7 的迁移:从 6.x 跳到 7,API 变动挺大,BPMN 模型的序列化格式也有变化
-
ClassFinal 加密保护:一开始没考虑,后来发现直接放出去不行,才临时加的加密
-
动态数据源:多租户隔离时,物理隔离和逻辑隔离要自动切换,Druid 动态数据源 + 自定义切面搞定
-
前端设计器:表单设计器和打印设计器都是自研的,没找到现成好用的,花了最多时间
Demo 里闭源的那些模块(manage-module-*-biz)是平台的核心引擎部分。如果你想做类似的平台,这个 Demo 的目录结构、pom.xml 配置、启动脚本、设计器前端代码,应该都能当参考。
后续可能的计划:
-
把闭源模块里安全级别低的逐步开源
-
做个 Docker Compose 一键启动
-
补一份架构设计文档
欢迎交流
Issues 和 PR 都欢迎。如果你也是做管理系统、低代码平台或者 SaaS 的,欢迎聊聊。
最后,Star 一下呗?🫡