💡 更新注释信息和文件命名方式

This commit is contained in:
Bunny 2025-07-01 16:39:16 +08:00
parent 9b6938b46e
commit 41ce317249
10 changed files with 37 additions and 25 deletions

View File

@ -1,6 +1,6 @@
package cn.bunny.controller; package cn.bunny.controller;
import cn.bunny.core.factory.SqlMetadataProvider; import cn.bunny.core.provider.SqlMetadataProvider;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;
import cn.bunny.domain.result.Result; import cn.bunny.domain.result.Result;
@ -34,4 +34,5 @@ public class SqlParserController {
List<ColumnMetaData> vo = sqlParserService.getColumnInfoList(sql); List<ColumnMetaData> vo = sqlParserService.getColumnInfoList(sql);
return Result.success(vo); return Result.success(vo);
} }
} }

View File

@ -1,6 +1,6 @@
package cn.bunny.controller; package cn.bunny.controller;
import cn.bunny.core.factory.DatabaseMetadataProvider; import cn.bunny.core.provider.DatabaseMetadataProvider;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.DatabaseInfoMetaData; import cn.bunny.domain.entity.DatabaseInfoMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;
@ -51,4 +51,5 @@ public class TableController {
List<ColumnMetaData> columnInfo = databaseMetadataProvider.getColumnInfoList(tableName); List<ColumnMetaData> columnInfo = databaseMetadataProvider.getColumnInfoList(tableName);
return Result.success(columnInfo); return Result.success(columnInfo);
} }
} }

View File

@ -1,4 +1,4 @@
package cn.bunny.core.factory; package cn.bunny.core.provider;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.DatabaseInfoMetaData; import cn.bunny.domain.entity.DatabaseInfoMetaData;

View File

@ -1,4 +1,4 @@
package cn.bunny.core.factory; package cn.bunny.core.provider;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;

View File

@ -1,4 +1,4 @@
package cn.bunny.core.factory; package cn.bunny.core.provider;
import cn.bunny.core.dialect.DatabaseDialect; import cn.bunny.core.dialect.DatabaseDialect;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;

View File

