Files
yidaima/RuoYi-Vue/README.md
2026-05-21 19:35:00 +08:00

244 lines
9.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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<br/>/dev-api 代理"]
B --> C["ruoyi-admin<br/>Spring Boot 入口"]
C --> D["ruoyi-framework<br/>安全、配置、Web 基础设施"]
C --> E["ruoyi-system<br/>用户、角色、菜单、字典等"]
C --> F["ruoyi-generator<br/>代码生成与扩展平台"]
C --> G["ruoyi-quartz<br/>定时任务"]
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 是否已导入,尤其是模板、数据源、项目结构和项目关联表。