58 lines
3.3 KiB
Markdown
58 lines
3.3 KiB
Markdown
|
|
# 代码模板包接入说明
|
|||
|
|
|
|||
|
|
当前默认模板包是 `qing`。新增模板时,不再改生成服务里的固定 ID 分支,而是通过模板包元数据和模板记录接入。
|
|||
|
|
|
|||
|
|
## 新增模板包步骤
|
|||
|
|
|
|||
|
|
1. 在 `sys_template_bundle` 增加一条启用记录。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
insert into sys_template_bundle
|
|||
|
|
(bundle_code, bundle_name, description, status, is_default,
|
|||
|
|
support_backend, support_frontend, support_admin_frontend, support_sql,
|
|||
|
|
sort_order, create_by, create_time)
|
|||
|
|
values
|
|||
|
|
('vue3-plus', 'Vue3 Plus Template', 'Spring Boot + Vue3 runnable template', '0', '0',
|
|||
|
|
'1', '1', '1', '1', 20, 'admin', sysdate());
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 在 `sys_template` 为每个支持的目标类型增加模板记录,并设置同一个 `bundle_code`。
|
|||
|
|
|
|||
|
|
```sql
|
|||
|
|
insert into sys_template
|
|||
|
|
(template_name, template_path, template_desc, template_type, bundle_code, template_status, create_by, create_time, remark)
|
|||
|
|
values
|
|||
|
|
('Vue3 Plus Backend Template', '/vue3-plus/backend', 'Backend template', 'backend', 'vue3-plus', 0, 'admin', sysdate(), 'vue3-plus'),
|
|||
|
|
('Vue3 Plus Admin Frontend Template', '/vue3-plus/admin_frontend', 'Admin frontend template', 'admin_frontend', 'vue3-plus', 0, 'admin', sysdate(), 'vue3-plus'),
|
|||
|
|
('Vue3 Plus Portal Frontend Template', '/vue3-plus/frontend', 'Portal frontend template', 'frontend', 'vue3-plus', 0, 'admin', sysdate(), 'vue3-plus');
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. 为这些模板补齐 `sys_template_file` 和 `sys_project_structure`。
|
|||
|
|
|
|||
|
|
4. 前台生成页会从 `/front/project/options/code-templates` 读取启用模板包,创建或更新项目时提交 `codeTemplate`。
|
|||
|
|
|
|||
|
|
5. 预览页会从 `/front/project/{projectId}/template-types` 读取当前项目支持的目标类型,按返回值渲染结构 Tab。
|
|||
|
|
|
|||
|
|
## 字段约定
|
|||
|
|
|
|||
|
|
- `bundle_code`: 模板包唯一编码,例如 `qing`、`vue3-plus`。
|
|||
|
|
- `template_type`: 目标类型,当前支持 `backend`、`frontend`、`admin_frontend`、`sql`。
|
|||
|
|
- `front_project.code_template`: 项目选择的模板包。为空时后端回退到默认模板包 `qing`。
|
|||
|
|
|
|||
|
|
如果模板包暂不支持某一目标类型,把 `sys_template_bundle.support_*` 设为 `0`,前台预览和后端批量下载都会跳过该类型。
|
|||
|
|
|
|||
|
|
## 完整项目反向生成
|
|||
|
|
|
|||
|
|
模板反向生成使用 `qing-compatible` 投影,不再把上传项目的每个源码文件都写成动态模板文件:
|
|||
|
|
|
|||
|
|
- 每次创建一个模板包,以及 `backend`、`admin_frontend`、`frontend` 三个类型模板。
|
|||
|
|
- 普通源码、配置和二进制资源按类型压缩为 skeleton 制品,写入 `sys_template_artifact`。
|
|||
|
|
- 从后端选择分层文件最完整的一组业务代码作为代表样例,转换为 `entity.java.vm`、
|
|||
|
|
`mapper.java.vm`、`service.java.vm`、`serviceImpl.java.vm`、`controller.java.vm` 和 `mapper.xml.vm`。
|
|||
|
|
- 两个 Vue 工程中与代表样例对应的页面/API转换为 Qing 的按表槽位,其余文件保留在 skeleton 中。
|
|||
|
|
- `table_id = 0` 的结构节点按项目中的每张表展开;项目级节点仍只生成一次。
|
|||
|
|
- 生成项目时先渲染动态槽位,再合并 skeleton;动态输出与 skeleton 同名时以动态输出为准。
|
|||
|
|
- SQL继续使用现有 SQL 生成链路,因此不会额外创建 `template_type = sql` 的模板记录。
|
|||
|
|
|
|||
|
|
部署升级时需要先执行 `sql/template_artifacts.sql`。反向生成的模板包和类型模板默认保持停用,完成试生成、Maven 编译、两个前端构建和 SQL 验证后再启用。
|