Commit 76fe65ce by naan1993

代码生成重写

parent 57103bf1
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
<relativePath>../guns-parent/pom.xml</relativePath> <relativePath>../guns-parent/pom.xml</relativePath>
</parent> </parent>
<groupId>com.stylefeng</groupId>
<artifactId>guns-admin</artifactId> <artifactId>guns-admin</artifactId>
<version>1.0.0-SNAPSHOT</version> <version>1.0.0-SNAPSHOT</version>
...@@ -40,6 +39,10 @@ ...@@ -40,6 +39,10 @@
<groupId>com.stylefeng</groupId> <groupId>com.stylefeng</groupId>
<artifactId>guns-core</artifactId> <artifactId>guns-core</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.stylefeng.guns</groupId>
<artifactId>guns-generator</artifactId>
</dependency>
<!--spring boot依赖--> <!--spring boot依赖-->
<dependency> <dependency>
......
package com.stylefeng.guns.modular.code.controller;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.datasource.DruidProperties;
import com.stylefeng.guns.generator.action.config.WebGeneratorConfig;
import com.stylefeng.guns.generator.action.model.GenQo;
import com.stylefeng.guns.modular.code.factory.DefaultTemplateFactory;
import com.stylefeng.guns.modular.code.service.TableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 代码生成控制器
*
* @author fengshuonan
* @Date 2017年11月30日16:39:19
*/
@Controller
@RequestMapping("/code")
public class CodeController extends BaseController {
private static String PREFIX = "/code";
@Autowired
private TableService tableService;
@Autowired
private DruidProperties druidProperties;
/**
* 跳转到代码生成主页
*/
@RequestMapping("")
public String blackboard(Model model) {
model.addAttribute("tables", tableService.getAllTables());
model.addAttribute("params", DefaultTemplateFactory.getDefaultParams());
model.addAttribute("templates", DefaultTemplateFactory.getDefaultTemplates());
return PREFIX + "/code.html";
}
/**
* 生成代码
*/
@RequestMapping("/generate")
@ResponseBody
public Object generate(GenQo genQo){
genQo.setUrl(druidProperties.getUrl());
genQo.setUserName(druidProperties.getUsername());
genQo.setPassword(druidProperties.getPassword());
WebGeneratorConfig webGeneratorConfig = new WebGeneratorConfig(genQo);
webGeneratorConfig.doMpGeneration();
webGeneratorConfig.doAdiGeneration();
return SUCCESS_TIP;
}
}
package com.stylefeng.guns.modular.code.factory;
import com.stylefeng.guns.GunsApplication;
import com.stylefeng.guns.core.CoreFlag;
import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.generator.action.model.GenQo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 模板种类构建器
*
* @author fengshuonan
* @date 2017-12-04-下午2:59
*/
public class DefaultTemplateFactory {
/**
* 获取所有的模板种类
*/
public static List<Map<String,Object>> getDefaultTemplates(){
ArrayList<Map<String, Object>> templates = new ArrayList<>();
templates.add(create("controllerSwitch","controller-控制器模板"));
templates.add(create("entitySwitch","entity-实体模板"));
templates.add(create("serviceSwitch","service-service模板"));
templates.add(create("daoSwitch","dao-dao模板"));
templates.add(create("indexPageSwitch","indexPage-首页模板"));
templates.add(create("addPageSwitch","addPage-添加页面模板"));
templates.add(create("editPageSwitch","editPage-编辑页面模板"));
templates.add(create("jsSwitch","indexJs-主页js模板"));
templates.add(create("infoJsSwitch","infoJs-详情页js模板"));
templates.add(create("sqlSwitch","sql-sql语句模板"));
return templates;
}
/**
* 获取默认的参数
*/
public static GenQo getDefaultParams(){
GenQo genQo = new GenQo();
genQo.setProjectPath(ToolUtil.getWebRootPath(null));
genQo.setAuthor("stylefeng");
genQo.setProjectPackage(GunsApplication.class.getPackage().getName());
genQo.setCorePackage(CoreFlag.class.getPackage().getName());
genQo.setIgnoreTabelPrefix("");
genQo.setModuleName("system");
genQo.setParentMenuName("系统管理");
return genQo;
}
private static Map<String,Object> create(String key,String desc){
HashMap<String, Object> template = new HashMap<>();
template.put("key",key);
template.put("desc",desc);
return template;
}
}
package com.stylefeng.guns.modular.code.service;
import com.baomidou.mybatisplus.mapper.SqlRunner;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 获取数据库所有的表
*
* @author fengshuonan
* @date 2017-12-04-下午1:37
*/
@Service
public class TableService {
@Value("${spring.datasource.db-name}")
private String dbName;
/**
* 获取当前数据库所有的表信息
*/
public List<Map<String, Object>> getAllTables() {
String sql = "select TABLE_NAME as tableName,TABLE_COMMENT as tableComment from information_schema.`TABLES` where TABLE_SCHEMA = '" + dbName + "'";
return SqlRunner.db().selectList(sql);
}
}
package com.stylefeng.guns.modular.system.controller;
import com.stylefeng.guns.common.annotion.Permission;
import com.stylefeng.guns.common.constant.Const;
import com.stylefeng.guns.common.exception.BizExceptionEnum;
import com.stylefeng.guns.common.exception.BussinessException;
import com.stylefeng.guns.core.base.controller.BaseController;
import com.stylefeng.guns.core.template.config.ContextConfig;
import com.stylefeng.guns.core.template.engine.SimpleTemplateEngine;
import com.stylefeng.guns.core.template.engine.base.GunsTemplateEngine;
import com.stylefeng.guns.core.util.ToolUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 代码生成控制器
*
* @author fengshuonan
* @Date 2017-05-23 18:52:34
*/
@Controller
@RequestMapping("/code")
public class CodeController extends BaseController {
private String PREFIX = "/system/code/";
/**
* 跳转到代码生成首页
*/
@RequestMapping("")
public String index() {
return PREFIX + "code.html";
}
/**
* 代码生成
*/
@ApiOperation("生成代码")
@RequestMapping(value = "/generate", method = RequestMethod.POST)
@ResponseBody
@Permission(Const.ADMIN_NAME)
public Object add(@ApiParam(value = "模块名称",required = true) @RequestParam String moduleName,
@RequestParam String bizChName,
@RequestParam String bizEnName,
@RequestParam String path) {
if (ToolUtil.isOneEmpty(bizChName, bizEnName)) {
throw new BussinessException(BizExceptionEnum.REQUEST_NULL);
}
ContextConfig contextConfig = new ContextConfig();
contextConfig.setBizChName(bizChName);
contextConfig.setBizEnName(bizEnName);
contextConfig.setModuleName(moduleName);
if (ToolUtil.isNotEmpty(path)) {
contextConfig.setProjectPath(path);
}
GunsTemplateEngine gunsTemplateEngine = new SimpleTemplateEngine();
gunsTemplateEngine.setContextConfig(contextConfig);
gunsTemplateEngine.start();
return super.SUCCESS_TIP;
}
}
...@@ -78,6 +78,7 @@ spring: ...@@ -78,6 +78,7 @@ spring:
url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull url: jdbc:mysql://127.0.0.1:3306/guns?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
username: root username: root
password: root password: root
db-name: guns
filters: log4j,wall,mergeStat filters: log4j,wall,mergeStat
#多数据源(flowabe的和业务的) #多数据源(flowabe的和业务的)
......
@layout("/common/_container.html"){
<div class="row" xmlns="">
<div class="col-sm-12">
<div class="ibox float-e-margins">
<div class="ibox-title">
<h5>代码生成</h5>
</div>
<div class="ibox-content">
<div class="row row-lg">
<div class="col-sm-12">
<div class="form-horizontal" id="generate">
<div class="row">
<div class="col-sm-4">
<#input id="projectPath" name="项目路径" value="${params.projectPath}"/>
</div>
<div class="col-sm-4">
<#input id="projectPackage" name="项目的包" value="${params.projectPackage}"/>
</div>
<div class="col-sm-4">
<#input id="corePackage" name="核心包" value="${params.corePackage}"/>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<#input id="author" name="作者" value="${params.author!}"/>
</div>
<div class="col-sm-3">
<#input id="bizName" name="业务名称" />
</div>
<div class="col-sm-3">
<#input id="moduleName" name="模块名称" value="${params.moduleName}"/>
</div>
<div class="col-sm-3">
<#input id="parentMenuName" name="父级菜单名称" underline="false" value="${params.parentMenuName}"
hidden="pid" readonly="readonly"
clickFun="Code.showMenuSelectTree(); return false;"
style="background-color: #ffffff !important;"
selectFlag="true" selectId="pcodeTreeDiv" selectTreeId="pcodeTree" selectStyle=""/>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<#input id="tableName" name="表名称" disabled="disabled"/>
</div>
<div class="col-sm-3">
<#input id="ignoreTabelPrefix" name="表前缀" value="${params.ignoreTabelPrefix}"/>
</div>
<div class="col-sm-3">
<#input id="className" name="类名" disabled="disabled"/>
</div>
</div>
<div class="row">
<div class="col-sm-6">
<button id="genBtn" type="button" class="btn btn-primary mr10"
onclick="Code.generate()">
<span style="padding: 5px 20px;">生成</span>
</button>
</div>
</div>
</div>
<div style="padding-top: 10px; overflow: hidden"
class="container-fluid">
<div class="col-md-12">
<div class="row admin-form">
<div class="col-md-3 col-md-offset-3">
<h2>数据表</h2>
<div class="list-group" id="tableList"
data-bind="foreach: tables"
style="height: 500px; overflow-y: scroll">
@for(table in tables!){
<a href="javascript:void(0)" class="list-group-item" tableName="${table.tableName}" onclick="Code.selectTable('${table.tableName}')">${table.tableName}-${table.tableComment}</a>
@}
</div>
</div>
<div class="col-md-3">
<span><h2>模板</h2></span>
<div class="list-group" id="templateList"
style="height: 500px; overflow-y: scroll">
@for(template in templates!){
<a href="javascript:void(0)" class="list-group-item" key="${template.key}" onclick="Code.selectTemplate('${template.key}')">${template.desc}</a>
@}
</div>
</div>
</div>
</div>
</div>
<ul class="nav nav-list">
<li class="divider"></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="${ctxPath}/static/js/common/select-list-object.js"></script>
<script src="${ctxPath}/static/modular/code/gen.js"></script>
@}
...@@ -137,5 +137,13 @@ var Feng = { ...@@ -137,5 +137,13 @@ var Feng = {
live: 'enabled', live: 'enabled',
message: '该字段不能为空' message: '该字段不能为空'
}); });
},
underLineToCamel: function (str) {
var strArr = str.split('_');
for (var i = 1; i < strArr.length; i++) {
strArr[i] = strArr[i].charAt(0).toUpperCase() + strArr[i].substring(1);
}
var result = strArr.join('');
return result.charAt(0).toUpperCase() + result.substring(1);
} }
}; };
var SelectList = {};
SelectList.singelSelect = function (eleName, attr, data) {
var result = false;
$("#" + eleName).find("a").each(function (i, d) {
if ($(this).attr(attr) == data) {
if ($(this).hasClass('active')) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
result = true;
}
} else {
$(this).removeClass('active');
}
});
return result;
};
SelectList.mutiSelect = function (eleName, attr, data) {
var result = false;
$("#" + eleName).find("a").each(function (i, d) {
if ($(this).attr(attr) == data) {
if ($(this).hasClass('active')) {
$(this).removeClass('active');
} else {
$(this).addClass('active');
result = true;
}
}
});
return result;
};
SelectList.clearSelect = function (eleName) {
$("#" + eleName).find("a").each(function (i, d) {
$(this).removeClass('active');
});
};
\ No newline at end of file
/**
* 初始化
*/
var Code = {
ztreeInstance: null,
tableName: "",
submitData: {},
switchs: {}
};
/**
* 选择table的事件
*/
Code.selectTable = function (tableName) {
SelectList.clearSelect("templateList");
Code.switchs = {};
if (SelectList.singelSelect("tableList", "tableName", tableName) == true) {
Code.tableName = tableName;
Code.setTableName(tableName);
} else {
Code.tableName = "";
}
};
/**
* 选择模板的事件
*/
Code.selectTemplate = function (templateKey) {
if (Code.tableName != "") {
if (SelectList.mutiSelect("templateList", "key", templateKey) == true) {
Code.switchs[templateKey] = true;
} else {
Code.switchs[templateKey] = false;
}
} else {
Feng.info("请先选择表");
}
};
/**
* 点击生成
*/
Code.generate = function () {
Code.submitData = {};
Code.submitData.tableName = Code.tableName;
this.set('projectPath').set('author').set('projectPackage').set('corePackage').set('ignoreTabelPrefix').set('bizName').set('moduleName').set('parentMenuName');
var baseAjax = Feng.baseAjax("/code/generate", "生成代码");
for (var item in Code.switchs) {
Code.submitData[item] = Code.switchs[item];
}
baseAjax.setData(Code.submitData);
baseAjax.start();
};
/**
* 设置表名称
*/
Code.setTableName = function (tableName) {
var preSize = $("#ignoreTabelPrefix").val().length;
$("#tableName").val(tableName);
$("#className").val(Feng.underLineToCamel(tableName.substring(preSize)));
};
/**
* 点击父级编号input框时
*/
Code.onClickDept = function (e, treeId, treeNode) {
$("#parentMenuName").attr("value", Code.ztreeInstance.getSelectedVal());
};
/**
* 显示父级菜单选择的树
*/
Code.showMenuSelectTree = function () {
Feng.showInputTree("parentMenuName", "pcodeTreeDiv", 15, 34);
};
$(function () {
var ztree = new $ZTree("pcodeTree", "/menu/selectMenuTreeList");
ztree.bindOnClick(Code.onClickDept);
ztree.init();
Code.ztreeInstance = ztree;
$("#pcodeTree").css('width',$("#parentMenuName").css('width'));
});
Code.set = function (key, val) {
Code.submitData[key] = (typeof value == "undefined") ? $("#" + key).val() : value;
return this;
};
\ No newline at end of file
package com.stylefeng.guns.core;
/**
* 此类用来获取core模块的包路径
*
* @author fengshuonan
* @Date 2017/12/5 下午12:44
*/
public class CoreFlag {
}
\ No newline at end of file
...@@ -22,6 +22,7 @@ import java.io.PrintWriter; ...@@ -22,6 +22,7 @@ import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.lang.reflect.Array; import java.lang.reflect.Array;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
...@@ -548,4 +549,23 @@ public class ToolUtil { ...@@ -548,4 +549,23 @@ public class ToolUtil {
} }
} }
/**
* 获取项目路径
*/
public static String getWebRootPath(String filePath) {
try {
String path = ToolUtil.class.getClassLoader().getResource("").toURI().getPath();
path = path.replace("/WEB-INF/classes/", "");
path = path.replace("/target/classes/", "");
path = path.replace("file:/", "");
if (ToolUtil.isEmpty(filePath)) {
return path;
} else {
return path + "/" + filePath;
}
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>guns-generator</artifactId>
<packaging>jar</packaging>
<name>guns-generator</name>
<description>代码生成器</description>
<parent>
<groupId>com.stylefeng</groupId>
<artifactId>guns-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../guns-parent/pom.xml</relativePath>
</parent>
<dependencies>
<dependency>
<groupId>com.stylefeng</groupId>
<artifactId>guns-core</artifactId>
</dependency>
<dependency>
<groupId>com.ibeetl</groupId>
<artifactId>beetl</artifactId>
</dependency>
</dependencies>
</project>
package generator; package com.stylefeng.guns.generator.action;
import generator.config.GunsGeneratorConfig;
import com.stylefeng.guns.generator.action.config.GunsGeneratorConfig;
/** /**
* 代码生成器,可以生成实体,dao,service,controller,html,js * 代码生成器,可以生成实体,dao,service,controller,html,js
...@@ -20,10 +21,10 @@ public class GunsCodeGenerator { ...@@ -20,10 +21,10 @@ public class GunsCodeGenerator {
gunsGeneratorConfig.doMpGeneration(); gunsGeneratorConfig.doMpGeneration();
/** /**
* guns的生成器: * adi的生成器:
* guns的代码生成器可以生成controller,html页面,页面对应的js * adi的代码生成器可以生成controller,html页面,页面对应的js
*/ */
gunsGeneratorConfig.doGunsGeneration(); gunsGeneratorConfig.doAdiGeneration();
} }
} }
\ No newline at end of file
package generator.config; package com.stylefeng.guns.generator.action.config;
import com.baomidou.mybatisplus.generator.AutoGenerator; import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig; import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
...@@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.generator.config.GlobalConfig; ...@@ -6,11 +6,11 @@ import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig; import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig; import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.stylefeng.guns.core.template.config.ContextConfig;
import com.stylefeng.guns.core.template.config.SqlConfig;
import com.stylefeng.guns.core.template.engine.SimpleTemplateEngine;
import com.stylefeng.guns.core.template.engine.base.GunsTemplateEngine;
import com.stylefeng.guns.core.util.FileUtil; 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.io.File;
import java.util.List; import java.util.List;
...@@ -44,25 +44,13 @@ public abstract class AbstractGeneratorConfig { ...@@ -44,25 +44,13 @@ public abstract class AbstractGeneratorConfig {
SqlConfig sqlConfig = new SqlConfig(); SqlConfig sqlConfig = new SqlConfig();
protected abstract void globalConfig(); protected abstract void config();
protected abstract void dataSourceConfig();
protected abstract void strategyConfig();
protected abstract void packageConfig();
protected abstract void contextConfig();
public void init() { public void init() {
globalConfig(); config();
dataSourceConfig();
strategyConfig();
packageConfig();
contextConfig();
packageConfig.setService("com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".service"); packageConfig.setService(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service");
packageConfig.setServiceImpl("com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".service.impl"); packageConfig.setServiceImpl(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.impl");
//controller没用掉,生成之后会自动删掉 //controller没用掉,生成之后会自动删掉
packageConfig.setController("TTT"); packageConfig.setController("TTT");
...@@ -92,10 +80,10 @@ public abstract class AbstractGeneratorConfig { ...@@ -92,10 +80,10 @@ public abstract class AbstractGeneratorConfig {
} }
public AbstractGeneratorConfig() { public AbstractGeneratorConfig() {
init();
} }
public void doMpGeneration() { public void doMpGeneration() {
init();
AutoGenerator autoGenerator = new AutoGenerator(); AutoGenerator autoGenerator = new AutoGenerator();
autoGenerator.setGlobalConfig(globalConfig); autoGenerator.setGlobalConfig(globalConfig);
autoGenerator.setDataSource(dataSourceConfig); autoGenerator.setDataSource(dataSourceConfig);
...@@ -106,17 +94,17 @@ public abstract class AbstractGeneratorConfig { ...@@ -106,17 +94,17 @@ public abstract class AbstractGeneratorConfig {
//获取table信息,用于guns代码生成 //获取table信息,用于guns代码生成
List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList(); List<TableInfo> tableInfoList = autoGenerator.getConfig().getTableInfoList();
if(tableInfoList != null && tableInfoList.size() > 0){ if (tableInfoList != null && tableInfoList.size() > 0) {
this.tableInfo = tableInfoList.get(0); this.tableInfo = tableInfoList.get(0);
} }
} }
public void doGunsGeneration() { public void doAdiGeneration() {
GunsTemplateEngine gunsTemplateEngine = new SimpleTemplateEngine(); GunsTemplateEngine GunsTemplateEngine = new SimpleTemplateEngine();
gunsTemplateEngine.setContextConfig(contextConfig); GunsTemplateEngine.setContextConfig(contextConfig);
sqlConfig.setConnection(dataSourceConfig.getConn()); sqlConfig.setConnection(dataSourceConfig.getConn());
gunsTemplateEngine.setSqlConfig(sqlConfig); GunsTemplateEngine.setSqlConfig(sqlConfig);
gunsTemplateEngine.setTableInfo(tableInfo); GunsTemplateEngine.setTableInfo(tableInfo);
gunsTemplateEngine.start(); GunsTemplateEngine.start();
} }
} }
package generator.config; package com.stylefeng.guns.generator.action.config;
import com.baomidou.mybatisplus.generator.config.rules.DbType; import com.baomidou.mybatisplus.generator.config.rules.DbType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
...@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; ...@@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
*/ */
public class GunsGeneratorConfig extends AbstractGeneratorConfig { public class GunsGeneratorConfig extends AbstractGeneratorConfig {
@Override
protected void globalConfig() { protected void globalConfig() {
globalConfig.setOutputDir("D:\\ideaSpace\\guns\\guns-admin\\src\\main\\java");//写自己项目的绝对路径,注意具体到java目录 globalConfig.setOutputDir("D:\\ideaSpace\\guns\\guns-admin\\src\\main\\java");//写自己项目的绝对路径,注意具体到java目录
globalConfig.setFileOverride(true); globalConfig.setFileOverride(true);
...@@ -19,58 +18,64 @@ public class GunsGeneratorConfig extends AbstractGeneratorConfig { ...@@ -19,58 +18,64 @@ public class GunsGeneratorConfig extends AbstractGeneratorConfig {
globalConfig.setBaseResultMap(true); globalConfig.setBaseResultMap(true);
globalConfig.setBaseColumnList(true); globalConfig.setBaseColumnList(true);
globalConfig.setOpen(false); globalConfig.setOpen(false);
globalConfig.setAuthor("stylefeng"); globalConfig.setAuthor("fengshuonan");
} }
@Override
protected void dataSourceConfig() { protected void dataSourceConfig() {
dataSourceConfig.setDbType(DbType.MYSQL); dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setDriverName("com.mysql.jdbc.Driver"); dataSourceConfig.setDriverName("com.mysql.jdbc.Driver");
dataSourceConfig.setUsername("root"); dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root"); dataSourceConfig.setPassword("root");
dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/guns?characterEncoding=utf8"); dataSourceConfig.setUrl("jdbc:mysql://127.0.0.1:3306/adi_user_center?characterEncoding=utf8");
} }
@Override
protected void strategyConfig() { protected void strategyConfig() {
//strategy.setTablePrefix(new String[]{"_"});// 此处可以修改为您的表前缀 //strategyConfig.setTablePrefix(new String[]{"xx_"});// 此处可以修改为您的表前缀
strategyConfig.setInclude(new String[]{"expense"});//这里限制需要生成的表,不写则是生成所有表
strategyConfig.setNaming(NamingStrategy.underline_to_camel); strategyConfig.setNaming(NamingStrategy.underline_to_camel);
} }
@Override
protected void packageConfig() { protected void packageConfig() {
packageConfig.setParent(null); packageConfig.setParent(null);
packageConfig.setEntity("com.stylefeng.guns.common.persistence.model"); packageConfig.setEntity("com.stylefeng.guns.admin.modular.system.persistence.model");
packageConfig.setMapper("com.stylefeng.guns.common.persistence.dao"); packageConfig.setMapper("com.stylefeng.guns.admin.modular.system.persistence.dao");
packageConfig.setXml("com.stylefeng.guns.common.persistence.dao.mapping"); packageConfig.setXml("com.stylefeng.guns.admin.modular.system.persistence.dao.mapping");
} }
@Override
protected void contextConfig() { protected void contextConfig() {
contextConfig.setBizChName("报销管理"); contextConfig.setProPackage("com.stylefeng.guns.admin");
contextConfig.setBizEnName("expense"); contextConfig.setCoreBasePackage("com.stylefeng.guns.core");
contextConfig.setModuleName("flowable"); contextConfig.setBizChName("字典管理");
contextConfig.setBizEnName("sysDict");
contextConfig.setModuleName("system");
contextConfig.setProjectPath("D:\\ideaSpace\\guns\\guns-admin");//写自己项目的绝对路径 contextConfig.setProjectPath("D:\\ideaSpace\\guns\\guns-admin");//写自己项目的绝对路径
contextConfig.setEntityName("Expense"); contextConfig.setEntityName("SysDict");
sqlConfig.setParentMenuName(null);//这里写已有菜单的名称,当做父节点 sqlConfig.setParentMenuName(null);//这里写已有菜单的名称,当做父节点
/** /**
* mybatis-plus 生成器开关 * mybatis-plus 生成器开关
*/ */
contextConfig.setEntitySwitch(true); contextConfig.setEntitySwitch(true);
contextConfig.setDaoSwitch(false); contextConfig.setDaoSwitch(true);
contextConfig.setServiceSwitch(false); contextConfig.setServiceSwitch(true);
/** /**
* guns 生成器开关 * adi 生成器开关
*/ */
contextConfig.setControllerSwitch(false); contextConfig.setControllerSwitch(true);
contextConfig.setIndexPageSwitch(false); contextConfig.setIndexPageSwitch(true);
contextConfig.setAddPageSwitch(false); contextConfig.setAddPageSwitch(true);
contextConfig.setEditPageSwitch(false); contextConfig.setEditPageSwitch(true);
contextConfig.setJsSwitch(false); contextConfig.setJsSwitch(true);
contextConfig.setInfoJsSwitch(false); contextConfig.setInfoJsSwitch(true);
contextConfig.setSqlSwitch(false); contextConfig.setSqlSwitch(true);
}
@Override
protected void config() {
globalConfig();
dataSourceConfig();
strategyConfig();
packageConfig();
contextConfig();
} }
} }
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.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.persistence.model");
packageConfig.setMapper(genQo.getProjectPackage() + ".modular.system.persistence.dao");
packageConfig.setXml(genQo.getProjectPackage() + ".modular.system.persistence.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(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());
/**
* adi 生成器开关
*/
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());
}
}
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;
}
}
package com.stylefeng.guns.core.template.engine; package com.stylefeng.guns.generator.engine;
import com.stylefeng.guns.core.template.engine.base.GunsTemplateEngine;
import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.core.util.ToolUtil;
import com.stylefeng.guns.generator.engine.base.GunsTemplateEngine;
/** /**
* 通用的模板生成引擎 * 通用的模板生成引擎
......
package com.stylefeng.guns.core.template.engine.base; package com.stylefeng.guns.generator.engine.base;
import com.baomidou.mybatisplus.generator.config.po.TableInfo; import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.stylefeng.guns.core.template.config.*; import com.stylefeng.guns.generator.engine.config.*;
/** /**
* 模板生成父类 * 模板生成父类
......
package com.stylefeng.guns.core.template.engine.base; package com.stylefeng.guns.generator.engine.base;
import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.core.util.ToolUtil;
import com.sun.javafx.PlatformUtil; import com.sun.javafx.PlatformUtil;
...@@ -14,7 +14,7 @@ import java.io.IOException; ...@@ -14,7 +14,7 @@ import java.io.IOException;
import java.util.Properties; import java.util.Properties;
/** /**
* guns项目模板生成 引擎 * ADI项目模板生成 引擎
* *
* @author fengshuonan * @author fengshuonan
* @date 2017-05-07 22:15 * @date 2017-05-07 22:15
......
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.core.util.ToolUtil;
...@@ -10,15 +11,17 @@ import com.stylefeng.guns.core.util.ToolUtil; ...@@ -10,15 +11,17 @@ import com.stylefeng.guns.core.util.ToolUtil;
*/ */
public class ContextConfig { public class ContextConfig {
private String templatePrefixPath = "gunsTemplate/advanced"; private String templatePrefixPath = "template/advanced";
private String projectPath = "D:\\ideaSpace\\guns";//模板输出的项目目录 private String projectPath = "D:\\ideaSpace\\adi";//模板输出的项目目录
private String bizChName; //业务名称 private String bizChName; //业务名称
private String bizEnName; //业务英文名称 private String bizEnName; //业务英文名称
private String bizEnBigName;//业务英文名称(大写) private String bizEnBigName;//业务英文名称(大写)
private String moduleName = "system"; //模块名称 private String moduleName = "system"; //模块名称
private String modelPackageName = "com.stylefeng.guns.common.persistence.model"; //model的包名 private String proPackage = "com.stylefeng.guns.admin";
private String modelMapperPackageName = "com.stylefeng.guns.common.persistence.dao"; //model的dao private String coreBasePackage = "com.stylefeng.guns.core";
private String modelPackageName = "com.stylefeng.guns.admin.modular.system.persistence.model"; //model的包名
private String modelMapperPackageName = "com.stylefeng.guns.admin.modular.system.persistence.dao"; //model的dao
private String entityName; //实体的名称 private String entityName; //实体的名称
private Boolean controllerSwitch = true; //是否生成控制器代码开关 private Boolean controllerSwitch = true; //是否生成控制器代码开关
...@@ -36,6 +39,8 @@ public class ContextConfig { ...@@ -36,6 +39,8 @@ public class ContextConfig {
if (entityName == null) { if (entityName == null) {
entityName = bizEnBigName; entityName = bizEnBigName;
} }
modelPackageName = proPackage + "." + "modular.system.persistence.model";
modelMapperPackageName = proPackage + "." + "modular.system.persistence.dao";
} }
public String getBizEnBigName() { public String getBizEnBigName() {
...@@ -190,4 +195,20 @@ public class ContextConfig { ...@@ -190,4 +195,20 @@ public class ContextConfig {
public void setSqlSwitch(Boolean sqlSwitch) { public void setSqlSwitch(Boolean sqlSwitch) {
this.sqlSwitch = 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;
}
} }
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -19,20 +19,20 @@ public class ControllerConfig { ...@@ -19,20 +19,20 @@ public class ControllerConfig {
public void init() { public void init() {
ArrayList<String> imports = new ArrayList<>(); ArrayList<String> imports = new ArrayList<>();
imports.add("com.stylefeng.guns.core.base.controller.BaseController"); imports.add(contextConfig.getCoreBasePackage() + ".base.controller.BaseController");
imports.add("org.springframework.stereotype.Controller"); imports.add("org.springframework.stereotype.Controller");
imports.add("org.springframework.web.bind.annotation.RequestMapping"); imports.add("org.springframework.web.bind.annotation.RequestMapping");
imports.add("org.springframework.web.bind.annotation.ResponseBody"); imports.add("org.springframework.web.bind.annotation.ResponseBody");
imports.add("org.springframework.ui.Model"); imports.add("org.springframework.ui.Model");
imports.add("org.springframework.web.bind.annotation.PathVariable"); imports.add("org.springframework.web.bind.annotation.PathVariable");
imports.add("org.springframework.beans.factory.annotation.Autowired"); imports.add("org.springframework.beans.factory.annotation.Autowired");
imports.add("com.stylefeng.guns.core.log.LogObjectHolder"); imports.add(contextConfig.getProPackage() + ".core.log.LogObjectHolder");
imports.add("org.springframework.web.bind.annotation.RequestParam"); imports.add("org.springframework.web.bind.annotation.RequestParam");
imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
imports.add("com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".service" + ".I" + contextConfig.getEntityName() + "Service"); imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service" + ".I" + contextConfig.getEntityName() + "Service");
this.imports = imports; this.imports = imports;
this.packageName = "com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".controller"; this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".controller";
this.controllerPathTemplate = "\\src\\main\\java\\com\\stylefeng\\guns\\modular\\" + contextConfig.getModuleName() + "\\controller\\{}Controller.java"; this.controllerPathTemplate = "\\src\\main\\java\\"+contextConfig.getProPackage().replaceAll("\\.","\\\\")+"\\modular\\" + contextConfig.getModuleName() + "\\controller\\{}Controller.java";
} }
public String getPackageName() { public String getPackageName() {
...@@ -66,4 +66,5 @@ public class ControllerConfig { ...@@ -66,4 +66,5 @@ public class ControllerConfig {
public void setContextConfig(ContextConfig contextConfig) { public void setContextConfig(ContextConfig contextConfig) {
this.contextConfig = contextConfig; this.contextConfig = contextConfig;
} }
} }
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
/** /**
* Dao模板生成的配置 * Dao模板生成的配置
...@@ -16,9 +16,9 @@ public class DaoConfig { ...@@ -16,9 +16,9 @@ public class DaoConfig {
private String packageName; private String packageName;
public void init() { public void init() {
this.daoPathTemplate = "\\src\\main\\java\\com\\stylefeng\\guns\\modular\\" + contextConfig.getModuleName() + "\\dao\\{}Dao.java"; this.daoPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\{}Dao.java";
this.xmlPathTemplate = "\\src\\main\\java\\com\\stylefeng\\guns\\modular\\" + contextConfig.getModuleName() + "\\dao\\mapping\\{}Dao.xml"; this.xmlPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\dao\\mapping\\{}Dao.xml";
this.packageName = "com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".dao"; this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".dao";
} }
public String getPackageName() { public String getPackageName() {
......
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
/** /**
* 页面 模板生成的配置 * 页面 模板生成的配置
......
package com.stylefeng.guns.generator.engine.config;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import java.io.Serializable;
import java.util.Date;
/**
* <p>
* 资源表
* </p>
*
* @author fengshuonan
* @since 2017-11-23
*/
@TableName("adi_uc_permission")
public class Permission extends Model<Permission> {
private static final long serialVersionUID = 1L;
@TableId(value="id", type= IdType.AUTO)
private Long id;
/**
* 权限的标识
*/
private String code;
/**
* 父id
*/
private Long pid;
/**
* 父id的集合
*/
private String pids;
/**
* 权限名称
*/
private String name;
/**
* 权限请求路径
*/
private String url;
/**
* 菜单标识: Y-是菜单, N-不是
*/
@TableField("menu_flag")
private String menuFlag;
/**
* 图标
*/
private String icon;
/**
* 菜单层级
*/
private Integer level;
/**
* 排序
*/
private Integer sort;
/**
* 创建时间
*/
@TableField("create_time")
private Date createTime;
/**
* 修改时间
*/
@TableField("update_time")
private Date updateTime;
/**
* 是否可用:Y-可用;N-不可用
*/
private String status;
/**
* 是否删除: Y-已删除; N-未删除
*/
@TableField("del_flag")
private String delFlag;
/**
* 菜单是否打开的标识: Y-打开, N-不打开
*/
@TableField("open_flag")
private String openFlag;
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 Long getPid() {
return pid;
}
public void setPid(Long pid) {
this.pid = pid;
}
public String getPids() {
return pids;
}
public void setPids(String pids) {
this.pids = pids;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getMenuFlag() {
return menuFlag;
}
public void setMenuFlag(String menuFlag) {
this.menuFlag = menuFlag;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public Integer getLevel() {
return level;
}
public void setLevel(Integer level) {
this.level = level;
}
public Integer getSort() {
return sort;
}
public void setSort(Integer sort) {
this.sort = sort;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public Date getUpdateTime() {
return updateTime;
}
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getDelFlag() {
return delFlag;
}
public void setDelFlag(String delFlag) {
this.delFlag = delFlag;
}
public String getOpenFlag() {
return openFlag;
}
public void setOpenFlag(String openFlag) {
this.openFlag = openFlag;
}
@Override
protected Serializable pkVal() {
return this.id;
}
@Override
public String toString() {
return "Permission{" +
"permId=" + id +
", code=" + code +
", pid=" + pid +
", pids=" + pids +
", name=" + name +
", url=" + url +
", menuFlag=" + menuFlag +
", icon=" + icon +
", level=" + level +
", sort=" + sort +
", createTime=" + createTime +
", updateTime=" + updateTime +
", status=" + status +
", delFlag=" + delFlag +
", openFlag=" + openFlag +
"}";
}
}
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
...@@ -26,8 +26,8 @@ public class ServiceConfig { ...@@ -26,8 +26,8 @@ public class ServiceConfig {
imports.add("org.springframework.stereotype.Service"); imports.add("org.springframework.stereotype.Service");
imports.add("com.baomidou.mybatisplus.service.impl.ServiceImpl"); imports.add("com.baomidou.mybatisplus.service.impl.ServiceImpl");
imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); imports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
imports.add(contextConfig.getModelMapperPackageName() + "." + contextConfig.getEntityName()+"Mapper"); imports.add(contextConfig.getModelMapperPackageName() + "." + contextConfig.getEntityName() + "Mapper");
imports.add("com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".service.I" + contextConfig.getBizEnBigName() + "Service"); imports.add(contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service.I" + contextConfig.getBizEnBigName() + "Service");
this.serviceImplImports = imports; this.serviceImplImports = imports;
ArrayList<String> interfaceImports = new ArrayList<>(); ArrayList<String> interfaceImports = new ArrayList<>();
...@@ -35,9 +35,9 @@ public class ServiceConfig { ...@@ -35,9 +35,9 @@ public class ServiceConfig {
interfaceImports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName()); interfaceImports.add(contextConfig.getModelPackageName() + "." + contextConfig.getEntityName());
this.serviceInterfaceImports = interfaceImports; this.serviceInterfaceImports = interfaceImports;
this.servicePathTemplate = "\\src\\main\\java\\com\\stylefeng\\guns\\modular\\" + contextConfig.getModuleName() + "\\service\\I{}Service.java"; this.servicePathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\I{}Service.java";
this.serviceImplPathTemplate = "\\src\\main\\java\\com\\stylefeng\\guns\\modular\\" + contextConfig.getModuleName() + "\\service\\impl\\{}ServiceImpl.java"; this.serviceImplPathTemplate = "\\src\\main\\java\\" + contextConfig.getProPackage().replaceAll("\\.", "\\\\") + "\\modular\\" + contextConfig.getModuleName() + "\\service\\impl\\{}ServiceImpl.java";
this.packageName = "com.stylefeng.guns.modular." + contextConfig.getModuleName() + ".service"; this.packageName = contextConfig.getProPackage() + ".modular." + contextConfig.getModuleName() + ".service";
} }
......
package com.stylefeng.guns.core.template.config; package com.stylefeng.guns.generator.engine.config;
import com.stylefeng.guns.common.constant.state.IsMenu; import com.baomidou.mybatisplus.toolkit.IdWorker;
import com.stylefeng.guns.common.constant.state.MenuOpenStatus;
import com.stylefeng.guns.common.constant.state.MenuStatus;
import com.stylefeng.guns.common.persistence.model.Menu;
import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.core.util.ToolUtil;
import java.sql.Connection; import java.sql.Connection;
...@@ -29,12 +26,16 @@ public class SqlConfig { ...@@ -29,12 +26,16 @@ public class SqlConfig {
private String parentMenuName; private String parentMenuName;
private List<Menu> menus = new ArrayList<>(6); private List<Permission> menus = new ArrayList<>(6);
public void init() { public void init() {
this.sqlPathTemplate = "\\src\\main\\java\\{}.sql"; this.sqlPathTemplate = "\\src\\main\\java\\{}.sql";
if(parentMenuName == null){
return ;
}
//根据父菜单查询数据库中的pcode和pcodes //根据父菜单查询数据库中的pcode和pcodes
String[] pcodeAndPcodes = getPcodeAndPcodes(); String[] pcodeAndPcodes = getPcodeAndPcodes();
if (pcodeAndPcodes == null) { if (pcodeAndPcodes == null) {
...@@ -43,80 +44,80 @@ public class SqlConfig { ...@@ -43,80 +44,80 @@ public class SqlConfig {
} }
//业务菜单 //业务菜单
Menu menu = new Menu(); Permission menu = new Permission();
menu.setId(IdWorker.getId());
menu.setCode(contextConfig.getBizEnName()); menu.setCode(contextConfig.getBizEnName());
menu.setPcode(pcodeAndPcodes[0]); menu.setPid(Long.valueOf(pcodeAndPcodes[0]));
menu.setPcodes(pcodeAndPcodes[1] + "[" + pcodeAndPcodes[0] + "],"); menu.setPids(pcodeAndPcodes[1] + "[" + pcodeAndPcodes[0] + "],");
menu.setName(contextConfig.getBizChName()); menu.setName(contextConfig.getBizChName());
menu.setIcon(""); menu.setIcon("");
menu.setUrl("/" + contextConfig.getBizEnName()); menu.setUrl("/" + contextConfig.getBizEnName());
menu.setNum(99); menu.setSort(99);
menu.setLevels(2); menu.setLevel(2);
menu.setIsmenu(IsMenu.YES.getCode()); menu.setMenuFlag("Y");
menu.setTips(null); menu.setStatus("Y");
menu.setStatus(MenuStatus.ENABLE.getCode()); menu.setOpenFlag("N");
menu.setIsopen(MenuOpenStatus.CLOSE.getCode());
menus.add(menu); menus.add(menu);
//列表 //列表
Menu list = createSubMenu(menu); Permission list = createSubMenu(menu);
list.setCode(contextConfig.getBizEnName() + "_list"); list.setCode(contextConfig.getBizEnName() + "_list");
list.setName(contextConfig.getBizChName() + "列表"); list.setName(contextConfig.getBizChName() + "列表");
list.setUrl("/" + contextConfig.getBizEnName() + "/list"); list.setUrl("/" + contextConfig.getBizEnName() + "/list");
menus.add(list); menus.add(list);
//添加 //添加
Menu add = createSubMenu(menu); Permission add = createSubMenu(menu);
add.setCode(contextConfig.getBizEnName() + "_add"); add.setCode(contextConfig.getBizEnName() + "_add");
add.setName(contextConfig.getBizChName() + "添加"); add.setName(contextConfig.getBizChName() + "添加");
add.setUrl("/" + contextConfig.getBizEnName() + "/add"); add.setUrl("/" + contextConfig.getBizEnName() + "/add");
menus.add(add); menus.add(add);
//更新 //更新
Menu update = createSubMenu(menu); Permission update = createSubMenu(menu);
update.setCode(contextConfig.getBizEnName() + "_update"); update.setCode(contextConfig.getBizEnName() + "_update");
update.setName(contextConfig.getBizChName() + "更新"); update.setName(contextConfig.getBizChName() + "更新");
update.setUrl("/" + contextConfig.getBizEnName() + "/update"); update.setUrl("/" + contextConfig.getBizEnName() + "/update");
menus.add(update); menus.add(update);
//删除 //删除
Menu delete = createSubMenu(menu); Permission delete = createSubMenu(menu);
delete.setCode(contextConfig.getBizEnName() + "_delete"); delete.setCode(contextConfig.getBizEnName() + "_delete");
delete.setName(contextConfig.getBizChName() + "删除"); delete.setName(contextConfig.getBizChName() + "删除");
delete.setUrl("/" + contextConfig.getBizEnName() + "/delete"); delete.setUrl("/" + contextConfig.getBizEnName() + "/delete");
menus.add(delete); menus.add(delete);
//详情 //详情
Menu detail = createSubMenu(menu); Permission detail = createSubMenu(menu);
detail.setCode(contextConfig.getBizEnName() + "_detail"); detail.setCode(contextConfig.getBizEnName() + "_detail");
detail.setName(contextConfig.getBizChName() + "详情"); detail.setName(contextConfig.getBizChName() + "详情");
detail.setUrl("/" + contextConfig.getBizEnName() + "/detail"); detail.setUrl("/" + contextConfig.getBizEnName() + "/detail");
menus.add(detail); menus.add(detail);
} }
private Menu createSubMenu(Menu parentMenu) { private Permission createSubMenu(Permission parentMenu) {
Menu menu = new Menu(); Permission permission = new Permission();
menu.setPcode(parentMenu.getCode()); permission.setId(IdWorker.getId());
menu.setPcodes(parentMenu.getPcodes() + "[" + parentMenu.getCode() + "],"); permission.setPid(parentMenu.getId());
menu.setIcon(""); permission.setPids(parentMenu.getPids() + "[" + parentMenu.getId() + "],");
menu.setNum(99); permission.setIcon("");
menu.setLevels(3); permission.setSort(99);
menu.setIsmenu(IsMenu.NO.getCode()); permission.setLevel(3);
menu.setTips(null); permission.setMenuFlag("N");
menu.setStatus(MenuStatus.ENABLE.getCode()); permission.setStatus("Y");
menu.setIsopen(MenuOpenStatus.CLOSE.getCode()); permission.setOpenFlag("N");
return menu; return permission;
} }
public String[] getPcodeAndPcodes() { public String[] getPcodeAndPcodes() {
PreparedStatement preparedStatement = null; PreparedStatement preparedStatement = null;
try { try {
preparedStatement = connection.prepareStatement("select * from menu where name like ?"); preparedStatement = connection.prepareStatement("select * from adi_uc_permission where name like ?");
preparedStatement.setString(1, "%" + parentMenuName + "%"); preparedStatement.setString(1, "%" + parentMenuName + "%");
ResultSet results = preparedStatement.executeQuery(); ResultSet results = preparedStatement.executeQuery();
while (results.next()) { while (results.next()) {
String pcode = results.getString("code"); String pcode = String.valueOf(results.getLong("id"));
String pcodes = results.getString("pcodes"); String pcodes = results.getString("pids");
if (ToolUtil.isNotEmpty(pcode) && ToolUtil.isNotEmpty(pcodes)) { if (ToolUtil.isNotEmpty(pcode) && ToolUtil.isNotEmpty(pcodes)) {
String[] strings = {pcode, pcodes}; String[] strings = {pcode, pcodes};
return strings; return strings;
...@@ -174,11 +175,11 @@ public class SqlConfig { ...@@ -174,11 +175,11 @@ public class SqlConfig {
this.sqlPathTemplate = sqlPathTemplate; this.sqlPathTemplate = sqlPathTemplate;
} }
public List<Menu> getMenus() { public List<Permission> getMenus() {
return menus; return menus;
} }
public void setMenus(List<Menu> menus) { public void setMenus(List<Permission> menus) {
this.menus = menus; this.menus = menus;
} }
} }
...@@ -47,6 +47,11 @@ ...@@ -47,6 +47,11 @@
<dependencyManagement> <dependencyManagement>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.stylefeng.guns</groupId>
<artifactId>guns-generator</artifactId>
<version>${guns.version}</version>
</dependency>
<dependency>
<groupId>org.flowable</groupId> <groupId>org.flowable</groupId>
<artifactId>flowable-spring-boot-starter-basic</artifactId> <artifactId>flowable-spring-boot-starter-basic</artifactId>
<version>${flowable.version}</version> <version>${flowable.version}</version>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment