Selaa lähdekoodia

【移除】数据库文档,简化项目的复杂度

YunaiV 10 kuukautta sitten
vanhempi
commit
ff5276998c

+ 0 - 16
yudao-dependencies/pom.xml

@@ -475,22 +475,6 @@
                 <version>${fastjson.version}</version>
             </dependency>
 
-            <dependency>
-                <groupId>cn.smallbun.screw</groupId>
-                <artifactId>screw-core</artifactId> <!-- 实现数据库文档 -->
-                <version>${screw.version}</version>
-                <exclusions>
-                    <exclusion>
-                        <groupId>org.freemarker</groupId>
-                        <artifactId>freemarker</artifactId> <!-- 移除 Freemarker 依赖,采用 Velocity 作为模板引擎 -->
-                    </exclusion>
-                    <exclusion>
-                        <groupId>com.alibaba</groupId>
-                        <artifactId>fastjson</artifactId> <!-- 最新版screw-core1.0.5依赖fastjson1.2.73存在漏洞,移除。 -->
-                    </exclusion>
-                </exclusions>
-            </dependency>
-
             <dependency>
                 <groupId>com.google.guava</groupId>
                 <artifactId>guava</artifactId>

+ 0 - 5
yudao-module-infra/yudao-module-infra-biz/pom.xml

@@ -95,11 +95,6 @@
             <artifactId>velocity-engine-core</artifactId> <!-- 实现代码生成 -->
         </dependency>
 
-        <dependency>
-            <groupId>cn.smallbun.screw</groupId>
-            <artifactId>screw-core</artifactId> <!-- 实现数据库文档 -->
-        </dependency>
-
         <!-- 监控相关 -->
         <dependency>
             <groupId>cn.iocoder.boot</groupId>

+ 0 - 154
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/db/DatabaseDocController.java

