修改代码生成模板.

This commit is contained in:
lijiahang
2023-09-27 16:47:55 +08:00
parent 54dcd1098f
commit aa9a77d73b
22 changed files with 369 additions and 136 deletions

View File

@@ -56,16 +56,31 @@ npm run dev
com.orion.ops.launch.generator.CodeGenerator com.orion.ops.launch.generator.CodeGenerator
// 生成的表为 system_role, 业务注释为 '角色', 业务包为 role // 生成的表为 system_role, 业务注释为 '角色', 业务包为 role
new GenTable("system_role", "角色", "role") Template.create("system_role", "角色", "role")
// 忽略生成对外 api // 生成 api
.ignoreApi() .enableProviderApi()
// 忽略生成单元测试 // 生成单元测试
.ignoreTest() .disableUnitTest()
// 生成缓存
.cache("user:role", "角色缓存")
// 缓存过期时间 1 DAY
.expire(1, TimeUnit.DAYS)
// 生成 vue 文件, 一级业务包为 user, 二级业务包为 role (前端命名只能使用脊柱命名法) // 生成 vue 文件, 一级业务包为 user, 二级业务包为 role (前端命名只能使用脊柱命名法)
.vue("user", "role") .vue("user", "role")
// 前端使用抽屉表单 // 前端使用抽屉表单 (多字段使用)
.useDrawerForm() .enableDrawerForm()
// 前端代码生成的枚举对象 可变参数 // 前端支持多选
.enums(RoleStatusEnum.class); .enableRowSelection()
// 枚举下拉框 替换的字段为 'type'
.enums("type")
// 枚举值为 APP HOST
.names("APP", "HOST")
// 设置参数为 label APP.label = '应用' HOST.label = '主机'
.values("label", "应用", "主机")
// 设置参数为 value APP.value = '1' HOST.value = '2'
.values("value", 1, 2)
// 设置参数为 color APP.color = 'blue' HOST.color = 'green'
.color("blue", "green")
.build(),
``` ```

View File

@@ -5,6 +5,7 @@ import com.orion.ops.framework.redis.core.utils.RedisUtils;
import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureOrder; import org.springframework.boot.autoconfigure.AutoConfigureOrder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Lazy;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
@@ -16,6 +17,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
* @version 1.0.0 * @version 1.0.0
* @since 2023/6/28 14:44 * @since 2023/6/28 14:44
*/ */
@Lazy(value = false)
@AutoConfiguration @AutoConfiguration
@AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_REDIS) @AutoConfigureOrder(AutoConfigureOrderConst.FRAMEWORK_REDIS)
public class OrionRedisAutoConfiguration { public class OrionRedisAutoConfiguration {

View File

@@ -40,6 +40,7 @@ public class BaseUnitTest {
OrionCommonAutoConfiguration.class, OrionCommonAutoConfiguration.class,
// mock // mock
OrionMockBeanTestConfiguration.class, OrionMockBeanTestConfiguration.class,
OrionMockRedisTestConfiguration.class,
// datasource // datasource
OrionDataSourceAutoConfiguration.class, OrionDataSourceAutoConfiguration.class,
DruidDataSourceAutoConfigure.class, DruidDataSourceAutoConfigure.class,
@@ -50,7 +51,6 @@ public class BaseUnitTest {
OrionMybatisAutoConfiguration.class, OrionMybatisAutoConfiguration.class,
MybatisPlusAutoConfiguration.class, MybatisPlusAutoConfiguration.class,
// redis // redis
OrionMockRedisTestConfiguration.class,
OrionRedisAutoConfiguration.class, OrionRedisAutoConfiguration.class,
RedisAutoConfiguration.class, RedisAutoConfiguration.class,
RedissonAutoConfiguration.class, RedissonAutoConfiguration.class,

View File

@@ -47,6 +47,8 @@ public class EntityRandoms {
} }
return Randoms.randomBoolean(); return Randoms.randomBoolean();
}); });
// Collection
FACTORY.getStrategy().setDefaultNumberOfCollectionElements(RANDOM_COLLECTION_LENGTH);
} }
@SafeVarargs @SafeVarargs

View File

