From a6cd3cdd94d94bd5553ef39213c3e065f0c34fe7 Mon Sep 17 00:00:00 2001 From: zhangsean Date: Thu, 5 Jul 2018 19:29:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=9B=B4=E6=8E=A5=E7=94=9F?= =?UTF-8?q?=E6=88=90=E4=BB=A3=E7=A0=81=E6=96=87=E4=BB=B6=E5=88=B0=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E9=A1=B9=E7=9B=AE=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SysGeneratorController.java | 35 ++++++++++++------- .../renren/service/SysGeneratorService.java | 4 +-- .../main/java/io/renren/utils/GenUtils.java | 32 +++++++++++------ .../src/main/resources/generator.properties | 10 ++++-- .../src/main/resources/static/js/generator.js | 22 ++++++++++-- .../src/main/resources/views/generator.html | 3 +- 6 files changed, 74 insertions(+), 32 deletions(-) diff --git a/renren-generator/src/main/java/io/renren/controller/SysGeneratorController.java b/renren-generator/src/main/java/io/renren/controller/SysGeneratorController.java index e2bce824..feb0d49e 100644 --- a/renren-generator/src/main/java/io/renren/controller/SysGeneratorController.java +++ b/renren-generator/src/main/java/io/renren/controller/SysGeneratorController.java @@ -8,9 +8,7 @@ import io.renren.utils.R; import org.apache.commons.io.IOUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -46,7 +44,7 @@ public class SysGeneratorController { return R.ok().put("page", pageUtil); } - + /** * 生成代码 */ @@ -55,14 +53,25 @@ public class SysGeneratorController { String[] tableNames = new String[]{}; String tables = request.getParameter("tables"); tableNames = JSON.parseArray(tables).toArray(tableNames); - - byte[] data = sysGeneratorService.generatorCode(tableNames); - - response.reset(); - response.setHeader("Content-Disposition", "attachment; filename=\"renren.zip\""); - response.addHeader("Content-Length", "" + data.length); - response.setContentType("application/octet-stream; charset=UTF-8"); - - IOUtils.write(data, response.getOutputStream()); + + if (request.getMethod().equals("GET")) { + byte[] data = sysGeneratorService.generatorCode(tableNames, true); + + response.reset(); + response.setHeader("Content-Disposition", "attachment; filename=\"renren.zip\""); + response.addHeader("Content-Length", "" + data.length); + response.setContentType("application/octet-stream; charset=UTF-8"); + + IOUtils.write(data, response.getOutputStream()); + } else if (request.getMethod().equals("POST")) { + request.getSession().getServletContext().getRealPath("/"); + sysGeneratorService.generatorCode(tableNames, false); + + byte[] msg = "{\"code\": 0, \"msg\": \"生成代码成功,请刷新项目查看\"}".getBytes(); + response.reset(); + response.addHeader("Content-Length", "" + msg.length); + response.setContentType("application/json; charset=UTF-8"); + response.getOutputStream().write(msg); + } } } diff --git a/renren-generator/src/main/java/io/renren/service/SysGeneratorService.java b/renren-generator/src/main/java/io/renren/service/SysGeneratorService.java index fe210873..8b3a41de 100644 --- a/renren-generator/src/main/java/io/renren/service/SysGeneratorService.java +++ b/renren-generator/src/main/java/io/renren/service/SysGeneratorService.java @@ -39,7 +39,7 @@ public class SysGeneratorService { return sysGeneratorDao.queryColumns(tableName); } - public byte[] generatorCode(String[] tableNames) { + public byte[] generatorCode(String[] tableNames, Boolean download) { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(outputStream); @@ -49,7 +49,7 @@ public class SysGeneratorService { //查询列信息 List> columns = queryColumns(tableName); //生成代码 - GenUtils.generatorCode(table, columns, zip); + GenUtils.generatorCode(table, columns, zip, download); } IOUtils.closeQuietly(zip); return outputStream.toByteArray(); diff --git a/renren-generator/src/main/java/io/renren/utils/GenUtils.java b/renren-generator/src/main/java/io/renren/utils/GenUtils.java index b71029dd..a55ce0dd 100644 --- a/renren-generator/src/main/java/io/renren/utils/GenUtils.java +++ b/renren-generator/src/main/java/io/renren/utils/GenUtils.java @@ -21,6 +21,7 @@ import io.renren.entity.TableEntity; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.WordUtils; @@ -62,7 +63,7 @@ public class GenUtils { * 生成代码 */ public static void generatorCode(Map table, - List> columns, ZipOutputStream zip){ + List> columns, ZipOutputStream zip, Boolean download){ //配置信息 Configuration config = getConfig(); boolean hasBigDecimal = false; @@ -134,21 +135,29 @@ public class GenUtils { map.put("email", config.getString("email")); map.put("datetime", DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN)); VelocityContext context = new VelocityContext(map); - + + String projectPath = config.getString("projectPath"); //获取模板列表 List templates = getTemplates(); for(String template : templates){ + String fileName = getFileName(template, tableEntity.getClassName(), config.getString("package"), config.getString("moduleName")); //渲染模板 StringWriter sw = new StringWriter(); Template tpl = Velocity.getTemplate(template, "UTF-8"); tpl.merge(context, sw); try { - //添加到zip - zip.putNextEntry(new ZipEntry(getFileName(template, tableEntity.getClassName(), config.getString("package"), config.getString("moduleName")))); - IOUtils.write(sw.toString(), zip, "UTF-8"); - IOUtils.closeQuietly(sw); - zip.closeEntry(); + if (download) { + //如果需要下载,则添加文件到zip + zip.putNextEntry(new ZipEntry(fileName)); + IOUtils.write(sw.toString(), zip, "UTF-8"); + IOUtils.closeQuietly(sw); + zip.closeEntry(); + } else { + //如果不需要下载,则直接写入文件到指定目录 + File file = new File(projectPath + File.separator + fileName); + FileUtils.writeStringToFile(file, sw.toString(), "UTF-8"); + } } catch (IOException e) { throw new RRException("渲染模板失败,表名:" + tableEntity.getTableName(), e); } @@ -188,7 +197,7 @@ public class GenUtils { * 获取文件名 */ public static String getFileName(String template, String className, String packageName, String moduleName) { - String packagePath = "main" + File.separator + "java" + File.separator; + String packagePath = "src" + File.separator + "main" + File.separator + "java" + File.separator; if (StringUtils.isNotBlank(packageName)) { packagePath += packageName.replace(".", File.separator) + File.separator + moduleName + File.separator; } @@ -213,17 +222,18 @@ public class GenUtils { return packagePath + "controller" + File.separator + className + "Controller.java"; } + String resourcesPath = "src" + File.separator + "main" + File.separator + "resources" + File.separator; if (template.contains("Dao.xml.vm" )) { - return "main" + File.separator + "resources" + File.separator + "mapper" + File.separator + moduleName + File.separator + className + "Dao.xml"; + return resourcesPath + "mapper" + File.separator + moduleName + File.separator + className + "Dao.xml"; } if (template.contains("list.html.vm" )) { - return "main" + File.separator + "resources" + File.separator + "templates" + File.separator + return resourcesPath + "templates" + File.separator + "modules" + File.separator + moduleName + File.separator + className.toLowerCase() + ".html"; } if (template.contains("list.js.vm" )) { - return "main" + File.separator + "resources" + File.separator + "statics" + File.separator + "js" + File.separator + return resourcesPath + "statics" + File.separator + "js" + File.separator + "modules" + File.separator + moduleName + File.separator + className.toLowerCase() + ".js"; } diff --git a/renren-generator/src/main/resources/generator.properties b/renren-generator/src/main/resources/generator.properties index 3968060d..a484a0a5 100644 --- a/renren-generator/src/main/resources/generator.properties +++ b/renren-generator/src/main/resources/generator.properties @@ -1,15 +1,18 @@ #\u4EE3\u7801\u751F\u6210\u5668\uFF0C\u914D\u7F6E\u4FE1\u606F - +#\u57DF\u540D mainPath=io.renren #\u5305\u540D package=io.renren.modules +#\u6A21\u5757 moduleName=sys #\u4F5C\u8005 author=chenshun #Email email=sunlightcs@gmail.com #\u8868\u524D\u7F00(\u7C7B\u540D\u4E0D\u4F1A\u5305\u542B\u8868\u524D\u7F00) -tablePrefix=tb_ +tablePrefix=sys_ +#\u751F\u6210\u4EE3\u7801\u6587\u4EF6\u5230\u54EA\u4E2A\u9879\u76EE\u7684\u8DEF\u5F84 +projectPath=/Users/sean/java/renren-security/renren-admin/ #\u7C7B\u578B\u8F6C\u6362\uFF0C\u914D\u7F6E\u4FE1\u606F tinyint=Integer @@ -32,4 +35,5 @@ longtext=String date=Date datetime=Date -timestamp=Date \ No newline at end of file +timestamp=Date + diff --git a/renren-generator/src/main/resources/static/js/generator.js b/renren-generator/src/main/resources/static/js/generator.js index bb55cdaa..bf65cace 100644 --- a/renren-generator/src/main/resources/static/js/generator.js +++ b/renren-generator/src/main/resources/static/js/generator.js @@ -49,12 +49,30 @@ var vm = new Vue({ page:1 }).trigger("reloadGrid"); }, - generator: function() { + generator: function(method) { var tableNames = getSelectedRows(); if(tableNames == null){ + alert('请选择需要生成代码的表'); return ; } - location.href = "sys/generator/code?tables=" + JSON.stringify(tableNames); + var url = "sys/generator/code"; + if (method == 'get') { + location.href = url + "?tables=" + encodeURI(JSON.stringify(tableNames)); + } else { + $.ajax({ + type: 'POST', + url: url, + contentType: 'application/x-www-form-urlencoded', + data: {tables: JSON.stringify(tableNames)}, + dataType: 'json', + success: function(result) { + alert(result.msg); + }, + error: function(xhr, msg) { + alert("生成代码出错: " + msg); + } + }); + } } } }); diff --git a/renren-generator/src/main/resources/views/generator.html b/renren-generator/src/main/resources/views/generator.html index 215db658..8eadbe24 100644 --- a/renren-generator/src/main/resources/views/generator.html +++ b/renren-generator/src/main/resources/views/generator.html @@ -24,7 +24,8 @@ 查询 -  生成代码 +  下载代码 +  生成代码
-- Gitee