From cf25647acf8e2e9882cd260e77cb079720f9b71f Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 26 Nov 2019 16:09:19 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=A2=84=E8=A7=88=E7=9A=84sql=E6=96=87?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../me/zhengjie/rest/GeneratorController.java | 2 + .../me/zhengjie/service/GeneratorService.java | 10 +- .../service/impl/GeneratorServiceImpl.java | 16 ++- .../main/java/me/zhengjie/utils/GenUtil.java | 107 +++++++++++------- sql/eladmin-gen.sql | 1 + 5 files changed, 93 insertions(+), 43 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 497766ae..17c0c36e 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -75,6 +75,8 @@ public class GeneratorController { // 生成代码 case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName)); break; + // 预览 + case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName)); default: break; } return new ResponseEntity(HttpStatus.OK); diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index 027d2bdd..18d731f6 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -2,6 +2,7 @@ package me.zhengjie.service; import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.ColumnInfo; +import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; import java.util.List; @@ -50,7 +51,14 @@ public interface GeneratorService { * 代码生成 * @param genConfig 配置信息 * @param columns 字段信息 + */ + void generator(GenConfig genConfig, List columns); + + /** + * 预览 + * @param genConfig 配置信息 + * @param columns 字段信息 * @return / */ - Object generator(GenConfig genConfig, List columns); + ResponseEntity preview(GenConfig genConfig, List columns); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 4a2168a0..42707aa6 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -11,6 +11,8 @@ import me.zhengjie.service.GeneratorService; import me.zhengjie.utils.GenUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.StringUtils; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; @@ -18,6 +20,7 @@ import javax.persistence.Query; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Map; /** * @author Zheng Jie @@ -113,17 +116,24 @@ public class GeneratorServiceImpl implements GeneratorService { } @Override - public Object generator(GenConfig genConfig, List columns) { + public void generator(GenConfig genConfig, List columns) { if(genConfig.getId() == null){ throw new BadRequestException("请先配置生成器"); } try { - // 查询是否存在关联实体字段信息 GenUtil.generatorCode(columns, genConfig); } catch (IOException e) { e.printStackTrace(); throw new BadRequestException("生成失败,请手动处理已生成的文件"); } - return null; + } + + @Override + public ResponseEntity preview(GenConfig genConfig, List columns) { + if(genConfig.getId() == null){ + throw new BadRequestException("请先配置生成器"); + } + List> genList = GenUtil.preview(columns, genConfig); + return new ResponseEntity<>(genList, HttpStatus.OK); } } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index d5acc0f6..676847ba 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -11,10 +11,7 @@ import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.time.LocalDate; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; /** * 代码生成 @@ -61,7 +58,72 @@ public class GenUtil { return templateNames; } + public static List> preview(List columns, GenConfig genConfig) { + Map genMap = getGenMap(columns, genConfig); + List> genList = new ArrayList<>(); + // 获取后端模版 + List templates = getAdminTemplateNames(); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + for (String templateName : templates) { + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + // 获取前端模版 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Map map = new HashMap<>(1); + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + map.put(templateName, template.render(genMap)); + map.put("content", template.render(genMap)); + map.put("name", templateName); + genList.add(map); + } + return genList; + } + public static void generatorCode(List columnInfos, GenConfig genConfig) throws IOException { + Map genMap = getGenMap(columnInfos, genConfig); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString()); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString()); + + assert filePath != null; + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + } + + // 获取模版数据 + private static Map getGenMap(List columnInfos, GenConfig genConfig) { // 存储模版字段数据 Map genMap = new HashMap<>(16); // 接口别名 @@ -165,7 +227,7 @@ public class GenUtil { // 表单显示 listMap.put("formShow",column.getFormShow()); // 表单组件类型 - listMap.put("formType",column.getFormType()); + listMap.put("formType", StringUtils.isNotBlank(column.getFormType()) ? column.getFormType() : "Input"); // 小写开头的字段名称 listMap.put("changeColumnName",changeColumnName); //大写开头的字段名称 @@ -215,40 +277,7 @@ public class GenUtil { genMap.put("betweens",betweens); // 保存非空字段信息 genMap.put("isNotNullColumns",isNotNullColumns); - TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); - // 生成后端代码 - List templates = getAdminTemplateNames(); - for (String templateName : templates) { - Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); - String filePath = getAdminFilePath(templateName,genConfig,className); - - assert filePath != null; - File file = new File(filePath); - - // 如果非覆盖生成 - if(!genConfig.getCover() && FileUtil.exist(file)){ - continue; - } - // 生成代码 - genFile(file, template, genMap); - } - - // 生成前端代码 - templates = getFrontTemplateNames(); - for (String templateName : templates) { - Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); - String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString()); - - assert filePath != null; - File file = new File(filePath); - - // 如果非覆盖生成 - if(!genConfig.getCover() && FileUtil.exist(file)){ - continue; - } - // 生成代码 - genFile(file, template, genMap); - } + return genMap; } /** diff --git a/sql/eladmin-gen.sql b/sql/eladmin-gen.sql index 65723120..bd152f04 100644 --- a/sql/eladmin-gen.sql +++ b/sql/eladmin-gen.sql @@ -3,6 +3,7 @@ -- ---------------------------- INSERT INTO `menu` VALUES (82, b'0', '生成配置', 'generator/config', 36, 33, 'dev', 'generator/config/:tableName', b'1', b'1', 'GeneratorConfig', '2019-11-17 20:08:56', '', 1); +INSERT INTO `menu` VALUES (116, b'0', '生成预览', 'generator/preview', 36, 999, 'java', 'generator/preview/:tableName', b'1', b'1', 'Preview', '2019-11-26 14:54:36', NULL, 1); -- ---------------------------- -- Table structure for column_config From 2ad07c8f021cf1ad1217b7cdd3034f597a313f3d Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 26 Nov 2019 16:12:47 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A1=BA=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/utils/GenUtil.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index 676847ba..f88dc39e 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -39,11 +39,11 @@ public class GenUtil { templateNames.add("Entity"); templateNames.add("Dto"); templateNames.add("Mapper"); - templateNames.add("Repository"); + templateNames.add("Controller"); + templateNames.add("QueryCriteria"); templateNames.add("Service"); templateNames.add("ServiceImpl"); - templateNames.add("QueryCriteria"); - templateNames.add("Controller"); + templateNames.add("Repository"); return templateNames; } @@ -53,8 +53,8 @@ public class GenUtil { */ private static List getFrontTemplateNames() { List templateNames = new ArrayList<>(); - templateNames.add("api"); templateNames.add("index"); + templateNames.add("api"); return templateNames; } From 2ecb82a55a54f1155b7a02629f6b647fe2bddebe Mon Sep 17 00:00:00 2001 From: dqjdda <201507802@qq.com> Date: Tue, 26 Nov 2019 17:42:56 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E6=89=93=E5=8C=85=E4=B8=8B=E8=BD=BD=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eladmin-common/pom.xml | 2 +- .../main/java/me/zhengjie/utils/FileUtil.java | 33 ++++++++++++ .../me/zhengjie/rest/GeneratorController.java | 13 +++-- .../me/zhengjie/service/GeneratorService.java | 12 ++++- .../service/impl/GeneratorServiceImpl.java | 20 ++++++++ .../main/java/me/zhengjie/utils/GenUtil.java | 51 ++++++++++++++++--- 6 files changed, 118 insertions(+), 13 deletions(-) diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml index ba40e4c9..1a1291fc 100644 --- a/eladmin-common/pom.xml +++ b/eladmin-common/pom.xml @@ -9,7 +9,7 @@ 4.0.0 - [4.1.12,) + 5.0.6 eladmin-common diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 3ce35cc8..1aa922d7 100644 --- a/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -6,9 +6,11 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.poi.excel.BigExcelWriter; import cn.hutool.poi.excel.ExcelUtil; import me.zhengjie.exception.BadRequestException; +import org.apache.poi.util.IOUtils; import org.springframework.web.multipart.MultipartFile; import javax.activation.MimetypesFileTypeMap; import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.security.MessageDigest; @@ -273,6 +275,37 @@ public class FileUtil extends cn.hutool.core.io.FileUtil { return null; } + /** + * 下载文件 + * @param request / + * @param response / + * @param file / + */ + public static void downloadFile(HttpServletRequest request, HttpServletResponse response, File file, boolean deleteOnExit){ + response.setCharacterEncoding(request.getCharacterEncoding()); + response.setContentType("application/octet-stream"); + FileInputStream fis = null; + try { + fis = new FileInputStream(file); + response.setHeader("Content-Disposition", "attachment; filename="+file.getName()); + IOUtils.copy(fis,response.getOutputStream()); + response.flushBuffer(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + if (fis != null) { + try { + fis.close(); + if(deleteOnExit){ + file.deleteOnExit(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + public static String getMd5(File file) { return getMd5(getByte(file)); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java index 17c0c36e..26988e71 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -11,6 +11,8 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -67,9 +69,9 @@ public class GeneratorController { @ApiOperation("生成代码") @PostMapping(value = "/{tableName}/{type}") - public ResponseEntity generator(@PathVariable String tableName, @PathVariable Integer type){ - if(!generatorEnabled){ - throw new BadRequestException("此环境不允许生成代码!"); + public ResponseEntity generator(@PathVariable String tableName, @PathVariable Integer type, HttpServletRequest request, HttpServletResponse response){ + if(!generatorEnabled && type == 0){ + throw new BadRequestException("此环境不允许生成代码,请选择预览或者下载查看!"); } switch (type){ // 生成代码 @@ -77,7 +79,10 @@ public class GeneratorController { break; // 预览 case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName)); - default: break; + // 打包 + case 2: generatorService.download(genConfigService.find(tableName), generatorService.getColumns(tableName), request, response); + break; + default: throw new BadRequestException("没有这个选项"); } return new ResponseEntity(HttpStatus.OK); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java index 18d731f6..860d1afa 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -4,7 +4,8 @@ import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.ColumnInfo; import org.springframework.http.ResponseEntity; import org.springframework.scheduling.annotation.Async; - +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import java.util.List; /** @@ -61,4 +62,13 @@ public interface GeneratorService { * @return / */ ResponseEntity preview(GenConfig genConfig, List columns); + + /** + * 打包下载 + * @param genConfig 配置信息 + * @param columns 字段信息 + * @param request + * @param response + */ + void download(GenConfig genConfig, List columns, HttpServletRequest request, HttpServletResponse response); } diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java index 42707aa6..bff73357 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -2,12 +2,14 @@ package me.zhengjie.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.ZipUtil; import me.zhengjie.domain.GenConfig; import me.zhengjie.domain.ColumnInfo; import me.zhengjie.domain.vo.TableInfo; import me.zhengjie.exception.BadRequestException; import me.zhengjie.repository.ColumnInfoRepository; import me.zhengjie.service.GeneratorService; +import me.zhengjie.utils.FileUtil; import me.zhengjie.utils.GenUtil; import me.zhengjie.utils.PageUtil; import me.zhengjie.utils.StringUtils; @@ -17,6 +19,9 @@ import org.springframework.stereotype.Service; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -136,4 +141,19 @@ public class GeneratorServiceImpl implements GeneratorService { List> genList = GenUtil.preview(columns, genConfig); return new ResponseEntity<>(genList, HttpStatus.OK); } + + @Override + public void download(GenConfig genConfig, List columns, HttpServletRequest request, HttpServletResponse response) { + if(genConfig.getId() == null){ + throw new BadRequestException("请先配置生成器"); + } + try { + File file = new File(GenUtil.download(columns, genConfig)); + String zipPath = file.getPath() + ".zip"; + ZipUtil.zip(file.getPath(), zipPath); + FileUtil.downloadFile(request, response, new File(zipPath), true); + } catch (IOException e) { + throw new BadRequestException("打包失败"); + } + } } diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java index f88dc39e..8160c12d 100644 --- a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -84,6 +84,44 @@ public class GenUtil { return genList; } + public static String download(List columns, GenConfig genConfig) throws IOException { + String tempPath =System.getProperty("java.io.tmpdir") + "eladmin-gen-temp" + File.separator + genConfig.getTableName() + File.separator; + Map genMap = getGenMap(columns, genConfig); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString(),tempPath + "eladmin" + File.separator); + assert filePath != null; + File file = new File(filePath); + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + String path = tempPath + "eladmin-web" + File.separator; + String apiPath = path + "src" + File.separator + "api" + File.separator; + String srcPath = path + "src" + File.separator + "views" + File.separator + genMap.get("changeClassName").toString() + File.separator; + String filePath = getFrontFilePath(templateName, apiPath, srcPath, genMap.get("changeClassName").toString()); + assert filePath != null; + File file = new File(filePath); + // 如果非覆盖生成 + if(!genConfig.getCover() && FileUtil.exist(file)){ + continue; + } + // 生成代码 + genFile(file, template, genMap); + } + return tempPath; + } + public static void generatorCode(List columnInfos, GenConfig genConfig) throws IOException { Map genMap = getGenMap(columnInfos, genConfig); TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); @@ -91,7 +129,7 @@ public class GenUtil { List templates = getAdminTemplateNames(); for (String templateName : templates) { Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); - String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString()); + String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString(),System.getProperty("user.dir")); assert filePath != null; File file = new File(filePath); @@ -108,7 +146,7 @@ public class GenUtil { templates = getFrontTemplateNames(); for (String templateName : templates) { Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); - String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString()); + String filePath = getFrontFilePath(templateName,genConfig.getApiPath(),genConfig.getPath(),genMap.get("changeClassName").toString()); assert filePath != null; File file = new File(filePath); @@ -283,8 +321,8 @@ public class GenUtil { /** * 定义后端文件路径以及名称 */ - private static String getAdminFilePath(String templateName, GenConfig genConfig, String className) { - String projectPath = System.getProperty("user.dir") + File.separator + genConfig.getModuleName(); + private static String getAdminFilePath(String templateName, GenConfig genConfig, String className, String rootPath) { + String projectPath = rootPath + File.separator + genConfig.getModuleName(); String packagePath = projectPath + File.separator + "src" +File.separator+ "main" + File.separator + "java" + File.separator; if (!ObjectUtils.isEmpty(genConfig.getPack())) { packagePath += genConfig.getPack().replace(".", File.separator) + File.separator; @@ -328,11 +366,10 @@ public class GenUtil { /** * 定义前端文件路径以及名称 */ - private static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { - String path = genConfig.getPath(); + private static String getFrontFilePath(String templateName, String apiPath, String path, String apiName) { if ("api".equals(templateName)) { - return genConfig.getApiPath() + File.separator + apiName + ".js"; + return apiPath + File.separator + apiName + ".js"; } if ("index".equals(templateName)) {