@@ -1,154 +0,0 @@
-package cn.iocoder.yudao.module.infra.controller.admin.db;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.IdUtil;
-import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
-import cn.smallbun.screw.core.Configuration;
-import cn.smallbun.screw.core.engine.EngineConfig;
-import cn.smallbun.screw.core.engine.EngineFileType;
-import cn.smallbun.screw.core.engine.EngineTemplateType;
-import cn.smallbun.screw.core.execute.DocumentationExecute;
-import cn.smallbun.screw.core.process.ProcessConfig;
-import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
-import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
-import com.zaxxer.hikari.HikariConfig;
-import com.zaxxer.hikari.HikariDataSource;
-import io.swagger.v3.oas.annotations.tags.Tag;
-import io.swagger.v3.oas.annotations.Parameter;
-import io.swagger.v3.oas.annotations.Operation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
-
-import jakarta.annotation.Resource;
-import jakarta.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.IOException;
-import java.util.Arrays;
-
-@Tag(name = "管理后台 - 数据库文档")
-@RestController
-@RequestMapping("/infra/db-doc")
-public class DatabaseDocController {
-
-    @Resource
-    private DynamicDataSourceProperties dynamicDataSourceProperties;
-
-    private static final String FILE_OUTPUT_DIR = System.getProperty("java.io.tmpdir") + File.separator
-            + "db-doc";
-    private static final String DOC_FILE_NAME = "数据库文档";
-    private static final String DOC_VERSION = "1.0.0";
-    private static final String DOC_DESCRIPTION = "文档描述";
-
-    @GetMapping("/export-html")
-    @Operation(summary = "导出 html 格式的数据文档")
-    @Parameter(name = "deleteFile", description = "是否删除在服务器本地生成的数据库文档", example = "true")
-    public void exportHtml(@RequestParam(defaultValue = "true") Boolean deleteFile,
-                           HttpServletResponse response) throws IOException {
-        doExportFile(EngineFileType.HTML, deleteFile, response);
-    }
-
-    @GetMapping("/export-word")
-    @Operation(summary = "导出 word 格式的数据文档")
-    @Parameter(name = "deleteFile", description = "是否删除在服务器本地生成的数据库文档", example = "true")
-    public void exportWord(@RequestParam(defaultValue = "true") Boolean deleteFile,
-                           HttpServletResponse response) throws IOException {
-        doExportFile(EngineFileType.WORD, deleteFile, response);
-    }
-
-    @GetMapping("/export-markdown")
-    @Operation(summary = "导出 markdown 格式的数据文档")
-    @Parameter(name = "deleteFile", description = "是否删除在服务器本地生成的数据库文档", example = "true")
-    public void exportMarkdown(@RequestParam(defaultValue = "true") Boolean deleteFile,
-                               HttpServletResponse response) throws IOException {
-        doExportFile(EngineFileType.MD, deleteFile, response);
-    }
-
-    private void doExportFile(EngineFileType fileOutputType, Boolean deleteFile,
-                              HttpServletResponse response) throws IOException {
-        String docFileName = DOC_FILE_NAME + "_" + IdUtil.fastSimpleUUID();
-        String filePath = doExportFile(fileOutputType, docFileName);
-        String downloadFileName = DOC_FILE_NAME + fileOutputType.getFileSuffix(); //下载后的文件名
-        try {
-            // 读取,返回
-            ServletUtils.writeAttachment(response, downloadFileName, FileUtil.readBytes(filePath));
-        } finally {
-            handleDeleteFile(deleteFile, filePath);
-        }
-    }
-
-    /**
-     * 输出文件,返回文件路径
-     *
-     * @param fileOutputType 文件类型
-     * @param fileName       文件名, 无需 ".docx" 等文件后缀
-     * @return 生成的文件所在路径
-     */
-    private String doExportFile(EngineFileType fileOutputType, String fileName) {
-        try (HikariDataSource dataSource = buildDataSource()) {
-            // 创建 screw 的配置
-            Configuration config = Configuration.builder()
-                    .version(DOC_VERSION)  // 版本
-                    .description(DOC_DESCRIPTION) // 描述
-                    .dataSource(dataSource) // 数据源
-                    .engineConfig(buildEngineConfig(fileOutputType, fileName)) // 引擎配置
-                    .produceConfig(buildProcessConfig()) // 处理配置
-                    .build();
-
-            // 执行 screw,生成数据库文档
-            new DocumentationExecute(config).execute();
-
-            return FILE_OUTPUT_DIR + File.separator + fileName + fileOutputType.getFileSuffix();
-        }
-    }
-
-    private void handleDeleteFile(Boolean deleteFile, String filePath) {
-        if (!deleteFile) {
-            return;
-        }
-        FileUtil.del(filePath);
-    }
-
-    /**
-     * 创建数据源
-     */
-    // TODO 芋艿:screw 暂时不支持 druid,尴尬
-    private HikariDataSource buildDataSource() {
-        // 获得 DataSource 数据源,目前只支持首个
-        String primary = dynamicDataSourceProperties.getPrimary();
-        DataSourceProperty dataSourceProperty = dynamicDataSourceProperties.getDatasource().get(primary);
-        // 创建 HikariConfig 配置类
-        HikariConfig hikariConfig = new HikariConfig();
-        hikariConfig.setJdbcUrl(dataSourceProperty.getUrl());
-        hikariConfig.setUsername(dataSourceProperty.getUsername());
-        hikariConfig.setPassword(dataSourceProperty.getPassword());
-        hikariConfig.addDataSourceProperty("useInformationSchema", "true"); // 设置可以获取 tables remarks 信息
-        // 创建数据源
-        return new HikariDataSource(hikariConfig);
-    }
-
-    /**
-     * 创建 screw 的引擎配置
-     */
-    private static EngineConfig buildEngineConfig(EngineFileType fileOutputType, String docFileName) {
-        return EngineConfig.builder()
-                .fileOutputDir(FILE_OUTPUT_DIR) // 生成文件路径
-                .openOutputDir(false) // 打开目录
-                .fileType(fileOutputType) // 文件类型
-                .produceType(EngineTemplateType.velocity) // 文件类型
-                .fileName(docFileName) // 自定义文件名称
-                .build();
-    }
-
-    /**
-     * 创建 screw 的处理配置,一般可忽略
-     * 指定生成逻辑、当存在指定表、指定表前缀、指定表后缀时,将生成指定表,其余表不生成、并跳过忽略表配置
-     */
-    private static ProcessConfig buildProcessConfig() {
-        return ProcessConfig.builder()
-                .ignoreTablePrefix(Arrays.asList("QRTZ_", "ACT_", "FLW_")) // 忽略表前缀
-                .build();
-    }
-
-}