修改代码生成器包.

This commit is contained in:
lijiahang
2023-08-09 18:00:39 +08:00
parent 0063b31f35
commit 0f739f01e9
25 changed files with 204 additions and 63 deletions

View File

@@ -1,34 +0,0 @@
package com.orion.ops.framework.mybatis.core.generator;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @author Jiahang Li
* @version 1.0.0
* @since 2023/7/17 10:44
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class GenTable {
/**
* 表名称
*/
private String tableName;
/**
* 注释
*/
private String comment;
/**
* 请求实体包名
*/
private String requestPackage;
}

View File

@@ -1,4 +1,4 @@
package com.orion.ops.framework.mybatis.core.generator;
package com.orion.ops.launch.generator;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
@@ -12,6 +12,8 @@ import com.orion.lang.constant.Const;
import com.orion.lang.utils.ext.yml.YmlExt;
import com.orion.ops.framework.mybatis.core.domain.BaseDO;
import com.orion.ops.framework.mybatis.core.mapper.IMapper;
import com.orion.ops.module.infra.enums.RoleStatusEnum;
import com.orion.ops.module.infra.enums.UserStatusEnum;
import org.apache.ibatis.annotations.Mapper;
import java.io.File;
@@ -36,13 +38,15 @@ public class CodeGenerator {
String author = Const.ORION_AUTHOR;
// 模块
String module = "infra";
// 生成的表 - 业务注释 - request文件的包前缀
// 生成的表
GenTable[] tables = {
new GenTable("system_user", "用户", "user"),
new GenTable("system_role", "角色", "role"),
new GenTable("system_user_role", "用户角色关联", "role"),
new GenTable("system_user", "用户", "user")
.vue("user/user", "user", "user")
.enums(UserStatusEnum.class),
new GenTable("system_role", "角色", "role")
.vue("user/role", "user", "role")
.enums(RoleStatusEnum.class),
new GenTable("system_menu", "菜单", "menu"),
new GenTable("system_role_menu", "角色菜单关联", "menu")
};
// jdbc 配置 - 使用配置文件
File yamlFile = new File("orion-ops-launch/src/main/resources/application-dev.yaml");
@@ -275,12 +279,12 @@ public class CodeGenerator {
*/
private static TemplateConfig getTemplateConfig() {
TemplateConfig tplConfig = new TemplateConfig.Builder()
.controller("/templates/orion-controller.java.vm")
.entity("/templates/orion-entity-do.java.vm")
.service("/templates/orion-service.java.vm")
.serviceImpl("/templates/orion-service-impl.java.vm")
.mapper("/templates/orion-mapper.java.vm")
.xml("/templates/orion-mapper.xml.vm")
.controller("/templates/orion-server-controller.java.vm")
.entity("/templates/orion-server-entity-do.java.vm")
.service("/templates/orion-server-service.java.vm")
.serviceImpl("/templates/orion-server-service-impl.java.vm")
.mapper("/templates/orion-server-mapper.java.vm")
.xml("/templates/orion-server-mapper.xml.vm")
.build();
return tplConfig;
}
@@ -293,21 +297,35 @@ public class CodeGenerator {
private static InjectionConfig getInjectionConfig() {
String[][] customFileDefineArr = new String[][]{
// http 文件
new String[]{"/templates/orion-controller.http.vm", "%sController.http", "controller"},
new String[]{"/templates/orion-server-controller.http.vm", "%sController.http", "controller"},
// vo 文件
new String[]{"/templates/orion-entity-vo.java.vm", "%sVO.java", "entity.vo"},
new String[]{"/templates/orion-server-entity-vo.java.vm", "%sVO.java", "entity.vo"},
// dto 文件
new String[]{"/templates/orion-entity-dto.java.vm", "%sDTO.java", "entity.dto"},
new String[]{"/templates/orion-server-entity-dto.java.vm", "%sDTO.java", "entity.dto"},
// create request 文件
new String[]{"/templates/orion-entity-request-create.java.vm", "%sCreateRequest.java", "entity.request.%s"},
new String[]{"/templates/orion-server-entity-request-create.java.vm", "%sCreateRequest.java", "entity.request.%s"},
// update request 文件
new String[]{"/templates/orion-entity-request-update.java.vm", "%sUpdateRequest.java", "entity.request.%s"},
new String[]{"/templates/orion-server-entity-request-update.java.vm", "%sUpdateRequest.java", "entity.request.%s"},
// query request 文件
new String[]{"/templates/orion-entity-request-query.java.vm", "%sQueryRequest.java", "entity.request.%s"},
new String[]{"/templates/orion-server-entity-request-query.java.vm", "%sQueryRequest.java", "entity.request.%s"},
// convert 文件
new String[]{"/templates/orion-convert.java.vm", "%sConvert.java", "convert"},
new String[]{"/templates/orion-server-convert.java.vm", "%sConvert.java", "convert"},
// convert provider 文件
new String[]{"/templates/orion-convert-provider.java.vm", "%sProviderConvert.java", "convert"},
new String[]{"/templates/orion-server-convert-provider.java.vm", "%sProviderConvert.java", "convert"},
// vue api 文件
new String[]{"/templates/orion-vue-api.ts.vm", "${feature}.ts", "vue/api/${apiPath}"},
// vue views index.ts 文件
new String[]{"/templates/orion-vue-views-index.vue.vm", "index.vue", "vue/views/${viewsPath}"},
// vue form-modal.vue 文件
new String[]{"/templates/orion-vue-views-components-form-modal.vue.vm", "${feature}-form-modal.vue", "vue/views/${viewsPath}/components"},
// vue table.vue 文件
new String[]{"/templates/orion-vue-views-components-table.vue.vm", "${feature}-table.vue", "vue/views/${viewsPath}/components"},
// vue enum.types.ts 文件
new String[]{"/templates/orion-vue-views-types-enum.types.ts.vm", "enum.types.ts", "vue/views/${viewsPath}/types"},
// vue form.rules.ts 文件
new String[]{"/templates/orion-vue-views-types-form.rules.ts.vm", "form.rules.ts", "vue/views/${viewsPath}/types"},
// vue table.vue 文件
new String[]{"/templates/orion-vue-views-types-table.columns.ts.vm", "table.columns.ts", "vue/views/${viewsPath}/types"},
};
// 构建文件

View File

@@ -0,0 +1,96 @@
package com.orion.ops.launch.generator;
import com.orion.lang.utils.collect.Lists;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* @author Jiahang Li
* @version 1.0.0
* @since 2023/7/17 10:44
*/
@Data
public class GenTable {
// -------------------- 后端 --------------------
/**
* 表名称
*/
private String tableName;
/**
* 业务注释
*/
private String comment;
/**
* 请求实体包名
*/
private String requestPackage;
// -------------------- 前端 --------------------
/**
* 是否生成 vue 代码
*/
private boolean genVue;
/**
* views 父目录
*/
private String viewsPath;
/**
* api 文件目录
*/
private String apiPath;
/**
* 功能 用于文件名称生成
*/
private String feature;
/**
* 生成的枚举文件
*/
private List<Class<? extends Enum<?>>> enums;
public GenTable(String tableName, String comment, String requestPackage) {
this.tableName = tableName;
this.comment = comment;
this.requestPackage = requestPackage;
this.enums = new ArrayList<>();
}
/**
* 生成 vue 模板
*
* @param viewsPath viewsPath
* @param apiPath apiPath
* @param feature feature
* @return this
*/
public GenTable vue(String viewsPath, String apiPath, String feature) {
this.genVue = true;
this.viewsPath = viewsPath;
this.apiPath = apiPath;
this.feature = feature;
return this;
}
/**
* 生成 vue 枚举对象
*
* @param enums enums
* @return enums
*/
@SafeVarargs
public final GenTable enums(Class<? extends Enum<?>>... enums) {
this.enums.addAll(Lists.of(enums));
return this;
}
}

View File

@@ -13,10 +13,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.orion.ops.framework.mybatis.core.generator;
package com.orion.ops.launch.generator;
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.generator.config.ConstVal;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
@@ -24,6 +23,8 @@ import com.baomidou.mybatisplus.generator.config.builder.CustomFile;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.engine.AbstractTemplateEngine;
import com.orion.lang.utils.Strings;
import com.orion.lang.utils.io.Files1;
import com.orion.lang.utils.reflect.BeanMap;
import com.orion.lang.utils.reflect.Fields;
import com.orion.ops.framework.common.constant.OrionOpsProConst;
import org.apache.velocity.Template;
@@ -203,8 +204,30 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
// 添加注释元数据
this.addApiCommentMeta(tableInfo, objectMap);
// 生成文件
// 生成后端文件
List<CustomFile> serverFiles = customFiles.stream()
.filter(s -> !this.isVueFile(s.getTemplatePath()))
.collect(Collectors.toList());
this.generatorServerFile(serverFiles, tableInfo, objectMap);
// 生成前端文件
if (tables.get(tableInfo.getName()).isGenVue()) {
List<CustomFile> vueFiles = customFiles.stream()
.filter(s -> this.isVueFile(s.getTemplatePath()))
.collect(Collectors.toList());
this.generatorVueFile(vueFiles, tableInfo, objectMap);
}
}
/**
* 生成后端文件
*
* @param customFiles customFiles
* @param tableInfo tableInfo
* @param objectMap objectMap
*/
private void generatorServerFile(@NotNull List<CustomFile> customFiles, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
String parentPath = getPathInfo(OutputFile.parent);
// 生成文件
customFiles.forEach(file -> {
// 获取 parent package
String currentPackage = getConfigBuilder().getPackageConfig().getParent() + "." + file.getPackageName();
@@ -212,14 +235,45 @@ public class VelocityTemplateEngine extends AbstractTemplateEngine {
objectMap.put("currentPackage", currentPackage);
// 文件路径
String filePath = StringUtils.isNotBlank(file.getFilePath()) ? file.getFilePath() : parentPath;
if (StringUtils.isNotBlank(file.getPackageName())) {
filePath = filePath + File.separator + file.getPackageName();
filePath = filePath.replaceAll("\\.", StringPool.BACK_SLASH + File.separator);
}
String filePath = parentPath + File.separator + file.getPackageName()
.replaceAll("\\.", StringPool.BACK_SLASH + File.separator);
String fileName = filePath + File.separator + String.format(file.getFileName(), objectMap.get("type"));
outputFile(new File(fileName), objectMap, file.getTemplatePath(), file.isFileOverride());
outputFile(Files1.newFile(fileName), objectMap, file.getTemplatePath(), file.isFileOverride());
});
}
/**
* 生成前端文件
*
* @param customFiles customFiles
* @param tableInfo tableInfo
* @param objectMap objectMap
*/
private void generatorVueFile(@NotNull List<CustomFile> customFiles, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
String outPath = getConfigBuilder().getGlobalConfig().getOutputDir();
GenTable table = tables.get(tableInfo.getName());
BeanMap beanMap = BeanMap.create(table, "enums");
// 生成文件
customFiles.forEach(file -> {
// 文件路径
String filePath = outPath
+ "/" + Strings.format(file.getPackageName(), beanMap)
+ "/" + Strings.format(file.getFileName(), beanMap);
// 输出文件
this.outputFile(Files1.newFile(filePath), objectMap, file.getTemplatePath(), file.isFileOverride());
});
}
/**
* 是否为 vue 文件
*
* @param templatePath templatePath
* @return 是否为 vue 文件
*/
private boolean isVueFile(String templatePath) {
return templatePath.endsWith(".ts.vm") ||
templatePath.endsWith(".vue.vm");
}
}

View File

@@ -0,0 +1 @@
api

View File

@@ -0,0 +1 @@
orion-vue-views-types-form.rules.ts

View File

@@ -0,0 +1 @@
orion-vue-views-types-table.columns.ts.vm