签入版本

This commit is contained in:
2026-09-12 23:12:15 +08:00
commit 91998056ca
1841 changed files with 341325 additions and 0 deletions
@@ -0,0 +1,182 @@
# 代码生成器
代码生成器是项目的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码,包括模型、仓库、服务、路由、表单、前端 API、前端页面等全套代码。
## 功能概述
代码生成器支持以下功能:
1. **表结构解析**:自动解析数据库表结构,提取字段信息
2. **代码生成**:根据模板生成前后端 CRUD 代码
3. **自定义配置**:支持配置生成选项,如模块名、作者、日期等
4. **模板扩展**:支持自定义模板,满足个性化需求
## 使用方式
### CLI 命令行使用
```bash
# 生成指定表的代码
python src/modules/generator/generate.py --table=flask_position
# 生成多个表的代码
python src/modules/generator/generate.py --table=flask_position,flask_level
# 生成所有表的代码
python src/modules/generator/generate.py --all
```
### Web 管理界面
登录管理后台,进入「系统工具 → 代码生成」页面:
1. 选择要生成代码的表
2. 配置生成选项(模块名、作者、日期等)
3. 点击「生成」按钮
4. 下载生成的代码文件
## 生成内容
代码生成器会生成以下文件:
### 后端文件
```
src/modules/{group}/{name}/
├── __init__.py # 模块初始化
├── models.py # 数据模型
├── repository.py # 数据仓库
├── service.py # 业务服务
├── router.py # 路由定义
└── schema.py # 表单验证
```
### 前端文件
```
ui/src/api/{group}/{name}/
└── index.ts # API 接口
ui/src/views/{group}/{name}/
├── index.vue # 列表页面
├── components/ # 组件目录
│ ├── AddModal.vue # 新增弹窗
│ ├── EditModal.vue # 编辑弹窗
│ └── DetailModal.vue # 详情弹窗
└── index.ts # 页面配置
```
## 配置文件
代码生成器的配置文件位于 `src/modules/generator/config.py`:
```python
# 代码生成配置
GENERATOR_CONFIG = {
# 作者名称
'author': 'DjangoAdmin',
# 日期格式
'date_format': '%Y-%m-%d %H:%M:%S',
# 是否覆盖已有文件
'overwrite': False,
# 模板目录
'template_dir': 'src/modules/generator/templates',
# 输出目录
'output_dir': 'src/modules',
}
```
## 模板系统
代码生成器使用 Jinja2 模板引擎,模板文件位于 `src/modules/generator/templates/` 目录:
```
templates/
├── backend/
│ ├── models.py.j2 # 模型模板
│ ├── repository.py.j2 # 仓库模板
│ ├── service.py.j2 # 服务模板
│ ├── router.py.j2 # 路由模板
│ └── schema.py.j2 # 表单模板
└── frontend/
├── api.ts.j2 # API 模板
├── index.vue.j2 # 列表页面模板
├── AddModal.vue.j2 # 新增弹窗模板
├── EditModal.vue.j2 # 编辑弹窗模板
└── DetailModal.vue.j2 # 详情弹窗模板
```
### 模板变量
模板中可用的变量:
| 变量 | 说明 | 示例 |
|:-----|:-----|:-----|
| `table_name` | 表名 | `flask_position` |
| `table_comment` | 表注释 | `岗位表` |
| `module_name` | 模块名 | `position` |
| `class_name` | 类名 | `Position` |
| `columns` | 字段列表 | `[{name, type, comment, ...}]` |
| `author` | 作者 | `DjangoAdmin` |
| `date` | 生成日期 | `2026-09-08 12:00:00` |
### 字段类型映射
| 数据库类型 | Python 类型 | WTForms 类型 | Vue 类型 |
|:-----------|:------------|:-------------|:---------|
| `INT` | `int` | `IntegerField` | `number` |
| `VARCHAR` | `str` | `StringField` | `string` |
| `TEXT` | `str` | `TextAreaField` | `string` |
| `DATETIME` | `datetime` | `DateTimeField` | `string` |
| `DECIMAL` | `Decimal` | `DecimalField` | `number` |
| `TINYINT` | `int` | `IntegerField` | `number` |
## 实战案例
### 生成岗位管理模块
```bash
# 1. 生成代码
python src/modules/generator/generate.py --table=flask_position
# 2. 查看生成的文件
ls -la src/modules/system/position/
# 3. 注册路由
# 编辑 src/routes/v1.py,添加 position_blue 到 BLUEPRINTS 列表
# 4. 添加菜单和权限节点
# 登录管理后台,进入「系统管理 → 菜单管理」添加菜单和权限节点
# 5. 测试接口
# 使用 curl 或 Postman 测试生成的接口
```
### 自定义模板
如果需要自定义生成的代码风格,可以修改模板文件:
```bash
# 编辑模型模板
vim src/modules/generator/templates/backend/models.py.j2
# 编辑服务模板
vim src/modules/generator/templates/backend/service.py.j2
# 编辑前端页面模板
vim src/modules/generator/templates/frontend/index.vue.j2
```
## 注意事项
:::warning 重要提示
1. **表名必须有前缀**:表名必须以 `DB_PREFIX`(默认 `flask_`)开头
2. **主键必须是 id**:代码生成器假设主键字段名为 `id`
3. **软删除字段**:代码生成器会自动添加 `is_delete` 字段的过滤
4. **生成后需要手动注册**:生成的路由需要手动添加到 `BLUEPRINTS` 列表
5. **菜单需要手动添加**:生成的权限节点需要手动添加到菜单管理
:::
## 总结
代码生成器是项目开发的重要工具,可以根据数据库表结构一键生成前后端 CRUD 代码。支持 CLI 命令行和 Web 管理界面两种使用方式,支持自定义模板和配置。生成的代码遵循项目的分层架构和编码规范,可以直接使用或根据需要进行修改。