@@ -17,7 +17,6 @@ import com.orion.ops.framework.mybatis.core.domain.BaseDO;
import com.orion.ops.framework.mybatis.core.mapper.IMapper; import com.orion.ops.framework.mybatis.core.mapper.IMapper;
import com.orion.ops.launch.generator.engine.VelocityTemplateEngine; import com.orion.ops.launch.generator.engine.VelocityTemplateEngine;
import com.orion.ops.launch.generator.template.Table; import com.orion.ops.launch.generator.template.Table;
import com.orion.ops.launch.generator.template.Template;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import java.io.File; import java.io.File;
@@ -44,19 +43,17 @@ public class CodeGenerator {
String module = "infra"; String module = "infra";
// 生成的表 // 生成的表
Table[] tables = { Table[] tables = {
Template.create("preference", "用户偏好", "preference") // Template.create("preference", "用户偏好", "preference")
.enableProviderApi() // .enableProviderApi()
.cache("user:preference:{}:{}", "用户偏好 ${type} ${userId}") // .cache("user:preference:{}:{}", "用户偏好 ${type} ${userId}")
.formatKeys("type", "userId") // .expire(1, TimeUnit.HOURS)
.vue("user", "preference") // .vue("user", "preference")
.enableDrawerForm() // .enums("type")
.enableRowSelection() // .names("APP", "HOST")
.enums("type") // .values("label", "应用", "主机")
.names("APP", "HOST") // .values("value", 1, 2)
.values("label", "应用", "主机") // .color("blue", "green")
.values("value", 1, 2) // .build(),
.color("blue", "green")
.build(),
}; };
// jdbc 配置 - 使用配置文件 // jdbc 配置 - 使用配置文件
File yamlFile = new File("orion-ops-launch/src/main/resources/application-dev.yaml"); File yamlFile = new File("orion-ops-launch/src/main/resources/application-dev.yaml");
@@ -319,6 +316,10 @@ public class CodeGenerator {
new String[]{"/templates/orion-server-module-entity-export.java.vm", "${type}Export.java", "entity.export"}, new String[]{"/templates/orion-server-module-entity-export.java.vm", "${type}Export.java", "entity.export"},
// convert 文件 // convert 文件
new String[]{"/templates/orion-server-module-convert.java.vm", "${type}Convert.java", "convert"}, new String[]{"/templates/orion-server-module-convert.java.vm", "${type}Convert.java", "convert"},
// cache dto 文件
new String[]{"/templates/orion-server-module-cache-dto.java.vm", "${type}CacheDTO.java", "entity.dto.${bizPackage}"},
// cache key define 文件
new String[]{"/templates/orion-server-module-cache-key-define.java.vm", "${type}CacheKeyDefine.java", "define"},
// -------------------- 后端 - provider -------------------- // -------------------- 后端 - provider --------------------
// api 文件 // api 文件
new String[]{"/templates/orion-server-provider-api.java.vm", "${type}Api.java", "api"}, new String[]{"/templates/orion-server-provider-api.java.vm", "${type}Api.java", "api"},
@@ -395,10 +396,12 @@ public class CodeGenerator {
String line = AnsiAppender.create() String line = AnsiAppender.create()
.append(AnsiForeground.BRIGHT_GREEN.and(AnsiFont.BOLD), "\n:: 代码生成完毕 ^_^ ::\n") .append(AnsiForeground.BRIGHT_GREEN.and(AnsiFont.BOLD), "\n:: 代码生成完毕 ^_^ ::\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先 clean 模块父工程\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先 clean 模块父工程\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码复制后请先执行单元测试检测是否正常\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码需要自行修改缓存逻辑\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 后端代码修改完成后请先执行单元测试检测是否正常\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 代码需要注意同一模块的 router 需要自行合并\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 代码需要注意同一模块的 router 需要自行合并\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 枚举需要自行更改数据类型\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- vue 枚举需要自行更改数据类型\n")
.append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 菜单 sql 执行完成后 需要在菜单页面刷新缓存\n") .append(AnsiForeground.BRIGHT_BLUE.and(AnsiFont.BOLD), "- 菜单 sql 执行完成后 需要在菜单页面刷新缓存\n")
.append(AnsiForeground.BRIGHT_RED.and(AnsiFont.BOLD), "- 数据库实体字段长度限制为最大 65535\n")
.toString(); .toString();
System.out.print(line); System.out.print(line);
} }

View File

@@ -87,9 +87,26 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
p.setProperty("file.resource.loader.unicode", StringPool.TRUE); p.setProperty("file.resource.loader.unicode", StringPool.TRUE);
this.velocityEngine = new VelocityEngine(p); this.velocityEngine = new VelocityEngine(p);
} }
// 处理表结构
this.getConfigBuilder().getTableInfoList().forEach(this::processTasble);
return this; return this;
} }
/**
* 处理表结构
*
* @param tableInfo tableInfo
*/
private void processTasble(TableInfo tableInfo) {
for (TableField field : tableInfo.getFields()) {
TableField.MetaInfo metaInfo = field.getMetaInfo();
// 限制字段长度最大为 65535
if (metaInfo.getLength() > 65535) {
Fields.setFieldValue(metaInfo, "length", 65535);
}
}
}
@Override @Override
public void writer(@NotNull Map<String, Object> objectMap, @NotNull String templatePath, @NotNull File outputFile) throws Exception { public void writer(@NotNull Map<String, Object> objectMap, @NotNull String templatePath, @NotNull File outputFile) throws Exception {
Template template = velocityEngine.getTemplate(templatePath, ConstVal.UTF8); Template template = velocityEngine.getTemplate(templatePath, ConstVal.UTF8);
@@ -160,6 +177,10 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
if (!table.isEnableUnitTest()) { if (!table.isEnableUnitTest()) {
files.removeIf(file -> this.isServerUnitTestFile(file.getTemplatePath())); files.removeIf(file -> this.isServerUnitTestFile(file.getTemplatePath()));
} }
// 不生成缓存文件
if (!table.isEnableCache()) {
files.removeIf(file -> this.isServerCacheFile(file.getTemplatePath()));
}
// 不生成 vue 文件 // 不生成 vue 文件
if (!table.isEnableVue()) { if (!table.isEnableVue()) {
files.removeIf(file -> this.isVueFile(file.getTemplatePath())); files.removeIf(file -> this.isVueFile(file.getTemplatePath()));
@@ -180,13 +201,24 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
objectMap.put("since", OrionOpsProConst.VERSION); objectMap.put("since", OrionOpsProConst.VERSION);
// 替换业务注释 // 替换业务注释
tableInfo.setComment(tables.get(tableInfo.getName()).getComment()); tableInfo.setComment(tables.get(tableInfo.getName()).getComment());
Table table = tables.get(tableInfo.getName());
// 缓存元数据
Map<String, Object> cacheMeta = this.pickTableMeta(table,
"enableCache", "cacheKey", "cacheDesc",
"cacheExpired", "cacheExpireTime", "cacheExpireUnit");
objectMap.put("cacheMeta", cacheMeta);
// 实体名称 // 实体名称
String domainName = tableInfo.getEntityName(); String domainName = tableInfo.getEntityName();
String mappingHyphen = objectMap.get("controllerMappingHyphen").toString(); String mappingHyphen = objectMap.get("controllerMappingHyphen").toString();
String entityName = domainName.substring(0, domainName.length() - 2); String entityName = domainName.substring(0, domainName.length() - 2);
// 类型
objectMap.put("type", entityName); objectMap.put("type", entityName);
// 类型首字母小写
objectMap.put("typeLower", Strings.firstLower(entityName)); objectMap.put("typeLower", Strings.firstLower(entityName));
// 类型脊柱名称
objectMap.put("typeHyphen", mappingHyphen.substring(0, mappingHyphen.length() - 3)); objectMap.put("typeHyphen", mappingHyphen.substring(0, mappingHyphen.length() - 3));
// 类型常量
objectMap.put("typeConst", VariableStyles.BIG_HUMP.toSpine(entityName).toUpperCase());
} }
/** /**
@@ -244,16 +276,17 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
objectMap.put("apiComment", map); objectMap.put("apiComment", map);
String comment = tableInfo.getComment(); String comment = tableInfo.getComment();
map.put("create", "创建" + comment); map.put("create", "创建" + comment);
map.put("updateAll", "更新" + comment); map.put("updateAll", "根据条件更新" + comment);
map.put("updateById", "通过 id 更新" + comment); map.put("updateById", "更新" + comment);
map.put("getById", "通过 id 查询" + comment); map.put("getById", "查询" + comment);
map.put("listByIdList", "通过 id 批量查询" + comment); map.put("getByIdList", "批量查询" + comment);
map.put("listAll", "查询" + comment); map.put("queryList", "查询全部" + comment);
map.put("queryCount", "查询" + comment + "数量"); map.put("queryListByCache", "通过缓存查询" + comment);
map.put("queryPage", "分页查询" + comment); map.put("queryPage", "分页查询" + comment);
map.put("deleteById", "通过 id 删除" + comment); map.put("queryCount", "查询" + comment + "数量");
map.put("deleteAll", "删除" + comment); map.put("deleteById", "删除" + comment);
map.put("batchDeleteByIdList", "通过 id 批量删除" + comment); map.put("deleteAll", "根据条件删除" + comment);
map.put("batchDelete", "批量删除" + comment);
map.put("export", "导出" + comment); map.put("export", "导出" + comment);
} }
@@ -270,7 +303,6 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
.filter(s -> this.isServerFile(s.getTemplatePath())) .filter(s -> this.isServerFile(s.getTemplatePath()))
.collect(Collectors.toList()); .collect(Collectors.toList());
String parentPath = getPathInfo(OutputFile.parent);
// 生成文件 // 生成文件
customFiles.forEach(file -> { customFiles.forEach(file -> {
// 获取 parent package // 获取 parent package
@@ -279,13 +311,13 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
objectMap.put("currentPackage", currentPackage); objectMap.put("currentPackage", currentPackage);
// 文件路径 // 文件路径
String filePath = parentPath + File.separator + file.getPackageName() String filePath = this.getPathInfo(OutputFile.parent) + File.separator + file.getPackageName()
.replaceAll("\\.", StringPool.BACK_SLASH + File.separator); .replaceAll("\\.", StringPool.BACK_SLASH + File.separator);
// 文件名称 // 文件名称
Map<String, Object> meta = new HashMap<>(4); Map<String, Object> fileNameMeta = new HashMap<>(4);
meta.put("type", objectMap.get("type")); fileNameMeta.put("type", objectMap.get("type"));
meta.put("tableName", tableInfo.getName()); fileNameMeta.put("tableName", tableInfo.getName());
String fileName = filePath + File.separator + Strings.format(file.getFileName(), meta); String fileName = filePath + File.separator + Strings.format(file.getFileName(), fileNameMeta);
// 渲染文件 // 渲染文件
this.outputFile(Files1.newFile(fileName), objectMap, file.getTemplatePath(), file.isFileOverride()); this.outputFile(Files1.newFile(fileName), objectMap, file.getTemplatePath(), file.isFileOverride());
}); });
@@ -307,33 +339,31 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
customFiles = customFiles.stream() customFiles = customFiles.stream()
.filter(s -> this.isVueFile(s.getTemplatePath())) .filter(s -> this.isVueFile(s.getTemplatePath()))
.collect(Collectors.toList()); .collect(Collectors.toList());
// 设置前端元数据
// 元数据
String outPath = getConfigBuilder().getGlobalConfig().getOutputDir();
Table table = tables.get(tableInfo.getName()); Table table = tables.get(tableInfo.getName());
BeanMap beanMap = BeanMap.create(table, "enums"); Map<String, Object> vueMeta = this.pickTableMeta(table, "enableDrawerForm", "enableRowSelection", "module", "feature");
// 模块名称实体 // 模块名称实体
beanMap.put("moduleEntity", VariableStyles.SPINE.toBigHump(table.getModule())); vueMeta.put("moduleEntity", VariableStyles.SPINE.toBigHump(table.getModule()));
// 模块名称实体 // 模块名称实体
beanMap.put("moduleEntityFirstLower", Strings.firstLower(beanMap.get("moduleEntity"))); vueMeta.put("moduleEntityFirstLower", Strings.firstLower(vueMeta.get("moduleEntity")));
// 模块名称常量 // 模块名称常量
beanMap.put("moduleConst", VariableStyles.SPINE.toSerpentine(table.getModule()).toUpperCase()); vueMeta.put("moduleConst", VariableStyles.SPINE.toSerpentine(table.getModule()).toUpperCase());
// 功能名称实体 // 功能名称实体
beanMap.put("featureEntity", VariableStyles.SPINE.toBigHump(table.getFeature())); vueMeta.put("featureEntity", VariableStyles.SPINE.toBigHump(table.getFeature()));
// 功能名称实体 // 功能名称实体
beanMap.put("featureEntityFirstLower", Strings.firstLower(beanMap.get("featureEntity"))); vueMeta.put("featureEntityFirstLower", Strings.firstLower(vueMeta.get("featureEntity")));
// 功能名称常量 // 功能名称常量
beanMap.put("featureConst", VariableStyles.SPINE.toSerpentine(table.getFeature()).toUpperCase()); vueMeta.put("featureConst", VariableStyles.SPINE.toSerpentine(table.getFeature()).toUpperCase());
// 枚举 // 枚举
beanMap.put("enums", this.getEnumMap(beanMap, tableInfo, table)); vueMeta.put("enums", this.getEnumMap(tableInfo, table));
objectMap.put("vue", beanMap); objectMap.put("vue", vueMeta);
// 生成文件 // 生成文件
customFiles.forEach(file -> { customFiles.forEach(file -> {
// 文件路径 // 文件路径
String filePath = outPath String filePath = getConfigBuilder().getGlobalConfig().getOutputDir()
+ "/" + Strings.format(file.getPackageName(), beanMap) + "/" + Strings.format(file.getPackageName(), vueMeta)
+ "/" + Strings.format(file.getFileName(), beanMap); + "/" + Strings.format(file.getFileName(), vueMeta);
// 渲染文件 // 渲染文件
this.outputFile(Files1.newFile(filePath), objectMap, file.getTemplatePath(), file.isFileOverride()); this.outputFile(Files1.newFile(filePath), objectMap, file.getTemplatePath(), file.isFileOverride());
}); });
@@ -379,6 +409,16 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
return templatePath.contains("orion-server-test"); return templatePath.contains("orion-server-test");
} }
/**
* 是否为后端缓存文件
*
* @param templatePath templatePath
* @return 是否为后端缓存文件
*/
private boolean isServerCacheFile(String templatePath) {
return templatePath.contains("orion-server-cache");
}
/** /**
* 是否为 vue 文件 * 是否为 vue 文件
* *
@@ -390,15 +430,30 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
templatePath.contains("orion-sql-menu.sql"); templatePath.contains("orion-sql-menu.sql");
} }
/**
* 获取表元数据
*
* @param table table
* @param keys keys
* @return meta
*/
private Map<String, Object> pickTableMeta(Table table, String... keys) {
BeanMap beanMap = BeanMap.create(table);
Map<String, Object> tableMeta = new HashMap<>();
for (String key : keys) {
tableMeta.put(key, beanMap.get(key));
}
return tableMeta;
}
/** /**
* 获取枚举 * 获取枚举
* *
* @param beanMap beanMap
* @param tableInfo tableInfo * @param tableInfo tableInfo
* @param table table * @param table table
* @return enumMap * @return enumMap
*/ */
private Map<String, EnumMeta> getEnumMap(BeanMap beanMap, TableInfo tableInfo, Table table) { private Map<String, EnumMeta> getEnumMap(TableInfo tableInfo, Table table) {
// 枚举值 // 枚举值
Map<String, EnumMeta> enumMap = new LinkedHashMap<>(); Map<String, EnumMeta> enumMap = new LinkedHashMap<>();
for (VueEnum meta : table.getEnums()) { for (VueEnum meta : table.getEnums()) {

View File

@@ -1,7 +1,5 @@
package com.orion.ops.launch.generator.template; package com.orion.ops.launch.generator.template;
import com.orion.lang.utils.collect.Lists;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
/** /**
@@ -64,17 +62,6 @@ public class CacheTemplate extends ServerTemplate {
return this; return this;
} }
/**
* 设置缓存格式化字段
*
* @param keys keys
* @return this
*/
public CacheTemplate formatKeys(String... keys) {
table.cacheFormatKeys.addAll(Lists.of(keys));
return this;
}
/** /**
* 设置缓存过期时间 * 设置缓存过期时间
* *

View File

@@ -58,11 +58,6 @@ public class Table {
*/ */
protected String cacheDesc; protected String cacheDesc;
/**
* 缓存格式化字段
*/
protected List<String> cacheFormatKeys;
/** /**
* 缓存是否会过期 * 缓存是否会过期
*/ */
@@ -111,7 +106,6 @@ public class Table {
protected List<VueEnum> enums; protected List<VueEnum> enums;
protected Table() { protected Table() {
this.cacheFormatKeys = new ArrayList<>();
this.enums = new ArrayList<>(); this.enums = new ArrayList<>();
} }

View File

@@ -0,0 +1,45 @@
package ${currentPackage};
import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import lombok.*;
import java.util.*;
import java.math.*;
/**
* $!{table.comment} 缓存对象
*
* @author ${author}
* @version ${since}
* @since ${date}
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Schema(name = "${type}CacheDTO", description = "$!{table.comment} 缓存对象")
public class ${type}CacheDTO implements Serializable {
private static final long serialVersionUID = 1L;
#foreach($field in ${table.fields})
#if("$!field.comment" != "")
@Schema(description = "${field.comment}")
#end
private ${field.propertyType} ${field.propertyName};
#end
@Schema(description = "创建时间")
private Date createTime;
@Schema(description = "修改时间")
private Date updateTime;
@Schema(description = "创建人")
private String creator;
@Schema(description = "修改人")
private String updater;
}

View File

@@ -0,0 +1,29 @@
package ${currentPackage};
import com.orion.lang.define.cache.CacheKeyBuilder;
import com.orion.lang.define.cache.CacheKeyDefine;
#foreach($pkg in ${customModuleFilePackages})
import ${pkg}.*;
#end
import java.util.concurrent.TimeUnit;
/**
* $!{table.comment}缓存 key
*
* @author ${author}
* @version ${since}
* @since ${date}
*/
public interface ${type}CacheKeyDefine {
CacheKeyDefine $typeConst = new CacheKeyBuilder()
.key("$cacheMeta.cacheKey")
.desc("$cacheMeta.cacheDesc")
.type(${type}CacheDTO.class)
#if($cacheMeta.cacheExpired)
.timeout($cacheMeta.cacheExpireTime, TimeUnit.$cacheMeta.cacheExpireUnit.name())
#end
.build();
}

View File

@@ -29,13 +29,13 @@ GET {{baseUrl}}/${package.ModuleName}/${typeHyphen}/get?id=1
Authorization: {{token}} Authorization: {{token}}
${httpComment} ${apiComment.listByIdList} ${httpComment} ${apiComment.getByIdList}
GET {{baseUrl}}/${package.ModuleName}/${typeHyphen}/list?idList=1,2,3 GET {{baseUrl}}/${package.ModuleName}/${typeHyphen}/batch-get?idList=1,2,3
Authorization: {{token}} Authorization: {{token}}
${httpComment} ${apiComment.listAll} ${httpComment} ${apiComment.queryList}
POST {{baseUrl}}/${package.ModuleName}/${typeHyphen}/list-all POST {{baseUrl}}/${package.ModuleName}/${typeHyphen}/list
Content-Type: application/json Content-Type: application/json
Authorization: {{token}} Authorization: {{token}}
@@ -65,8 +65,8 @@ DELETE {{baseUrl}}/${package.ModuleName}/${typeHyphen}/delete?id=1
Authorization: {{token}} Authorization: {{token}}
${httpComment} ${apiComment.batchDeleteByIdList} ${httpComment} ${apiComment.batchDelete}
DELETE {{baseUrl}}/${package.ModuleName}/${typeHyphen}/delete-batch?idList=1,2,3 DELETE {{baseUrl}}/${package.ModuleName}/${typeHyphen}/batch-delete?idList=1,2,3
Authorization: {{token}} Authorization: {{token}}

View File

@@ -72,19 +72,19 @@ public class ${table.controllerName} {
} }
@IgnoreLog(IgnoreLogMode.RET) @IgnoreLog(IgnoreLogMode.RET)
@GetMapping("/list") @GetMapping("/batch-get")
@Operation(summary = "${apiComment.listByIdList}") @Operation(summary = "${apiComment.getByIdList}")
@Parameter(name = "idList", description = "idList", required = true) @Parameter(name = "idList", description = "idList", required = true)
@PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:query')") @PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:query')")
public List<${type}VO> get${type}List(@RequestParam("idList") List<Long> idList) { public List<${type}VO> get${type}Batch(@RequestParam("idList") List<Long> idList) {
return ${typeLower}Service.get${type}ByIdList(idList); return ${typeLower}Service.get${type}ByIdList(idList);
} }
@IgnoreLog(IgnoreLogMode.RET) @IgnoreLog(IgnoreLogMode.RET)
@PostMapping("/list-all") @PostMapping("/list")
@Operation(summary = "${apiComment.listAll}") @Operation(summary = "${apiComment.queryList}")
@PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:query')") @PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:query')")
public List<${type}VO> get${type}ListAll(@Validated @RequestBody ${type}QueryRequest request) { public List<${type}VO> get${type}List(@Validated @RequestBody ${type}QueryRequest request) {
return ${typeLower}Service.get${type}List(request); return ${typeLower}Service.get${type}List(request);
} }
@@ -104,8 +104,8 @@ public class ${table.controllerName} {
return ${typeLower}Service.delete${type}ById(id); return ${typeLower}Service.delete${type}ById(id);
} }
@DeleteMapping("/delete-batch") @DeleteMapping("/batch-delete")
@Operation(summary = "${apiComment.batchDeleteByIdList}") @Operation(summary = "${apiComment.batchDelete}")
@Parameter(name = "idList", description = "idList", required = true) @Parameter(name = "idList", description = "idList", required = true)
@PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:delete')") @PreAuthorize("@ss.hasPermission('${package.ModuleName}:${typeHyphen}:delete')")
public Integer batchDelete${type}(@RequestParam("idList") List<Long> idList) { public Integer batchDelete${type}(@RequestParam("idList") List<Long> idList) {

View File

@@ -33,4 +33,10 @@ public interface ${type}Convert {
List<${type}VO> to(List<${type}DO> list); List<${type}VO> to(List<${type}DO> list);
#if($cacheMeta.enableCache)
${type}VO to(${type}CacheDTO cache);
${type}CacheDTO toCache(${type}DO domain);
#end
} }

View File

@@ -3,12 +3,17 @@ package ${package.ServiceImpl};
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.orion.lang.define.wrapper.DataGrid; import com.orion.lang.define.wrapper.DataGrid;
#if($cacheMeta.enableCache)
import com.orion.ops.framework.common.constant.Const;
#end
import com.orion.lang.utils.collect.Lists; import com.orion.lang.utils.collect.Lists;
import com.orion.office.excel.writer.exporting.ExcelExport; import com.orion.office.excel.writer.exporting.ExcelExport;
import com.orion.ops.framework.common.constant.ErrorMessage; import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.utils.FileNames; import com.orion.ops.framework.common.utils.FileNames;
import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.common.utils.Valid;
#if($cacheMeta.enableCache)
import com.orion.ops.framework.redis.core.utils.RedisMaps;
#end
#foreach($pkg in ${customModuleFilePackages}) #foreach($pkg in ${customModuleFilePackages})
import ${pkg}.*; import ${pkg}.*;
#end #end
@@ -50,6 +55,10 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
int effect = ${typeLower}DAO.insert(record); int effect = ${typeLower}DAO.insert(record);
Long id = record.getId(); Long id = record.getId();
log.info("${type}Service-create${type} id: {}, effect: {}", id, effect); log.info("${type}Service-create${type} id: {}, effect: {}", id, effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst});
#end
return id; return id;
} }
@@ -67,6 +76,10 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
// 更新 // 更新
int effect = ${typeLower}DAO.updateById(updateRecord); int effect = ${typeLower}DAO.updateById(updateRecord);
log.info("${type}Service-update${type}ById effect: {}", effect); log.info("${type}Service-update${type}ById effect: {}", effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst});
#end
return effect; return effect;
} }
@@ -80,6 +93,10 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
// 更新 // 更新
int effect = ${typeLower}DAO.update(updateRecord, wrapper); int effect = ${typeLower}DAO.update(updateRecord, wrapper);
log.info("${type}Service.update${type} effect: {}", effect); log.info("${type}Service.update${type} effect: {}", effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst});
#end
return effect; return effect;
} }
@@ -111,6 +128,32 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
return ${typeLower}DAO.of(wrapper).list(${type}Convert.MAPPER::to); return ${typeLower}DAO.of(wrapper).list(${type}Convert.MAPPER::to);
} }
#if($cacheMeta.enableCache)
@Override
public List<${type}VO> get${type}ListByCache() {
// 查询缓存
List<${type}CacheDTO> list = RedisMaps.valuesJson(${type}CacheKeyDefine.${typeConst});
if (list.isEmpty()) {
// 查询数据库
list = ${typeLower}DAO.of().list(${type}Convert.MAPPER::toCache);
// 添加默认值 防止穿透
if (list.isEmpty()) {
list.add(${type}CacheDTO.builder()
.id(Const.NONE_ID)
.build());
}
// 设置缓存
RedisMaps.putAllJson(${type}CacheKeyDefine.${typeConst}.getKey(), s -> s.getId().toString(), list);
RedisMaps.setExpire(${type}CacheKeyDefine.${typeConst});
}
// 删除默认值
return list.stream()
.filter(s -> !s.getId().equals(Const.NONE_ID))
.map(${type}Convert.MAPPER::to)
.collect(Collectors.toList());
}
#end
@Override @Override
public Long get${type}Count(${type}QueryRequest request) { public Long get${type}Count(${type}QueryRequest request) {
// 条件 // 条件
@@ -137,7 +180,11 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
Valid.notNull(record, ErrorMessage.DATA_ABSENT); Valid.notNull(record, ErrorMessage.DATA_ABSENT);
// 删除 // 删除
int effect = ${typeLower}DAO.deleteById(id); int effect = ${typeLower}DAO.deleteById(id);
log.info("${type}Service-delete${type}ById effect: {}", effect); log.info("${type}Service-delete${type}ById id: {}, effect: {}", id, effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst}, id);
#end
return effect; return effect;
} }
@@ -146,6 +193,10 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
log.info("${type}Service-batchDelete${type}ByIdList idList: {}", idList); log.info("${type}Service-batchDelete${type}ByIdList idList: {}", idList);
int effect = ${typeLower}DAO.deleteBatchIds(idList); int effect = ${typeLower}DAO.deleteBatchIds(idList);
log.info("${type}Service-batchDelete${type}ByIdList effect: {}", effect); log.info("${type}Service-batchDelete${type}ByIdList effect: {}", effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst}, idList);
#end
return effect; return effect;
} }
@@ -157,6 +208,10 @@ public class ${table.serviceImplName} implements ${table.serviceName} {
// 删除 // 删除
int effect = ${typeLower}DAO.delete(wrapper); int effect = ${typeLower}DAO.delete(wrapper);
log.info("${type}Service.delete${type} effect: {}", effect); log.info("${type}Service.delete${type} effect: {}", effect);
#if($cacheMeta.enableCache)
// 删除缓存
RedisMaps.delete(${type}CacheKeyDefine.${typeConst});
#end
return effect; return effect;
} }

