refactor(generator): 生成菜单脚本添加ID (#109)

This commit is contained in:
luoqiz
2024-12-12 13:33:35 +08:00
committed by GitHub
parent 4c8ebf2d0f
commit 9ebecdc193
2 changed files with 42 additions and 36 deletions

View File

@@ -25,8 +25,13 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.ZipUtil;
import cn.hutool.db.meta.Column;
import cn.hutool.db.meta.Table;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import cn.hutool.extra.template.engine.freemarker.FreemarkerEngine;
import cn.hutool.system.SystemUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import freemarker.ext.beans.BeansWrapper;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -47,7 +52,6 @@ import top.continew.admin.generator.service.GeneratorService;
import top.continew.starter.core.autoconfigure.project.ProjectProperties;
import top.continew.starter.core.constant.StringConstants;
import top.continew.starter.core.exception.BusinessException;
import top.continew.starter.core.util.TemplateUtils;
import top.continew.starter.core.validation.CheckUtils;
import top.continew.starter.data.core.enums.DatabaseType;
import top.continew.starter.data.core.util.MetaUtils;
@@ -224,6 +228,12 @@ public class GeneratorServiceImpl implements GeneratorService {
// 渲染代码
String classNamePrefix = innerGenConfig.getClassNamePrefix();
Map<String, GeneratorProperties.TemplateConfig> templateConfigMap = generatorProperties.getTemplateConfigs();
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("templates", TemplateConfig.ResourceMode.CLASSPATH));
if (engine instanceof FreemarkerEngine) {
((FreemarkerEngine) engine).getConfiguration().setSharedVariable("statics", BeansWrapper.getDefaultInstance().getStaticModels());
}
for (Map.Entry<String, GeneratorProperties.TemplateConfig> templateConfigEntry : templateConfigMap.entrySet()) {
GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue();
// 移除需要忽略的字段
@@ -250,8 +260,8 @@ public class GeneratorServiceImpl implements GeneratorService {
: this.getFrontendFileName(classNamePrefix, className, extension);
}
generatePreview.setFileName(fileName);
generatePreview.setContent(TemplateUtils.render(templateConfig.getTemplatePath(), BeanUtil
.beanToMap(innerGenConfig)));
generatePreview.setContent(engine.getTemplate(templateConfig.getTemplatePath())
.render(BeanUtil.beanToMap(innerGenConfig)));
this.setPreviewPath(generatePreview, innerGenConfig, templateConfig);
}
return generatePreviewList;

View File

@@ -1,45 +1,41 @@
SET @parentId = ${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c};
-- ${businessName}管理菜单
INSERT INTO `sys_menu`
(`title`, `parent_id`, `type`, `path`, `name`, `component`, `redirect`, `icon`, `is_external`, `is_cache`, `is_hidden`, `permission`, `sort`, `status`, `create_user`, `create_time`)
(`id`, `title`, `parent_id`, `type`, `path`, `name`, `component`, `redirect`, `icon`, `is_external`, `is_cache`, `is_hidden`, `permission`, `sort`, `status`, `create_user`, `create_time`)
VALUES
('${businessName}管理', 1000, 2, '/${apiModuleName}/${apiName}', '${classNamePrefix}', '${apiModuleName}/${apiName}/index', NULL, NULL, b'0', b'0', b'0', NULL, 1, 1, 1, NOW());
SET @parentId = LAST_INSERT_ID();
(@parentId, '${businessName}管理', 1000, 2, '/${apiModuleName}/${apiName}', '${classNamePrefix}', '${apiModuleName}/${apiName}/index', NULL, NULL, b'0', b'0', b'0', NULL, 1, 1, 1, NOW());
-- ${businessName}管理按钮
INSERT INTO `sys_menu`
(`title`, `parent_id`, `type`, `permission`, `sort`, `status`, `create_user`, `create_time`)
(`id`, `title`, `parent_id`, `type`, `permission`, `sort`, `status`, `create_user`, `create_time`)
VALUES
('列表', @parentId, 3, '${apiModuleName}:${apiName}:list', 1, 1, 1, NOW()),
('详情', @parentId, 3, '${apiModuleName}:${apiName}:detail', 2, 1, 1, NOW()),
('新增', @parentId, 3, '${apiModuleName}:${apiName}:add', 3, 1, 1, NOW()),
('修改', @parentId, 3, '${apiModuleName}:${apiName}:update', 4, 1, 1, NOW()),
('删除', @parentId, 3, '${apiModuleName}:${apiName}:delete', 5, 1, 1, NOW()),
('导出', @parentId, 3, '${apiModuleName}:${apiName}:export', 6, 1, 1, NOW());
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '列表', @parentId, 3, '${apiModuleName}:${apiName}:list', 1, 1, 1, NOW()),
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '详情', @parentId, 3, '${apiModuleName}:${apiName}:detail', 2, 1, 1, NOW()),
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '新增', @parentId, 3, '${apiModuleName}:${apiName}:add', 3, 1, 1, NOW()),
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '修改', @parentId, 3, '${apiModuleName}:${apiName}:update', 4, 1, 1, NOW()),
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '删除', @parentId, 3, '${apiModuleName}:${apiName}:delete', 5, 1, 1, NOW()),
(${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '导出', @parentId, 3, '${apiModuleName}:${apiName}:export', 6, 1, 1, NOW());
<#---- PostgreSQL切换 PostgreSQL 数据库时请注释掉其他数据库脚本,并解开此段注释)-->
<#---- 创建序列(如果还不存在的话)-->
<#--CREATE SEQUENCE IF NOT EXISTS sys_menu_id_seq;-->
<#--DO $$-->
<#-- DECLARE sys_menu_id_seq INT8 := ${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c};-->
<#--BEGIN-->
<#---- ${businessName}管理菜单-->
<#--WITH inserted_menu AS (-->
<#--INSERT INTO "sys_menu"-->
<#--("id", "title", "parent_id", "type", "path", "name", "component", "redirect", "icon", "is_external", "is_cache", "is_hidden", "permission", "sort", "status", "create_user", "create_time")-->
<#--VALUES-->
<#--(nextval('sys_menu_id_seq'), '${businessName}管理', 1000, 2, '/${apiModuleName}/${apiName}', '${classNamePrefix}', '${apiModuleName}/${apiName}/index', NULL, NULL, false, false, false, NULL, 1, 1, 1, NOW()) RETURNING id-->
<#--)-->
<#-- -- ${businessName}管理菜单-->
<#-- INSERT INTO "sys_menu"-->
<#-- ("id", "title", "parent_id", "type", "path", "name", "component", "redirect", "icon", "is_external", "is_cache", "is_hidden", "permission", "sort", "status", "create_user", "create_time")-->
<#-- VALUES-->
<#-- (sys_menu_id_seq, '${businessName}管理', 1000, 2, '/${apiModuleName}/${apiName}', '${classNamePrefix}', '${apiModuleName}/${apiName}/index', NULL, NULL, false, false, false, NULL, 1, 1, 1, NOW());-->
<#---- ${businessName}管理按钮-->
<#--INSERT INTO "sys_menu"-->
<#--("id", "title", "parent_id", "type", "permission", "sort", "status", "create_user", "create_time")-->
<#--SELECT nextval('sys_menu_id_seq'), title, (SELECT id FROM inserted_menu), type, permission, sort, status, create_user, create_time-->
<#--FROM (VALUES-->
<#--('列表', 3, '${apiModuleName}:${apiName}:list', 1, 1, 1, NOW()),-->
<#--('详情', 3, '${apiModuleName}:${apiName}:detail', 2, 1, 1, NOW()),-->
<#--('新增', 3, '${apiModuleName}:${apiName}:add', 3, 1, 1, NOW()),-->
<#--('修改', 3, '${apiModuleName}:${apiName}:update', 4, 1, 1, NOW()),-->
<#--('删除', 3, '${apiModuleName}:${apiName}:delete', 5, 1, 1, NOW()),-->
<#--('导出', 3, '${apiModuleName}:${apiName}:export', 6, 1, 1, NOW())-->
<#--) AS t(title, type, permission, sort, status, create_user, create_time);-->
<#-- -- ${businessName}管理按钮-->
<#-- INSERT INTO "sys_menu"-->
<#-- ("id", "title", "parent_id", "type", "permission", "sort", "status", "create_user", "create_time")-->
<#-- VALUES-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '列表', sys_menu_id_seq, 3, 'club:activityCharge:list', 1, 1, 1, NOW()),-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '详情', sys_menu_id_seq, 3, 'club:activityCharge:detail', 2, 1, 1, NOW()),-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '新增', sys_menu_id_seq, 3, 'club:activityCharge:add', 3, 1, 1, NOW()),-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '修改', sys_menu_id_seq, 3, 'club:activityCharge:update', 4, 1, 1, NOW()),-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '删除', sys_menu_id_seq, 3, 'club:activityCharge:delete', 5, 1, 1, NOW()),-->
<#-- (${statics["cn.hutool.core.util.IdUtil"].getSnowflakeNextId()?c}, '导出', sys_menu_id_seq, 3, 'club:activityCharge:export', 6, 1, 1, NOW());-->
<#--END $$;-->