修改代码生成模块
This commit is contained in:
parent
9db7adfd18
commit
7d4f28e037
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -26,7 +26,7 @@
|
|||
<!-- 通用工具-->
|
||||
<dependency>
|
||||
<groupId>com.snow</groupId>
|
||||
<artifactId>snow-common</artifactId>
|
||||
<artifactId>snow-system</artifactId>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改代码生成业务
|
||||
*/
|
||||
|
|
|
@ -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);
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
|
@ -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");
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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(), '');
|
|
@ -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 > #{$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$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 > #{$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$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>
|
|
@ -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()
|
||||
|
|
|
@ -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>
|
||||
{
|
||||
/**
|
||||
* 查询系统所有菜单(含按钮)
|
||||
|
|
|
@ -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查询菜单
|
||||
|
|
|
@ -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}\"]";
|
||||
|
||||
|
|
Loading…
Reference in New Issue