梳理代码生成器的表结构,优化相关字段的命名

This commit is contained in:
YunaiV 2021-01-30 21:36:01 +08:00
parent 67c3a62dcf
commit 58f83a2bd1
19 changed files with 369 additions and 615 deletions

View File

@ -80,46 +80,6 @@ public class GenConstants {
*/ */
public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors", "children"}; public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors", "children"};
/**
* 文本框
*/
public static final String HTML_INPUT = "input";
/**
* 文本域
*/
public static final String HTML_TEXTAREA = "textarea";
/**
* 下拉框
*/
public static final String HTML_SELECT = "select";
/**
* 单选框
*/
public static final String HTML_RADIO = "radio";
/**
* 复选框
*/
public static final String HTML_CHECKBOX = "checkbox";
/**
* 日期控件
*/
public static final String HTML_DATETIME = "datetime";
/**
* 上传控件
*/
public static final String HTML_UPLOAD_IMAGE = "uploadImage";
/**
* 富文本控件
*/
public static final String HTML_EDITOR = "editor";
/** /**
* 字符串类型 * 字符串类型
*/ */
@ -150,13 +110,4 @@ public class GenConstants {
*/ */
public static final String TYPE_DATE = "Date"; public static final String TYPE_DATE = "Date";
/**
* 模糊查询
*/
public static final String QUERY_LIKE = "LIKE";
/**
* 需要
*/
public static final String REQUIRE = "1";
} }

View File

@ -1,34 +0,0 @@
<?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">
<parent>
<artifactId>ruoyi</artifactId>
<groupId>com.ruoyi</groupId>
<version>3.3.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-generator</artifactId>
<description>
generator代码生成
</description>
<dependencies>
<!--velocity代码生成使用模板 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
</dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
</dependencies>
</project>

View File

