自用前后端代码生成器
项目名称:universal-code-generator、简称ucg
项目开源地址:https://github.com/boommanpro/yudao-boot-mini/tree/feature/universal-code-generator
最新release下载地址:https://github.com/boommanpro/yudao-boot-mini/releases/tag/1.1.0(仅需依赖mysql即可启动,release具有全部依赖,前端已经打包好)
背景
团队人员比较多,涉及项目比较多,需要保持一套标准且可以快速迭代的方式,避免简单的CRUD占用太多时间,遂二开yudao-mini的代码生成,效果如下:
项目展示
①项目管理
你可以管理多个代码项目,他是总的入库,如果你管理多个项目,可以为每个项目定制一套模板和变量规则。
注意:支持复制,导入和导出,可以跨部门分享方案。
②变量管理
你在代码模板里面需要使用到的变量都可以在这里维护,理论来说当前变量已经可以满足大多数情况。
支持SpringEL扩展变量,后序可扩展更多语法。
③代码模板
你可以管理和维护代码模板,生成后的路径,在线管理你的模板。
支持批量删除,因为导入模板后可能很多都没有用。
④模板在线编辑
你可以在线编辑模板,且使用的是vs-code的编辑器哦。如果你的项目也想引入:https://boommanpro.cn/post/vue3-vite-monaco-editor
⑤代码生成
在原本基础上添加批量预览,且批量预览后可以批量下载的功能~
实现思路
数据库设计如下:
通过项目、项目变量、项目代码模板等维护一套项目维度的模板。
create table ucg_project
(
id bigint auto_increment comment '编号,自增,唯一标识一个项目'
primary key,
project_name varchar(128) not null comment '项目名称,不能为空',
project_description text null comment '项目描述,文本类型,可以为空',
enable_status bit default b'1' not null comment '启动状态',
creator varchar(64) collate utf8mb4_unicode_ci default '' null comment '创建者,默认为空字符串',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间,默认为当前时间戳',
updater varchar(64) collate utf8mb4_unicode_ci default '' null comment '更新者,默认为空字符串',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间,默认为当前时间戳,更新记录时自动更新',
deleted bit default b'0' not null comment '是否删除,位类型,默认为0(未删除)'
)
comment '存储项目的基本信息';
create table ucg_project_variable
(
id bigint auto_increment comment '编号,自增,唯一标识一个项目变量'
primary key,
project_id bigint not null comment '工厂ID,与`ucg_project`表的`id`相关联,标识所属项目',
variable_name varchar(255) not null comment '变量名称,不能为空',
expression_type varchar(16) not null comment '表达式类型,标识变量的表达式类型,不能为空',
variable_expression varchar(128) not null comment '变量表达式,标识变量的具体表达式,不能为空',
execute_order int default 1 null comment '执行顺序,默认为1',
creator varchar(64) collate utf8mb4_unicode_ci default '' null comment '创建者,默认为空字符串',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间,默认为当前时间戳',
updater varchar(64) collate utf8mb4_unicode_ci default '' null comment '更新者,默认为空字符串',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间,默认为当前时间戳,更新记录时自动更新',
deleted bit default b'0' not null comment '是否删除,位类型,默认为0(未删除)'
)
comment '存储与项目相关的变量信息';
create table ucg_code_template
(
id bigint auto_increment comment '编号,自增,唯一标识一个代码模板',
project_id bigint not null comment '项目id',
template_name varchar(128) not null comment '模板名称,不能为空',
template_description varchar(256) null comment '模板描述',
template_type varchar(128) not null comment '模板类型 SERVER FRONT',
template_type_value varchar(128) not null comment '模板类型值',
file_type varchar(128) not null comment '文件类型,标识模板的文件类型,不能为空',
file_path_expression varchar(512) not null comment '文件路径,长文本类型,标识模板文件的存储路径,不能为空',
original_path varchar(512) null comment '原始路径',
template_content longtext not null comment '模板内容,长文本类型,存储模板的具体内容,不能为空',
creator varchar(64) collate utf8mb4_unicode_ci default '' null comment '创建者,默认为空字符串',
create_time datetime default CURRENT_TIMESTAMP not null comment '创建时间,默认为当前时间戳',
updater varchar(64) collate utf8mb4_unicode_ci default '' null comment '更新者,默认为空字符串',
update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新时间,默认为当前时间戳,更新记录时自动更新',
deleted bit default b'0' not null comment '是否删除,位类型,默认为0(未删除)',
primary key (id, project_id)
)
comment '存储代码模板的基本信息';
更多优化
因为定义的是代码模板生成工具,所以项目需要最简化启动部署,仅需mysql即可启动,无需部署nginx配置前端,无需部署redis等服务。