修改代码生成模块

This commit is contained in:
jinqiming 2021-12-24 17:53:16 +08:00
parent 9db7adfd18
commit 7d4f28e037
16 changed files with 338 additions and 202 deletions

View File

@ -0,0 +1,24 @@
package com.snow.flowable;
import com.snow.JunitTestApplication;
import com.snow.generator.service.impl.GenTableServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author qimingjin
* @Title:
* @Description:
* @date 2021/12/24 11:21
*/
@Slf4j
public class GenTableTests extends JunitTestApplication {
@Autowired
private GenTableServiceImpl genTableServiceImpl;
@Test
public void createMenu(){
genTableServiceImpl.createMenu("sys_menu_c");
}
}

View File

@ -0,0 +1,35 @@
package com.snow.framework.config;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
* @author snow
*/
@Component
public class MybatisMetaObjectHandlerConfig implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
Object createTime = getFieldValByName("createTime", metaObject);
Object updateTime = getFieldValByName("updateTime", metaObject);
if (createTime == null){
setFieldValByName("createTime",new Date(), metaObject);
}
if (updateTime == null){
setFieldValByName("updateTime",new Date(), metaObject);
}
}
@Override
public void updateFill(MetaObject metaObject) {
Object updateTime = getFieldValByName("updateTime", metaObject);
if (updateTime == null) {
setFieldValByName("updateTime", new Date(), metaObject);
}
}
}

View File

@ -26,7 +26,7 @@
<!-- 通用工具-->
<dependency>
<groupId>com.snow</groupId>
<artifactId>snow-common</artifactId>
<artifactId>snow-system</artifactId>
</dependency>
</dependencies>

View File