@ -15,7 +15,7 @@ import java.util.Date;
* 使用模板方法方便扩展 * 使用模板方法方便扩展
* 如果需要继承 AbstractVmsGenerator * 如果需要继承 AbstractVmsGenerator
*/ */
public class VmsTemplateGenerator extends AbstractTemplateGenerator { public class VmsTBaseTemplateGenerator extends AbstractTemplateGenerator {
private final VmsArgumentDto dto; private final VmsArgumentDto dto;
private final String path; private final String path;
@ -26,7 +26,7 @@ public class VmsTemplateGenerator extends AbstractTemplateGenerator {
* @param path 当前路径 * @param path 当前路径
* @param tableMetaData 表名称 * @param tableMetaData 表名称
*/ */
public VmsTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) { public VmsTBaseTemplateGenerator(VmsArgumentDto dto, String path, TableMetaData tableMetaData) {
this.dto = dto; this.dto = dto;
this.path = path; this.path = path;
this.tableMetaData = tableMetaData; this.tableMetaData = tableMetaData;

View File

@ -1,6 +1,6 @@
package cn.bunny.service.impl; package cn.bunny.service.impl;
import cn.bunny.core.factory.DatabaseMetadataProvider; import cn.bunny.core.provider.DatabaseMetadataProvider;
import cn.bunny.domain.entity.DatabaseInfoMetaData; import cn.bunny.domain.entity.DatabaseInfoMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;
import cn.bunny.service.TableService; import cn.bunny.service.TableService;

View File

@ -74,7 +74,7 @@ public class VmsServiceImpl implements VmsService {
// 下载文件名称 // 下载文件名称
long currentTimeMillis = System.currentTimeMillis(); long currentTimeMillis = System.currentTimeMillis();
String digestHex = MD5.create().digestHex(currentTimeMillis + ""); String digestHex = MD5.create().digestHex(currentTimeMillis + "");
String generateZipFilename = "generator-" + digestHex.substring(0, 4) + ".zip"; String generateZipFilename = "code-" + digestHex.substring(0, 6) + ".zip";
// 设置响应头 // 设置响应头
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();

View File

@ -1,8 +1,8 @@
package cn.bunny.service.impl.vms; package cn.bunny.service.impl.vms;
import cn.bunny.core.factory.DatabaseMetadataProvider; import cn.bunny.core.provider.DatabaseMetadataProvider;
import cn.bunny.core.factory.SqlMetadataProvider; import cn.bunny.core.provider.SqlMetadataProvider;
import cn.bunny.core.template.VmsTemplateGenerator; import cn.bunny.core.template.VmsTBaseTemplateGenerator;
import cn.bunny.domain.dto.VmsArgumentDto; import cn.bunny.domain.dto.VmsArgumentDto;
import cn.bunny.domain.entity.ColumnMetaData; import cn.bunny.domain.entity.ColumnMetaData;
import cn.bunny.domain.entity.TableMetaData; import cn.bunny.domain.entity.TableMetaData;
@ -60,7 +60,7 @@ public class VmsCodeGeneratorService {
*/ */
private GeneratorVo generateTemplate(VmsArgumentDto dto, String path, private GeneratorVo generateTemplate(VmsArgumentDto dto, String path,
TableMetaData tableMetaData, List<ColumnMetaData> columnInfoList) { TableMetaData tableMetaData, List<ColumnMetaData> columnInfoList) {
VmsTemplateGenerator generator = new VmsTemplateGenerator(dto, path, tableMetaData); VmsTBaseTemplateGenerator generator = new VmsTBaseTemplateGenerator(dto, path, tableMetaData);
StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList); StringWriter writer = generator.generatorCodeTemplate(tableMetaData, columnInfoList);
String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName()); String processedPath = VmsUtil.handleVmFilename(path, tableMetaData.getTableName());

View File

@ -14,7 +14,9 @@ import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; import java.util.zip.ZipOutputStream;
/** /**
* 负责处理ZIP打包和下载逻辑的服务类 * VMS代码生成系统的ZIP打包服务
* <p>
* 提供将生成的代码模板打包为ZIP文件并支持下载的功能
*/ */
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -23,17 +25,22 @@ public class VmsZipService {
private final VmsCodeGeneratorService codeGeneratorService; private final VmsCodeGeneratorService codeGeneratorService;
/** /**
* 创建ZIP文件字节数组 * 将生成的代码模板打包为ZIP文件
* *
* @param dto 生成参数 * @param dto 代码生成参数DTO包含表名包名等配置
* @return ZIP文件字节数组 * @return ZIP文件字节数组可直接用于下载
* @throws RuntimeException 当ZIP打包过程中发生IO异常时抛出
*/ */
public byte[] createZipFile(VmsArgumentDto dto) { public byte[] createZipFile(VmsArgumentDto dto) {
List<GeneratorVo> generatorVoList = codeGeneratorService.generateCode(dto).values().stream().flatMap(Collection::stream).toList(); // 将二维代码生成结果扁平化为一维列表
List<GeneratorVo> generatorVoList = codeGeneratorService.generateCode(dto).values().stream()
.flatMap(Collection::stream)
.toList();
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream)) { ZipOutputStream zipOutputStream = new ZipOutputStream(byteArrayOutputStream)) {
// 将所有生成的文件添加到ZIP包中
generatorVoList.forEach(generatorVo -> addToZip(zipOutputStream, generatorVo)); generatorVoList.forEach(generatorVo -> addToZip(zipOutputStream, generatorVo));
return byteArrayOutputStream.toByteArray(); return byteArrayOutputStream.toByteArray();
} catch (IOException e) { } catch (IOException e) {
@ -42,21 +49,24 @@ public class VmsZipService {
} }
/** /**
* 将单个生成结果添加到ZIP文件 * 将单个代码文件添加到ZIP输出流
* *
* @param zipOutputStream ZIP输出流 * @param zipOutputStream ZIP文件输出流
* @param generatorVo 生成结果对象 * @param generatorVo 代码生成结果对象包含文件路径和内容
* @throws RuntimeException 当文件添加失败时抛出包含失败文件路径信息
*/ */
private void addToZip(ZipOutputStream zipOutputStream, GeneratorVo generatorVo) { private void addToZip(ZipOutputStream zipOutputStream, GeneratorVo generatorVo) {
try { try {
// 标准化文件路径移除Velocity模板扩展名
String path = generatorVo.getPath().replace(".vm", ""); String path = generatorVo.getPath().replace(".vm", "");
ZipEntry zipEntry = new ZipEntry(path);
zipOutputStream.putNextEntry(zipEntry); zipOutputStream.putNextEntry(new ZipEntry(path));
// 以UTF-8编码写入文件内容避免乱码问题
zipOutputStream.write(generatorVo.getCode().getBytes(StandardCharsets.UTF_8)); zipOutputStream.write(generatorVo.getCode().getBytes(StandardCharsets.UTF_8));
zipOutputStream.closeEntry(); zipOutputStream.closeEntry();
} catch (IOException e) { } catch (IOException e) {
throw new RuntimeException("Failed to add file to ZIP: " + generatorVo.getPath(), e); throw new RuntimeException("Failed to add file to ZIP: " + generatorVo.getPath(), e);
} }
} }
} }