# warm-sun **Repository Path**: opensolon/warm-sun ## Basic Information - **Project Name**: warm-sun - **Description**: 基于solon开发,集成国产工作流,jdk17+satoken+redisx/redisson+mybaitsflex/mybaitsplus+hutool+jackson+mapstruct+poi - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: https://gitee.com/min290/warm-sun.git - **GVP Project**: No ## Statistics - **Stars**: 173 - **Forks**: 52 - **Created**: 2023-08-31 - **Last Updated**: 2026-01-26 ## Categories & Tags **Categories**: webframework **Tags**: 工作流, 自研, 流程设计器 ## README # 项目介绍 ## 一、项目整体说明 `warm-sun` 是基于 **Solon + Vue3** 的前后端分离多租户脚手架工程,采用 **Maven 多模块 + 插件化** 设计,启动快、内存占用低。**Warm-Flow工作流集成中**, smart-http+satoken+easy-query+redisx+Snack4。整体分为: - 后端多模块工程(核心基础能力 + 业务插件 + 管理端入口) - 前端 Vue3 管理后台 - 示例 / 文档 / SQL 初始化脚本 是由ruoyi-vue改造 顶层目录结构大致如下: ```text warm-sun ├── warm-admin # 后端 Web 服务入口(管理端) ├── warm-base # 后端基础能力模块聚合工程(公共模块) ├── warm-plugin # 后端业务插件模块聚合工程 ├── warm-vue3 # 前端 Vue3 管理后台 ├── _warm-test # 测试模块(可选,可按需移除) ├── doc # 项目文档 ├── sql # 数据库脚本(初始化表结构、基础数据) └── pom.xml # 顶层 Maven 聚合工程 ``` **希望一键三连,你的⭐️ Star ⭐️是我持续开发的动力** --- ## 二、后端模块结构 ### 2.1 `warm-admin`:管理端入口 / Web 服务 `warm-admin` 是后端单体启动入口,负责: - 启动 Solon 应用(`AppAdmin`) - 组装并依赖业务插件模块: - `warm-plugin-sys`:系统管理(用户、角色、菜单等) - `warm-plugin-job`:定时任务管理 - `warm-plugin-flow`:工作流集成 - `warm-plugin-gen`:代码生成(可选,通常生产环境不需要) - `warm-plugin-demo`:示例模块(可选,通常生产环境不需要) - 通过多环境配置(`app-dev.yml` / `app-test.yml` / `app.yml`)管理运行参数 说明:**只要启动 `warm-admin`,就可以以单体模式跑通后台管理系统**。 --- ### 2.2 `warm-base`:基础能力聚合模块 `warm-base` 是一个 **pom 聚合模块**,本身不直接打包运行,主要用于统一管理各基础子模块: ```text warm-base ├── _warm-base-bom # 基础模块 BOM 版本管理 ├── warm-base-core # 核心工具、常量、通用异常、分页等 ├── warm-base-doc # 接口文档集成(OpenAPI/Knife4j 配置等),**非必要**,如需使用,使用前引入此模块 ├── warm-base-web # Web 通用组件(拦截器、异常处理、统一返回结构等) ├── warm-base-json # JSON 序列化/反序列化配置 ├── warm-base-log # 日志统一封装(操作日志、访问日志等) ├── warm-base-excel # Excel 读写支持 ├── warm-base-thread # 线程池 / 异步任务封装 ├── warm-base-xss # XSS 过滤、防注入等安全防护 ├── warm-base-tenant # 多租户支持 ├── warm-base-eq # Easy-Query ORM 集成封装 ├── warm-base-redis # Redis 缓存支持 ├── warm-base-satoken # Sa-Token 登录鉴权集成 ├── warm-base-sensitive # 敏感数据脱敏,**非必要**,如需使用,使用前引入此模块 ├── warm-base-ratelimit # 接口限流、防刷封装,**非必要**,如需使用,使用前引入此模块 └── pom.xml ``` 设计思路: - 所有业务模块(如 `warm-plugin-*`、`warm-admin`)都通过依赖 `warm-base-*` 获得通用能力; - 基础能力之间尽量解耦,按功能拆成多个小 jar,方便裁剪 / 替换。 --- ### 2.3 `warm-plugin`:业务插件聚合模块 `warm-plugin` 同样是一个 **pom 聚合模块**,用于统一管理业务插件,各插件可按需引入到 `warm-admin` 中: ```text warm-plugin ├── _warm-plugin-bom # 插件模块 BOM 版本管理 ├── warm-plugin-job # 定时任务模块(任务定义、调度管理) ├── warm-plugin-sys # 系统管理模块(用户、角色、菜单、部门、字典等)、监控模块(在线用户、缓存、服务监控等) ├── warm-plugin-flow # 工作流集成模块(流程定义、流程实例、任务管理) ├── warm-plugin-gen # 代码生成模块,根据表结构生成实体、前端页面等(可选,通常生产环境不需要) ├── warm-plugin-demo # 示例模块(可选,通常生产环境不需要) └── pom.xml ``` 特点: - 插件化设计:每个业务域做成独立模块,可以在不同项目中复用; - 在 `warm-admin/pom.xml` 中通过 `` 按需引入需要的插件; - 注释掉的模块(如 `warm-plugin-flow`、`warm-plugin-demo`)可以作为扩展示例或后续扩展。 --- ### 2.4 `_warm-test`:测试模块(可选) `_warm-test`用于: - 演示框架能力(Redis、定时任务、Sa-Token 等)的最小用例; - 作为学习 / 开发参考。 在实际生产项目中,可以按需删除或不引入。 --- ## 三、前端模块结构(Vue3) ### 3.1 `warm-vue3`:管理后台前端 `warm-vue3` 是基于 **Vue3 + Vite** 的前端工程,对应 `warm-admin` 提供的后台接口。 主要结构: ```text warm-vue3 ├── src │ ├── api # 封装的后端接口请求 │ ├── assets # 静态资源(样式、图片等) │ ├── components # 通用组件 │ ├── directive # 自定义指令 │ ├── layout # 布局相关(侧边栏、头部导航等) │ ├── router # 路由配置 │ ├── store # 状态管理 │ ├── utils # 工具函数 │ ├── views # 各业务页面(用户管理、角色管理等) │ ├── App.vue │ └── main.js ├── bin # 本地开发 / 打包脚本(bat) ├── vite.config.js # Vite 构建配置 └── package.json ``` 前后端交互方式: - 前端通过 `src/api` 下的接口封装调用 `warm-admin` 暴露的 REST 接口; - 登录认证使用 Sa-Token + 前端路由守卫(`permission.js`)实现。 --- ## 四、SQL 与文档 ### 4.1 `sql/warm.sql` - 项目初始化数据库脚本: - 基础表结构(用户、角色、菜单、定时任务等); - 必要的初始化数据(管理员账号、默认菜单等)。 - 启动项目前,需要在对应数据库中执行该脚本。 ### 4.2 `doc` 目录 - `其他文档`:单元测试、Maven 插件、微服务搭建、sa-token 集成等说明。 --- ## 五、设计原则小结 1. 多模块 + 插件化 - `warm-base` 提供通用基础能力; - `warm-plugin` 提供可插拔业务模块; - `warm-admin` 作为单体入口,通过依赖插件组合出完整后台系统。 2. 单体 / 微服务均可扩展 - 当前工程以单体模式为主(启动 `warm-admin` 即可运行); - 后续如需拆成微服务,可参考当前模块拆分方式,把业务插件独立成服务。 3. 前后端分离 - `warm-admin` 只提供 API; - `warm-vue3` 负责页面展示和交互,通过统一的 API 封装与后端通信。 --- ## 六、技术栈 ### 1. 后端架构 | 名称 | 描述 | |---------------------------------------------------------|----------------| | [Solon](https://solon.noear.org/) | Java 企业级应用开发框架 | | [Smart-Http](https://smartboot.tech/smart-http/) | HTTP 框架 | | [Sa-Token](https://sa-token.cc/) | 权限认证框架 | | [Easy-Query]( https://www.easy-query.com/) | ORM 框架 | | [HikariCP](https://github.com/brettwooldridge/HikariCP) | 数据库 | | [Mysql](https://www.mysql.com/) | 数据库 | | [Redis](https://redis.io/) | 缓存数据库 | | [Redisx](https://gitee.com/noear/redisx) | Redis客户端 | | [Snack4](https://solon.noear.org/article/snack) | JSON 处理框架 ** | | [Hutool](https://hutool.cn/) | Java 工具类库 | | [Warm-Flow](https://www.warm-flow.com/) | 工作流框架 | | [Poi](https://poi.apache.org/) | Excel框架 | | [MapStruct](https://mapstruct.org/) | 映射框架 | | [quartz](https://quartz.sagui.dev/) | 定时任务 | ### 2. 前端技术栈 | 名称 | 描述 | |------------------------------------------------------|--------------------------------------| | [Vue3](https://cn.vuejs.org/) | 渐进式 JavaScript 框架 | | [Element Plus](https://element-plus.gitee.io/zh-CN/) | 一套为开发者、设计师和产品经理准备的基于 Vue 3.0 的桌面端组件库 | | [Vite](https://vitejs.dev/) | 构建工具 | --- ## 七、功能列表 | 名称 | 功能描述 | |--------|-----------------------------------------| | 用户管理 | 用户的管理配置 如:新增用户、分配用户所属部门、角色、岗位等 | | 部门管理 | 配置系统组织机构(公司、部门、小组) 树结构展现支持数据权限 | | 岗位管理 | 配置系统用户所属担任职务 | | 菜单管理 | 配置系统菜单、操作权限、按钮权限标识等 | | 角色管理 | 角色菜单权限分配、设置角色按机构进行数据范围权限划分 | | 字典管理 | 对系统中经常使用一些较为固定的数据进行维护 | | 参数管理 | 对系统动态配置常用参数 | | 通知公告 | 系统通知公告信息发布维护 | | 操作日志 | 系统正常操作日志记录和查询 系统异常信息日志记录和查询 | | 登录日志 | 系统登录日志记录查询包含登录异常 | | 租户管理 | 系统内租户的管理 如:租户套餐、过期时间、用户数量、企业信息等 | | 租户套餐管理 | 系统内租户所能使用的套餐管理 如:套餐内所包含的菜单等 | | 在线用户管理 | 已登录系统的在线用户信息监控与强制踢出操作 | | 定时任务 | 运行报表、任务管理(添加、修改、删除)、日志管理、执行器管理等 | | 缓存监控 | 对系统的缓存信息查询,命令统计等。 | | 缓存列表 | 对系统的缓存进行管理等。 | | 代码生成 | 多数据源前后端代码的生成(java、html、xml、sql)支持CRUD下载 | | 系统接口 | 根据业务代码自动生成相关的api接口文档 | ## 八、改造后提升 - 启动速度由 6.7s--> 1.2s - 生产环境打包后大小 86.2M --> 40M - 内存占用由 660M--> 148M - 支持前后端代码生成 让我惊喜的是提升如此巨大,并且solon、snack4、satoken、hutool和smart-http国内开源项目的开源社区及其活跃,很多问题可以快速解决 --- ## 九、联系方式 联系方式,微信:**warm-houhou** --- ## 十、在线体验 - admin/admin123 演示地址:暂时无 文档地址:暂时无 --- ## 十一、部署步骤 准备工作 ``` JDK >= 25 Mysql >= 5.7.0 (推荐5.7版本,以上的没测过) Redis >= 5.0 Maven >= 3.6 Node >= 16 ``` 后端启动 1、导入/sql/warm.sql 2、修改数据库和redis配置 3、启动warm-admin下AppAdmin ![img](https://foruda.gitee.com/images/1768461359243611669/f85d521b_2218307.png) 前端部署 ``` # 克隆项目 git clone https://gitee.com/min290/warm-sun.git # 进入项目目录 cd warm-vue3 # 安装依赖 yarn --registry=https://registry.npmmirror.com # 启动服务 yarn dev # 构建测试环境 yarn build:stage # 构建生产环境 yarn build:prod # 前端访问地址 http://localhost:80 ``` ## 十二、演示图 | ![img](https://foruda.gitee.com/images/1768464542873528302/e5a34f6c_2218307.png) | ![img](https://foruda.gitee.com/images/1768464573380113035/4f9e1cad_2218307.png) | | ------------------------------------------------------------ | ------------------------------------------------------------ | | ![img](https://foruda.gitee.com/images/1768464590867294919/586fadec_2218307.png) | ![img](https://foruda.gitee.com/images/1768464687103062840/b2dd0fcd_2218307.png) | | ![img](https://foruda.gitee.com/images/1768464704669074611/c88fe7a6_2218307.png) | ![img](https://foruda.gitee.com/images/1768464714965021126/abdc91bf_2218307.png) | ## 十三、你可以请作者喝杯咖啡表示鼓励 ![donate](https://foruda.gitee.com/images/1755507088234964064/7c45f897_2218307.png) ## 十四、最后要感谢: [solon](https://gitee.com/noear/solon.git): 生态框架支持 [RuoYi-Vue](https://gitee.com/y_project/RuoYi-Vue.git):系统管理 [Sa-Token](https://gitee.com/dromara/sa-token.git):登录鉴权 [hutool](https://gitee.com/dromara/hutool.git):工具类 [Easy-Query]( https://www.easy-query.com/):orm框架 [smart-http](https://gitee.com/smartboot/smart-http.git):web服务器 [Ruoyi-Vue-Plus](https://gitee.com/dromara/RuoYi-Vue-Plus.git):多租户