diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/response/PreviewFileTree.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/response/PreviewFileTree.java index 5ecbd2eeaa32d5eff75f5427aec856c318182ef8..75f5ee62ab3d61da36c90e67912a3a50433f7fa1 100644 --- a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/response/PreviewFileTree.java +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/response/PreviewFileTree.java @@ -5,6 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.util.CollectionUtils; +import java.util.Collections; import java.util.List; /** @@ -18,8 +19,16 @@ public class PreviewFileTree { private String fileName; + private String fileContent; + private List children; + public PreviewFileTree(String fileName, String fileContent) { + this.fileName = fileName; + this.fileContent = fileContent; + this.children = Collections.emptyList(); + } + public boolean isFile() { return CollectionUtils.isEmpty(children); } diff --git a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java index 9833d84205c58b51013c034c790a3791a33a3193..c10ceb1a30e3e74af40352f0dc48d044d409e75c 100644 --- a/initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java +++ b/initializer-backend/src/main/java/com/schbrain/archetype/initializer/service/ArchetypeService.java @@ -1,5 +1,6 @@ package com.schbrain.archetype.initializer.service; +import cn.hutool.core.io.FileUtil; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ZipUtil; import com.schbrain.archetype.initializer.maven.MavenUtils; @@ -17,7 +18,10 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.List; +import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.stream.Collectors; @@ -53,7 +57,7 @@ public class ArchetypeService { private PreviewFileTree buildFileTree(File root) { File[] fileItems = root.listFiles(); if (ArrayUtil.isEmpty(fileItems)) { - return new PreviewFileTree(root.getName(), Collections.emptyList()); + return new PreviewFileTree(root.getName(), null); } List children = Arrays.stream(fileItems) .map(fileItem -> { @@ -61,7 +65,8 @@ public class ArchetypeService { if (fileItem.isDirectory()) { childrenFileTree = buildFileTree(fileItem); } else { - childrenFileTree = new PreviewFileTree(fileItem.getName(), Collections.emptyList()); + String fileContent = FileUtil.readUtf8String(fileItem); + childrenFileTree = new PreviewFileTree(fileItem.getName(), fileContent); } return childrenFileTree; }) diff --git a/initializer-ui/src/components/BackendStarter.vue b/initializer-ui/src/components/BackendStarter.vue index 24dfbf0a420e8f0c17a0f66a0544de0ff84cf748..a0e4dfdf6f0ee77c8a88462bf2e225fcb3c088cf 100644 --- a/initializer-ui/src/components/BackendStarter.vue +++ b/initializer-ui/src/components/BackendStarter.vue @@ -20,7 +20,7 @@ - + + +
+ +
+ @@ -41,6 +50,8 @@ export default { return { id: null, dialogVisible: false, + fileContentDialogVisible: false, + fileContent: '', defaultProps: { children: 'children', label: 'fileName', @@ -87,7 +98,12 @@ export default { }) }, handleNodeClick: function (data) { - console.log(data) + const {file, fileContent} = data + if (!file) { + return + } + this.fileContentDialogVisible = true + this.fileContent = fileContent }, downloadGeneratedProject: function (data, fileName) { const blob = new Blob([data])