View File

@@ -52,7 +52,7 @@ public interface ${table.serviceName} {
${type}VO get${type}ById(Long id); ${type}VO get${type}ById(Long id);
/** /**
* ${apiComment.listByIdList} * ${apiComment.getByIdList}
* *
* @param idList idList * @param idList idList
* @return rows * @return rows
@@ -60,13 +60,22 @@ public interface ${table.serviceName} {
List<${type}VO> get${type}ByIdList(List<Long> idList); List<${type}VO> get${type}ByIdList(List<Long> idList);
/** /**
* ${apiComment.listAll} * ${apiComment.queryList}
* *
* @param request request * @param request request
* @return rows * @return rows
*/ */
List<${type}VO> get${type}List(${type}QueryRequest request); List<${type}VO> get${type}List(${type}QueryRequest request);
#if($cacheMeta.enableCache)
/**
* ${apiComment.queryListByCache}
*
* @return rows
*/
List<${type}VO> get${type}ListByCache();
#end
/** /**
* ${apiComment.queryCount} * ${apiComment.queryCount}
* *
@@ -92,7 +101,7 @@ public interface ${table.serviceName} {
Integer delete${type}ById(Long id); Integer delete${type}ById(Long id);
/** /**
* ${apiComment.batchDeleteByIdList} * ${apiComment.batchDelete}
* *
* @param idList idList * @param idList idList
* @return effect * @return effect

View File

@@ -2,7 +2,7 @@ package ${currentPackage};
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.orion.lang.utils.collect.Collections; import com.orion.lang.utils.collect.Lists;
import com.orion.ops.framework.common.constant.ErrorMessage; import com.orion.ops.framework.common.constant.ErrorMessage;
import com.orion.ops.framework.common.utils.Valid; import com.orion.ops.framework.common.utils.Valid;
#foreach($pkg in ${customModuleFilePackages}) #foreach($pkg in ${customModuleFilePackages})
@@ -19,7 +19,6 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@@ -64,12 +63,9 @@ public class ${type}ApiImpl implements ${type}Api {
log.info("${type}Api.update${type} query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update)); log.info("${type}Api.update${type} query: {}, update: {}", JSON.toJSONString(query), JSON.toJSONString(update));
Valid.valid(query); Valid.valid(query);
Valid.valid(update); Valid.valid(update);
// 条件
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(query);
// 转换
${type}DO updateRecord = ${type}ProviderConvert.MAPPER.to(update);
// 更新 // 更新
int effect = ${typeLower}DAO.update(updateRecord, wrapper); int effect = ${typeLower}Service.update${type}(${type}ProviderConvert.MAPPER.toRequest(query),
${type}ProviderConvert.MAPPER.toRequest(update));
log.info("${type}Api.update${type} effect: {}", effect); log.info("${type}Api.update${type} effect: {}", effect);
return effect; return effect;
} }
@@ -88,9 +84,9 @@ public class ${type}ApiImpl implements ${type}Api {
} }
@Override @Override
public List<${type}DTO> get${type}ByIdList(Collection<Long> idList) { public List<${type}DTO> get${type}ByIdList(List<Long> idList) {
log.info("${type}Api.get${type}ByIdList idList: {}", idList); log.info("${type}Api.get${type}ByIdList idList: {}", idList);
if (Collections.isEmpty(idList)) { if (Lists.isEmpty(idList)) {
return new ArrayList<>(); return new ArrayList<>();
} }
// 查询 // 查询
@@ -109,6 +105,14 @@ public class ${type}ApiImpl implements ${type}Api {
return ${typeLower}DAO.of(wrapper).list(${type}ProviderConvert.MAPPER::to); return ${typeLower}DAO.of(wrapper).list(${type}ProviderConvert.MAPPER::to);
} }
@Override
public List<${type}DTO> get${type}ListByCache() {
return ${typeLower}Service.get${type}ListByCache()
.stream()
.map(${type}ProviderConvert.MAPPER::to)
.collect(Collectors.toList());
}
@Override @Override
public Long get${type}Count(${type}QueryDTO dto) { public Long get${type}Count(${type}QueryDTO dto) {
log.info("${type}Api.get${type}Count dto: {}", JSON.toJSONString(dto)); log.info("${type}Api.get${type}Count dto: {}", JSON.toJSONString(dto));
@@ -123,21 +127,18 @@ public class ${type}ApiImpl implements ${type}Api {
public Integer delete${type}ById(Long id) { public Integer delete${type}ById(Long id) {
log.info("${type}Api.delete${type}ById id: {}", id); log.info("${type}Api.delete${type}ById id: {}", id);
Valid.notNull(id, ErrorMessage.ID_MISSING); Valid.notNull(id, ErrorMessage.ID_MISSING);
// 检查数据是否存在
${type}DO record = ${typeLower}DAO.selectById(id);
Valid.notNull(record, ErrorMessage.DATA_ABSENT);
// 删除 // 删除
int effect = ${typeLower}DAO.deleteById(id); Integer effect = ${typeLower}Service.delete${type}ById(id);
log.info("${type}Api.delete${type}ById effect: {}", effect); log.info("${type}Api.delete${type}ById id: {}, effect: {}", id, effect);
return effect; return effect;
} }
@Override @Override
public Integer batchDelete${type}ByIdList(Collection<Long> idList) { public Integer batchDelete${type}ByIdList(List<Long> idList) {
log.info("${type}Api.batchDelete${type}ByIdList idList: {}", idList); log.info("${type}Api.batchDelete${type}ByIdList idList: {}", idList);
Valid.notEmpty(idList, ErrorMessage.ID_MISSING); Valid.notEmpty(idList, ErrorMessage.ID_MISSING);
// 删除 // 删除
int effect = ${typeLower}DAO.deleteBatchIds(idList); Integer effect = ${typeLower}Service.batchDelete${type}ByIdList(idList);
log.info("${type}Api.batchDelete${type}ByIdList effect: {}", effect); log.info("${type}Api.batchDelete${type}ByIdList effect: {}", effect);
return effect; return effect;
} }
@@ -146,10 +147,8 @@ public class ${type}ApiImpl implements ${type}Api {
public Integer delete${type}(${type}QueryDTO dto) { public Integer delete${type}(${type}QueryDTO dto) {
log.info("${type}Api.delete${type} dto: {}", JSON.toJSONString(dto)); log.info("${type}Api.delete${type} dto: {}", JSON.toJSONString(dto));
Valid.valid(dto); Valid.valid(dto);
// 条件
LambdaQueryWrapper<${type}DO> wrapper = this.buildQueryWrapper(dto);
// 删除 // 删除
int effect = ${typeLower}DAO.delete(wrapper); Integer effect = ${typeLower}Service.delete${type}(${type}ProviderConvert.MAPPER.toRequest(dto));
log.info("${type}Api.delete${type} effect: {}", effect); log.info("${type}Api.delete${type} effect: {}", effect);
return effect; return effect;
} }

View File

@@ -4,7 +4,6 @@ package ${currentPackage};
import ${pkg}.*; import ${pkg}.*;
#end #end
import java.util.Collection;
import java.util.List; import java.util.List;
/** /**
@@ -50,21 +49,28 @@ public interface ${type}Api {
${type}DTO get${type}ById(Long id); ${type}DTO get${type}ById(Long id);
/** /**
* ${apiComment.listByIdList} * ${apiComment.getByIdList}
* *
* @param idList idList * @param idList idList
* @return rows * @return rows
*/ */
List<${type}DTO> get${type}ByIdList(Collection<Long> idList); List<${type}DTO> get${type}ByIdList(List<Long> idList);
/** /**
* ${apiComment.listAll} * ${apiComment.queryList}
* *
* @param dto dto * @param dto dto
* @return rows * @return rows
*/ */
List<${type}DTO> get${type}List(${type}QueryDTO dto); List<${type}DTO> get${type}List(${type}QueryDTO dto);
/**
* ${apiComment.queryListByCache}
*
* @return rows
*/
List<${type}DTO> get${type}ListByCache();
/** /**
* ${apiComment.queryCount} * ${apiComment.queryCount}
* *
@@ -82,12 +88,12 @@ public interface ${type}Api {
Integer delete${type}ById(Long id); Integer delete${type}ById(Long id);
/** /**
* ${apiComment.batchDeleteByIdList} * ${apiComment.batchDelete}
* *
* @param idList idList * @param idList idList
* @return effect * @return effect
*/ */
Integer batchDelete${type}ByIdList(Collection<Long> idList); Integer batchDelete${type}ByIdList(List<Long> idList);
/** /**
* ${apiComment.deleteAll} * ${apiComment.deleteAll}

View File

@@ -24,6 +24,8 @@ public interface ${type}ProviderConvert {
${type}ProviderConvert MAPPER = Mappers.getMapper(${type}ProviderConvert.class); ${type}ProviderConvert MAPPER = Mappers.getMapper(${type}ProviderConvert.class);
${type}DTO to(${type}VO dto);
${type}DO to(${type}DTO dto); ${type}DO to(${type}DTO dto);
${type}DTO to(${type}DO domain); ${type}DTO to(${type}DO domain);
@@ -32,12 +34,12 @@ public interface ${type}ProviderConvert {
${type}DO to(${type}UpdateDTO update); ${type}DO to(${type}UpdateDTO update);
${type}QueryRequest toRequest(${type}QueryDTO request);
${type}CreateRequest toRequest(${type}CreateDTO request); ${type}CreateRequest toRequest(${type}CreateDTO request);
${type}UpdateRequest toRequest(${type}UpdateDTO request); ${type}UpdateRequest toRequest(${type}UpdateDTO request);
List<${type}DTO> toList(List<${type}DO> list); List<${type}DTO> toList(List<${type}DO> list);
List<${type}DO> toList1(List<${type}DTO> list);
} }

View File

@@ -110,5 +110,17 @@ public class ${type}ApiImplTests extends BaseUnitTest {
Integer effect = ${typeLower}Api.delete${type}(dto); Integer effect = ${typeLower}Api.delete${type}(dto);
assertEquals(effect, 0); assertEquals(effect, 0);
} }
#if($cacheMeta.enableCache)
// -------------------- cache --------------------
@Test
@Order(11)
public void get${type}ListByCacheTest() {
this.create${type}Test();
List<${type}DTO> list = ${typeLower}Api.get${type}ListByCache();
assertEquals(list.size(), 1);
}
#end
} }

View File

@@ -121,5 +121,17 @@ public class ${type}ServiceImplTests extends BaseUnitTest {
Integer effect = ${typeLower}Service.delete${type}(query); Integer effect = ${typeLower}Service.delete${type}(query);
assertEquals(effect, 0); assertEquals(effect, 0);
} }
#if($cacheMeta.enableCache)
// -------------------- cache --------------------
@Test
@Order(12)
public void get${type}ListByCacheTest() {
this.create${type}Test();
List<${type}VO> list = ${typeLower}Service.get${type}ListByCache();
assertEquals(list.size(), 1);
}
#end
} }

View File

@@ -4,7 +4,7 @@
INSERT INTO system_menu INSERT INTO system_menu
(parent_id, name, type, sort, visible, status, cache) (parent_id, name, type, sort, visible, status, cache)
VALUES VALUES
(0, '${vue.comment}管理', 1, 10, 1, 1, 1); (0, '${table.comment}管理', 1, 10, 1, 1, 1);
-- 设置临时父菜单id -- 设置临时父菜单id
SELECT @TMP_PARENT_ID:=LAST_INSERT_ID(); SELECT @TMP_PARENT_ID:=LAST_INSERT_ID();
@@ -13,7 +13,7 @@ SELECT @TMP_PARENT_ID:=LAST_INSERT_ID();
INSERT INTO system_menu INSERT INTO system_menu
(parent_id, name, type, sort, visible, status, cache, component) (parent_id, name, type, sort, visible, status, cache, component)
VALUES VALUES
(@TMP_PARENT_ID, '$vue.comment', 2, 10, 1, 1, 1, '$vue.moduleEntityFirstLower$vue.featureEntity'); (@TMP_PARENT_ID, '$table.comment', 2, 10, 1, 1, 1, '$vue.moduleEntityFirstLower$vue.featureEntity');
-- 设置临时子菜单id -- 设置临时子菜单id
SELECT @TMP_SUB_ID:=LAST_INSERT_ID(); SELECT @TMP_SUB_ID:=LAST_INSERT_ID();
@@ -22,8 +22,8 @@ SELECT @TMP_SUB_ID:=LAST_INSERT_ID();
INSERT INTO system_menu INSERT INTO system_menu
(parent_id, name, permission, type, sort) (parent_id, name, permission, type, sort)
VALUES VALUES
(@TMP_SUB_ID, '查询$vue.comment', '${package.ModuleName}:${typeHyphen}:query', 3, 10), (@TMP_SUB_ID, '查询$table.comment', '${package.ModuleName}:${typeHyphen}:query', 3, 10),
(@TMP_SUB_ID, '创建$vue.comment', '${package.ModuleName}:${typeHyphen}:create', 3, 20), (@TMP_SUB_ID, '创建$table.comment', '${package.ModuleName}:${typeHyphen}:create', 3, 20),
(@TMP_SUB_ID, '修改$vue.comment', '${package.ModuleName}:${typeHyphen}:update', 3, 30), (@TMP_SUB_ID, '修改$table.comment', '${package.ModuleName}:${typeHyphen}:update', 3, 30),
(@TMP_SUB_ID, '删除$vue.comment', '${package.ModuleName}:${typeHyphen}:delete', 3, 40), (@TMP_SUB_ID, '删除$table.comment', '${package.ModuleName}:${typeHyphen}:delete', 3, 40),
(@TMP_SUB_ID, '导出$vue.comment', '${package.ModuleName}:${typeHyphen}:export', 3, 50); (@TMP_SUB_ID, '导出$table.comment', '${package.ModuleName}:${typeHyphen}:export', 3, 50);

View File

@@ -89,10 +89,10 @@ export function get${vue.featureEntity}(id: number) {
} }
/** /**
* $apiComment.listByIdList * $apiComment.getByIdList
*/ */
export function get${vue.featureEntity}List(idList: Array<number>) { export function get${vue.featureEntity}List(idList: Array<number>) {
return axios.get<${vue.featureEntity}QueryResponse[]>('/${package.ModuleName}/${typeHyphen}/list', { return axios.get<${vue.featureEntity}QueryResponse[]>('/${package.ModuleName}/${typeHyphen}/batch-get', {
params: { idList }, params: { idList },
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });
@@ -101,10 +101,10 @@ export function get${vue.featureEntity}List(idList: Array<number>) {
} }
/** /**
* $apiComment.listAll * $apiComment.queryList
*/ */
export function get${vue.featureEntity}ListAll(request: ${vue.featureEntity}QueryRequest) { export function get${vue.featureEntity}List(request: ${vue.featureEntity}QueryRequest) {
return axios.post<Array<${vue.featureEntity}QueryResponse>>('/${package.ModuleName}/${typeHyphen}/list-all', request); return axios.post<Array<${vue.featureEntity}QueryResponse>>('/${package.ModuleName}/${typeHyphen}/list', request);
} }
/** /**
@@ -122,10 +122,10 @@ export function delete${vue.featureEntity}(id: number) {
} }
/** /**
* $apiComment.batchDeleteByIdList * $apiComment.batchDelete
*/ */
export function batchDelete${vue.featureEntity}(idList: Array<number>) { export function batchDelete${vue.featureEntity}(idList: Array<number>) {
return axios.delete('/${package.ModuleName}/${typeHyphen}/delete-batch', { return axios.delete('/${package.ModuleName}/${typeHyphen}/batch-delete', {
params: { idList }, params: { idList },
paramsSerializer: params => { paramsSerializer: params => {
return qs.stringify(params, { arrayFormat: 'comma' }); return qs.stringify(params, { arrayFormat: 'comma' });