# RuoYi-Vue 代码生成平台 基于 RuoYi-Vue v3.8.8 二次开发的前后端分离后台管理系统。项目保留若依的用户、角色、菜单、日志、监控、定时任务、代码生成等基础能力,并在 `ruoyi-generator` 与 `ruoyi-ui/src/views/generator` 下扩展了项目级代码生成平台能力。 当前仓库更适合按“后台基础框架 + 可配置代码生成平台”来理解:先用若依提供认证、权限、菜单、数据权限、日志和基础运维能力,再围绕项目、数据源、模板、模块、代码片段和项目结构生成完整代码包。 ## 技术栈 | 层级 | 技术 | | --- | --- | | 后端 | Java 8、Spring Boot 2.5.15、Spring Framework 5.3.39、Spring Security 5.7.12 | | 数据访问 | MyBatis、PageHelper、Druid、MySQL | | 缓存与任务 | Redis、Quartz | | 接口与工具 | JWT、Swagger/Springfox 3、Velocity、Fastjson2、Apache POI、OSHI | | 前端 | Vue 2.6.12、Vue CLI 4.4.6、Element UI 2.15.14、Vue Router、Vuex、Axios | | 构建 | Maven、npm | ## 架构概览 ```mermaid flowchart LR A["浏览器 / ruoyi-ui"] --> B["Vue DevServer
/dev-api 代理"] B --> C["ruoyi-admin
Spring Boot 入口"] C --> D["ruoyi-framework
安全、配置、Web 基础设施"] C --> E["ruoyi-system
用户、角色、菜单、字典等"] C --> F["ruoyi-generator
代码生成与扩展平台"] C --> G["ruoyi-quartz
定时任务"] C --> H["MySQL"] C --> I["Redis"] F --> J["Velocity 模板"] F --> K["代码预览 / ZIP 下载"] ``` ## 目录结构 | 路径 | 说明 | | --- | --- | | `ruoyi-admin` | 后端启动入口,打包为可执行 `war`;包含 Web Controller、配置文件和静态资源入口。 | | `ruoyi-framework` | 若依框架层,承载安全认证、权限校验、数据源、Web 配置、拦截器、异步任务等基础能力。 | | `ruoyi-system` | 系统管理业务模块,包括用户、角色、菜单、部门、岗位、字典、参数、通知公告、日志等。 | | `ruoyi-quartz` | 定时任务模块,封装 Quartz 任务、任务日志和调度管理。 | | `ruoyi-generator` | 代码生成模块;包含若依原生表驱动代码生成,以及本项目扩展的项目、模板、数据源、模块、代码片段、项目结构等功能。 | | `ruoyi-common` | 通用工具、常量、注解、基础实体、响应对象、异常、工具类等公共代码。 | | `ruoyi-ui` | Vue 2 + Element UI 前端工程。 | | `sql` | 数据库初始化与扩展脚本。 | | `doc` | 代码生成平台规划文档。 | | `docs` | 部分扩展 Controller 的接口说明文档。 | | `bin`、`ry.bat`、`ry.sh` | 启停脚本与辅助脚本。 | ## 核心功能 ### 若依基础能力 - 用户、角色、菜单、部门、岗位管理。 - 字典、参数、通知公告管理。 - 登录日志、操作日志、在线用户管理。 - 服务监控、缓存监控、Druid 连接池监控。 - Quartz 定时任务与任务日志。 - Swagger 接口文档、表单构建、若依原生代码生成。 ### 代码生成平台扩展 | 功能 | 后端接口前缀 | 前端位置 | | --- | --- | --- | | 数据源管理 | `/generator/datasource` | `ruoyi-ui/src/views/generator/datasource` | | 项目管理 | `/generator/project` | `ruoyi-ui/src/views/generator/project` | | 项目关联表 | `/generator/project/table` | `ProjectTableConfig.vue` | | 项目关联模块 | `/generator/project/module` | `ProjectModuleConfig.vue` | | 项目模板配置 | `/generator/project/template` | `ProjectTemplateConfig.vue` | | 项目结构树 | `/generator/structure` | `ruoyi-ui/src/views/generator/structure` | | 模板管理 | `/generator/template` | `ruoyi-ui/src/views/generator/template` | | 模板文件管理 | `/generator/templateFile` | `templateFile.js` 与模板相关页面 | | 功能模块管理 | `/generator/module` | `ruoyi-ui/src/views/generator/module` | | 代码片段管理 | `/generator/snippet` | `ruoyi-ui/src/views/generator/snippet` | | 原生表代码生成 | `/tool/gen` | `ruoyi-ui/src/views/tool/gen` | 扩展生成链路大致为:维护数据源和数据表,配置项目基本信息、项目关联表、模块、模板和结构树,通过 `GenProjectController` 预览或下载项目结构与生成代码。 ## 本地启动 ### 1. 环境准备 - JDK 1.8 - Maven 3.6+ - MySQL 5.7/8.0 - Redis 5+ - Node.js:`package.json` 要求 `>=8.9`,实际开发建议使用 Node 14/16 LTS - npm 6+ ### 2. 初始化数据库 默认数据库配置在 `ruoyi-admin/src/main/resources/application-druid.yml`: ```yaml spring: datasource: druid: master: url: jdbc:mysql://localhost:3306/ry username: root password: 123456 ``` 创建数据库: ```sql CREATE DATABASE ry DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; ``` 新库推荐直接导入完整脚本: ```bash mysql -uroot -p ry < sql/db.sql ``` `sql/db.sql` 已整合若依基础表、Quartz 调度表、代码生成平台扩展表、初始化数据、代码生成平台菜单和按钮权限。分散脚本仍可作为增量或排查参考: 1. `sql/ry_20240629.sql`:若依基础表与基础数据。 2. `sql/quartz.sql`:Quartz 调度表。 3. `sql/gen_project.sql`:项目基础信息表 `gen_project`。 4. `sql/module_management.sql`:功能模块、代码片段、项目模块关系表。 5. `sql/gen_table_project_rel.sql`:项目与代码生成表关系。 6. `sql/sys_project_structure.sql`:项目结构节点表与初始化结构。 7. `sql/add_create_table_sql_field.sql`:给 `gen_table` 增加建表 SQL 字段。 8. `ruoyi-generator/sql/template_file_update.sql`:模板文件表增量字段。 ### 3. 配置后端 重点检查以下配置: | 文件 | 关键项 | | --- | --- | | `ruoyi-admin/src/main/resources/application.yml` | `server.port` 默认 `8080`,`server.servlet.context-path` 默认 `/`,Redis 地址,上传目录 `ruoyi.profile`,Swagger 开关。 | | `ruoyi-admin/src/main/resources/application-druid.yml` | MySQL 地址、账号、密码、Druid 控制台账号。 | | `ruoyi-generator/src/main/resources/generator.yml` | 代码生成默认作者、包名、表前缀策略。 | 启动后端: ```bash mvn clean install -DskipTests mvn -pl ruoyi-admin -am spring-boot:run ``` 也可以打包后运行: ```bash mvn clean package -DskipTests java -jar ruoyi-admin/target/ruoyi-admin.war ``` 后端默认地址:`http://localhost:8080` ### 4. 启动前端 ```bash cd ruoyi-ui npm install --registry=https://registry.npmmirror.com npm run dev ``` 前端默认端口来自 `ruoyi-ui/vue.config.js`,为 `80`。开发环境的 `VUE_APP_BASE_API=/dev-api`,会代理到 `http://localhost:8080/`。 浏览器访问:`http://localhost:80` 默认账号: ```text admin / admin123 ``` 如果本机 80 端口被占用,可以临时指定端口: ```bash # Windows PowerShell $env:port=81 npm run dev ``` ## 构建与发布 后端构建: ```bash mvn clean package -DskipTests ``` 产物位于: ```text ruoyi-admin/target/ruoyi-admin.war ``` 前端构建: ```bash cd ruoyi-ui npm run build:prod ``` 产物位于: ```text ruoyi-ui/dist ``` 生产环境需要注意: - `ruoyi-ui/vue.config.js` 中生产 `publicPath` 为 `/yidaima`。 - `ruoyi-ui/.env.production` 中接口前缀为 `/prod-api`。 - 如果部署在子路径或网关后面,需要同步调整 Nginx、前端 `publicPath`、接口代理和后端 `context-path`。 ## 常用入口 | 入口 | 地址 | | --- | --- | | 后端服务 | `http://localhost:8080` | | 前端页面 | `http://localhost:80` | | Swagger UI | `http://localhost:8080/swagger-ui/index.html` | | Druid 控制台 | `http://localhost:8080/druid`,默认 `ruoyi / 123456` | ## 开发约定 - 后端扩展 Controller 主要位于 `ruoyi-generator/src/main/java/com/ruoyi/generator/controller`。 - 后端扩展实体、Mapper、Service 位于 `ruoyi-generator/src/main/java/com/ruoyi/generator/{domain,mapper,service}`。 - MyBatis XML 位于 `ruoyi-generator/src/main/resources/mapper/generator`。 - 前端接口封装位于 `ruoyi-ui/src/api/generator`。 - 前端扩展页面位于 `ruoyi-ui/src/views/generator`。 - 权限标识沿用若依格式,例如 `generator:project:list`、`generator:template:add`、`tool:gen:preview`。 - 代码生成模板分为若依默认模板 `ruoyi-generator/src/main/resources/vm` 与扩展模板目录 `ruoyi-generator/src/main/resources/qing`。 ## 文档索引 - `doc/code-generator-platform.md`:代码生成平台功能规划。 - `docs/*.md`:扩展 Controller 的接口说明。 - `ruoyi-ui/README.md`:前端工程原始启动说明。 - 若依官方文档:`http://doc.ruoyi.vip` ## 排查提示 - 后端启动失败优先检查 MySQL、Redis 是否启动,以及 `application-druid.yml` 中数据库账号密码是否正确。 - 前端请求 404 或跨域异常时,检查 `.env.development` 的 `VUE_APP_BASE_API` 与 `vue.config.js` 的代理目标。 - 使用生产构建部署到非根路径时,检查 `/yidaima`、`/prod-api` 与网关转发规则是否一致。 - 生成平台页面报表不存在时,优先核对扩展 SQL 是否已导入,尤其是模板、数据源、项目结构和项目关联表。