From 693bd8d8330fe2f7b33e8d9b3093691d64ed9950 Mon Sep 17 00:00:00 2001 From: asp_ly Date: Sat, 28 Dec 2024 20:04:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=94=9F=E6=88=90=E5=90=8E?= =?UTF-8?q?=E7=AB=AF=E6=9C=8D=E5=8A=A1=E4=BB=A3=E7=A0=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/framework/generator/CodeGenerator.java | 10 +++++++++- .../backend/framework/utils/CodeGeneratorUtils.java | 13 ++++++++++++- backend/src/main/resources/templates/controller.ftl | 4 ++-- backend/src/main/resources/templates/service.ftl | 2 +- .../src/main/resources/templates/serviceImpl.ftl | 2 +- 5 files changed, 25 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/com/qqchen/deploy/backend/framework/generator/CodeGenerator.java b/backend/src/main/java/com/qqchen/deploy/backend/framework/generator/CodeGenerator.java index 9fc2430c..f940b302 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/framework/generator/CodeGenerator.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/framework/generator/CodeGenerator.java @@ -17,6 +17,11 @@ public class CodeGenerator { Scanner scanner = new Scanner(System.in); try { + // 0. 选择API类型 + System.out.println("请选择API类型(1: 三方API, 2: 二方API):"); + String apiType = scanner.nextLine(); + boolean isThirdPartyApi = "1".equals(apiType); + // 1. 输入模块信息 System.out.println("请输入模块名称(中文,如:用户):"); String moduleName = scanner.nextLine(); @@ -59,6 +64,7 @@ public class CodeGenerator { config.setOutputPath(outputPath); config.setTableName(tableName); config.setUrlPath(urlPath); + config.setThirdPartyApi(isThirdPartyApi); // 5. 生成代码 CodeGeneratorUtils.generateCode(createTableSql, config); @@ -78,7 +84,8 @@ public class CodeGenerator { * 通过API方式生成代码 */ public static void generate(String moduleName, String className, String basePackage, - String outputPath, String tableName, String urlPath, String createTableSql) { + String outputPath, String tableName, String urlPath, String createTableSql, + boolean isThirdPartyApi) { try { // 1. 验证输入 if (StringUtils.isAnyBlank(moduleName, className, basePackage, outputPath, tableName, urlPath, createTableSql)) { @@ -93,6 +100,7 @@ public class CodeGenerator { config.setOutputPath(outputPath); config.setTableName(tableName); config.setUrlPath(urlPath); + config.setThirdPartyApi(isThirdPartyApi); // 3. 生成代码 CodeGeneratorUtils.generateCode(createTableSql, config); diff --git a/backend/src/main/java/com/qqchen/deploy/backend/framework/utils/CodeGeneratorUtils.java b/backend/src/main/java/com/qqchen/deploy/backend/framework/utils/CodeGeneratorUtils.java index 48afe2c1..c64db6d9 100644 --- a/backend/src/main/java/com/qqchen/deploy/backend/framework/utils/CodeGeneratorUtils.java +++ b/backend/src/main/java/com/qqchen/deploy/backend/framework/utils/CodeGeneratorUtils.java @@ -55,6 +55,8 @@ public class CodeGeneratorUtils { private String urlPath; // URL路径 private List fields; // 字段信息 + + private boolean isThirdPartyApi; // 是否为三方API(true: 三方API, false: 二方API) } private static final Configuration configuration; @@ -83,9 +85,17 @@ public class CodeGeneratorUtils { generateFile("repository.ftl", config, "/repository/I" + config.getClassName() + "Repository.java"); generateFile("service.ftl", config, "/service/I" + config.getClassName() + "Service.java"); generateFile("serviceImpl.ftl", config, "/service/impl/" + config.getClassName() + "ServiceImpl.java"); - generateFile("controller.ftl", config, "/controller/" + config.getClassName() + "ApiController.java"); generateFile("converter.ftl", config, "/converter/" + config.getClassName() + "Converter.java"); + // 根据API类型生成不同的Controller + if (config.isThirdPartyApi()) { + // 三方API,生成在api包下,类名为XxxApiController + generateFile("controller.ftl", config, "/api/" + config.getClassName() + "ApiController.java"); + } else { + // 二方API,生成在controller包下,类名为XxxController + generateFile("controller.ftl", config, "/controller/" + config.getClassName() + "Controller.java"); + } + log.info("代码生成完成,输出路径: {}", config.getOutputPath()); } catch (Exception e) { log.error("代码生成失败", e); @@ -204,6 +214,7 @@ public class CodeGeneratorUtils { dataModel.put("tableName", config.getTableName()); dataModel.put("fields", config.getFields()); dataModel.put("urlPath", config.getUrlPath()); + dataModel.put("isThirdPartyApi", config.isThirdPartyApi()); // 生成文件 try (Writer writer = new FileWriter(outputFile)) { diff --git a/backend/src/main/resources/templates/controller.ftl b/backend/src/main/resources/templates/controller.ftl index 8145ad37..35f61633 100644 --- a/backend/src/main/resources/templates/controller.ftl +++ b/backend/src/main/resources/templates/controller.ftl @@ -1,4 +1,4 @@ -package ${basePackage}.controller; +package ${basePackage}.<#if isThirdPartyApi!false>api<#else>controller; import com.qqchen.deploy.backend.framework.controller.BaseController; import ${basePackage}.entity.${className}; @@ -18,7 +18,7 @@ import java.util.List; @RestController @RequestMapping("/api/v1/${urlPath}") @Tag(name = "${moduleName}管理", description = "${moduleName}管理相关接口") -public class ${className}ApiController extends BaseController<${className}, ${className}DTO, Long, ${className}Query> { +public class ${className}<#if isThirdPartyApi!false>ApiController extends BaseController<${className}, ${className}DTO, Long, ${className}Query> { @Override protected void exportData(HttpServletResponse response, List<${className}DTO> data) { diff --git a/backend/src/main/resources/templates/service.ftl b/backend/src/main/resources/templates/service.ftl index 96a7ae8a..b822bdd5 100644 --- a/backend/src/main/resources/templates/service.ftl +++ b/backend/src/main/resources/templates/service.ftl @@ -8,5 +8,5 @@ import ${basePackage}.query.${className}Query; /** * ${moduleName} Service接口 */ -public interface I${className}Service extends IBaseService<${className}, ${className}DTO, Long, ${className}Query> { +public interface I${className}Service extends IBaseService<${className}, ${className}DTO, ${className}Query, Long> { } \ No newline at end of file diff --git a/backend/src/main/resources/templates/serviceImpl.ftl b/backend/src/main/resources/templates/serviceImpl.ftl index ccdc2ce7..045851f2 100644 --- a/backend/src/main/resources/templates/serviceImpl.ftl +++ b/backend/src/main/resources/templates/serviceImpl.ftl @@ -13,6 +13,6 @@ import org.springframework.stereotype.Service; */ @Slf4j @Service -public class ${className}ServiceImpl extends BaseServiceImpl<${className}, ${className}DTO, Long, ${className}Query> +public class ${className}ServiceImpl extends BaseServiceImpl<${className}, ${className}DTO, ${className}Query, Long> implements I${className}Service { } \ No newline at end of file