feat(generator): 新增代码批量生成功能

This commit is contained in:
Yoofff 2024-03-23 13:52:17 +00:00 committed by Charles7c
parent c05584ba66
commit 040f137934
4 changed files with 63 additions and 44 deletions

View File

@ -72,4 +72,14 @@ public class TableResp implements Serializable {
*/
@Schema(description = "是否已配置", example = "true")
private Boolean isConfiged;
/**
* 是否禁用
*/
@Schema(description = "是否禁用", example = "true")
private Boolean disabled;
public Boolean getDisabled() {
return !isConfiged;
}
}

View File

@ -85,9 +85,9 @@ public interface GeneratorService {
/**
* 生成代码
*
* @param tableName 表名称
* @param tableNames 表明层
* @param request 请求对象
* @param response 响应对象
*/
void generate(String tableName, HttpServletRequest request, HttpServletResponse response);
void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response);
}

View File

@ -260,8 +260,13 @@ public class GeneratorServiceImpl implements GeneratorService {
}
@Override
public void generate(String tableName, HttpServletRequest request, HttpServletResponse response) {
public void generate(List<String> tableNames, HttpServletRequest request, HttpServletResponse response) {
try {
String tempDir = SystemUtil.getUserInfo().getTempDir();
// 删除旧代码
FileUtil.del(tempDir + projectProperties.getAppName());
tableNames.forEach(tableName -> {
// 初始化配置及数据
List<GeneratePreviewResp> generatePreviewList = this.preview(tableName);
GenConfigDO genConfig = genConfigMapper.selectById(tableName);
@ -274,7 +279,7 @@ public class GeneratorServiceImpl implements GeneratorService {
String packageName = genConfig.getPackageName();
String moduleName = StrUtil.subSuf(packageName, StrUtil
.lastIndexOfIgnoreCase(packageName, StringConstants.DOT) + 1);
String tempDir = SystemUtil.getUserInfo().getTempDir();
// 例如continew-admin-ui/src
String frontendBasicPackagePath = tempDir + String.join(File.separator, projectProperties
.getAppName(), projectProperties.getAppName() + "-ui", "src");
@ -297,13 +302,15 @@ public class GeneratorServiceImpl implements GeneratorService {
if (!vueFile.exists() || Boolean.TRUE.equals(genConfig.getIsOverride())) {
FileUtil.writeUtf8String(viewGeneratePreview.getContent(), vueFile);
}
});
// 打包下载
File tempDirFile = new File(tempDir, projectProperties.getAppName());
String zipFilePath = tempDirFile.getPath() + ".zip";
String zipFilePath = tempDirFile.getPath() + jodd.io.ZipUtil.ZIP_EXT;
ZipUtil.zip(tempDirFile.getPath(), zipFilePath);
FileUploadUtils.download(request, response, new File(zipFilePath), true);
} catch (Exception e) {
log.error("Generate code of table '{}' occurred an error. {}", tableName, e.getMessage(), e);
log.error("Generate code of table '{}' occurred an error. {}", tableNames, e.getMessage(), e);
throw new BusinessException("代码生成失败,请手动清理生成文件");
}
}

View File

@ -102,8 +102,10 @@ public class GeneratorController {
@Operation(summary = "生成代码", description = "生成代码")
@Parameter(name = "tableName", description = "表名称", required = true, example = "sys_user", in = ParameterIn.PATH)
@SaCheckPermission("tool:generator:list")
@PostMapping("/{tableName}")
public void generate(@PathVariable String tableName, HttpServletRequest request, HttpServletResponse response) {
generatorService.generate(tableName, request, response);
@PostMapping("/{tableNames}")
public void generate(@PathVariable List<String> tableNames,
HttpServletRequest request,
HttpServletResponse response) {
generatorService.generate(tableNames, request, response);
}
}