From 298123287169c27fd8bfe7b6226cfc5cf5ae93c8 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期四, 12 六月 2025 23:54:56 +0800 Subject: [PATCH] 更新司机端中台接口 --- DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ContextConfig.java | 214 ++++++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/AbstractTemplateEngine.java | 115 +++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/Menu.java | 203 ++++++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/SimpleTemplateEngine.java | 70 ++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ControllerConfig.java | 70 ++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/GunsGeneratorConfig.java | 81 ++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ServiceConfig.java | 91 ++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/WebGeneratorConfig.java | 97 +++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/GunsTemplateEngine.java | 126 ++++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/AbstractGeneratorConfig.java | 109 +++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/model/GenQo.java | 297 +++++++++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/DaoConfig.java | 55 + DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/PageConfig.java | 74 ++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/SqlConfig.java | 194 ++++++ DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/GunsCodeGenerator.java | 30 15 files changed, 1,826 insertions(+), 0 deletions(-) diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/GunsCodeGenerator.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/GunsCodeGenerator.java new file mode 100644 index 0000000..bcd169b --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/GunsCodeGenerator.java @@ -0,0 +1,30 @@ +package com.stylefeng.guns.generator.action; + + +import com.stylefeng.guns.generator.action.config.GunsGeneratorConfig; + +/** + * 代码生成器,可以生成实体,dao,service,controller,html,js + * + * @author stylefeng + * @Date 2017/5/21 12:38 + */ +public class GunsCodeGenerator { + + public static void main(String[] args) { + + /** + * Mybatis-Plus的代码生成器: + * mp的代码生成器可以生成实体,mapper,mapper对应的xml,service + */ + GunsGeneratorConfig gunsGeneratorConfig = new GunsGeneratorConfig(); + gunsGeneratorConfig.doMpGeneration(); + + /** + * guns的生成器: + * guns的代码生成器可以生成controller,html页面,页面对应的js + */ + gunsGeneratorConfig.doGunsGeneration(); + } + +} \ No newline at end of file diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/AbstractGeneratorConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/AbstractGeneratorConfig.java new file mode 100644 index 0000000..e50b78a --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/AbstractGeneratorConfig.java @@ -0,0 +1,109 @@ +package com.stylefeng.guns.generator.action.config; + +import com.baomidou.mybatisplus.generator.AutoGenerator; +import com.baomidou.mybatisplus.generator.config.DataSourceConfig; +import com.baomidou.mybatisplus.generator.config.GlobalConfig; +import com.baomidou.mybatisplus.generator.config.PackageConfig; +import com.baomidou.mybatisplus.generator.config.StrategyConfig; +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.stylefeng.guns.core.util.FileUtil; +import com.stylefeng.guns.generator.engine.SimpleTemplateEngine; +import com.stylefeng.guns.generator.engine.base.GunsTemplateEngine; +import com.stylefeng.guns.generator.engine.config.ContextConfig; +import com.stylefeng.guns.generator.engine.config.SqlConfig; + +import java.io.File; +import java.util.List; + +/** + * 代码生成的抽象配置 + * + * @author fengshuonan + * @date 2017-10-28-下午8:22 + */ +public abstract class AbstractGeneratorConfig { + + /** + * mybatis-plus代码生成器配置 + */ + GlobalConfig globalConfig = new GlobalConfig(); + + DataSourceConfig dataSourceConfig = new DataSourceConfig(); + + StrategyConfig strategyConfig = new StrategyConfig(); + + PackageConfig packageConfig = new PackageConfig(); + + TableInfo tableInfo = null; + + /** + * Guns代码生成器配置 + */ + ContextConfig contextConfig = new ContextConfig(); + + SqlConfig sqlConfig = new SqlConfig(); + + protected abstract void config(); + + public void init() { + config(); + + packageConfig.setService(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service"); + packageConfig.setServiceImpl(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.impl"); + + //controller没用掉,生成之后会自动删掉 + packageConfig.setController("TTT"); + + if (!contextConfig.getEntitySwitch()) { + packageConfig.setEntity("TTT"); + } + + if (!contextConfig.getDaoSwitch()) { + packageConfig.setMapper("TTT"); + packageConfig.setXml("TTT"); + } + + if (!contextConfig.getServiceSwitch()) { + packageConfig.setService("TTT"); + packageConfig.setServiceImpl("TTT"); + } + + } + + /** + * 删除不必要的代码 + */ + public void destory() { + String outputDir = globalConfig.getOutputDir() + "/TTT"; + FileUtil.deleteDir(new File(outputDir)); + } + + public AbstractGeneratorConfig() { + } + + public void doMpGeneration() { + init(); + AutoGenerator autoGenerator = new AutoGenerator(); + autoGenerator.setGlobalConfig(globalConfig); + autoGenerator.setDataSource(dataSourceConfig); + autoGenerator.setStrategy(strategyConfig); + autoGenerator.setPackageInfo(packageConfig); + autoGenerator.execute(); + destory(); + + //获取table信息,用于guns代码生成 + List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList(); + if (tableInfoList != null && tableInfoList.size() > 0) { + this.tableInfo = tableInfoList.get(0); + } + } + + public void doGunsGeneration() { + GunsTemplateEngine GunsTemplateEngine = new SimpleTemplateEngine(); + GunsTemplateEngine.setContextConfig(contextConfig); + sqlConfig.setConnection(dataSourceConfig.getConn()); + GunsTemplateEngine.setSqlConfig(sqlConfig); + GunsTemplateEngine.setTableInfo(tableInfo); + GunsTemplateEngine.start(); + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/GunsGeneratorConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/GunsGeneratorConfig.java new file mode 100644 index 0000000..43012ab --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/GunsGeneratorConfig.java @@ -0,0 +1,81 @@ +package com.stylefeng.guns.generator.action.config; + +import com.baomidou.mybatisplus.generator.config.rules.DbType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; + +/** + * 默认的代码生成的配置 + * + * @author fengshuonan + * @date 2017-10-28-下午8:27 + */ +public class GunsGeneratorConfig extends AbstractGeneratorConfig { + + protected void globalConfig() { + globalConfig.setOutputDir("D:\\ttt");//写自己项目的绝对路径,注意具体到java目录 + globalConfig.setFileOverride(true); + globalConfig.setEnableCache(false); + globalConfig.setBaseResultMap(true); + globalConfig.setBaseColumnList(true); + globalConfig.setOpen(false); + globalConfig.setAuthor("stylefeng"); + } + + protected void dataSourceConfig() { + dataSourceConfig.setDbType(DbType.MYSQL); + dataSourceConfig.setDriverName("com.mysql.jdbc.Driver"); + dataSourceConfig.setUsername("root"); + dataSourceConfig.setPassword("root"); + dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8"); + } + + protected void strategyConfig() { + strategyConfig.setTablePrefix(new String[]{"sys_"});// 此处可以修改为您的表前缀 + strategyConfig.setNaming(NamingStrategy.underline_to_camel); + } + + protected void packageConfig() { + packageConfig.setParent(null); + packageConfig.setEntity("com.stylefeng.guns.admin.common.persistence.model"); + packageConfig.setMapper("com.stylefeng.guns.admin.common.persistence.dao"); + packageConfig.setXml("com.stylefeng.guns.admin.common.persistence.dao.mapping"); + } + + protected void contextConfig() { + contextConfig.setProPackage("com.stylefeng.guns.admin"); + contextConfig.setCoreBasePackage("com.stylefeng.guns.core"); + contextConfig.setBizChName("字典管理"); + contextConfig.setBizEnName("sysDict"); + contextConfig.setModuleName("system"); + contextConfig.setProjectPath("D:\\ideaSpace\\guns\\guns-admin");//写自己项目的绝对路径 + contextConfig.setEntityName("SysDict"); + sqlConfig.setParentMenuName(null);//这里写已有菜单的名称,当做父节点 + + /** + * mybatis-plus 生成器开关 + */ + contextConfig.setEntitySwitch(true); + contextConfig.setDaoSwitch(true); + contextConfig.setServiceSwitch(true); + + /** + * guns 生成器开关 + */ + contextConfig.setControllerSwitch(true); + contextConfig.setIndexPageSwitch(true); + contextConfig.setAddPageSwitch(true); + contextConfig.setEditPageSwitch(true); + contextConfig.setJsSwitch(true); + contextConfig.setInfoJsSwitch(true); + contextConfig.setSqlSwitch(true); + } + + @Override + protected void config() { + globalConfig(); + dataSourceConfig(); + strategyConfig(); + packageConfig(); + contextConfig(); + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/WebGeneratorConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/WebGeneratorConfig.java new file mode 100644 index 0000000..6b821f5 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/config/WebGeneratorConfig.java @@ -0,0 +1,97 @@ +package com.stylefeng.guns.generator.action.config; + +import com.baomidou.mybatisplus.generator.config.rules.DbType; +import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; +import com.stylefeng.guns.core.support.StrKit; +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.generator.action.model.GenQo; + +import java.io.File; + +/** + * 默认的代码生成的配置 + * + * @author fengshuonan + * @date 2017-10-28-下午8:27 + */ +public class WebGeneratorConfig extends AbstractGeneratorConfig { + + private GenQo genQo; + + public WebGeneratorConfig(GenQo genQo) { + this.genQo = genQo; + } + + @Override + protected void config() { + /** + * 数据库配置 + */ + dataSourceConfig.setDbType(DbType.MYSQL); + dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver"); + dataSourceConfig.setUsername(genQo.getUserName()); + dataSourceConfig.setPassword(genQo.getPassword()); + dataSourceConfig.setUrl(genQo.getUrl()); + + /** + * 全局配置 + */ + globalConfig.setOutputDir(genQo.getProjectPath() + File.separator + "src" + File.separator + "main" + File.separator + "java"); + globalConfig.setFileOverride(true); + globalConfig.setEnableCache(false); + globalConfig.setBaseResultMap(true); + globalConfig.setBaseColumnList(true); + globalConfig.setOpen(false); + globalConfig.setAuthor(genQo.getAuthor()); + contextConfig.setProPackage(genQo.getProjectPackage()); + contextConfig.setCoreBasePackage(genQo.getCorePackage()); + + /** + * 生成策略 + */ + if (genQo.getIgnoreTabelPrefix() != null) { + strategyConfig.setTablePrefix(new String[]{genQo.getIgnoreTabelPrefix()}); + } + strategyConfig.setInclude(new String[]{genQo.getTableName()}); + strategyConfig.setNaming(NamingStrategy.underline_to_camel); + packageConfig.setParent(null); + packageConfig.setEntity(genQo.getProjectPackage() + ".modular.system.model"); + packageConfig.setMapper(genQo.getProjectPackage() + ".modular.system.dao"); + packageConfig.setXml(genQo.getProjectPackage() + ".modular.system.dao.mapping"); + + /** + * 业务代码配置 + */ + contextConfig.setBizChName(genQo.getBizName()); + contextConfig.setModuleName(genQo.getModuleName()); + contextConfig.setProjectPath(genQo.getProjectPath());//写自己项目的绝对路径 + if(ToolUtil.isEmpty(genQo.getIgnoreTabelPrefix())){ + String entityName = StrKit.toCamelCase(genQo.getTableName()); + contextConfig.setEntityName(StrKit.firstCharToUpperCase(entityName)); + contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entityName)); + }else{ + String entiyName = StrKit.toCamelCase(StrKit.removePrefix(genQo.getTableName(), genQo.getIgnoreTabelPrefix())); + contextConfig.setEntityName(StrKit.firstCharToUpperCase(entiyName)); + contextConfig.setBizEnName(StrKit.firstCharToLowerCase(entiyName)); + } + sqlConfig.setParentMenuName(genQo.getParentMenuName());//这里写已有菜单的名称,当做父节点 + + /** + * mybatis-plus 生成器开关 + */ + contextConfig.setEntitySwitch(genQo.getEntitySwitch()); + contextConfig.setDaoSwitch(genQo.getDaoSwitch()); + contextConfig.setServiceSwitch(genQo.getServiceSwitch()); + + /** + * guns 生成器开关 + */ + contextConfig.setControllerSwitch(genQo.getControllerSwitch()); + contextConfig.setIndexPageSwitch(genQo.getIndexPageSwitch()); + contextConfig.setAddPageSwitch(genQo.getAddPageSwitch()); + contextConfig.setEditPageSwitch(genQo.getEditPageSwitch()); + contextConfig.setJsSwitch(genQo.getJsSwitch()); + contextConfig.setInfoJsSwitch(genQo.getInfoJsSwitch()); + contextConfig.setSqlSwitch(genQo.getSqlSwitch()); + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/model/GenQo.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/model/GenQo.java new file mode 100644 index 0000000..b09d948 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/action/model/GenQo.java @@ -0,0 +1,297 @@ +package com.stylefeng.guns.generator.action.model; + +/** + * 代码生成的查询参数 + * + * @author fengshuonan + * @date 2017-11-30-下午2:05 + */ +public class GenQo { + + /** + * 数据库账号 + */ + private String userName; + + /** + * 数据库密码 + */ + private String password; + + /** + * 数据库url + */ + private String url; + + /** + * 项目地址 + */ + private String projectPath; + + /** + * 作者 + */ + private String author; + + /** + * 项目的包 + */ + private String projectPackage; + + /** + * 核心模块的包 + */ + private String corePackage; + + /** + * 表名称 + */ + private String tableName; + + /** + * 忽略的表前缀 + */ + private String ignoreTabelPrefix; + + /** + * 业务名称 + */ + private String bizName; + + /** + * 模块名 + */ + private String moduleName; + + /** + * 父级菜单名称 + */ + private String parentMenuName; + + /** + * 是否生成控制器代码开关 + */ + private Boolean controllerSwitch = false; + + /** + * 主页 + */ + private Boolean indexPageSwitch = false; + + /** + * 添加页面 + */ + private Boolean addPageSwitch = false; + + /** + * 编辑页面 + */ + private Boolean editPageSwitch = false; + + /** + * 主页的js + */ + private Boolean jsSwitch = false; + + /** + * 详情页面js + */ + private Boolean infoJsSwitch = false; + + /** + * dao的开关 + */ + private Boolean daoSwitch = false; + + /** + * service + */ + private Boolean serviceSwitch = false; + + /** + * 生成实体的开关 + */ + private Boolean entitySwitch = false; + + /** + * 生成sql的开关 + */ + private Boolean sqlSwitch = false; + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getProjectPath() { + return projectPath; + } + + public void setProjectPath(String projectPath) { + this.projectPath = projectPath; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getCorePackage() { + return corePackage; + } + + public void setCorePackage(String corePackage) { + this.corePackage = corePackage; + } + + public String getProjectPackage() { + + return projectPackage; + } + + public void setProjectPackage(String projectPackage) { + this.projectPackage = projectPackage; + } + + public String getTableName() { + return tableName; + } + + public void setTableName(String tableName) { + this.tableName = tableName; + } + + public String getIgnoreTabelPrefix() { + return ignoreTabelPrefix; + } + + public void setIgnoreTabelPrefix(String ignoreTabelPrefix) { + this.ignoreTabelPrefix = ignoreTabelPrefix; + } + + public String getBizName() { + return bizName; + } + + public void setBizName(String bizName) { + this.bizName = bizName; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public Boolean getControllerSwitch() { + return controllerSwitch; + } + + public void setControllerSwitch(Boolean controllerSwitch) { + this.controllerSwitch = controllerSwitch; + } + + public Boolean getIndexPageSwitch() { + return indexPageSwitch; + } + + public void setIndexPageSwitch(Boolean indexPageSwitch) { + this.indexPageSwitch = indexPageSwitch; + } + + public Boolean getAddPageSwitch() { + return addPageSwitch; + } + + public void setAddPageSwitch(Boolean addPageSwitch) { + this.addPageSwitch = addPageSwitch; + } + + public Boolean getEditPageSwitch() { + return editPageSwitch; + } + + public void setEditPageSwitch(Boolean editPageSwitch) { + this.editPageSwitch = editPageSwitch; + } + + public Boolean getJsSwitch() { + return jsSwitch; + } + + public void setJsSwitch(Boolean jsSwitch) { + this.jsSwitch = jsSwitch; + } + + public Boolean getInfoJsSwitch() { + return infoJsSwitch; + } + + public void setInfoJsSwitch(Boolean infoJsSwitch) { + this.infoJsSwitch = infoJsSwitch; + } + + public Boolean getDaoSwitch() { + return daoSwitch; + } + + public void setDaoSwitch(Boolean daoSwitch) { + this.daoSwitch = daoSwitch; + } + + public Boolean getServiceSwitch() { + return serviceSwitch; + } + + public void setServiceSwitch(Boolean serviceSwitch) { + this.serviceSwitch = serviceSwitch; + } + + public Boolean getEntitySwitch() { + return entitySwitch; + } + + public void setEntitySwitch(Boolean entitySwitch) { + this.entitySwitch = entitySwitch; + } + + public Boolean getSqlSwitch() { + return sqlSwitch; + } + + public void setSqlSwitch(Boolean sqlSwitch) { + this.sqlSwitch = sqlSwitch; + } + + public String getParentMenuName() { + return parentMenuName; + } + + public void setParentMenuName(String parentMenuName) { + this.parentMenuName = parentMenuName; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/SimpleTemplateEngine.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/SimpleTemplateEngine.java new file mode 100644 index 0000000..9e057c7 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/SimpleTemplateEngine.java @@ -0,0 +1,70 @@ +package com.stylefeng.guns.generator.engine; + + +import com.stylefeng.guns.core.util.ToolUtil; +import com.stylefeng.guns.generator.engine.base.GunsTemplateEngine; + +/** + * 通用的模板生成引擎 + * + * @author fengshuonan + * @date 2017-05-09 20:32 + */ +public class SimpleTemplateEngine extends GunsTemplateEngine { + + @Override + protected void generatePageEditHtml() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageEditPathTemplate(), + super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_edit.html.btl", path); + System.out.println("生成编辑页面成功!"); + } + + @Override + protected void generatePageAddHtml() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageAddPathTemplate(), + super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_add.html.btl", path); + System.out.println("生成添加页面成功!"); + } + + @Override + protected void generatePageInfoJs() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageInfoJsPathTemplate(), + super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page_info.js.btl", path); + System.out.println("生成页面详情js成功!"); + } + + @Override + protected void generatePageJs() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPageJsPathTemplate(), + super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.js.btl", path); + System.out.println("生成页面js成功!"); + } + + @Override + protected void generatePageHtml() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + getPageConfig().getPagePathTemplate(), + super.getContextConfig().getBizEnName(), super.getContextConfig().getBizEnName()); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/page.html.btl", path); + System.out.println("生成页面成功!"); + } + + @Override + protected void generateController() { + String controllerPath = ToolUtil.format(super.getContextConfig().getProjectPath() + super.getControllerConfig().getControllerPathTemplate(), + ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName())); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/Controller.java.btl", controllerPath); + System.out.println("生成控制器成功!"); + } + + @Override + protected void generateSqls() { + String path = ToolUtil.format(super.getContextConfig().getProjectPath() + super.sqlConfig.getSqlPathTemplate(), + ToolUtil.firstLetterToUpper(super.getContextConfig().getBizEnName())); + generateFile(super.getContextConfig().getTemplatePrefixPath() + "/menu_sql.sql.btl", path); + System.out.println("生成sql成功!"); + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/AbstractTemplateEngine.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/AbstractTemplateEngine.java new file mode 100644 index 0000000..ef2512e --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/AbstractTemplateEngine.java @@ -0,0 +1,115 @@ +package com.stylefeng.guns.generator.engine.base; + +import com.baomidou.mybatisplus.generator.config.po.TableInfo; +import com.stylefeng.guns.generator.engine.config.*; + +/** + * 模板生成父类 + * + * @author fengshuonan + * @date 2017-05-08 20:17 + */ +public class AbstractTemplateEngine { + + protected ContextConfig contextConfig; //全局配置 + protected ControllerConfig controllerConfig; //控制器的配置 + protected PageConfig pageConfig; //页面的控制器 + protected DaoConfig daoConfig; //Dao配置 + protected ServiceConfig serviceConfig; //Service配置 + protected SqlConfig sqlConfig; //sql配置 + protected TableInfo tableInfo; //表的信息 + + public void initConfig() { + if (this.contextConfig == null) { + this.contextConfig = new ContextConfig(); + } + if (this.controllerConfig == null) { + this.controllerConfig = new ControllerConfig(); + } + if (this.pageConfig == null) { + this.pageConfig = new PageConfig(); + } + if (this.daoConfig == null) { + this.daoConfig = new DaoConfig(); + } + if (this.serviceConfig == null) { + this.serviceConfig = new ServiceConfig(); + } + if (this.sqlConfig == null) { + this.sqlConfig = new SqlConfig(); + } + this.contextConfig.init(); + + this.controllerConfig.setContextConfig(this.contextConfig); + this.controllerConfig.init(); + + this.serviceConfig.setContextConfig(this.contextConfig); + this.serviceConfig.init(); + + this.daoConfig.setContextConfig(this.contextConfig); + this.daoConfig.init(); + + this.pageConfig.setContextConfig(this.contextConfig); + this.pageConfig.init(); + + this.sqlConfig.setContextConfig(this.contextConfig); + this.sqlConfig.init(); + } + + public PageConfig getPageConfig() { + return pageConfig; + } + + public void setPageConfig(PageConfig pageConfig) { + this.pageConfig = pageConfig; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } + + public ControllerConfig getControllerConfig() { + return controllerConfig; + } + + public void setControllerConfig(ControllerConfig controllerConfig) { + this.controllerConfig = controllerConfig; + } + + public DaoConfig getDaoConfig() { + return daoConfig; + } + + public void setDaoConfig(DaoConfig daoConfig) { + this.daoConfig = daoConfig; + } + + public ServiceConfig getServiceConfig() { + return serviceConfig; + } + + public void setServiceConfig(ServiceConfig serviceConfig) { + this.serviceConfig = serviceConfig; + } + + public SqlConfig getSqlConfig() { + return sqlConfig; + } + + public void setSqlConfig(SqlConfig sqlConfig) { + this.sqlConfig = sqlConfig; + } + + public TableInfo getTableInfo() { + return tableInfo; + } + + public void setTableInfo(TableInfo tableInfo) { + this.tableInfo = tableInfo; + } +} + diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/GunsTemplateEngine.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/GunsTemplateEngine.java new file mode 100644 index 0000000..4d3ab84 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/base/GunsTemplateEngine.java @@ -0,0 +1,126 @@ +package com.stylefeng.guns.generator.engine.base; + +import com.stylefeng.guns.core.util.ToolUtil; +import com.sun.javafx.PlatformUtil; +import org.beetl.core.Configuration; +import org.beetl.core.GroupTemplate; +import org.beetl.core.Template; +import org.beetl.core.resource.ClasspathResourceLoader; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.Properties; + +/** + * ADI项目模板生成 引擎 + * + * @author fengshuonan + * @date 2017-05-07 22:15 + */ +public abstract class GunsTemplateEngine extends AbstractTemplateEngine { + + private GroupTemplate groupTemplate; + + public GunsTemplateEngine() { + initBeetlEngine(); + } + + protected void initBeetlEngine() { + Properties properties = new Properties(); + properties.put("RESOURCE.root", ""); + properties.put("DELIMITER_STATEMENT_START", "<%"); + properties.put("DELIMITER_STATEMENT_END", "%>"); + properties.put("HTML_TAG_FLAG", "##"); + Configuration cfg = null; + try { + cfg = new Configuration(properties); + } catch (IOException e) { + e.printStackTrace(); + } + ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader(); + groupTemplate = new GroupTemplate(resourceLoader, cfg); + groupTemplate.registerFunctionPackage("tool", new ToolUtil()); + } + + protected void configTemplate(Template template) { + template.binding("controller", super.controllerConfig); + template.binding("context", super.contextConfig); + template.binding("dao", super.daoConfig); + template.binding("service", super.serviceConfig); + template.binding("sqls", super.sqlConfig); + template.binding("table", super.tableInfo); + } + + protected void generateFile(String template, String filePath) { + Template pageTemplate = groupTemplate.getTemplate(template); + configTemplate(pageTemplate); + if (PlatformUtil.isWindows()) { + filePath = filePath.replaceAll("/+|\\\\+", "\\\\"); + } else { + filePath = filePath.replaceAll("/+|\\\\+", "/"); + } + File file = new File(filePath); + File parentFile = file.getParentFile(); + if (!parentFile.exists()) { + parentFile.mkdirs(); + } + FileOutputStream fileOutputStream = null; + try { + fileOutputStream = new FileOutputStream(file); + pageTemplate.renderTo(fileOutputStream); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } finally { + try { + fileOutputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + public void start() { + //配置之间的相互依赖 + super.initConfig(); + + //生成模板 + if (super.contextConfig.getControllerSwitch()) { + generateController(); + } + if (super.contextConfig.getIndexPageSwitch()) { + generatePageHtml(); + } + if (super.contextConfig.getAddPageSwitch()) { + generatePageAddHtml(); + } + if (super.contextConfig.getEditPageSwitch()) { + generatePageEditHtml(); + } + if (super.contextConfig.getJsSwitch()) { + generatePageJs(); + } + if (super.contextConfig.getInfoJsSwitch()) { + generatePageInfoJs(); + } + if (super.contextConfig.getSqlSwitch()) { + generateSqls(); + } + } + + protected abstract void generatePageEditHtml(); + + protected abstract void generatePageAddHtml(); + + protected abstract void generatePageInfoJs(); + + protected abstract void generatePageJs(); + + protected abstract void generatePageHtml(); + + protected abstract void generateController(); + + protected abstract void generateSqls(); + +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ContextConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ContextConfig.java new file mode 100644 index 0000000..d8403d8 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ContextConfig.java @@ -0,0 +1,214 @@ +package com.stylefeng.guns.generator.engine.config; + + +import com.stylefeng.guns.core.util.ToolUtil; + +/** + * 全局配置 + * + * @author fengshuonan + * @date 2017-05-08 20:21 + */ +public class ContextConfig { + + private String templatePrefixPath = "gunsTemplate/advanced"; + private String projectPath = "D:\\ideaSpace\\guns";//模板输出的项目目录 + private String bizChName; //业务名称 + private String bizEnName; //业务英文名称 + private String bizEnBigName;//业务英文名称(大写) + private String moduleName = "system"; //模块名称 + + private String proPackage = "com.stylefeng.guns.admin"; + private String coreBasePackage = "com.stylefeng.guns.core"; + private String modelPackageName = "com.stylefeng.guns.modular.system.model"; //model的包名 + private String modelMapperPackageName = "com.stylefeng.guns.modular.system.dao"; //model的dao + private String entityName; //实体的名称 + + private Boolean controllerSwitch = true; //是否生成控制器代码开关 + private Boolean indexPageSwitch = true; //主页 + private Boolean addPageSwitch = true; //添加页面 + private Boolean editPageSwitch = true; //编辑页面 + private Boolean jsSwitch = true; //js + private Boolean infoJsSwitch = true; //详情页面js + private Boolean daoSwitch = true; //dao + private Boolean serviceSwitch = true; //service + private Boolean entitySwitch = true; //生成实体的开关 + private Boolean sqlSwitch = true; //生成sql的开关 + + public void init() { + if (entityName == null) { + entityName = bizEnBigName; + } + modelPackageName = proPackage + "." + "modular.system.model"; + modelMapperPackageName = proPackage + "." + "modular.system.dao"; + } + + public String getBizEnBigName() { + return bizEnBigName; + } + + public void setBizEnBigName(String bizEnBigName) { + this.bizEnBigName = bizEnBigName; + } + + public String getBizChName() { + return bizChName; + } + + public void setBizChName(String bizChName) { + this.bizChName = bizChName; + } + + public String getBizEnName() { + return bizEnName; + } + + public void setBizEnName(String bizEnName) { + this.bizEnName = bizEnName; + this.bizEnBigName = ToolUtil.firstLetterToUpper(this.bizEnName); + } + + public String getProjectPath() { + return projectPath; + } + + public void setProjectPath(String projectPath) { + this.projectPath = projectPath; + } + + public String getModuleName() { + return moduleName; + } + + public void setModuleName(String moduleName) { + this.moduleName = moduleName; + } + + public Boolean getControllerSwitch() { + return controllerSwitch; + } + + public void setControllerSwitch(Boolean controllerSwitch) { + this.controllerSwitch = controllerSwitch; + } + + public Boolean getIndexPageSwitch() { + return indexPageSwitch; + } + + public void setIndexPageSwitch(Boolean indexPageSwitch) { + this.indexPageSwitch = indexPageSwitch; + } + + public Boolean getAddPageSwitch() { + return addPageSwitch; + } + + public void setAddPageSwitch(Boolean addPageSwitch) { + this.addPageSwitch = addPageSwitch; + } + + public Boolean getEditPageSwitch() { + return editPageSwitch; + } + + public void setEditPageSwitch(Boolean editPageSwitch) { + this.editPageSwitch = editPageSwitch; + } + + public Boolean getJsSwitch() { + return jsSwitch; + } + + public void setJsSwitch(Boolean jsSwitch) { + this.jsSwitch = jsSwitch; + } + + public Boolean getInfoJsSwitch() { + return infoJsSwitch; + } + + public void setInfoJsSwitch(Boolean infoJsSwitch) { + this.infoJsSwitch = infoJsSwitch; + } + + public Boolean getDaoSwitch() { + return daoSwitch; + } + + public void setDaoSwitch(Boolean daoSwitch) { + this.daoSwitch = daoSwitch; + } + + public Boolean getServiceSwitch() { + return serviceSwitch; + } + + public void setServiceSwitch(Boolean serviceSwitch) { + this.serviceSwitch = serviceSwitch; + } + + public String getTemplatePrefixPath() { + return templatePrefixPath; + } + + public void setTemplatePrefixPath(String templatePrefixPath) { + this.templatePrefixPath = templatePrefixPath; + } + + public String getModelPackageName() { + return modelPackageName; + } + + public void setModelPackageName(String modelPackageName) { + this.modelPackageName = modelPackageName; + } + + public String getEntityName() { + return entityName; + } + + public void setEntityName(String entityName) { + this.entityName = entityName; + } + + public String getModelMapperPackageName() { + return modelMapperPackageName; + } + + public void setModelMapperPackageName(String modelMapperPackageName) { + this.modelMapperPackageName = modelMapperPackageName; + } + + public Boolean getEntitySwitch() { + return entitySwitch; + } + + public void setEntitySwitch(Boolean entitySwitch) { + this.entitySwitch = entitySwitch; + } + + public Boolean getSqlSwitch() { + return sqlSwitch; + } + + public void setSqlSwitch(Boolean sqlSwitch) { + this.sqlSwitch = sqlSwitch; + } + + public String getProPackage() { + return proPackage; + } + + public void setProPackage(String proPackage) { + this.proPackage = proPackage; + } + + public String getCoreBasePackage() { + return coreBasePackage; + } + + public void setCoreBasePackage(String coreBasePackage) { + this.coreBasePackage = coreBasePackage; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ControllerConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ControllerConfig.java new file mode 100644 index 0000000..8775b3c --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ControllerConfig.java @@ -0,0 +1,70 @@ +package com.stylefeng.guns.generator.engine.config; + +import java.util.ArrayList; +import java.util.List; + +/** + * 控制器模板生成的配置 + * + * @author fengshuonan + * @date 2017-05-07 22:12 + */ +public class ControllerConfig { + + private ContextConfig contextConfig; + + private String controllerPathTemplate; + private String packageName;//包名称 + private List<String> imports;//所引入的包 + + public void init() { + ArrayList<String> imports = new ArrayList<>(); + imports.add(contextConfig.getCoreBasePackage() + ".base.controller.BaseController"); + imports.add("org.springframework.stereotype.Controller"); + imports.add("org.springframework.web.bind.annotation.RequestMapping"); + imports.add("org.springframework.web.bind.annotation.ResponseBody"); + imports.add("org.springframework.ui.Model"); + imports.add("org.springframework.web.bind.annotation.PathVariable"); + imports.add("org.springframework.beans.factory.annotation.Autowired"); + imports.add(contextConfig.getProPackage() + ".core.log.LogObjectHolder"); + imports.add("org.springframework.web.bind.annotation.RequestParam"); + imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); + imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service" + ".I" + contextConfig.getEntityName() + "Service"); + this.imports = imports; + this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".controller"; + this.controllerPathTemplate = "\\src\\main\\java\\"+contextConfig.getProPackage().replaceAll("\\.","\\\\")+"\\modular\\" + contextConfig.getModuleName() + "\\controller\\{}Controller.java"; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public List<String> getImports() { + return imports; + } + + public void setImports(List<String> imports) { + this.imports = imports; + } + + public String getControllerPathTemplate() { + return controllerPathTemplate; + } + + public void setControllerPathTemplate(String controllerPathTemplate) { + this.controllerPathTemplate = controllerPathTemplate; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } + +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/DaoConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/DaoConfig.java new file mode 100644 index 0000000..00e3092 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/DaoConfig.java @@ -0,0 +1,55 @@ +package com.stylefeng.guns.generator.engine.config; + +/** + * Dao模板生成的配置 + * + * @author fengshuonan + * @date 2017-05-07 22:12 + */ +public class DaoConfig { + + private ContextConfig contextConfig; + + private String daoPathTemplate; + private String xmlPathTemplate; + + private String packageName; + + public void init() { + this.daoPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\{}Dao.java"; + this.xmlPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\mapping\\{}Dao.xml"; + this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".dao"; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getDaoPathTemplate() { + return daoPathTemplate; + } + + public void setDaoPathTemplate(String daoPathTemplate) { + this.daoPathTemplate = daoPathTemplate; + } + + public String getXmlPathTemplate() { + return xmlPathTemplate; + } + + public void setXmlPathTemplate(String xmlPathTemplate) { + this.xmlPathTemplate = xmlPathTemplate; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/Menu.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/Menu.java new file mode 100644 index 0000000..2770128 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/Menu.java @@ -0,0 +1,203 @@ +package com.stylefeng.guns.generator.engine.config; + +import com.baomidou.mybatisplus.activerecord.Model; +import com.baomidou.mybatisplus.annotations.TableId; +import com.baomidou.mybatisplus.enums.IdType; + +import java.io.Serializable; + +/** + * <p> + * 菜单表 + * </p> + * + * @author stylefeng + * @since 2017-07-11 + */ +public class Menu extends Model<Menu> { + + private static final long serialVersionUID = 1L; + + /** + * 主键id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + /** + * 菜单编号 + */ + private String code; + /** + * 菜单父编号 + */ + private String pcode; + /** + * 当前菜单的所有父菜单编号 + */ + private String pcodes; + /** + * 菜单名称 + */ + private String name; + /** + * 菜单图标 + */ + private String icon; + /** + * url地址 + */ + private String url; + /** + * 菜单排序号 + */ + private Integer num; + /** + * 菜单层级 + */ + private Integer levels; + /** + * 是否是菜单(1:是 0:不是) + */ + private Integer ismenu; + /** + * 备注 + */ + private String tips; + /** + * 菜单状态 : 1:启用 0:不启用 + */ + private Integer status; + /** + * 是否打开: 1:打开 0:不打开 + */ + private Integer isopen; + + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getPcode() { + return pcode; + } + + public void setPcode(String pcode) { + this.pcode = pcode; + } + + public String getPcodes() { + return pcodes; + } + + public void setPcodes(String pcodes) { + this.pcodes = pcodes; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getIcon() { + return icon; + } + + public void setIcon(String icon) { + this.icon = icon; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public Integer getNum() { + return num; + } + + public void setNum(Integer num) { + this.num = num; + } + + public Integer getLevels() { + return levels; + } + + public void setLevels(Integer levels) { + this.levels = levels; + } + + public Integer getIsmenu() { + return ismenu; + } + + public void setIsmenu(Integer ismenu) { + this.ismenu = ismenu; + } + + public String getTips() { + return tips; + } + + public void setTips(String tips) { + this.tips = tips; + } + + public Integer getStatus() { + return status; + } + + public void setStatus(Integer status) { + this.status = status; + } + + public Integer getIsopen() { + return isopen; + } + + public void setIsopen(Integer isopen) { + this.isopen = isopen; + } + + @Override + protected Serializable pkVal() { + return this.id; + } + + @Override + public String toString() { + return "Menu{" + + "id=" + id + + ", code=" + code + + ", pcode=" + pcode + + ", pcodes=" + pcodes + + ", name=" + name + + ", icon=" + icon + + ", url=" + url + + ", num=" + num + + ", levels=" + levels + + ", ismenu=" + ismenu + + ", tips=" + tips + + ", status=" + status + + ", isopen=" + isopen + + "}"; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/PageConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/PageConfig.java new file mode 100644 index 0000000..a3324ea --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/PageConfig.java @@ -0,0 +1,74 @@ +package com.stylefeng.guns.generator.engine.config; + +/** + * 页面 模板生成的配置 + * + * @author fengshuonan + * @date 2017-05-07 22:12 + */ +public class PageConfig { + + private ContextConfig contextConfig; + + private String pagePathTemplate; + private String pageAddPathTemplate; + private String pageEditPathTemplate; + private String pageJsPathTemplate; + private String pageInfoJsPathTemplate; + + public void init() { + pagePathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}.html"; + pageAddPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_add.html"; + pageEditPathTemplate = "\\src\\main\\webapp\\WEB-INF\\view\\" + contextConfig.getModuleName() + "\\{}\\{}_edit.html"; + pageJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}.js"; + pageInfoJsPathTemplate = "\\src\\main\\webapp\\static\\modular\\" + contextConfig.getModuleName() + "\\{}\\{}_info.js"; + } + + public String getPagePathTemplate() { + return pagePathTemplate; + } + + public void setPagePathTemplate(String pagePathTemplate) { + this.pagePathTemplate = pagePathTemplate; + } + + public String getPageJsPathTemplate() { + return pageJsPathTemplate; + } + + public void setPageJsPathTemplate(String pageJsPathTemplate) { + this.pageJsPathTemplate = pageJsPathTemplate; + } + + public String getPageAddPathTemplate() { + return pageAddPathTemplate; + } + + public void setPageAddPathTemplate(String pageAddPathTemplate) { + this.pageAddPathTemplate = pageAddPathTemplate; + } + + public String getPageEditPathTemplate() { + return pageEditPathTemplate; + } + + public void setPageEditPathTemplate(String pageEditPathTemplate) { + this.pageEditPathTemplate = pageEditPathTemplate; + } + + public String getPageInfoJsPathTemplate() { + return pageInfoJsPathTemplate; + } + + public void setPageInfoJsPathTemplate(String pageInfoJsPathTemplate) { + this.pageInfoJsPathTemplate = pageInfoJsPathTemplate; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ServiceConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ServiceConfig.java new file mode 100644 index 0000000..e6cc865 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/ServiceConfig.java @@ -0,0 +1,91 @@ +package com.stylefeng.guns.generator.engine.config; + +import java.util.ArrayList; +import java.util.List; + +/** + * Service模板生成的配置 + * + * @author fengshuonan + * @date 2017-05-07 22:12 + */ +public class ServiceConfig { + + private ContextConfig contextConfig; + + private String servicePathTemplate; + private String serviceImplPathTemplate; + + private String packageName; + + private List<String> serviceInterfaceImports; + private List<String> serviceImplImports; + + public void init() { + ArrayList<String> imports = new ArrayList<>(); + imports.add("org.springframework.stereotype.Service"); + imports.add("com.baomidou.mybatisplus.service.impl.ServiceImpl"); + imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); + imports.add(contextConfig.getModelMapperPackageName() + "." + contextConfig.getEntityName() + "Mapper"); + imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.I" + contextConfig.getBizEnBigName() + "Service"); + this.serviceImplImports = imports; + + ArrayList<String> interfaceImports = new ArrayList<>(); + interfaceImports.add("com.baomidou.mybatisplus.service.IService"); + interfaceImports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); + this.serviceInterfaceImports = interfaceImports; + + this.servicePathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\I{}Service.java"; + this.serviceImplPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\impl\\{}ServiceImpl.java"; + this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service"; + } + + + public String getServicePathTemplate() { + return servicePathTemplate; + } + + public void setServicePathTemplate(String servicePathTemplate) { + this.servicePathTemplate = servicePathTemplate; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getServiceImplPathTemplate() { + return serviceImplPathTemplate; + } + + public void setServiceImplPathTemplate(String serviceImplPathTemplate) { + this.serviceImplPathTemplate = serviceImplPathTemplate; + } + + public List<String> getServiceImplImports() { + return serviceImplImports; + } + + public void setServiceImplImports(List<String> serviceImplImports) { + this.serviceImplImports = serviceImplImports; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } + + public List<String> getServiceInterfaceImports() { + return serviceInterfaceImports; + } + + public void setServiceInterfaceImports(List<String> serviceInterfaceImports) { + this.serviceInterfaceImports = serviceInterfaceImports; + } +} diff --git a/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/SqlConfig.java b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/SqlConfig.java new file mode 100644 index 0000000..ec64b55 --- /dev/null +++ b/DriverQYTTravel/guns-generator/src/main/java/com/stylefeng/guns/generator/engine/config/SqlConfig.java @@ -0,0 +1,194 @@ +package com.stylefeng.guns.generator.engine.config; + +import com.baomidou.mybatisplus.toolkit.IdWorker; +import com.stylefeng.guns.core.constant.IsMenu; +import com.stylefeng.guns.core.util.ToolUtil; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +/** + * 全局配置 + * + * @author fengshuonan + * @date 2017-05-08 20:21 + */ +public class SqlConfig { + + private String sqlPathTemplate; + + private ContextConfig contextConfig; + + private Connection connection; + + private String parentMenuName; + + private List<Menu> menus = new ArrayList<>(6); + + public void init() { + + this.sqlPathTemplate = "\\src\\main\\java\\{}.sql"; + + if (parentMenuName == null) { + return; + } + + //根据父菜单查询数据库中的pcode和pcodes + String[] pcodeAndPcodes = getPcodeAndPcodes(); + if (pcodeAndPcodes == null) { + System.err.println("父级菜单名称输入有误!!!!"); + return; + } + + //业务菜单 + Menu menu = new Menu(); + menu.setId(IdWorker.getId()); + menu.setCode(contextConfig.getBizEnName()); + menu.setPcode(pcodeAndPcodes[0]); + menu.setPcodes(pcodeAndPcodes[1] + "[" + pcodeAndPcodes[0] + "],"); + menu.setName(contextConfig.getBizChName()); + menu.setIcon(""); + menu.setUrl("/" + contextConfig.getBizEnName()); + menu.setNum(99); + + if (parentMenuName.equals("顶级")) { + menu.setLevels(1); + } else { + menu.setLevels(2); + } + menu.setIsmenu(IsMenu.YES.getCode()); + menu.setStatus(1); + menu.setIsopen(0); + menus.add(menu); + + //列表 + Menu list = createSubMenu(menu); + list.setCode(contextConfig.getBizEnName() + "_list"); + list.setName(contextConfig.getBizChName() + "列表"); + list.setUrl("/" + contextConfig.getBizEnName() + "/list"); + menus.add(list); + + //添加 + Menu add = createSubMenu(menu); + add.setCode(contextConfig.getBizEnName() + "_add"); + add.setName(contextConfig.getBizChName() + "添加"); + add.setUrl("/" + contextConfig.getBizEnName() + "/add"); + menus.add(add); + + //更新 + Menu update = createSubMenu(menu); + update.setCode(contextConfig.getBizEnName() + "_update"); + update.setName(contextConfig.getBizChName() + "更新"); + update.setUrl("/" + contextConfig.getBizEnName() + "/update"); + menus.add(update); + + //删除 + Menu delete = createSubMenu(menu); + delete.setCode(contextConfig.getBizEnName() + "_delete"); + delete.setName(contextConfig.getBizChName() + "删除"); + delete.setUrl("/" + contextConfig.getBizEnName() + "/delete"); + menus.add(delete); + + //详情 + Menu detail = createSubMenu(menu); + detail.setCode(contextConfig.getBizEnName() + "_detail"); + detail.setName(contextConfig.getBizChName() + "详情"); + detail.setUrl("/" + contextConfig.getBizEnName() + "/detail"); + menus.add(detail); + } + + private Menu createSubMenu(Menu parentMenu) { + Menu menu = new Menu(); + menu.setId(IdWorker.getId()); + menu.setPcode(parentMenu.getCode()); + menu.setPcodes(parentMenu.getPcodes() + "[" + parentMenu.getCode() + "],"); + menu.setIcon(""); + menu.setNum(99); + menu.setLevels(parentMenu.getLevels() + 1); + menu.setIsmenu(IsMenu.NO.getCode()); + menu.setStatus(1); + menu.setIsopen(0); + return menu; + } + + public String[] getPcodeAndPcodes() { + if (parentMenuName.equals("顶级")) { + return new String[]{"0", ""}; + } + PreparedStatement preparedStatement = null; + try { + preparedStatement = connection.prepareStatement("select * from sys_menu where name like ?"); + preparedStatement.setString(1, "%" + parentMenuName + "%"); + ResultSet results = preparedStatement.executeQuery(); + while (results.next()) { + String pcode = results.getString("code"); + String pcodes = results.getString("pcodes"); + if (ToolUtil.isNotEmpty(pcode) && ToolUtil.isNotEmpty(pcodes)) { + String[] strings = {pcode, pcodes}; + return strings; + } else { + return null; + } + } + } catch (SQLException e) { + e.printStackTrace(); + } finally { + // 释放资源 + try { + if (preparedStatement != null) { + preparedStatement.close(); + } + if (connection != null) { + connection.close(); + } + } catch (SQLException e) { + e.printStackTrace(); + } + } + return null; + } + + public ContextConfig getContextConfig() { + return contextConfig; + } + + public void setContextConfig(ContextConfig contextConfig) { + this.contextConfig = contextConfig; + } + + public String getParentMenuName() { + return parentMenuName; + } + + public void setParentMenuName(String parentMenuName) { + this.parentMenuName = parentMenuName; + } + + public Connection getConnection() { + return connection; + } + + public void setConnection(Connection connection) { + this.connection = connection; + } + + public String getSqlPathTemplate() { + return sqlPathTemplate; + } + + public void setSqlPathTemplate(String sqlPathTemplate) { + this.sqlPathTemplate = sqlPathTemplate; + } + + public List<Menu> getMenus() { + return menus; + } + + public void setMenus(List<Menu> menus) { + this.menus = menus; + } +} -- Gitblit v1.7.1