diff --git a/README.md b/README.md index c86cb37..ea18f72 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,7 @@ |更新日期|更新内容| |----|----| +|20200621|修复FreemarkerUtil的Path问题导致JAR包运行时无法获取template的问题。| |20200525|1.一些fix,关于封装工具类以及layui模板优化等.
2.优化表备注的获取逻辑.
3.生成时间格式改为yyyy-MM-dd,移除具体的时间,只保留日期| |20200522|1.新增insert-sql模式,支持对"insert into table (xxx) values (xxx)"语句进行处理,生成java代码(感谢三叔的建议).| |20200517|1.代码重构!异常处理优化,Freemarker相关工具类优化,简化模板生成部分,通过template.json来配置需要生成的模板,不需要配置java文件.
2.修复包含comment关键字时注释无法识别的问题.(感谢@1nchaos的反馈).
3.赞赏优化,感谢大家的赞赏.
4.新增mapper2(Mybatis-Annotation模板)(感谢@baisi525和@CHKEGit的建议).| diff --git a/generator-web/src/main/java/com/softdev/system/generator/util/FreemarkerUtil.java b/generator-web/src/main/java/com/softdev/system/generator/util/FreemarkerUtil.java index 07db20b..93c30e4 100644 --- a/generator-web/src/main/java/com/softdev/system/generator/util/FreemarkerUtil.java +++ b/generator-web/src/main/java/com/softdev/system/generator/util/FreemarkerUtil.java @@ -1,5 +1,6 @@ package com.softdev.system.generator.util; +import freemarker.cache.ClassTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; @@ -8,10 +9,8 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.File; import java.io.IOException; import java.io.StringWriter; -import java.util.Locale; import java.util.Map; /** @@ -40,20 +39,13 @@ public class FreemarkerUtil { */ private static Configuration freemarkerConfig = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS); static{ - String templatePath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); - int wei = templatePath.lastIndexOf("WEB-INF/classes/"); - if (wei > -1) { - templatePath = templatePath.substring(0, wei); - } - try { - freemarkerConfig.setDirectoryForTemplateLoading(new File(templatePath, "templates/code-generator")); - freemarkerConfig.setNumberFormat("#"); - freemarkerConfig.setClassicCompatible(true); - freemarkerConfig.setDefaultEncoding("UTF-8"); - freemarkerConfig.setLocale(Locale.CHINA); + //2020-06-21 zhengkai 修复path问题导致jar无法运行而本地项目可以运行的bug + freemarkerConfig.setClassForTemplateLoading(FreemarkerUtil.class, "/templates/code-generator"); + freemarkerConfig.setTemplateLoader(new ClassTemplateLoader(FreemarkerUtil.class, "/templates/code-generator")); + //freemarkerConfig.setDirectoryForTemplateLoading(new File(templatePath, "templates/code-generator")); freemarkerConfig.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER); - } catch (IOException e) { + } catch (Exception e) { log.error(e.getMessage(), e); } } diff --git a/generator-web/src/main/resources/application.yml b/generator-web/src/main/resources/application.yml index b8563c8..f8a0b92 100644 --- a/generator-web/src/main/resources/application.yml +++ b/generator-web/src/main/resources/application.yml @@ -40,6 +40,8 @@ spring: expose-request-attributes: true expose-session-attributes: true expose-spring-macro-helpers: true - #template-loader-path: classpath:/templates/ + settings: + number_format: 0.## + #template_loader: /templates/ mvc: static-path-pattern: /static/** \ No newline at end of file diff --git a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl index cb5a47b..a9b1338 100644 --- a/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl +++ b/generator-web/src/main/resources/templates/code-generator/mybatis-plus/pluscontroller.ftl @@ -128,6 +128,25 @@ public class ${classInfo.className}Controller { ${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id)); return new ModelAndView("cms/${classInfo.className?uncap_first}-edit","${classInfo.className?uncap_first}",${classInfo.className?uncap_first}); } + + /** + * 发布/暂停(如不需要请屏蔽) + */ + @PostMapping("/publish") + public Object publish(int id,Integer status){ + ${classInfo.className} ${classInfo.className?uncap_first} = ${classInfo.className?uncap_first}Mapper.selectOne(new QueryWrapper<${classInfo.className}>().eq("${classInfo.className?uncap_first}_id",id)); + if(${classInfo.className?uncap_first}!=null){ + ${classInfo.className?uncap_first}.setUpdateTime(new Date()); + ${classInfo.className?uncap_first}.setStatus(status); + ${classInfo.className?uncap_first}Mapper.updateById(${classInfo.className?uncap_first}); + return ReturnT.SUCCESS((status==1)?"已发布":"已暂停"); + }else if(status.equals(${classInfo.className?uncap_first}.getStatus())){ + return ReturnT.SUCCESS("状态不正确"); + }else{ + return ReturnT.ERROR(); + } + } + } diff --git a/generator-web/src/main/resources/templates/code-generator/ui/layui-list.ftl b/generator-web/src/main/resources/templates/code-generator/ui/layui-list.ftl index 6702dfc..cc55ae6 100644 --- a/generator-web/src/main/resources/templates/code-generator/ui/layui-list.ftl +++ b/generator-web/src/main/resources/templates/code-generator/ui/layui-list.ftl @@ -183,13 +183,40 @@ }); } else { layer.msg(responseData.msg, function () { - //window.location = '/index.html'; }); } } }); layer.close(index); }); + }else if (obj.event === 'publish') { + layer.confirm('确定要发布吗?', function (index) { + $.ajax({ + type: 'POST', + url: "¥{request.contextPath}/${classInfo.className?uncap_first}/publish", + data:{"id":obj.data.${classInfo.className?uncap_first}Id,"status":"1"}, + success: function (responseData) { + searchBtn.click(); + layer.msg(responseData.msg, function () { + }); + } + }); + layer.close(index); + }); + }else if (obj.event === 'unpublish') { + layer.confirm('确定要停止吗?', function (index) { + $.ajax({ + type: 'POST', + url: "¥{request.contextPath}/${classInfo.className?uncap_first}/publish", + data:{"id":obj.data.${classInfo.className?uncap_first}Id,"status":"0"}, + success: function (responseData) { + searchBtn.click(); + layer.msg(responseData.msg, function () { + }); + } + }); + layer.close(index); + }); } });