From 917fb785f9d692f979f27e120c93b78b3396ef61 Mon Sep 17 00:00:00 2001 From: TinyAnts Date: Fri, 17 Jun 2022 19:03:18 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=9F=E6=88=90=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/service/impl/SystemPostService.java | 1 + .../hxkj/common/constant/GenConstants.java | 100 ---- .../com/hxkj/generator/config/GenConfig.java | 8 +- .../hxkj/generator/constant/GenConstants.java | 23 + .../generator/constant/HtmlConstants.java | 29 ++ .../generator/constant/JavaConstants.java | 20 + .../hxkj/generator/constant/SqlConstants.java | 29 ++ .../generator/controller/GenController.java | 14 +- .../com/hxkj/generator/entity/GenTable.java | 2 + .../generator/service/IGenerateService.java | 8 + .../service/impl/GenerateServiceImpl.java | 61 ++- .../java/com/hxkj/generator/util/GenUtil.java | 83 ++-- .../com/hxkj/generator/util/VelocityUtil.java | 69 ++- .../com/hxkj/generator/validate/GenParam.java | 9 +- .../src/main/resources/java/mapper.java.vm | 4 +- .../src/main/resources/java/service.java.vm | 24 +- .../main/resources/java/serviceImpl.java.vm | 465 +++++++++++++++++- .../src/main/resources/java/vo.java.vm | 25 + .../src/main/resources/vue/index-tree.vue.vm | 0 19 files changed, 782 insertions(+), 192 deletions(-) delete mode 100644 server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java create mode 100644 server/like-generator/src/main/java/com/hxkj/generator/constant/GenConstants.java create mode 100644 server/like-generator/src/main/java/com/hxkj/generator/constant/HtmlConstants.java create mode 100644 server/like-generator/src/main/java/com/hxkj/generator/constant/JavaConstants.java create mode 100644 server/like-generator/src/main/java/com/hxkj/generator/constant/SqlConstants.java create mode 100644 server/like-generator/src/main/resources/java/vo.java.vm create mode 100644 server/like-generator/src/main/resources/vue/index-tree.vue.vm diff --git a/server/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemPostService.java b/server/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemPostService.java index b9770414..8f300049 100644 --- a/server/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemPostService.java +++ b/server/like-admin/src/main/java/com/hxkj/admin/service/impl/SystemPostService.java @@ -14,6 +14,7 @@ import com.hxkj.common.entity.system.SystemPost; import com.hxkj.common.mapper.system.SystemAdminMapper; import com.hxkj.common.mapper.system.SystemPostMapper; import com.hxkj.common.utils.TimeUtil; +import com.hxkj.common.utils.UrlUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; diff --git a/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java b/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java deleted file mode 100644 index 89f8633e..00000000 --- a/server/like-common/src/main/java/com/hxkj/common/constant/GenConstants.java +++ /dev/null @@ -1,100 +0,0 @@ -package com.hxkj.common.constant; - -import java.util.LinkedHashMap; -import java.util.Map; - -public class GenConstants { - - /** 单表(增删改查) */ - public static final String TPL_CRUD = "crud"; - - /** 树表(增删改查) */ - public static final String TPL_TREE = "tree"; - - /** 主子表(增删改查) */ - public static final String TPL_SUB = "sub"; - - /** 树编码字段 */ - public static final String TREE_CODE = "treeCode"; - - /** 树父编码字段 */ - public static final String TREE_PARENT_CODE = "treeParentCode"; - - /** 树名称字段 */ - public static final String TREE_NAME = "treeName"; - - /** 数据库字符串类型 */ - public static final String[] COLUMN_TYPE_STR = {"char", "varchar", "nvarchar", "varchar2"}; - - /** 数据库文本类型 */ - public static final String[] COLUMN_TYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"}; - - /** 数据库时间类型 */ - public static final String[] COLUMN_TYPE_TIME = {"datetime", "time", "date", "timestamp"}; - - /** 数据库数字类型 */ - public static final String[] COLUMN_TYPE_NUMBER = { - "tinyint", "smallint", "mediumint", "int", "number", - "integer", "bit", "bigint", "float", "double", "decimal"}; - - /** 页面不需要编辑字段 */ - public static final String[] COLUMN_NAME_NOT_EDIT = {"id", "create_time", "update_time", "delete_time"}; - - /** 页面不需要列表字段 */ - public static final String[] COLUMN_NAME_NOT_LIST = {"id", "create_time", "update_time", "delete_time"}; - - /** 页面不需要查询字段 */ - public static final String[] COLUMN_NAME_NOT_QUERY = {"id", "create_time", "update_time", "delete_time"}; - - /** 文本框 */ - 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_IMAGE_UPLOAD = "imageUpload"; - - /** 文件上传控件 */ - public static final String HTML_FILE_UPLOAD = "fileUpload"; - - /** 富文本控件 */ - public static final String HTML_EDITOR = "editor"; - - /** 字符串类型 */ - public static final String TYPE_STRING = "String"; - - /** 整型 */ - public static final String TYPE_INTEGER = "Integer"; - - /** 长整型 */ - public static final String TYPE_LONG = "Long"; - - /** 高精度计算类型 */ - public static final String TYPE_BIG_DECIMAL = "BigDecimal"; - - /** 时间类型 */ - public static final String TYPE_DATE = "Date"; - - /** 模糊查询 */ - public static final String QUERY_LIKE = "LIKE"; - - /** 相等查询 */ - public static final String QUERY_EQ = "="; - - /** 需要 */ - public static final Integer REQUIRE = 1; - -} diff --git a/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java b/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java index e171a0a6..b4b35a2f 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/config/GenConfig.java @@ -6,7 +6,13 @@ public class GenConfig { public static String authorName = "LikeAdmin"; // 生成包名 - public static String packageName = "com.hxkj.like-admin"; + public static String packageName = "com.hxkj.admin"; + + // 主要应用 + public static String mainApp = "like-{}/src/main/java/"; + + // 公共应用 + public static String commonApp = "like-common/src/main/java/"; // 表前缀名 public static String tablePrefix = "ls_"; diff --git a/server/like-generator/src/main/java/com/hxkj/generator/constant/GenConstants.java b/server/like-generator/src/main/java/com/hxkj/generator/constant/GenConstants.java new file mode 100644 index 00000000..c65ed73d --- /dev/null +++ b/server/like-generator/src/main/java/com/hxkj/generator/constant/GenConstants.java @@ -0,0 +1,23 @@ +package com.hxkj.generator.constant; + +public class GenConstants { + + /** UTF-8 字符集 */ + public static final String UTF8 = "UTF-8"; + + /** 单表 (增删改查) */ + public static final String TPL_CRUD = "crud"; + + /** 树表 (增删改查) */ + public static final String TPL_TREE = "tree"; + + /** 模糊查询 */ + public static final String QUERY_LIKE = "LIKE"; + + /** 相等查询 */ + public static final String QUERY_EQ = "="; + + /** 需要的 */ + public static final Integer REQUIRE = 1; + +} diff --git a/server/like-generator/src/main/java/com/hxkj/generator/constant/HtmlConstants.java b/server/like-generator/src/main/java/com/hxkj/generator/constant/HtmlConstants.java new file mode 100644 index 00000000..cd7380be --- /dev/null +++ b/server/like-generator/src/main/java/com/hxkj/generator/constant/HtmlConstants.java @@ -0,0 +1,29 @@ +package com.hxkj.generator.constant; + +public class HtmlConstants { + + /** 文本框 */ + 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_DATETIME = "datetime"; + + /** 图片上传控件 */ + public static final String HTML_IMAGE_UPLOAD = "imageUpload"; + + /** 文件上传控件 */ + public static final String HTML_FILE_UPLOAD = "fileUpload"; + + /** 富文本控件 */ + public static final String HTML_EDITOR = "editor"; + +} diff --git a/server/like-generator/src/main/java/com/hxkj/generator/constant/JavaConstants.java b/server/like-generator/src/main/java/com/hxkj/generator/constant/JavaConstants.java new file mode 100644 index 00000000..f8d136f0 --- /dev/null +++ b/server/like-generator/src/main/java/com/hxkj/generator/constant/JavaConstants.java @@ -0,0 +1,20 @@ +package com.hxkj.generator.constant; + +public class JavaConstants { + + /** 字符串类型 */ + public static final String TYPE_STRING = "String"; + + /** 整型 */ + public static final String TYPE_INTEGER = "Integer"; + + /** 长整型 */ + public static final String TYPE_LONG = "Long"; + + /** 高精度计算类型 */ + public static final String TYPE_BIG_DECIMAL = "BigDecimal"; + + /** 时间类型 */ + public static final String TYPE_DATE = "Date"; + +} diff --git a/server/like-generator/src/main/java/com/hxkj/generator/constant/SqlConstants.java b/server/like-generator/src/main/java/com/hxkj/generator/constant/SqlConstants.java new file mode 100644 index 00000000..b2ea0457 --- /dev/null +++ b/server/like-generator/src/main/java/com/hxkj/generator/constant/SqlConstants.java @@ -0,0 +1,29 @@ +package com.hxkj.generator.constant; + +public class SqlConstants { + + /** 数据库字符串类型 */ + public static final String[] COLUMN_TYPE_STR = {"char", "varchar", "nvarchar", "varchar2"}; + + /** 数据库文本类型 */ + public static final String[] COLUMN_TYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"}; + + /** 数据库时间类型 */ + public static final String[] COLUMN_TYPE_TIME = {"datetime", "time", "date", "timestamp"}; + + /** 数据库数字类型 */ + public static final String[] COLUMN_TYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer", "bit", "bigint", "float", "double", "decimal"}; + + /** 时间日期字段名 */ + public static final String[] COLUMN_TIME_NAME = {"create_time", "update_time", "delete_time", "start_time", "end_time"}; + + /** 页面不需要编辑字段 */ + public static final String[] COLUMN_NAME_NOT_EDIT = {"id", "create_time", "update_time", "delete_time"}; + + /** 页面不需要列表字段 */ + public static final String[] COLUMN_NAME_NOT_LIST = {"id", "intro", "content", "is_delete", "delete_time"}; + + /** 页面不需要查询字段 */ + public static final String[] COLUMN_NAME_NOT_QUERY = {"id", "image", "intro", "content", "sort", "is_delete", "create_time", "update_time", "delete_time"}; + +} diff --git a/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java b/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java index db8bf518..b5717b7d 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/controller/GenController.java @@ -137,11 +137,23 @@ public class GenController { /** * 生成代码 * + * @author fzr + * @param tableName 表名 + */ + @GetMapping("/genCode") + public void genCode(String tableName) { + Assert.notNull(tableName, "请选择要生成的表"); + iGenerateService.genCode(tableName); + } + + /** + * 下载代码 + * * @param response 响应对象 * @param tables 表名 * @throws IOException 异常 */ - @GetMapping("/genCode") + @GetMapping("/downloadCode") public void genCode(HttpServletResponse response, String tables) throws IOException { Assert.notNull(tables, "请选择要生成的表"); String[] tableNames = tables.split(","); diff --git a/server/like-generator/src/main/java/com/hxkj/generator/entity/GenTable.java b/server/like-generator/src/main/java/com/hxkj/generator/entity/GenTable.java index 4c848652..82cfc8b4 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/entity/GenTable.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/entity/GenTable.java @@ -26,6 +26,8 @@ public class GenTable implements Serializable { private String moduleName; private String businessName; private String functionName; + private String treePrimary; + private String treeParent; private String genTpl; private Integer genType; private String genPath; diff --git a/server/like-generator/src/main/java/com/hxkj/generator/service/IGenerateService.java b/server/like-generator/src/main/java/com/hxkj/generator/service/IGenerateService.java index 87e5eb4c..4857fd86 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/service/IGenerateService.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/service/IGenerateService.java @@ -82,6 +82,14 @@ public interface IGenerateService { */ Map previewCode(Integer id); + /** + * 生成代码 + * + * @author fzr + * @param tableName 表名 + */ + void genCode(String tableName); + /** * 下载代码 * diff --git a/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java b/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java index 29c02079..ae710f24 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/service/impl/GenerateServiceImpl.java @@ -10,6 +10,7 @@ import com.hxkj.common.core.PageResult; import com.hxkj.common.exception.OperateException; import com.hxkj.common.utils.StringUtil; import com.hxkj.common.utils.TimeUtil; +import com.hxkj.generator.constant.GenConstants; import com.hxkj.generator.entity.GenTable; import com.hxkj.generator.entity.GenTableColumn; import com.hxkj.generator.mapper.GenTableColumnMapper; @@ -22,6 +23,7 @@ import com.hxkj.generator.validate.PageParam; import com.hxkj.generator.vo.DbTableVo; import com.hxkj.generator.vo.GenColumnVo; import com.hxkj.generator.vo.GenTableVo; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; @@ -34,6 +36,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.io.ByteArrayOutputStream; +import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.util.*; @@ -211,6 +214,11 @@ public class GenerateServiceImpl implements IGenerateService { @Override @Transactional public void editTable(GenParam genParam) { + if (genParam.getGenTpl().equals(GenConstants.TPL_TREE)) { + Assert.isFalse(genParam.getTreePrimary().equals(""), "树主ID不能为空"); + Assert.isFalse(genParam.getTreeParent().equals(""), "树父ID不能为空"); + } + GenTable model = genTableMapper.selectById(genParam.getId()); Assert.notNull(model, "数据已丢失"); @@ -222,6 +230,8 @@ public class GenerateServiceImpl implements IGenerateService { model.setPackageName(genParam.getPackageName()); model.setBusinessName(genParam.getBusinessName()); model.setFunctionName(genParam.getFunctionName()); + model.setTreePrimary(genParam.getTreePrimary()); + model.setTreeParent(genParam.getTreeParent()); model.setRemarks(genParam.getRemarks()); model.setGenTpl(genParam.getGenTpl()); model.setGenType(genParam.getGenType()); @@ -347,10 +357,10 @@ public class GenerateServiceImpl implements IGenerateService { // 渲染模板 Map map = new LinkedHashMap<>(); - List templates = VelocityUtil.getTemplateList("curd"); + List templates = VelocityUtil.getTemplateList(table.getGenTpl()); for (String template : templates) { StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, "UTF-8"); + Template tpl = Velocity.getTemplate(template, GenConstants.UTF8); tpl.merge(context, sw); map.put(template, sw.toString()); System.out.println(sw); @@ -378,8 +388,49 @@ public class GenerateServiceImpl implements IGenerateService { } /** - * 生成代码 + * 生成代码 (自定义路径) * + * @author fzr + * @param tableName 表名 + */ + @Override + public void genCode(String tableName) { + // 查表信息 + GenTable table = genTableMapper.selectOne(new QueryWrapper() + .eq("table_name", tableName) + .last("limit 1")); + + // 查列信息 + Integer tableId = table.getId(); + List columns = genTableColumnMapper.selectList( + new QueryWrapper() + .orderByAsc("sort") + .eq("table_id", tableId)); + + // 初始模板 + VelocityUtil.initVelocity(); + VelocityContext context = VelocityUtil.prepareContext(table, columns); + + // 渲染模板 + List templates = VelocityUtil.getTemplateList(table.getGenTpl()); + for (String template : templates) { + StringWriter sw = new StringWriter(); + Template tpl = Velocity.getTemplate(template, GenConstants.UTF8); + tpl.merge(context, sw); + try { + String basePath = VelocityUtil.getGenPath(table); + String filePath = basePath + VelocityUtil.getFileName(template, table); + FileUtils.writeStringToFile(new File(filePath), sw.toString(), GenConstants.UTF8); + } catch (IOException e) { + log.error("生成渲染模板失败: " + e.getMessage()); + } + } + } + + /** + * 生成代码 (压缩包下载) + * + * @author fzr * @param tableName 表名 * @param zip 压缩包 */ @@ -403,11 +454,11 @@ public class GenerateServiceImpl implements IGenerateService { List templates = VelocityUtil.getTemplateList(table.getGenTpl()); for (String template : templates) { StringWriter sw = new StringWriter(); - Template tpl = Velocity.getTemplate(template, "UTF-8"); + Template tpl = Velocity.getTemplate(template, GenConstants.UTF8); tpl.merge(context, sw); try { zip.putNextEntry(new ZipEntry(VelocityUtil.getFileName(template, table))); - IOUtils.write(sw.toString(), zip, "UTF-8"); + IOUtils.write(sw.toString(), zip, GenConstants.UTF8); zip.flush(); zip.closeEntry(); } catch (IOException e) { diff --git a/server/like-generator/src/main/java/com/hxkj/generator/util/GenUtil.java b/server/like-generator/src/main/java/com/hxkj/generator/util/GenUtil.java index 8c98cadf..6b1b5b54 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/util/GenUtil.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/util/GenUtil.java @@ -1,8 +1,11 @@ package com.hxkj.generator.util; -import com.hxkj.common.constant.GenConstants; +import com.hxkj.generator.constant.GenConstants; import com.hxkj.common.utils.StringUtil; -import com.hxkj.admin.config.GenConfig; +import com.hxkj.generator.config.GenConfig; +import com.hxkj.generator.constant.HtmlConstants; +import com.hxkj.generator.constant.JavaConstants; +import com.hxkj.generator.constant.SqlConstants; import com.hxkj.generator.entity.GenTable; import com.hxkj.generator.entity.GenTableColumn; import org.apache.commons.lang3.RegExUtils; @@ -46,78 +49,90 @@ public class GenUtil { String columnType = GenUtil.getDbType(column.getColumnType()); column.setTableId(table.getId()); column.setJavaField(StringUtil.toCamelCase(columnName)); - column.setJavaType(GenConstants.TYPE_STRING); + column.setJavaType(JavaConstants.TYPE_STRING); column.setQueryType(GenConstants.QUERY_EQ); column.setIsInsert(GenConstants.REQUIRE); column.setUpdateTime(table.getUpdateTime()); column.setCreateTime(table.getCreateTime()); // 文本域组 - if (GenUtil.isArraysContains(GenConstants.COLUMN_TYPE_STR, columnType) || - GenUtil.isArraysContains(GenConstants.COLUMN_TYPE_TEXT, columnType)) { + if (GenUtil.isArraysContains(SqlConstants.COLUMN_TYPE_STR, columnType) || + GenUtil.isArraysContains(SqlConstants.COLUMN_TYPE_TEXT, columnType)) { Integer columnLength = GenUtil.getColumnLength(column.getColumnType()); - String htmlType = columnLength >= 500 || GenUtil.isArraysContains(GenConstants.COLUMN_TYPE_TEXT, columnType) - ? GenConstants.HTML_TEXTAREA - : GenConstants.HTML_INPUT; + String htmlType = columnLength >= 500 || GenUtil.isArraysContains(SqlConstants.COLUMN_TYPE_TEXT, columnType) + ? HtmlConstants.HTML_TEXTAREA + : HtmlConstants.HTML_INPUT; column.setHtmlType(htmlType); } - // 日期组件 - else if (GenUtil.isArraysContains(GenConstants.COLUMN_TYPE_TIME, columnType)) { - column.setJavaType(GenConstants.TYPE_DATE); - column.setHtmlType(GenConstants.HTML_DATETIME); + // 日期字段 + else if (GenUtil.isArraysContains(SqlConstants.COLUMN_TYPE_TIME, columnType)) { + column.setJavaType(JavaConstants.TYPE_DATE); + column.setHtmlType(HtmlConstants.HTML_DATETIME); } - // 数字组件 - else if (GenUtil.isArraysContains(GenConstants.COLUMN_TYPE_NUMBER, columnType)) { - column.setHtmlType(GenConstants.HTML_INPUT); + // 时间字段 + else if (GenUtil.isArraysContains(SqlConstants.COLUMN_TIME_NAME, columnName)) { + column.setJavaType(JavaConstants.TYPE_LONG); + column.setHtmlType(HtmlConstants.HTML_DATETIME); + } + + // 数字字段 + else if (GenUtil.isArraysContains(SqlConstants.COLUMN_TYPE_NUMBER, columnType)) { + column.setHtmlType(HtmlConstants.HTML_INPUT); // 输入框 String[] str = StringUtil.split(StringUtil.substringBetween(column.getColumnType(), "(", ")"), ","); if (str != null && str.length == 2 && Integer.parseInt(str[1]) > 0) { - column.setJavaType(GenConstants.TYPE_BIG_DECIMAL); // 浮点形 + column.setJavaType(JavaConstants.TYPE_BIG_DECIMAL); // 浮点形 } else if (str != null && str.length == 1 && Integer.parseInt(str[0]) <= 10) { - column.setJavaType(GenConstants.TYPE_INTEGER); // 整数形 + column.setJavaType(JavaConstants.TYPE_INTEGER); // 整数形 } else { - column.setJavaType(GenConstants.TYPE_LONG); // 长整形 + column.setJavaType(JavaConstants.TYPE_LONG); // 长整形 } } - // 编辑字段 - if (!GenUtil.isArraysContains(GenConstants.COLUMN_NAME_NOT_EDIT, columnName) && column.getIsPk() == 0) { + // 需编辑字段 + if (!GenUtil.isArraysContains(SqlConstants.COLUMN_NAME_NOT_EDIT, columnName) && column.getIsPk() == 0) { column.setIsEdit(GenConstants.REQUIRE); } - // 列表字段 - if (!GenUtil.isArraysContains(GenConstants.COLUMN_NAME_NOT_LIST, columnName) && column.getIsPk() == 0) { + // 需列表字段 + if (!GenUtil.isArraysContains(SqlConstants.COLUMN_NAME_NOT_LIST, columnName) && column.getIsPk() == 0) { column.setIsList(GenConstants.REQUIRE); } - // 查询字段 - if (!GenUtil.isArraysContains(GenConstants.COLUMN_NAME_NOT_QUERY, columnName) && column.getIsPk() == 0) { + // 需查询字段 + if (!GenUtil.isArraysContains(SqlConstants.COLUMN_NAME_NOT_QUERY, columnName) && column.getIsPk() == 0) { column.setIsQuery(GenConstants.REQUIRE); } - // 查询字段类型 - if (StringUtil.endsWithIgnoreCase(columnName, "name")) { + // 模糊查字段 + if (StringUtil.endsWithIgnoreCase(columnName, "name") || + columnName.equals("nickname") || + columnName.equals("username") || + columnName.equals("title") || + columnName.equals("mobile")) { column.setQueryType(GenConstants.QUERY_LIKE); } // 根据字段设置 - if (StringUtil.endsWithIgnoreCase(columnName, "status")) { + if (StringUtil.endsWithIgnoreCase(columnName, "status") + || columnName.equals("isShow") + || columnName.equals("isDisable")) { // 状态字段设置单选框 - column.setHtmlType(GenConstants.HTML_RADIO); + column.setHtmlType(HtmlConstants.HTML_RADIO); } else if (StringUtil.endsWithIgnoreCase(columnName, "type") || StringUtil.endsWithIgnoreCase(columnName, "sex")) { // 类型&性别字段设置下拉框 - column.setHtmlType(GenConstants.HTML_SELECT); + column.setHtmlType(HtmlConstants.HTML_SELECT); } else if (StringUtil.endsWithIgnoreCase(columnName, "image")) { // 图片字段设置图片上传控件 - column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD); + column.setHtmlType(HtmlConstants.HTML_IMAGE_UPLOAD); } else if (StringUtil.endsWithIgnoreCase(columnName, "file")) { // 文件字段设置文件上传控件 - column.setHtmlType(GenConstants.HTML_FILE_UPLOAD); + column.setHtmlType(HtmlConstants.HTML_FILE_UPLOAD); } else if (StringUtil.endsWithIgnoreCase(columnName, "content")) { // 内容字段的设置富文本控件 - column.setHtmlType(GenConstants.HTML_EDITOR); + column.setHtmlType(HtmlConstants.HTML_EDITOR); } } @@ -155,8 +170,8 @@ public class GenUtil { * @return 类名 */ public static String toClassName(String tableName) { - String tablePrefix = "ls_"; - if (StringUtil.isNotEmpty(tablePrefix)) { + String tablePrefix = GenConfig.tablePrefix; + if (GenConfig.isRemoveTablePrefix && StringUtil.isNotEmpty(tablePrefix)) { String[] searchList = StringUtil.split(tablePrefix, ","); tableName = replaceFirst(tableName, searchList); } diff --git a/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java b/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java index ff85ba29..0f0a18ac 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/util/VelocityUtil.java @@ -1,6 +1,9 @@ package com.hxkj.generator.util; import com.hxkj.common.utils.StringUtil; +import com.hxkj.common.utils.UrlUtil; +import com.hxkj.generator.config.GenConfig; +import com.hxkj.generator.constant.GenConstants; import com.hxkj.generator.entity.GenTable; import com.hxkj.generator.entity.GenTableColumn; import org.apache.velocity.VelocityContext; @@ -8,6 +11,7 @@ import org.apache.velocity.app.Velocity; import org.apache.velocity.runtime.RuntimeConstants; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; +import java.io.File; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -68,6 +72,21 @@ public class VelocityUtil { return velocityContext; } + /** + * 获取生成路径 + * + * @author fzr + * @param table 表 + * @return String + */ + public static String getGenPath(GenTable table) { + String genPath = table.getGenPath(); + if (StringUtil.equals(genPath, "/")) { + return System.getProperty("user.dir") + File.separator + "src" + File.separator; + } + return genPath + File.separator; + } + /** * 获取模板列表 * @@ -76,51 +95,65 @@ public class VelocityUtil { */ public static List getTemplateList(String genTpl) { List templates = new LinkedList<>(); -// templates.add("java/controller.java.vm"); -// templates.add("java/entity.java.vm"); -// templates.add("java/mapper.java.vm"); -// templates.add("java/service.java.vm"); + templates.add("java/controller.java.vm"); + templates.add("java/entity.java.vm"); + templates.add("java/mapper.java.vm"); + templates.add("java/service.java.vm"); templates.add("java/serviceImpl.java.vm"); -// templates.add("java/validate.java.vm"); + templates.add("java/validate.java.vm"); + templates.add("java/vo.java.vm"); +// if (GenConstants.TPL_CRUD.equals(genTpl)) { +// templates.add("vue/index.vue.vm"); +// } +// else if (GenConstants.TPL_TREE.equals(genTpl)) { +// templates.add("vue/index-tree.vue.vm"); +// } return templates; } /** * 获取文件名 */ - public static String getFileName(String template, GenTable genTable) - { - // 文件名称 + public static String getFileName(String template, GenTable genTable) { String fileName = ""; - String entityName = genTable.getEntityName(); - String moduleName = genTable.getModuleName(); + String entityName = genTable.getEntityName(); String packageName = genTable.getPackageName(); - String businessName = genTable.getBusinessName(); + String moduleName = genTable.getModuleName(); + String[] arrPackage = packageName.split("\\."); - String javaPath = StringUtil.replace(packageName, ".", "/"); + // 生成路径 + String javaPath = StringUtil.replace(packageName, ".", "/"); + String basePackage = arrPackage[0] + "/" + arrPackage[1]+"/"; + String commonPackage = GenConfig.commonApp + basePackage + "common"; + String mainPackage = StringUtil.format(GenConfig.mainApp, arrPackage.length>=3?arrPackage[2]:"admin")+javaPath; + String subPackage = !moduleName.equals("") ? StringUtil.replace(moduleName, ".", "/") + "/" : ""; if (template.contains("mapper.java.vm")) { - fileName = StringUtil.format("{}/mapper/{}Mapper.java", "com/hxkj/common", entityName); + fileName = StringUtil.format("{}/mapper/{}{}Mapper.java", commonPackage, subPackage, entityName); } else if (template.contains("entity.java.vm")) { - fileName = StringUtil.format("{}/entity/{}Entity.java", "com/hxkj/common", entityName); + fileName = StringUtil.format("{}/entity/{}{}Entity.java", commonPackage, subPackage, entityName); } else if (template.contains("service.java.vm")) { - fileName = StringUtil.format("{}/service/I{}Service.java", javaPath, entityName); + fileName = StringUtil.format("{}/service/I{}Service.java", mainPackage, entityName); } else if (template.contains("serviceImpl.java.vm")) { - fileName = StringUtil.format("{}/service/impl/{}ServiceImpl.java", javaPath, entityName); + fileName = StringUtil.format("{}/service/impl/{}ServiceImpl.java", mainPackage, entityName); } else if (template.contains("controller.java.vm")) { - fileName = StringUtil.format("{}/controller/{}Controller.java", javaPath, entityName); + fileName = StringUtil.format("{}/controller/{}{}Controller.java", mainPackage, subPackage, entityName); } else if (template.contains("validate.java.vm")) { - fileName = StringUtil.format("{}/validate/{}Param.java", javaPath, entityName); + fileName = StringUtil.format("{}/validate/{}{}Param.java", mainPackage, subPackage, entityName); + } + + else if (template.contains("vo.java.vm")) { + fileName = StringUtil.format("{}/vo/{}{}Vo.java", mainPackage, subPackage, entityName); } return fileName; diff --git a/server/like-generator/src/main/java/com/hxkj/generator/validate/GenParam.java b/server/like-generator/src/main/java/com/hxkj/generator/validate/GenParam.java index 3d5e9d29..825c69af 100644 --- a/server/like-generator/src/main/java/com/hxkj/generator/validate/GenParam.java +++ b/server/like-generator/src/main/java/com/hxkj/generator/validate/GenParam.java @@ -11,6 +11,7 @@ import org.hibernate.validator.constraints.Length; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.io.Serializable; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -78,8 +79,12 @@ public class GenParam implements Serializable { private Integer genType; @Length(max = 200, message = "生成代码路径不能大于200个字符") - private String genPath; + private String genPath = "/"; - private List> columns; + private List> columns = new ArrayList<>(); + + private String treePrimary = ""; + + private String treeParent = ""; } diff --git a/server/like-generator/src/main/resources/java/mapper.java.vm b/server/like-generator/src/main/resources/java/mapper.java.vm index 59c8f9a0..0c8d41c6 100644 --- a/server/like-generator/src/main/resources/java/mapper.java.vm +++ b/server/like-generator/src/main/resources/java/mapper.java.vm @@ -1,12 +1,12 @@ package com.hxkj.common.mapper; import com.hxkj.common.core.basics.IBaseMapper; -import com.hxkj.common.entity.${entityName}; +import com.hxkj.common.entity.${EntityName}; import org.apache.ibatis.annotations.Mapper; /** * ${functionName} */ @Mapper -public interface ${entityName}Mapper extends IBaseMapper<${entityName}> { +public interface ${EntityName}Mapper extends IBaseMapper<${EntityName}> { } diff --git a/server/like-generator/src/main/resources/java/service.java.vm b/server/like-generator/src/main/resources/java/service.java.vm index 4647dfc5..35c4fb22 100644 --- a/server/like-generator/src/main/resources/java/service.java.vm +++ b/server/like-generator/src/main/resources/java/service.java.vm @@ -2,7 +2,9 @@ package com.hxkj.admin.service; import com.hxkj.admin.validate.PageParam; import com.hxkj.admin.validate.${EntityName}Param; +#if($table.genTpl=="curd") import com.hxkj.admin.vo.system.${EntityName}Vo; +#end import com.hxkj.common.core.PageResult; import com.hxkj.common.entity.${EntityName}; @@ -11,25 +13,37 @@ import java.util.Map; /** * ${functionName}服务接口类 */ -public interface ISystemAdminService { +public interface I${EntityName}Service { + #if($table.genTpl=="curd") /** * ${functionName}列表 * * @author ${authorName} * @param pageParam 分页参数 + * @param params 搜索参数 * @return PageResult<${EntityName}Vo}> */ PageResult<${EntityName}Vo> list(PageParam pageParam, Map params); +#elseif($table.genTpl=="tree") + /** + * ${functionName}列表 + * + * @author ${authorName} + * @param params 搜索参数 + * @return JSONArray + */ + JSONArray list(Map params); + #end /** * ${functionName}详情 * * @author ${authorName} - * @param id 主键参数 - * @return ${EntityName}Vo + * @param id 主键ID + * @return ${EntityName} */ - SystemAdminVo detail(Integer id); + ${EntityName} detail(Integer id); /** * ${functionName}新增 @@ -51,7 +65,7 @@ public interface ISystemAdminService { * ${functionName}删除 * * @author ${authorName} - * @param id 主键参数 + * @param id 主键ID */ void del(Integer id); diff --git a/server/like-generator/src/main/resources/java/serviceImpl.java.vm b/server/like-generator/src/main/resources/java/serviceImpl.java.vm index d6801523..fe9e7614 100644 --- a/server/like-generator/src/main/resources/java/serviceImpl.java.vm +++ b/server/like-generator/src/main/resources/java/serviceImpl.java.vm @@ -35,54 +35,471 @@ public class ${EntityName}ServiceImpl implements I${EntityName}Service { @Resource ${EntityName}Mapper ${entityName}Mapper; +#if($table.sub_table_name.equals("")) +#if($table.genTpl=="curd") /** * ${functionName}列表 * * @author ${authorName} * @param pageParam 分页参数 - * @return PageResult + * @param params 搜索参数 + * @return PageResult<${EntityName}Vo> */ @Override public PageResult<${EntityName}Vo> list(PageParam pageParam, Map params) { Integer page = pageParam.getPageNo(); Integer limit = pageParam.getPageSize(); - QueryWrapper queryWrapper = new QueryWrapper<>(); + QueryWrapper<${EntityName}> queryWrapper = new QueryWrapper<>(); + #if($isSearch) + #if($fields.contains("is_delete")) queryWrapper.eq("is_delete", 0); - queryWrapper.orderByDesc(Arrays.asList("id", "sort")); + #end + #if($fields.contains("sort")) + queryWrapper.orderByDesc(Arrays.asList("sort", "id")); + #else + queryWrapper.orderByDesc("id"); + #end + #end #if($isSearch) ${entityName}Mapper.setSearch(queryWrapper, params, new String[]{ #foreach ($column in $columns) - #if($column.isQuery) - #if($column.queryType=="EQ") - #if($column.javaType=="String") - #if($column.javaField.equals($column.columnName)) - "=:${column.javaField}:str", - #else - "=:${column.javaField}@${column.columnName}:str", - #end - #elseif($column.javaType=="Integer") - #if($column.javaField.equals($column.columnName)) - "=:${column.javaField}:int", - #else - "=:${column.javaField}@${column.columnName}:int", - #end - #end - #end + #if($column.isQuery) + #if($column.queryType=="datetime") + "datetime:startTime-endTime@${column.columnName}:str" + #else + #if($column.javaType=="Integer") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:int", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:int", + #end + #elseif($column.javaType=="Long") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:long", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:long", + #end + #else + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:str", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:str", + #end #end + #end + #end #end }); #end - IPage iPage = systemAdminMapper.selectPage(new Page<>(page, limit), queryWrapper); - for (SystemAdminVo vo : iPage.getRecords()) { - vo.setCreateTime(TimeUtil.timestampToDate(vo.getCreateTime())); - vo.setUpdateTime(TimeUtil.timestampToDate(vo.getUpdateTime())); - vo.setLastLoginTime(TimeUtil.timestampToDate(vo.getLastLoginTime())); + IPage<${EntityName}Vo> iPage = ${entityName}Mapper.selectPage(new Page<>(page, limit), queryWrapper); + + #if($fields.contains("create_time") || $fields.contains("update_time")) + List<${EntityName}Vo> list = new ArrayList<>(); + for (${EntityName} item : iPage.getRecords()) { + ${EntityName}Vo vo = new ${EntityName}Vo(); + BeanUtils.copyProperties(item, vo); + #if($fields.contains("image")) + vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage)) + #end + #if($fields.contains("avatar")) + vo.setAvatar(UrlUtil.toAbsoluteUrl(vo.getAvatar)) + #end + #if($fields.contains("logo")) + vo.setLogo(UrlUtil.toAbsoluteUrl(vo.getLogo)) + #end + #if($fields.contains("create_time")) + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + #end + #if($fields.contains("update_time")) + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + #end + list.add(vo); + } + return PageResult.iPageHandle(iPage.getTotal(), iPage.getCurrent(), iPage.getSize(), list); + #else + return PageResult.iPageHandle(iPage); + #end + } +#elseif($table.genTpl=="tree") + /** + * ${functionName}列表 + * + * @author ${authorName} + * @param params 搜索参数 + * @return PageResult<${EntityName}Vo> + */ + @Override + public JSONArray list(Map params) { + QueryWrapper<${EntityName}> queryWrapper = new QueryWrapper<>(); + #if($isSearch) + #if($fields.contains("is_delete")) + queryWrapper.eq("is_delete", 0); + #end + #if($fields.contains("sort")) + queryWrapper.orderByDesc(Arrays.asList("sort", "id")); + #else + queryWrapper.orderByDesc("id"); + #end + #end + + #if($isSearch) + ${entityName}Mapper.setSearch(queryWrapper, params, new String[]{ + #foreach ($column in $columns) + #if($column.isQuery) + #if($column.queryType=="datetime") + "datetime:startTime-endTime@${column.columnName}:str" + #else + #if($column.javaType=="Integer") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:int", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:int", + #end + #elseif($column.javaType=="Long") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:long", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:long", + #end + #else + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:str", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:str", + #end + #end + #end + #end + #end + }); + #end + + List<${EntityName}> arrayData = ${entityName}Mapper.selectList(queryWrapper); + + #if($fields.contains("create_time") || $fields.contains("update_time")) + List<${EntityName}Vo> list = new ArrayList<>(); + for (${EntityName} item : arrayData) { + ${EntityName}Vo vo = new ${EntityName}Vo(); + BeanUtils.copyProperties(item, vo); + #if($fields.contains("image")) + vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage)) + #end + #if($fields.contains("avatar")) + vo.setAvatar(UrlUtil.toAbsoluteUrl(vo.getAvatar)) + #end + #if($fields.contains("logo")) + vo.setLogo(UrlUtil.toAbsoluteUrl(vo.getLogo)) + #end + #if($fields.contains("create_time")) + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + #end + #if($fields.contains("update_time")) + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + #end + list.add(vo); + } + JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(list)); + return ArrayUtil.listToTree(jsonArray, "${table.treePrimary}", "${table.treeParent}", "children"); + #else + JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(arrayData)); + return ArrayUtil.listToTree(jsonArray, "${table.treePrimary}", "${table.treeParent}", "children"); + #end + } +#end +#else +#if($table.genTpl=="curd") + /** + * ${functionName}列表 + * + * @author ${authorName} + * @param pageParam 分页参数 + * @param params 搜索参数 + * @return PageResult<${EntityName}Vo> + */ + @Override + public PageResult<${EntityName}Vo> list(PageParam pageParam, Map params) { + Integer page = pageParam.getPageNo(); + Integer limit = pageParam.getPageSize(); + + MPJQueryWrapper<${EntityName}> mpjQueryWrapper = new MPJQueryWrapper<>(); + mpjQueryWrapper.join("${table.sub_table_name} f ON f.${table.sub_table_fk}=t.id") + #if($isSearch) + #if($fields.contains("is_delete")) + mpjQueryWrapper.eq("is_delete", 0); + #end + #if($fields.contains("sort")) + mpjQueryWrapper.orderByDesc(Arrays.asList("sort", "id")); + #else + mpjQueryWrapper.orderByDesc("id"); + #end + #end + + #if($isSearch) + ${entityName}Mapper.setSearch(mpjQueryWrapper, params, new String[]{ + #foreach ($column in $columns) + #if($column.isQuery) + #if($column.queryType=="datetime") + "datetime:startTime-endTime@${column.columnName}:str" + #else + #if($column.javaType=="Integer") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:int", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:int", + #end + #elseif($column.javaType=="Long") + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:long", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:long", + #end + #else + #if($column.javaField.equals($column.columnName)) + "${column.queryType}:${column.javaField}:str", + #else + "${column.queryType}:${column.javaField}@${column.columnName}:str", + #end + #end + #end + #end + #end + }); + #end + + IPage<${EntityName}Vo> iPage = ${entityName}Mapper.selectJoinPage( + new Page<>(page, limit), + ${EntityName}Vo.class, + mpjQueryWrapper); + + #if($fields.contains("create_time") || $fields.contains("update_time")) + for (${EntityName} item : iPage.getRecords()) { + ${EntityName}Vo vo = new ${EntityName}Vo(); + BeanUtils.copyProperties(item, vo); + #if($fields.contains("image")) + vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage)) + #end + #if($fields.contains("avatar")) + vo.setAvatar(UrlUtil.toAbsoluteUrl(vo.getAvatar)) + #end + #if($fields.contains("logo")) + vo.setLogo(UrlUtil.toAbsoluteUrl(vo.getLogo)) + #end + #if($fields.contains("create_time")) + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + #end + #if($fields.contains("update_time")) + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + #end } + #end return PageResult.iPageHandle(iPage); + } +#elseif($table.genTpl=="tree") + /** + * ${functionName}列表 + * + * @author ${authorName} + * @param params 搜索参数 + * @return PageResult<${EntityName}Vo> + */ + @Override + public JSONArray list(Map params) { + MPJQueryWrapper<${EntityName}> mpjQueryWrapper = new MPJQueryWrapper<>(); + #if($isSearch) + #if($fields.contains("is_delete")) + mpjQueryWrapper.eq("t.is_delete", 0); + #end + #if($fields.contains("sort")) + mpjQueryWrapper.orderByDesc(Arrays.asList("t.sort", "t.id")); + #else + mpjQueryWrapper.orderByDesc("t.id"); + #end + #end + + #if($isSearch) + ${entityName}Mapper.setSearch(mpjQueryWrapper, params, new String[]{ + #foreach ($column in $columns) + #if($column.isQuery) + #if($column.queryType=="datetime") + "datetime:startTime-endTime@t.${column.columnName}:str" + #else + #if($column.javaType=="Integer") + "${column.queryType}:${column.javaField}@t.${column.columnName}:int", + #elseif($column.javaType=="Long") + "${column.queryType}:${column.javaField}@t.${column.columnName}:long", + #else + "${column.queryType}:${column.javaField}@t.${column.columnName}:str", + #end + #end + #end + #end + }); + #end + + List<${EntityName}> arrayData = ${entityName}Mapper.selectJoinList( + ${EntityName}Vo.class, + mpjQueryWrapper); + + #if($fields.contains("create_time") || $fields.contains("update_time")) + for (${EntityName} item : arrayData) { + ${EntityName}Vo vo = new ${EntityName}Vo(); + BeanUtils.copyProperties(item, vo); + #if($fields.contains("image")) + vo.setImage(UrlUtil.toAbsoluteUrl(vo.getImage)) + #end + #if($fields.contains("avatar")) + vo.setAvatar(UrlUtil.toAbsoluteUrl(vo.getAvatar)) + #end + #if($fields.contains("logo")) + vo.setLogo(UrlUtil.toAbsoluteUrl(vo.getLogo)) + #end + #if($fields.contains("create_time")) + vo.setCreateTime(TimeUtil.timestampToDate(item.getCreateTime())); + #end + #if($fields.contains("update_time")) + vo.setUpdateTime(TimeUtil.timestampToDate(item.getUpdateTime())); + #end + list.add(vo); + } + + #end + JSONArray jsonArray = JSONArray.parseArray(JSONArray.toJSONString(arrayData)); + return ArrayUtil.listToTree(jsonArray, "${table.treePrimary}", "${table.treeParent}", "children"); + } + #end +#end + + /** + * ${functionName}详情 + * + * @author ${authorName} + * @param id 主键参数 + * @return ${EntityName} + */ + @Override + public ${EntityName} detail(Integer id) { + Article model = ${entityName}Mapper.selectOne( + #if($field.contains("is_delete")) + new QueryWrapper<${EntityName}>() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + #else + new QueryWrapper<${EntityName}>() + .eq("id", id) + .last("limit 1")); + #end + + Assert.notNull(model, "${functionName}不存在}"); + + #if($field.contains("image")) + model.setImage(UrlUtil.toAbsoluteUrl(model.getImage())); + #end + #if($field.contains("avatar")) + model.setAvatar(UrlUtil.toAbsoluteUrl(model.getAvatar())); + #end + #if($field.contains("logo")) + model.setLogo(UrlUtil.toAbsoluteUrl(model.getLogo())); + #end + return model; + } + + /** + * ${functionName}新增 + * + * @author ${authorName} + * @param ${entityName}Param 参数 + */ + @Override + public void add(${EntityName}Param ${entityName}Param) { + ${EntityName} model = new ${EntityName}(); + #foreach ($column in $columns) + #if(!$column.isIncrement) + #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) + #if($column.javaField.equals("image") || $colum.javaField.equals("avatar") || $colum.javaField.equals("logo")) + model.set${AttrName}(UrlUtil.toRelativeUrl(Param.get${AttrName}())) + #elseif(!$column.javaField.equals("createTime") and !$column.javaField.equals("deleteTime") and !$column.javaField.equals("updateTime") and !$column.javaField.equals("isDelete")) + model.set${AttrName}(${entityName}Param.get${AttrName}()); + #elseif($column.javaField.equals("createTime") || $column.javaField.equals("updateTime")) + model.set${AttrName}(System.currentTimeMillis() / 1000); + #end + #end + #end + ${entityName}Mapper.insert(model); + } + + /** + * ${functionName}编辑 + * + * @author ${authorName} + * @param ${entityName}Param 参数 + */ + @Override + public void edit(${EntityName}Param ${entityName}Param) { + ${EntityName} model = ${entityName}Mapper.selectOne( + #if($field.contains("is_delete")) + new QueryWrapper<${EntityName}>() + .eq("id", ${entityName}Param.getId()) + .eq("is_delete", 0) + .last("limit 1")); + #else + new QueryWrapper<${EntityName}>() + .eq("id", ${entityName}Param.getId()) + .last("limit 1")); + #end + + Assert.notNull(model, "${functionName}不存在!"); + + #foreach ($column in $columns) + #if(!$column.isIncrement) + #set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)}) + #if($column.javaField.equals("image") || $colum.javaField.equals("avatar") || $colum.javaField.equals("logo")) + model.set${AttrName}(UrlUtil.toRelativeUrl(Param.get${AttrName}())) + #elseif(!$column.javaField.equals("createTime") and !$column.javaField.equals("deleteTime") and !$column.javaField.equals("updateTime") and !$column.javaField.equals("isDelete")) + model.set${AttrName}(${entityName}Param.get${AttrName}()); + #elseif($column.javaField.equals("updateTime")) + model.set${AttrName}(System.currentTimeMillis() / 1000); + #end + #end + #end + ${entityName}Mapper.updateById(model); + } + + /** + * ${functionName}删除 + * + * @author ${authorName} + * @param id 主键ID + */ + @Override + public void del(Integer id) { + ${EntityName} model = ${entityName}Mapper.selectOne( + #if($fields.contains("is_delete")) + new QueryWrapper<${EntityName}>() + .eq("id", id) + .eq("is_delete", 0) + .last("limit 1")); + #else + new QueryWrapper<${EntityName}>() + .eq("id", id) + .last("limit 1")); + #end + + Assert.notNull(model, "${functionName}不存在!"); + + #if($fields.contains("is_delete")) + model.setIsDelete(1); + #if($fields.contains("delete_time")) + model.setDeleteTime(System.currentTimeMillis() / 1000); + #end + ${entityName}Mapper.updateById(article); + #else + ${entityName}Mapper.delete(new QueryWrapper<${EntityName}>().eq("id", id)); + #end } } diff --git a/server/like-generator/src/main/resources/java/vo.java.vm b/server/like-generator/src/main/resources/java/vo.java.vm new file mode 100644 index 00000000..fea1568b --- /dev/null +++ b/server/like-generator/src/main/resources/java/vo.java.vm @@ -0,0 +1,25 @@ +package com.hxkj.admin.vo; + +import lombok.Data; + +import java.io.Serializable; + +/** +* ${EntityName}Vo +*/ +@Data +public class ${EntityName}Vo implements Serializable { + + private static final long serialVersionUID = 1L; + +#foreach ($column in $columns) +#if($column.isList==1) + #if($column.javaField.equals("createTime") || $column.javaField.equals("updateTime") || $column.javaField.equals("deleteTime")) + private String ${column.javaField}; + #else + private ${column.javaType} ${column.javaField}; + #end +#end +#end + +} diff --git a/server/like-generator/src/main/resources/vue/index-tree.vue.vm b/server/like-generator/src/main/resources/vue/index-tree.vue.vm new file mode 100644 index 00000000..e69de29b