@ -13,8 +13,7 @@ import org.springframework.stereotype.Component;
@Component @Component
@ConfigurationProperties(prefix = "gen") @ConfigurationProperties(prefix = "gen")
@PropertySource(value = { "classpath:generator.yml" }) @PropertySource(value = { "classpath:generator.yml" })
public class GenConfig public class GenConfig {
{
/** 作者 */ /** 作者 */
public static String author; public static String author;

View File

@ -22,27 +22,11 @@ public class GenTable extends BaseEntity {
@NotBlank(message = "生成包路径不能为空") @NotBlank(message = "生成包路径不能为空")
private String packageName; private String packageName;
/**
* 生成代码方式0zip压缩包 1自定义路径
*/
private String genType;
/**
* 生成路径不填默认项目路径
*/
private String genPath;
/** /**
* 主键信息 * 主键信息
*/ */
private GenTableColumn pkColumn; private GenTableColumn pkColumn;
/**
* 表列信息
*/
@Valid
private List<GenTableColumn> columns;
/** /**
* 其它生成选项 * 其它生成选项
*/ */

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.domain; package com.ruoyi.generator.domain;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import com.ruoyi.common.core.domain.BaseEntity; import com.ruoyi.common.core.domain.BaseEntity;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -9,202 +10,9 @@ import com.ruoyi.common.utils.StringUtils;
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenTableColumn extends BaseEntity public class GenTableColumn extends BaseEntity {
{
private static final long serialVersionUID = 1L;
/** 编号 */ public static boolean isSuperColumn(String javaField) {
private Long columnId;
/** 归属表编号 */
private Long tableId;
/** 列名称 */
private String columnName;
/** 列描述 */
private String columnComment;
/** 列类型 */
private String columnType;
/** JAVA类型 */
private String javaType;
/** JAVA字段名 */
@NotBlank(message = "Java属性不能为空")
private String javaField;
/** 是否主键1是 */
private String isPk;
/** 是否自增1是 */
private String isIncrement;
/** 是否必填1是 */
private String isRequired;
/** 是否为插入字段1是 */
private String isInsert;
/** 是否编辑字段1是 */
private String isEdit;
/** 是否列表字段1是 */
private String isList;
/** 是否查询字段1是 */
private String isQuery;
/** 查询方式EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围 */
private String queryType;
/** 显示类型input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、upload上传控件、editor富文本控件 */
private String htmlType;
/** 字典类型 */
private String dictType;
/** 排序 */
private Integer sort;
public boolean isPk()
{
return isPk(this.isPk);
}
public boolean isPk(String isPk)
{
return isPk != null && StringUtils.equals("1", isPk);
}
public String getIsIncrement()
{
return isIncrement;
}
public void setIsIncrement(String isIncrement)
{
this.isIncrement = isIncrement;
}
public boolean isIncrement()
{
return isIncrement(this.isIncrement);
}
public boolean isIncrement(String isIncrement)
{
return isIncrement != null && StringUtils.equals("1", isIncrement);
}
public void setIsRequired(String isRequired)
{
this.isRequired = isRequired;
}
public String getIsRequired()
{
return isRequired;
}
public boolean isRequired()
{
return isRequired(this.isRequired);
}
public boolean isRequired(String isRequired)
{
return isRequired != null && StringUtils.equals("1", isRequired);
}
public void setIsInsert(String isInsert)
{
this.isInsert = isInsert;
}
public String getIsInsert()
{
return isInsert;
}
public boolean isInsert()
{
return isInsert(this.isInsert);
}
public boolean isInsert(String isInsert)
{
return isInsert != null && StringUtils.equals("1", isInsert);
}
public void setIsEdit(String isEdit)
{
this.isEdit = isEdit;
}
public String getIsEdit()
{
return isEdit;
}
public boolean isEdit()
{
return isInsert(this.isEdit);
}
public boolean isEdit(String isEdit)
{
return isEdit != null && StringUtils.equals("1", isEdit);
}
public void setIsList(String isList)
{
this.isList = isList;
}
public String getIsList()
{
return isList;
}
public boolean isList()
{
return isList(this.isList);
}
public boolean isList(String isList)
{
return isList != null && StringUtils.equals("1", isList);
}
public void setIsQuery(String isQuery)
{
this.isQuery = isQuery;
}
public String getIsQuery()
{
return isQuery;
}
public boolean isQuery()
{
return isQuery(this.isQuery);
}
public boolean isQuery(String isQuery)
{
return isQuery != null && StringUtils.equals("1", isQuery);
}
public boolean isSuperColumn()
{
return isSuperColumn(this.javaField);
}
public static boolean isSuperColumn(String javaField)
{
return StringUtils.equalsAnyIgnoreCase(javaField, return StringUtils.equalsAnyIgnoreCase(javaField,
// BaseEntity // BaseEntity
"createBy", "createTime", "updateBy", "updateTime", "remark", "createBy", "createTime", "updateBy", "updateTime", "remark",
@ -212,37 +20,13 @@ public class GenTableColumn extends BaseEntity
"parentName", "parentId", "orderNum", "ancestors"); "parentName", "parentId", "orderNum", "ancestors");
} }
public boolean isUsableColumn() public boolean isUsableColumn() {
{
return isUsableColumn(javaField); return isUsableColumn(javaField);
} }
public static boolean isUsableColumn(String javaField) public static boolean isUsableColumn(String javaField) {
{
// isSuperColumn()中的名单用于避免生成多余Domain属性若某些属性在生成页面时需要用到不能忽略则放在此处白名单 // isSuperColumn()中的名单用于避免生成多余Domain属性若某些属性在生成页面时需要用到不能忽略则放在此处白名单
return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark"); return StringUtils.equalsAnyIgnoreCase(javaField, "parentId", "orderNum", "remark");
} }
public String readConverterExp()
{
String remarks = StringUtils.substringBetween(this.columnComment, "", "");
StringBuffer sb = new StringBuffer();
if (StringUtils.isNotEmpty(remarks))
{
for (String value : remarks.split(" "))
{
if (StringUtils.isNotEmpty(value))
{
Object startStr = value.subSequence(0, 1);
String endStr = value.substring(1);
sb.append("").append(startStr).append("=").append(endStr).append(",");
}
}
return sb.deleteCharAt(sb.length() - 1).toString();
}
else
{
return this.columnComment;
}
}
} }

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.mapper; package com.ruoyi.generator.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.domain.GenTableColumn;
/** /**
@ -8,8 +9,7 @@ import com.ruoyi.generator.domain.GenTableColumn;
* *
* @author ruoyi * @author ruoyi
*/ */
public interface GenTableColumnMapper public interface GenTableColumnMapper {
{
/** /**
* 根据表名称查询列信息 * 根据表名称查询列信息
* *

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.mapper; package com.ruoyi.generator.mapper;
import java.util.List; import java.util.List;
import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTable;
/** /**
@ -8,8 +9,7 @@ import com.ruoyi.generator.domain.GenTable;
* *
* @author ruoyi * @author ruoyi
*/ */
public interface GenTableMapper public interface GenTableMapper {
{
/** /**
* 查询业务列表 * 查询业务列表
* *

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.service; package com.ruoyi.generator.service;
import java.util.List; import java.util.List;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.core.text.Convert;
@ -13,22 +14,20 @@ import com.ruoyi.generator.mapper.GenTableColumnMapper;
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
public class GenTableColumnServiceImpl implements IGenTableColumnService public class GenTableColumnServiceImpl implements IGenTableColumnService {
{ @Autowired
@Autowired private GenTableColumnMapper genTableColumnMapper;
private GenTableColumnMapper genTableColumnMapper;
/** /**
* 查询业务字段列表 * 查询业务字段列表
* *
* @param tableId 业务字段编号 * @param tableId 业务字段编号
* @return 业务字段集合 * @return 业务字段集合
*/ */
@Override @Override
public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) public List<GenTableColumn> selectGenTableColumnListByTableId(Long tableId) {
{ return genTableColumnMapper.selectGenTableColumnListByTableId(tableId);
return genTableColumnMapper.selectGenTableColumnListByTableId(tableId); }
}
/** /**
* 新增业务字段 * 新增业务字段
@ -36,33 +35,30 @@ public class GenTableColumnServiceImpl implements IGenTableColumnService
* @param genTableColumn 业务字段信息 * @param genTableColumn 业务字段信息
* @return 结果 * @return 结果
*/ */
@Override @Override
public int insertGenTableColumn(GenTableColumn genTableColumn) public int insertGenTableColumn(GenTableColumn genTableColumn) {
{ return genTableColumnMapper.insertGenTableColumn(genTableColumn);
return genTableColumnMapper.insertGenTableColumn(genTableColumn); }
}
/** /**
* 修改业务字段 * 修改业务字段
* *
* @param genTableColumn 业务字段信息 * @param genTableColumn 业务字段信息
* @return 结果 * @return 结果
*/ */
@Override @Override
public int updateGenTableColumn(GenTableColumn genTableColumn) public int updateGenTableColumn(GenTableColumn genTableColumn) {
{ return genTableColumnMapper.updateGenTableColumn(genTableColumn);
return genTableColumnMapper.updateGenTableColumn(genTableColumn); }
}
/** /**
* 删除业务字段对象 * 删除业务字段对象
* *
* @param ids 需要删除的数据ID * @param ids 需要删除的数据ID
* @return 结果 * @return 结果
*/ */
@Override @Override
public int deleteGenTableColumnByIds(String ids) public int deleteGenTableColumnByIds(String ids) {
{ return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids));
return genTableColumnMapper.deleteGenTableColumnByIds(Convert.toLongArray(ids)); }
}
} }

View File

@ -10,6 +10,7 @@ import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
import org.apache.commons.io.IOUtils; import org.apache.commons.io.IOUtils;
import org.apache.velocity.Template; import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext; import org.apache.velocity.VelocityContext;
@ -42,8 +43,7 @@ import com.ruoyi.generator.util.VelocityUtils;
* @author ruoyi * @author ruoyi
*/ */
@Service @Service
public class GenTableServiceImpl implements IGenTableService public class GenTableServiceImpl implements IGenTableService {
{
private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class); private static final Logger log = LoggerFactory.getLogger(GenTableServiceImpl.class);
@Autowired @Autowired
@ -59,8 +59,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 业务信息 * @return 业务信息
*/ */
@Override @Override
public GenTable selectGenTableById(Long id) public GenTable selectGenTableById(Long id) {
{
GenTable genTable = genTableMapper.selectGenTableById(id); GenTable genTable = genTableMapper.selectGenTableById(id);
setTableFromOptions(genTable); setTableFromOptions(genTable);
return genTable; return genTable;
@ -73,8 +72,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 业务集合 * @return 业务集合
*/ */
@Override @Override
public List<GenTable> selectGenTableList(GenTable genTable) public List<GenTable> selectGenTableList(GenTable genTable) {
{
return genTableMapper.selectGenTableList(genTable); return genTableMapper.selectGenTableList(genTable);
} }
@ -85,8 +83,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 数据库表集合 * @return 数据库表集合
*/ */
@Override @Override
public List<GenTable> selectDbTableList(GenTable genTable) public List<GenTable> selectDbTableList(GenTable genTable) {
{
return genTableMapper.selectDbTableList(genTable); return genTableMapper.selectDbTableList(genTable);
} }
@ -97,8 +94,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 数据库表集合 * @return 数据库表集合
*/ */
@Override @Override
public List<GenTable> selectDbTableListByNames(String[] tableNames) public List<GenTable> selectDbTableListByNames(String[] tableNames) {
{
return genTableMapper.selectDbTableListByNames(tableNames); return genTableMapper.selectDbTableListByNames(tableNames);
} }
@ -110,15 +106,12 @@ public class GenTableServiceImpl implements IGenTableService
*/ */
@Override @Override
@Transactional @Transactional
public void updateGenTable(GenTable genTable) public void updateGenTable(GenTable genTable) {
{
String options = JSON.toJSONString(genTable.getParams()); String options = JSON.toJSONString(genTable.getParams());
genTable.setOptions(options); genTable.setOptions(options);
int row = genTableMapper.updateGenTable(genTable); int row = genTableMapper.updateGenTable(genTable);
if (row > 0) if (row > 0) {
{ for (GenTableColumn cenTableColumn : genTable.getColumns()) {
for (GenTableColumn cenTableColumn : genTable.getColumns())
{
genTableColumnMapper.updateGenTableColumn(cenTableColumn); genTableColumnMapper.updateGenTableColumn(cenTableColumn);
} }
} }
@ -132,8 +125,7 @@ public class GenTableServiceImpl implements IGenTableService
*/ */
@Override @Override
@Transactional @Transactional
public void deleteGenTableByIds(Long[] tableIds) public void deleteGenTableByIds(Long[] tableIds) {
{
genTableMapper.deleteGenTableByIds(tableIds); genTableMapper.deleteGenTableByIds(tableIds);
genTableColumnMapper.deleteGenTableColumnByIds(tableIds); genTableColumnMapper.deleteGenTableColumnByIds(tableIds);
} }
@ -145,30 +137,23 @@ public class GenTableServiceImpl implements IGenTableService
*/ */
@Override @Override
@Transactional @Transactional
public void importGenTable(List<GenTable> tableList) public void importGenTable(List<GenTable> tableList) {
{
String operName = SecurityUtils.getUsername(); String operName = SecurityUtils.getUsername();
try try {
{ for (GenTable table : tableList) {
for (GenTable table : tableList)
{
String tableName = table.getTableName(); String tableName = table.getTableName();
GenUtils.initTable(table, operName); GenUtils.initTable(table, operName);
int row = genTableMapper.insertGenTable(table); int row = genTableMapper.insertGenTable(table);
if (row > 0) if (row > 0) {
{
// 保存列信息 // 保存列信息
List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); List<GenTableColumn> genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName);
for (GenTableColumn column : genTableColumns) for (GenTableColumn column : genTableColumns) {
{
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column); genTableColumnMapper.insertGenTableColumn(column);
} }
} }
} }
} } catch (Exception e) {
catch (Exception e)
{
throw new CustomException("导入失败:" + e.getMessage()); throw new CustomException("导入失败:" + e.getMessage());
} }
} }
@ -180,8 +165,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 预览数据列表 * @return 预览数据列表
*/ */
@Override @Override
public Map<String, String> previewCode(Long tableId) public Map<String, String> previewCode(Long tableId) {
{
Map<String, String> dataMap = new LinkedHashMap<>(); Map<String, String> dataMap = new LinkedHashMap<>();
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableById(tableId); GenTable table = genTableMapper.selectGenTableById(tableId);
@ -194,8 +178,7 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
@ -212,8 +195,7 @@ public class GenTableServiceImpl implements IGenTableService
* @return 数据 * @return 数据
*/ */
@Override @Override
public byte[] downloadCode(String tableName) public byte[] downloadCode(String tableName) {
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
generatorCode(tableName, zip); generatorCode(tableName, zip);
@ -227,8 +209,7 @@ public class GenTableServiceImpl implements IGenTableService
* @param tableName 表名称 * @param tableName 表名称
*/ */
@Override @Override
public void generatorCode(String tableName) public void generatorCode(String tableName) {
{
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
// 查询列信息 // 查询列信息
@ -241,21 +222,16 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{ if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm")) {
if (!StringUtils.containsAny(template, "sql.vm", "api.js.vm", "index.vue.vm", "index-tree.vue.vm"))
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); tpl.merge(context, sw);
try try {
{
String path = getGenPath(table, template); String path = getGenPath(table, template);
FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8); FileUtils.writeStringToFile(new File(path), sw.toString(), CharsetKit.UTF_8);
} } catch (IOException e) {
catch (IOException e)
{
throw new CustomException("渲染模板失败,表名:" + table.getTableName()); throw new CustomException("渲染模板失败,表名:" + table.getTableName());
} }
} }
@ -269,8 +245,7 @@ public class GenTableServiceImpl implements IGenTableService
*/ */
@Override @Override
@Transactional @Transactional
public void synchDb(String tableName) public void synchDb(String tableName) {
{
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
List<GenTableColumn> tableColumns = table.getColumns(); List<GenTableColumn> tableColumns = table.getColumns();
List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> tableColumnNames = tableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
@ -279,16 +254,14 @@ public class GenTableServiceImpl implements IGenTableService
List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); List<String> dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList());
dbTableColumns.forEach(column -> { dbTableColumns.forEach(column -> {
if (!tableColumnNames.contains(column.getColumnName())) if (!tableColumnNames.contains(column.getColumnName())) {
{
GenUtils.initColumnField(column, table); GenUtils.initColumnField(column, table);
genTableColumnMapper.insertGenTableColumn(column); genTableColumnMapper.insertGenTableColumn(column);
} }
}); });
List<GenTableColumn> delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); 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); genTableColumnMapper.deleteGenTableColumns(delColumns);
} }
} }
@ -300,12 +273,10 @@ public class GenTableServiceImpl implements IGenTableService
* @return 数据 * @return 数据
*/ */
@Override @Override
public byte[] downloadCode(String[] tableNames) public byte[] downloadCode(String[] tableNames) {
{
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream); ZipOutputStream zip = new ZipOutputStream(outputStream);
for (String tableName : tableNames) for (String tableName : tableNames) {
{
generatorCode(tableName, zip); generatorCode(tableName, zip);
} }
IOUtils.closeQuietly(zip); IOUtils.closeQuietly(zip);
@ -315,8 +286,7 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* 查询表信息并生成代码 * 查询表信息并生成代码
*/ */
private void generatorCode(String tableName, ZipOutputStream zip) private void generatorCode(String tableName, ZipOutputStream zip) {
{
// 查询表信息 // 查询表信息
GenTable table = genTableMapper.selectGenTableByName(tableName); GenTable table = genTableMapper.selectGenTableByName(tableName);
// 查询列信息 // 查询列信息
@ -329,23 +299,19 @@ public class GenTableServiceImpl implements IGenTableService
// 获取模板列表 // 获取模板列表
List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory()); List<String> templates = VelocityUtils.getTemplateList(table.getTplCategory());
for (String template : templates) for (String template : templates) {
{
// 渲染模板 // 渲染模板
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
Template tpl = Velocity.getTemplate(template, Constants.UTF8); Template tpl = Velocity.getTemplate(template, Constants.UTF8);
tpl.merge(context, sw); tpl.merge(context, sw);
try try {
{
// 添加到zip // 添加到zip
zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table))); zip.putNextEntry(new ZipEntry(VelocityUtils.getFileName(template, table)));
IOUtils.write(sw.toString(), zip, Constants.UTF8); IOUtils.write(sw.toString(), zip, Constants.UTF8);
IOUtils.closeQuietly(sw); IOUtils.closeQuietly(sw);
zip.flush(); zip.flush();
zip.closeEntry(); zip.closeEntry();
} } catch (IOException e) {
catch (IOException e)
{
log.error("渲染模板失败,表名:" + table.getTableName(), e); log.error("渲染模板失败,表名:" + table.getTableName(), e);
} }
} }
@ -357,22 +323,15 @@ public class GenTableServiceImpl implements IGenTableService
* @param genTable 业务信息 * @param genTable 业务信息
*/ */
@Override @Override
public void validateEdit(GenTable genTable) public void validateEdit(GenTable genTable) {
{ if (GenConstants.TPL_TREE.equals(genTable.getTplCategory())) {
if (GenConstants.TPL_TREE.equals(genTable.getTplCategory()))
{
String options = JSON.toJSONString(genTable.getParams()); String options = JSON.toJSONString(genTable.getParams());
JSONObject paramsObj = JSONObject.parseObject(options); JSONObject paramsObj = JSONObject.parseObject(options);
if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_CODE))) {
{
throw new CustomException("树编码字段不能为空"); throw new CustomException("树编码字段不能为空");
} } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE))) {
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_PARENT_CODE)))
{
throw new CustomException("树父编码字段不能为空"); throw new CustomException("树父编码字段不能为空");
} } else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME))) {
else if (StringUtils.isEmpty(paramsObj.getString(GenConstants.TREE_NAME)))
{
throw new CustomException("树名称字段不能为空"); throw new CustomException("树名称字段不能为空");
} }
} }
@ -381,21 +340,17 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* 设置主键列信息 * 设置主键列信息
* *
* @param table 业务表信息 * @param table 业务表信息
* @param columns 业务字段列表 * @param columns 业务字段列表
*/ */
public void setPkColumn(GenTable table, List<GenTableColumn> columns) public void setPkColumn(GenTable table, List<GenTableColumn> columns) {
{ for (GenTableColumn column : columns) {
for (GenTableColumn column : columns) if (column.isPk()) {
{
if (column.isPk())
{
table.setPkColumn(column); table.setPkColumn(column);
break; break;
} }
} }
if (StringUtils.isNull(table.getPkColumn())) if (StringUtils.isNull(table.getPkColumn())) {
{
table.setPkColumn(columns.get(0)); table.setPkColumn(columns.get(0));
} }
} }
@ -405,11 +360,9 @@ public class GenTableServiceImpl implements IGenTableService
* *
* @param genTable 设置后的生成对象 * @param genTable 设置后的生成对象
*/ */
public void setTableFromOptions(GenTable genTable) public void setTableFromOptions(GenTable genTable) {
{
JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions()); JSONObject paramsObj = JSONObject.parseObject(genTable.getOptions());
if (StringUtils.isNotNull(paramsObj)) if (StringUtils.isNotNull(paramsObj)) {
{
String treeCode = paramsObj.getString(GenConstants.TREE_CODE); String treeCode = paramsObj.getString(GenConstants.TREE_CODE);
String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE); String treeParentCode = paramsObj.getString(GenConstants.TREE_PARENT_CODE);
String treeName = paramsObj.getString(GenConstants.TREE_NAME); String treeName = paramsObj.getString(GenConstants.TREE_NAME);
@ -427,15 +380,13 @@ public class GenTableServiceImpl implements IGenTableService
/** /**
* 获取代码生成地址 * 获取代码生成地址
* *
* @param table 业务表信息 * @param table 业务表信息
* @param template 模板文件路径 * @param template 模板文件路径
* @return 生成地址 * @return 生成地址
*/ */
public static String getGenPath(GenTable table, String template) public static String getGenPath(GenTable table, String template) {
{
String genPath = table.getGenPath(); String genPath = table.getGenPath();
if (StringUtils.equals(genPath, "/")) if (StringUtils.equals(genPath, "/")) {
{
return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table); return System.getProperty("user.dir") + File.separator + "src" + File.separator + VelocityUtils.getFileName(template, table);
} }
return genPath + File.separator + VelocityUtils.getFileName(template, table); return genPath + File.separator + VelocityUtils.getFileName(template, table);

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.service; package com.ruoyi.generator.service;
import java.util.List; import java.util.List;
import com.ruoyi.generator.domain.GenTableColumn; import com.ruoyi.generator.domain.GenTableColumn;
/** /**
@ -8,8 +9,7 @@ import com.ruoyi.generator.domain.GenTableColumn;
* *
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableColumnService public interface IGenTableColumnService {
{
/** /**
* 查询业务字段列表 * 查询业务字段列表
* *

View File

@ -2,6 +2,7 @@ package com.ruoyi.generator.service;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.ruoyi.generator.domain.GenTable; import com.ruoyi.generator.domain.GenTable;
/** /**
@ -9,8 +10,7 @@ import com.ruoyi.generator.domain.GenTable;
* *
* @author ruoyi * @author ruoyi
*/ */
public interface IGenTableService public interface IGenTableService {
{
/** /**
* 查询业务列表 * 查询业务列表
* *

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.util; package com.ruoyi.generator.util;
import java.util.Arrays; import java.util.Arrays;
import org.apache.commons.lang3.RegExUtils; import org.apache.commons.lang3.RegExUtils;
import com.ruoyi.common.constant.GenConstants; import com.ruoyi.common.constant.GenConstants;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
@ -13,13 +14,11 @@ import com.ruoyi.generator.domain.GenTableColumn;
* *
* @author ruoyi * @author ruoyi
*/ */
public class GenUtils public class GenUtils {
{
/** /**
* 初始化表信息 * 初始化表信息
*/ */
public static void initTable(GenTable genTable, String operName) public static void initTable(GenTable genTable, String operName) {
{
genTable.setClassName(convertClassName(genTable.getTableName())); genTable.setClassName(convertClassName(genTable.getTableName()));
genTable.setPackageName(GenConfig.getPackageName()); genTable.setPackageName(GenConfig.getPackageName());
genTable.setModuleName(getModuleName(GenConfig.getPackageName())); genTable.setModuleName(getModuleName(GenConfig.getPackageName()));
@ -32,8 +31,7 @@ public class GenUtils
/** /**
* 初始化列属性字段 * 初始化列属性字段
*/ */
public static void initColumnField(GenTableColumn column, GenTable table) public static void initColumnField(GenTableColumn column, GenTable table) {
{
String dataType = getDbType(column.getColumnType()); String dataType = getDbType(column.getColumnType());
String columnName = column.getColumnName(); String columnName = column.getColumnName();
column.setTableId(table.getTableId()); column.setTableId(table.getTableId());
@ -43,36 +41,28 @@ public class GenUtils
// 设置默认类型 // 设置默认类型
column.setJavaType(GenConstants.TYPE_STRING); column.setJavaType(GenConstants.TYPE_STRING);
if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) {
{
// 字符串长度超过500设置为文本域 // 字符串长度超过500设置为文本域
Integer columnLength = getColumnLength(column.getColumnType()); Integer columnLength = getColumnLength(column.getColumnType());
String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT; String htmlType = columnLength >= 500 || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
column.setHtmlType(htmlType); column.setHtmlType(htmlType);
} } else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType)) {
else if (arraysContains(GenConstants.COLUMNTYPE_TIME, dataType))
{
column.setJavaType(GenConstants.TYPE_DATE); column.setJavaType(GenConstants.TYPE_DATE);
column.setHtmlType(GenConstants.HTML_DATETIME); column.setHtmlType(GenConstants.HTML_DATETIME);
} } else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType)) {
else if (arraysContains(GenConstants.COLUMNTYPE_NUMBER, dataType))
{
column.setHtmlType(GenConstants.HTML_INPUT); column.setHtmlType(GenConstants.HTML_INPUT);
// 如果是浮点型 统一用BigDecimal // 如果是浮点型 统一用BigDecimal
String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ","); String[] str = StringUtils.split(StringUtils.substringBetween(column.getColumnType(), "(", ")"), ",");
if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) {
{
column.setJavaType(GenConstants.TYPE_BIGDECIMAL); column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
} }
// 如果是整形 // 如果是整形
else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) {
{
column.setJavaType(GenConstants.TYPE_INTEGER); column.setJavaType(GenConstants.TYPE_INTEGER);
} }
// 长整形 // 长整形
else else {
{
column.setJavaType(GenConstants.TYPE_LONG); column.setJavaType(GenConstants.TYPE_LONG);
} }
} }
@ -81,45 +71,37 @@ public class GenUtils
column.setIsInsert(GenConstants.REQUIRE); column.setIsInsert(GenConstants.REQUIRE);
// 编辑字段 // 编辑字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_EDIT, columnName) && !column.isPk()) {
{
column.setIsEdit(GenConstants.REQUIRE); column.setIsEdit(GenConstants.REQUIRE);
} }
// 列表字段 // 列表字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_LIST, columnName) && !column.isPk()) {
{
column.setIsList(GenConstants.REQUIRE); column.setIsList(GenConstants.REQUIRE);
} }
// 查询字段 // 查询字段
if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) if (!arraysContains(GenConstants.COLUMNNAME_NOT_QUERY, columnName) && !column.isPk()) {
{
column.setIsQuery(GenConstants.REQUIRE); column.setIsQuery(GenConstants.REQUIRE);
} }
// 查询字段类型 // 查询字段类型
if (StringUtils.endsWithIgnoreCase(columnName, "name")) if (StringUtils.endsWithIgnoreCase(columnName, "name")) {
{
column.setQueryType(GenConstants.QUERY_LIKE); column.setQueryType(GenConstants.QUERY_LIKE);
} }
// 状态字段设置单选框 // 状态字段设置单选框
if (StringUtils.endsWithIgnoreCase(columnName, "status")) if (StringUtils.endsWithIgnoreCase(columnName, "status")) {
{
column.setHtmlType(GenConstants.HTML_RADIO); column.setHtmlType(GenConstants.HTML_RADIO);
} }
// 类型&性别字段设置下拉框 // 类型&性别字段设置下拉框
else if (StringUtils.endsWithIgnoreCase(columnName, "type") else if (StringUtils.endsWithIgnoreCase(columnName, "type")
|| StringUtils.endsWithIgnoreCase(columnName, "sex")) || StringUtils.endsWithIgnoreCase(columnName, "sex")) {
{
column.setHtmlType(GenConstants.HTML_SELECT); column.setHtmlType(GenConstants.HTML_SELECT);
} }
// 文件字段设置上传控件 // 文件字段设置上传控件
else if (StringUtils.endsWithIgnoreCase(columnName, "image")) else if (StringUtils.endsWithIgnoreCase(columnName, "image")) {
{
column.setHtmlType(GenConstants.HTML_UPLOAD_IMAGE); column.setHtmlType(GenConstants.HTML_UPLOAD_IMAGE);
} }
// 内容字段设置富文本控件 // 内容字段设置富文本控件
else if (StringUtils.endsWithIgnoreCase(columnName, "content")) else if (StringUtils.endsWithIgnoreCase(columnName, "content")) {
{
column.setHtmlType(GenConstants.HTML_EDITOR); column.setHtmlType(GenConstants.HTML_EDITOR);
} }
} }
@ -127,12 +109,11 @@ public class GenUtils
/** /**
* 校验数组是否包含指定值 * 校验数组是否包含指定值
* *
* @param arr 数组 * @param arr 数组
* @param targetValue * @param targetValue
* @return 是否包含 * @return 是否包含
*/ */
public static boolean arraysContains(String[] arr, String targetValue) public static boolean arraysContains(String[] arr, String targetValue) {
{
return Arrays.asList(arr).contains(targetValue); return Arrays.asList(arr).contains(targetValue);
} }
@ -142,8 +123,7 @@ public class GenUtils
* @param packageName 包名 * @param packageName 包名
* @return 模块名 * @return 模块名
*/ */
public static String getModuleName(String packageName) public static String getModuleName(String packageName) {
{
int lastIndex = packageName.lastIndexOf("."); int lastIndex = packageName.lastIndexOf(".");
int nameLength = packageName.length(); int nameLength = packageName.length();
String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength); String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength);
@ -156,8 +136,7 @@ public class GenUtils
* @param tableName 表名 * @param tableName 表名
* @return 业务名 * @return 业务名
*/ */
public static String getBusinessName(String tableName) public static String getBusinessName(String tableName) {
{
int lastIndex = tableName.lastIndexOf("_"); int lastIndex = tableName.lastIndexOf("_");
int nameLength = tableName.length(); int nameLength = tableName.length();
String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength); String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
@ -170,12 +149,10 @@ public class GenUtils
* @param tableName 表名称 * @param tableName 表名称
* @return 类名 * @return 类名
*/ */
public static String convertClassName(String tableName) public static String convertClassName(String tableName) {
{
boolean autoRemovePre = GenConfig.getAutoRemovePre(); boolean autoRemovePre = GenConfig.getAutoRemovePre();
String tablePrefix = GenConfig.getTablePrefix(); String tablePrefix = GenConfig.getTablePrefix();
if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) if (autoRemovePre && StringUtils.isNotEmpty(tablePrefix)) {
{
String[] searchList = StringUtils.split(tablePrefix, ","); String[] searchList = StringUtils.split(tablePrefix, ",");
tableName = replaceFirst(tableName, searchList); tableName = replaceFirst(tableName, searchList);
} }
@ -186,16 +163,13 @@ public class GenUtils
* 批量替换前缀 * 批量替换前缀
* *
* @param replacementm 替换值 * @param replacementm 替换值
* @param searchList 替换列表 * @param searchList 替换列表
* @return * @return
*/ */
public static String replaceFirst(String replacementm, String[] searchList) public static String replaceFirst(String replacementm, String[] searchList) {
{
String text = replacementm; String text = replacementm;
for (String searchString : searchList) for (String searchString : searchList) {
{ if (replacementm.startsWith(searchString)) {
if (replacementm.startsWith(searchString))
{
text = replacementm.replaceFirst(searchString, ""); text = replacementm.replaceFirst(searchString, "");
break; break;
} }
@ -209,8 +183,7 @@ public class GenUtils
* @param text 需要被替换的名字 * @param text 需要被替换的名字
* @return 替换后的名字 * @return 替换后的名字
*/ */
public static String replaceText(String text) public static String replaceText(String text) {
{
return RegExUtils.replaceAll(text, "(?:表|若依)", ""); return RegExUtils.replaceAll(text, "(?:表|若依)", "");
} }
@ -220,14 +193,10 @@ public class GenUtils
* @param columnType 列类型 * @param columnType 列类型
* @return 截取后的列类型 * @return 截取后的列类型
*/ */
public static String getDbType(String columnType) public static String getDbType(String columnType) {
{ if (StringUtils.indexOf(columnType, "(") > 0) {
if (StringUtils.indexOf(columnType, "(") > 0)
{
return StringUtils.substringBefore(columnType, "("); return StringUtils.substringBefore(columnType, "(");
} } else {
else
{
return columnType; return columnType;
} }
} }
@ -238,15 +207,11 @@ public class GenUtils
* @param columnType 列类型 * @param columnType 列类型
* @return 截取后的列类型 * @return 截取后的列类型
*/ */
public static Integer getColumnLength(String columnType) public static Integer getColumnLength(String columnType) {
{ if (StringUtils.indexOf(columnType, "(") > 0) {
if (StringUtils.indexOf(columnType, "(") > 0)
{
String length = StringUtils.substringBetween(columnType, "(", ")"); String length = StringUtils.substringBetween(columnType, "(", ")");
return Integer.valueOf(length); return Integer.valueOf(length);
} } else {
else
{
return 0; return 0;
} }
} }

View File

@ -1,6 +1,7 @@
package com.ruoyi.generator.util; package com.ruoyi.generator.util;
import java.util.Properties; import java.util.Properties;
import org.apache.velocity.app.Velocity; import org.apache.velocity.app.Velocity;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
@ -9,16 +10,13 @@ import com.ruoyi.common.constant.Constants;
* *
* @author RuoYi * @author RuoYi
*/ */
public class VelocityInitializer public class VelocityInitializer {
{
/** /**
* 初始化vm方法 * 初始化vm方法
*/ */
public static void initVelocity() public static void initVelocity() {
{
Properties p = new Properties(); Properties p = new Properties();
try try {
{
// 加载classpath目录下的vm文件 // 加载classpath目录下的vm文件
p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
// 定义字符集 // 定义字符集
@ -26,9 +24,7 @@ public class VelocityInitializer
p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8); p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8);
// 初始化Velocity引擎指定配置Properties // 初始化Velocity引擎指定配置Properties
Velocity.init(p); Velocity.init(p);
} } catch (Exception e) {
catch (Exception e)
{
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }

View File

@ -1,6 +1,10 @@
package cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen; package cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen;
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dict.SysDictTypeDO;
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -17,6 +21,99 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ToolCodegenColumnDO extends BaseDO { public class ToolCodegenColumnDO extends BaseDO {
/**
* ID 编号
*/
@TableId
private Long id;
/**
* 表编号
*
* 外键 {@link ToolCodegenTableDO#getId()}
*/
private Long tableId;
// ========== 表相关字段 ==========
/**
* 字段名
*/
private String columnName;
/**
* 字段类型
*/
private String columnType;
/**
* 字段描述
*/
private String columnComment;
/**
* 是否允许为空
*/
private Boolean nullable;
/**
* 是否主键
*/
private Boolean primaryKey;
/**
* 是否自增
*/
private Boolean autoIncrement;
/**
* 排序字段
*/
private Integer ordinalPosition;
// ========== Java 相关字段 ==========
/**
* Java 属性类型
*
* 例如说 StringBoolean 等等
*/
private String javaType;
/**
* Java 属性名
*/
// @NotBlank(message = "Java属性不能为空")
private String javaField;
/**
* 字典类型
*
* 关联 {@link SysDictTypeDO#getType()}
*/
private String dictType;
// ========== CRUD 相关字段 ==========
/**
* 是否为 Create 创建操作的字段
*/
private Boolean createOperation;
/**
* 是否为 Update 更新操作的字段
*/
private Boolean updateOperation;
/**
* 是否为 List 查询操作的返回字段
*/
private Boolean listOperationResult;
/**
* List 查询操作的条件类型
* 如果为空则说明不是查询字段
*
* 枚举 {@link ToolCodegenColumnListConditionEnum}
*/
private String listOperationCondition;
// ========== UI 相关字段 ==========
/**
* 显示类型
*
* 枚举 {@link ToolCodegenColumnHtmlTypeEnum}
*/
private String htmlType;
} }

View File

@ -1,7 +1,7 @@
package cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen; package cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen;
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodeGenTemplateTypeEnum; import cn.iocoder.dashboard.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
@ -18,12 +18,13 @@ import lombok.EqualsAndHashCode;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class ToolCodegenTableDO extends BaseDO { public class ToolCodegenTableDO extends BaseDO {
// ========== 表相关字段 ==========
/** /**
* ID 编号 * ID 编号
*/ */
private Long id; private Long id;
// ========== 表相关字段 ==========
/** /**
* 表名称 * 表名称
*/ */
@ -78,7 +79,7 @@ public class ToolCodegenTableDO extends BaseDO {
/** /**
* 模板类型 * 模板类型
* *
* 枚举 {@link ToolCodeGenTemplateTypeEnum} * 枚举 {@link ToolCodegenTemplateTypeEnum}
*/ */
private Integer templateType; private Integer templateType;

View File

@ -27,6 +27,10 @@ public class ToolInformationSchemaColumnDO {
* 字段类型 * 字段类型
*/ */
private String columnType; private String columnType;
/**
* 字段描述
*/
private String columnComment;
/** /**
* 是否允许为空 * 是否允许为空
*/ */
@ -37,6 +41,11 @@ public class ToolInformationSchemaColumnDO {
*/ */
@TableField("case when column_key = 'PRI' then '1' else '0' end") @TableField("case when column_key = 'PRI' then '1' else '0' end")
private Boolean primaryKey; private Boolean primaryKey;
/**
* 是否自增
*/
@TableField("case when extra = 'auto_increment' then '1' else '0' end")
private Boolean autoIncrement;
/** /**
* 排序字段 * 排序字段
*/ */

View File

@ -0,0 +1,28 @@
package cn.iocoder.dashboard.modules.tool.enums.codegen;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 代码生成器的字段 HTML 展示枚举
*/
@AllArgsConstructor
@Getter
public enum ToolCodegenColumnHtmlTypeEnum {
INPUT("input"), // 文本框
TEXTAREA("textarea"), // 文本域
SELECT("select"), // 下拉框
RADIO("radio"), // 单选框
CHECKBOX("checkbox"), // 复选框
DATETIME("datetime"), // 日期控件
UPLOAD_IMAGE("upload_image"), // 上传控件
EDITOR("editor"), // 富文本控件
;
/**
* 条件
*/
private final String condition;
}

View File

@ -0,0 +1,27 @@
package cn.iocoder.dashboard.modules.tool.enums.codegen;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 代码生成器的字段过滤条件枚举
*/
@AllArgsConstructor
@Getter
public enum ToolCodegenColumnListConditionEnum {
EQ("="),
NE("!="),
GT(">"),
GTE(">="),
LT("<"),
LTE("<="),
LIKE("LIKE"),
BETWEEN("BETWEEN");
/**
* 条件
*/
private final String condition;
}

View File

@ -10,7 +10,7 @@ import lombok.Getter;
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum ToolCodeGenTemplateTypeEnum { public enum ToolCodegenTemplateTypeEnum {
CRUD(1), // 基础 CRUD CRUD(1), // 基础 CRUD
TREE(2), // 树形 CRUD TREE(2), // 树形 CRUD