@ -1,30 +1,10 @@
package com.snow.generator.controller;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import cn.hutool.core.util.StrUtil;
import com.alibaba.druid.DbType;
import com.alibaba.druid.sql.SQLUtils;
import com.alibaba.druid.sql.ast.SQLStatement;
import com.alibaba.druid.sql.dialect.mysql.ast.statement.MySqlCreateTableStatement;
import com.snow.common.utils.sql.SqlUtil;
import com.snow.generator.domain.GenTable;
import com.snow.generator.domain.GenTableColumn;
import org.apache.commons.io.IOUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.fastjson.JSON;
import com.snow.common.annotation.Log;
import com.snow.common.core.controller.BaseController;
@ -35,8 +15,25 @@ import com.snow.common.core.text.Convert;
import com.snow.common.enums.BusinessType;
import com.snow.common.utils.StringUtils;
import com.snow.common.utils.security.PermissionUtils;
import com.snow.common.utils.sql.SqlUtil;
import com.snow.generator.domain.GenTable;
import com.snow.generator.domain.GenTableColumn;
import com.snow.generator.service.IGenTableColumnService;
import com.snow.generator.service.IGenTableService;
import org.apache.commons.io.IOUtils;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 代码生成 操作处理
@ -150,7 +147,7 @@ public class GenController extends BaseController
for (SQLStatement sqlStatement : sqlStatements) {
if (sqlStatement instanceof MySqlCreateTableStatement) {
MySqlCreateTableStatement createTableStatement = (MySqlCreateTableStatement) sqlStatement;
if (genTableService.createTable(createTableStatement.toString())) {
if (genTableService.createTable(StrUtil.removeAll(String.valueOf(createTableStatement),'\r', '\n','\t'))) {
String tableName = createTableStatement.getTableName().replaceAll("`", "");
tableNames.add(tableName);
}
@ -178,6 +175,20 @@ public class GenController extends BaseController
genTableService.synchDb(tableName);
return AjaxResult.success();
}
/**
* 生成系统菜单
*/
@RequiresPermissions("tool:gen:createMenu")
@Log(title = "菜单生成", businessType = BusinessType.INSERT)
@GetMapping("/createMenu/{tableName}")
@ResponseBody
public AjaxResult createMenu(@PathVariable("tableName") String tableName)
{
genTableService.createMenu(tableName);
return AjaxResult.success();
}
/**
* 修改代码生成业务
*/

View File

@ -2,6 +2,7 @@ package com.snow.generator.mapper;
import java.util.List;
import com.snow.generator.domain.GenTable;
import org.apache.ibatis.annotations.Param;
/**
* 业务 数据层
@ -88,5 +89,5 @@ public interface GenTableMapper
* @param sql
* @return 结果
*/
public int createTable(String sql);
public int createTable(@Param("sql") String sql);
}

View File

@ -1,23 +1,27 @@
package com.snow.generator.service.impl;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import com.aliyun.oss.ServiceException;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.snow.common.constant.Constants;
import com.snow.common.constant.GenConstants;
import com.snow.common.core.text.CharsetKit;
import com.snow.common.core.text.Convert;
import com.snow.common.exception.BusinessException;
import com.snow.common.utils.DateUtils;
import com.snow.common.utils.StringUtils;
import com.snow.common.utils.file.FileUtils;
import com.snow.generator.domain.GenTable;
import com.snow.generator.domain.GenTableColumn;
import com.snow.generator.mapper.GenTableColumnMapper;
import com.snow.generator.mapper.GenTableMapper;
import com.snow.generator.service.IGenTableService;
import com.snow.generator.util.GenUtils;
import com.snow.generator.util.VelocityInitializer;
import com.snow.generator.util.VelocityUtils;
import com.snow.system.domain.SysMenu;
import com.snow.system.service.ISysMenuService;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
@ -27,17 +31,19 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.snow.common.constant.Constants;
import com.snow.common.constant.GenConstants;
import com.snow.common.core.text.CharsetKit;
import com.snow.common.core.text.Convert;
import com.snow.common.exception.BusinessException;
import com.snow.common.utils.StringUtils;
import com.snow.common.utils.file.FileUtils;
import com.snow.generator.mapper.GenTableColumnMapper;
import com.snow.generator.mapper.GenTableMapper;
import java.awt.*;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
/**
* 业务 服务层实现
@ -55,6 +61,9 @@ public class GenTableServiceImpl implements IGenTableService
@Autowired
private GenTableColumnMapper genTableColumnMapper;
@Autowired
private ISysMenuService sysMenuService;
/**
* 查询业务信息
*
@ -145,7 +154,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 结果
*/
@Override
//@Transactional
@Transactional
public void deleteGenTableByIds(String ids)
{
genTableMapper.deleteGenTableByIds(Convert.toLongArray(ids));
@ -172,20 +181,69 @@ public class GenTableServiceImpl implements IGenTableService
setSubTable(table);
// 设置主键列信息
setPkColumn(table);
VelocityInitializer.initVelocity();
VelocityContext context = VelocityUtils.prepareContext(table);
// 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) {
if (StringUtils.contains(template, "sql.vm")) {
// 渲染模板
StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw);
log.info("@@生成菜单时组装的SQL:{}",sw.toString());
genTableMapper.createTable(sw.toString());
}
}
//取父级菜单
String options = table.getOptions();
JSONObject paramsObj = JSON.parseObject(options);
String parentMenuId = VelocityUtils.getParentMenuId(paramsObj);
//保存菜单
SysMenu sysMenu=new SysMenu();
sysMenu.setMenuName(table.getFunctionName());
sysMenu.setParentId(Long.parseLong(parentMenuId));
sysMenu.setOrderNum("1");
sysMenu.setUrl(StrUtil.format("/{}/{}",table.getModuleName(),table.getBusinessName()));
sysMenu.setMenuType("C");
sysMenu.setPerms(StrUtil.format("{}:view",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
sysMenu.setRemark(StrUtil.format("{}菜单",table.getFunctionName()));
sysMenu.setCreateBy(table.getCreateBy());
sysMenuService.save(sysMenu);
//保存权限
List<SysMenu> sysMenuList= Lists.newArrayList();
SysMenu queryMenu=new SysMenu();
queryMenu.setMenuName(StrUtil.format("{}查询",table.getFunctionName()));
queryMenu.setParentId(sysMenu.getMenuId());
queryMenu.setOrderNum("1");
queryMenu.setUrl("#");
queryMenu.setMenuType("F");
queryMenu.setPerms(StrUtil.format("{}:list",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
queryMenu.setRemark(StrUtil.format("{}查询",table.getFunctionName()));
sysMenuList.add(queryMenu);
SysMenu insertMenu=new SysMenu();
insertMenu.setMenuName(StrUtil.format("{}新增",table.getFunctionName()));
insertMenu.setParentId(sysMenu.getMenuId());
insertMenu.setOrderNum("2");
insertMenu.setUrl("#");
insertMenu.setMenuType("F");
insertMenu.setPerms(StrUtil.format("{}:add",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
insertMenu.setRemark(StrUtil.format("{}新增",table.getFunctionName()));
sysMenuList.add(insertMenu);
SysMenu editMenu=new SysMenu();
editMenu.setMenuName(StrUtil.format("{}修改",table.getFunctionName()));
editMenu.setParentId(sysMenu.getMenuId());
editMenu.setOrderNum("3");
editMenu.setUrl("#");
editMenu.setMenuType("F");
editMenu.setPerms(StrUtil.format("{}:edit",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
editMenu.setRemark(StrUtil.format("{}修改",table.getFunctionName()));
sysMenuList.add(editMenu);
SysMenu deleteMenu=new SysMenu();
deleteMenu.setMenuName(StrUtil.format("{}删除",table.getFunctionName()));
deleteMenu.setParentId(sysMenu.getMenuId());
deleteMenu.setOrderNum("4");
deleteMenu.setUrl("#");
deleteMenu.setMenuType("F");
deleteMenu.setPerms(StrUtil.format("{}:remove",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
deleteMenu.setRemark(StrUtil.format("{}删除",table.getFunctionName()));
sysMenuList.add(deleteMenu);
SysMenu exportMenu=new SysMenu();
exportMenu.setMenuName(StrUtil.format("{}导出",table.getFunctionName()));
exportMenu.setParentId(sysMenu.getMenuId());
exportMenu.setOrderNum("5");
exportMenu.setUrl("#");
exportMenu.setMenuType("F");
exportMenu.setPerms(StrUtil.format("{}:export",VelocityUtils.getPermissionPrefix(table.getModuleName(), table.getBusinessName())));
exportMenu.setRemark(StrUtil.format("{}导出",table.getFunctionName()));
sysMenuList.add(exportMenu);
sysMenuService.saveBatch(sysMenuList);
}
/**
@ -222,22 +280,19 @@ public class GenTableServiceImpl implements IGenTableService
*/
@Override
@Transactional
public void synchDb(String tableName)
{
public void synchDb(String tableName) {
GenTable table = genTableMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns();
List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
List<GenTableColumn> dbTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
if (StringUtils.isEmpty(dbTableColumns))
{
if (StringUtils.isEmpty(dbTableColumns)) {
throw new BusinessException("同步数据失败,原表结构不存在");
}
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
dbTableColumns.forEach(column -> {
if (!tableColumnNames.contains(column.getColumnName()))
{
if (!tableColumnNames.contains(column.getColumnName())) {
GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column);
}
@ -245,8 +300,7 @@ public class GenTableServiceImpl implements IGenTableService
List<GenTableColumn> delColumns = tableColumns.stream()
.filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList());
if (StringUtils.isNotEmpty(delColumns))
{
if (StringUtils.isNotEmpty(delColumns)) {
genTableColumnMapper.deleteGenTableColumns(delColumns);
}
}

View File

@ -186,7 +186,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</foreach>
</delete>
<update id="createTable">
<update id="createTable" parameterType="string">
${sql}
</update>
</mapper>

View File

@ -62,7 +62,7 @@
var removeFlag = [[${@permission.hasPermi('tool:gen:remove')}]];
var previewFlag = [[${@permission.hasPermi('tool:gen:preview')}]];
var codeFlag = [[${@permission.hasPermi('tool:gen:code')}]];
var createMenuFlag = [[${@permission.hasPermi('tool:gen:createMenu')}]];
$(function() {
var options = {
url: prefix + "/list",
@ -130,6 +130,7 @@
actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="javascript:void(0)" onclick="$.operate.remove(\'' + row.tableId + '\')"><i class="fa fa-remove"></i>删除</a> ');
actions.push('<a class="btn btn-warning btn-xs ' + editFlag + '" href="javascript:void(0)" onclick="synchDb(\'' + row.tableName + '\')"><i class="fa fa-refresh"></i>同步</a> ');
actions.push('<a class="btn btn-primary btn-xs ' + codeFlag + '" href="javascript:void(0)" onclick="genCode(\'' + row.tableName + '\',\'' + row.genType + '\')"><i class="fa fa-bug"></i>生成代码</a> ');
actions.push('<a class="btn btn-warning btn-xs ' + createMenuFlag + '" href="javascript:void(0)" onclick="createMenu(\'' + row.tableName + '\')"><i class="fa fa-refresh"></i>生成菜单</a> ');
return actions.join('');
}
}]
@ -180,6 +181,13 @@
})
}
//生成菜单
function createMenu(tableName){
$.modal.confirm("确认要强制生成" + tableName + "功能菜单吗?", function() {
$.operate.get(prefix + "/createMenu/" + tableName);
})
}
// 批量生成代码
function batchGenCode() {
var rows = $.table.selectColumns("tableName");

View File

@ -38,9 +38,6 @@ public class ${ClassName} extends ${Entity}
#else
#set($comment=$column.columnComment)
#end
#if($column.isPk == '1')
@TableId(value = "$column.columnName", type = IdType.AUTO)
#end
#if($parentheseIndex != -1)
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
#elseif($column.javaType == 'Date')
@ -49,6 +46,9 @@ public class ${ClassName} extends ${Entity}
#else
@Excel(name = "${comment}")
#end
#end
#if($column.isPk == '1')
@TableId(value = "$column.columnName", type = IdType.AUTO)
#end
private $column.javaType $column.javaField;

View File

@ -57,32 +57,32 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
@Override
public List<${ClassName}> select${ClassName}List(${ClassName} ${className}) {
LambdaQueryWrapper<${ClassName}> lambda = new QueryWrapper<${ClassName}>().lambda();
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
lambda.eq(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "NE")
lambda.ne(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "GT")
lambda.gt(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "GTE")
lambda.ge(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "LT")
lambda.lt(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "LTE")
lambda.le(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "LIKE")
lambda.like(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName}(),${className}.get${AttrName}())
#elseif($queryType == "BETWEEN")
lambda.between(ObjectUtil.isNotNull(${className}.get${AttrName}()),${className}::get${AttrName}(), ${className}.getParams().get("begin${AttrName}"), ${className}.getParams().get("end${AttrName}") )
#end
#end
#end
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
lambda.eq(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "NE")
lambda.ne(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "GT")
lambda.gt(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "GTE")
lambda.ge(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "LT")
lambda.lt(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "LTE")
lambda.le(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "LIKE")
lambda.like(ObjectUtil.isNotNull(${className}.get${AttrName}()),${ClassName}::get${AttrName},${className}.get${AttrName}());
#elseif($queryType == "BETWEEN")
lambda.between(ObjectUtil.isNotNull(${className}.get${AttrName}()),${className}::get${AttrName}, ${className}.getParams().get("begin${AttrName}"), ${className}.getParams().get("end${AttrName}"));
#end
#end
#end
return ${className}Mapper.selectList(lambda);
}
@ -92,23 +92,23 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
#if($table.sub)
@Transactional
#end
#end
@Override
public int insert${ClassName}(${ClassName} ${className}) {
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
#foreach ($column in $columns)
#if($column.javaField == 'createTime')
${className}.setCreateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
#end
#end
#if($table.sub)
int rows = ${className}Mapper.insert(${className});
insert${subClassName}(${className});
return rows;
#else
#else
return ${className}Mapper.insert(${className});
#end
#end
}
/**
@ -117,20 +117,20 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
* @param ${className} ${functionName}
* @return 结果
*/
#if($table.sub)
#if($table.sub)
@Transactional
#end
#end
@Override
public int update${ClassName}(${ClassName} ${className}) {
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
#foreach ($column in $columns)
#if($column.javaField == 'updateTime')
${className}.setUpdateTime(DateUtils.getNowDate());
#end
#end
#if($table.sub)
#end
#end
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${className}.get${pkColumn.capJavaField}());
insert${subClassName}(${className});
#end
#end
return ${className}Mapper.updateById(${className});
}
@ -140,14 +140,14 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
* @param ids 需要删除的数据ID
* @return 结果
*/
#if($table.sub)
#if($table.sub)
@Transactional
#end
#end
@Override
public int delete${ClassName}ByIds(String ids) {
#if($table.sub)
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}s(Convert.toStrArray(ids));
#end
#end
return ${className}Mapper.deleteBatchIds(Convert.toStrList(ids));
}
@ -159,12 +159,12 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
*/
@Override
public int delete${ClassName}ById(${pkColumn.javaType} ${pkColumn.javaField}) {
#if($table.sub)
#if($table.sub)
${className}Mapper.delete${subClassName}By${subTableFkClassName}(${pkColumn.javaField});
#end
#end
return ${className}Mapper.deleteById(${pkColumn.javaField});
}
#if($table.tree)
#if($table.tree)
/**
* 查询${functionName}树列表
@ -189,8 +189,8 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
}
return ztrees;
}
#end
#if($table.sub)
#end
#if($table.sub)
/**
* 新增${subTable.functionName}信息
@ -211,5 +211,5 @@ public class ${ClassName}ServiceImpl extends ServiceImpl<${ClassName}Mapper, ${C
}
}
}
#end
#end
}

View File

@ -1,22 +1,13 @@
-- 菜单 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}', '${parentMenuId}', '1', '/${moduleName}/${businessName}', 'C', '0', '${permissionPrefix}:view', '#', 'admin', NOW(), 'ry', NOW(), '${functionName}菜单');
-- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}查询', @parentId, '1', '#', 'F', '0', '${permissionPrefix}:list', '#', 'admin', NOW(), 'ry', NOW(), '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}新增', @parentId, '2', '#', 'F', '0', '${permissionPrefix}:add', '#', 'admin', NOW(), 'ry', NOW(), '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}修改', @parentId, '3', '#', 'F', '0', '${permissionPrefix}:edit', '#', 'admin', NOW(), 'ry', NOW(), '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}删除', @parentId, '4', '#', 'F', '0', '${permissionPrefix}:remove', '#', 'admin', NOW(), 'ry', NOW(), '');
insert into sys_menu (menu_name, parent_id, order_num, url, menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark)
values('${functionName}导出', @parentId, '5', '#', 'F', '0', '${permissionPrefix}:export', '#', 'admin', NOW(), 'ry', NOW(), '');

View File

@ -5,25 +5,25 @@
<mapper namespace="${packageName}.mapper.${ClassName}Mapper">
<resultMap type="${ClassName}" id="${ClassName}Result">
#foreach ($column in $columns)
#foreach ($column in $columns)
<result property="${column.javaField}" column="${column.columnName}" />
#end
#if($table.tree)
#end
#if($table.tree)
<result property="parentName" column="parent_name" />
#end
#end
</resultMap>
#if($table.sub)
#if($table.sub)
<resultMap id="${ClassName}${subClassName}Result" type="${ClassName}" extends="${ClassName}Result">
<collection property="${subclassName}List" notNullColumn="sub_${subTable.pkColumn.columnName}" javaType="java.util.List" resultMap="${subClassName}Result" />
</resultMap>
<resultMap type="${subClassName}" id="${subClassName}Result">
#foreach ($column in $subTable.columns)
#foreach ($column in $subTable.columns)
<result property="${column.javaField}" column="sub_${column.columnName}" />
#end
#end
</resultMap>
#end
#end
<sql id="select${ClassName}Vo">
select#foreach($column in $columns) $column.columnName#if($foreach.count != $columns.size()),#end#end from ${tableName}
@ -32,83 +32,83 @@
<select id="select${ClassName}List" parameterType="${ClassName}" resultMap="${ClassName}Result">
<include refid="select${ClassName}Vo"/>
<where>
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
#elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
#elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if>
#elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end
#end
#foreach($column in $columns)
#set($queryType=$column.queryType)
#set($javaField=$column.javaField)
#set($javaType=$column.javaType)
#set($columnName=$column.columnName)
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#if($column.query)
#if($column.queryType == "EQ")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
#elseif($queryType == "NE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
#elseif($queryType == "GT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt; #{$javaField}</if>
#elseif($queryType == "GTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &gt;= #{$javaField}</if>
#elseif($queryType == "LT")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt; #{$javaField}</if>
#elseif($queryType == "LTE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName &lt;= #{$javaField}</if>
#elseif($queryType == "LIKE")
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
#elseif($queryType == "BETWEEN")
<if test="params.begin$AttrName != null and params.begin$AttrName != '' and params.end$AttrName != null and params.end$AttrName != ''"> and $columnName between #{params.begin$AttrName} and #{params.end$AttrName}</if>
#end
#end
#end
</where>
#if($table.tree)
#if($table.tree)
order by ${tree_parent_code}
#end
#end
</select>
<select id="select${ClassName}By${pkColumn.capJavaField}" parameterType="${pkColumn.javaType}" resultMap="#if($table.sub)${ClassName}${subClassName}Result#else${ClassName}Result#end">
#if($table.crud)
#if($table.crud)
<include refid="select${ClassName}Vo"/>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
#elseif($table.tree)
#elseif($table.tree)
select#foreach($column in $columns) t.$column.columnName,#end p.${tree_name} as parent_name
from ${tableName} t
left join ${tableName} p on p.${pkColumn.columnName} = t.${tree_parent_code}
where t.${pkColumn.columnName} = #{${pkColumn.javaField}}
#elseif($table.sub)
#elseif($table.sub)
select#foreach($column in $columns) a.$column.columnName#if($foreach.count != $columns.size()),#end#end,
#foreach($column in $subTable.columns) b.$column.columnName as sub_$column.columnName#if($foreach.count != $subTable.columns.size()),#end#end
from ${tableName} a
left join ${subTableName} b on b.${subTableFkName} = a.${pkColumn.columnName}
where a.${pkColumn.columnName} = #{${pkColumn.javaField}}
#end
#end
</select>
<insert id="insert${ClassName}" parameterType="${ClassName}"#if($pkColumn.increment) useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
insert into ${tableName}
<trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
#end
#end
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
#end
#end
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
#end
#end
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName || !$pkColumn.increment)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
#end
#end
</trim>
</insert>
<update id="update${ClassName}" parameterType="${ClassName}">
update ${tableName}
<trim prefix="SET" suffixOverrides=",">
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
#end
#end
#foreach($column in $columns)
#if($column.columnName != $pkColumn.columnName)
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
#end
#end
</trim>
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
</update>
@ -123,7 +123,7 @@
#{${pkColumn.javaField}}
</foreach>
</delete>
#if($table.sub)
#if($table.sub)
<delete id="delete${subClassName}By${subTableFkClassName}s" parameterType="String">
delete from ${subTableName} where ${subTableFkName} in
@ -142,6 +142,6 @@
(#foreach($column in $subTable.columns) #{item.$column.javaField}#if($foreach.count != $subTable.columns.size()),#end#end)
</foreach>
</insert>
#end
#end
</mapper>

View File

@ -3,6 +3,10 @@ package com.snow.system.domain;
import java.util.List;
import java.util.ArrayList;
import javax.validation.constraints.*;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.snow.common.core.domain.BaseEntity;
@ -17,6 +21,7 @@ public class SysMenu extends BaseEntity
private static final long serialVersionUID = 1L;
/** 菜单ID */
@TableId(value = "menu_id",type= IdType.AUTO)
private Long menuId;
/** 菜单名称 */
@ -54,6 +59,7 @@ public class SysMenu extends BaseEntity
/** 子菜单 */
@TableField(exist = false)
private List<SysMenu> children = new ArrayList<SysMenu>();
public Long getMenuId()

View File

@ -1,6 +1,8 @@
package com.snow.system.mapper;
import java.util.List;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import com.snow.system.domain.SysMenu;
@ -9,7 +11,7 @@ import com.snow.system.domain.SysMenu;
*
* @author snow
*/
public interface SysMenuMapper
public interface SysMenuMapper extends BaseMapper<SysMenu>
{
/**
* 查询系统所有菜单含按钮

View File

@ -1,19 +1,21 @@
package com.snow.system.service;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.IService;
import com.snow.common.core.domain.Ztree;
import com.snow.system.domain.SysMenu;
import com.snow.system.domain.SysRole;
import com.snow.system.domain.SysUser;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 菜单 业务层
*
* @author snow
*/
public interface ISysMenuService
public interface ISysMenuService extends IService<SysMenu>
{
/**
* 根据用户ID查询菜单

View File

@ -10,6 +10,7 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.snow.system.service.ISysMenuService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -28,7 +29,7 @@ import com.snow.system.mapper.SysRoleMenuMapper;
* @author snow
*/
@Service
public class SysMenuServiceImpl implements ISysMenuService
public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper,SysMenu> implements ISysMenuService
{
public static final String PREMISSION_STRING = "perms[\"{0}\"]";