diff --git a/src/main/java/com/fc/test/common/file/FileUploadUtils.java b/src/main/java/com/fc/test/common/file/FileUploadUtils.java index 773dba0a3a794c02c3deab33f00b0235bbea31c1..82873547ff9b966e3090e3a6a84b3d39c4d216fd 100644 --- a/src/main/java/com/fc/test/common/file/FileUploadUtils.java +++ b/src/main/java/com/fc/test/common/file/FileUploadUtils.java @@ -14,8 +14,9 @@ import com.fc.test.common.exception.file.FileNameLengthLimitExceededException; * @author fuce * @date: 2018年9月22日 下午10:33:23 */ -public class FileUploadUtils -{ +public class FileUploadUtils { + + private FileUploadUtils(){} /** * 默认大小 50M diff --git a/src/main/java/com/fc/test/common/file/FileUtils.java b/src/main/java/com/fc/test/common/file/FileUtils.java index ecaed7d60d6f6040158a44957225c80350b0c977..f1cb0cc581219150c1b3db6f99684b8cb60220bb 100644 --- a/src/main/java/com/fc/test/common/file/FileUtils.java +++ b/src/main/java/com/fc/test/common/file/FileUtils.java @@ -17,6 +17,7 @@ import javax.servlet.http.HttpServletResponse; public class FileUtils { + private FileUtils(){} /** * 输出指定文件的byte数组 * @@ -99,19 +100,15 @@ public class FileUtils * @throws IOException */ public static void readIMGTohtml(HttpServletRequest request, HttpServletResponse response,String fileurl) throws IOException{ - //读取本地图片输入流 - FileInputStream inputStream = new FileInputStream(fileurl); - int i = inputStream.available(); - //byte数组用于存放图片字节数据 - byte[] buff = new byte[i]; - inputStream.read(buff); - //记得关闭输入流 - inputStream.close(); - //设置发送到客户端的响应内容类型 - response.setContentType("image/*"); - OutputStream out = response.getOutputStream(); - out.write(buff); - //关闭响应输出流 - out.close(); + //设置发送到客户端的响应内容类型 + response.setContentType("image/*"); + //读取本地图片输入流 + try (FileInputStream inputStream = new FileInputStream(fileurl);OutputStream out = response.getOutputStream()){ + int i = inputStream.available(); + //byte数组用于存放图片字节数据 + byte[] buff = new byte[i]; + inputStream.read(buff); + out.write(buff); + } } } diff --git a/src/main/java/com/fc/test/shiro/util/ShiroUtils.java b/src/main/java/com/fc/test/shiro/util/ShiroUtils.java index 89add1f85de0c95fa1dec0201c4d536fe16439a6..f147f07a6251c1b230a84e8ca7684563a514c43e 100644 --- a/src/main/java/com/fc/test/shiro/util/ShiroUtils.java +++ b/src/main/java/com/fc/test/shiro/util/ShiroUtils.java @@ -12,14 +12,17 @@ import com.fc.test.shiro.service.MyShiroRealm; import com.fc.test.util.BeanUtils; import com.fc.test.util.StringUtils; +import java.util.Optional; + /** * shiro 工具类 * * @author fuce */ -public class ShiroUtils -{ +public class ShiroUtils { + + private ShiroUtils(){} public static Subject getSubjct() { @@ -67,12 +70,20 @@ public class ShiroUtils public static String getUserId() { - return getUser().getId().trim(); + TsysUser tsysUser = getUser(); + if (tsysUser == null || tsysUser.getId() == null){ + throw new RuntimeException("用户不存在!"); + } + return tsysUser.getId().trim(); } public static String getLoginName() { - return getUser().getUsername(); + TsysUser tsysUser = getUser(); + if (tsysUser == null){ + throw new RuntimeException("用户不存在!"); + } + return tsysUser.getUsername(); } public static String getIp() diff --git a/src/main/java/com/fc/test/util/AutoCode/AutoCodeUtil.java b/src/main/java/com/fc/test/util/AutoCode/AutoCodeUtil.java index 08608051a43e1ace004af6cde16eb88c27564a9e..008df083289bc94059f1f1bc3cf99db6aed5a9a5 100644 --- a/src/main/java/com/fc/test/util/AutoCode/AutoCodeUtil.java +++ b/src/main/java/com/fc/test/util/AutoCode/AutoCodeUtil.java @@ -1,220 +1,221 @@ -package com.fc.test.util.AutoCode; - -import java.io.BufferedWriter; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; -import org.apache.commons.lang.StringUtils; -import org.apache.velocity.Template; -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import com.fc.test.model.custom.TsysTables; -import com.fc.test.model.custom.autocode.AutoCodeConfig; -import com.fc.test.model.custom.autocode.BeanColumn; -import com.fc.test.model.custom.autocode.GlobalConfig; -import com.fc.test.service.SysUtilService; -import com.fc.test.util.SnowflakeIdWorker; -import cn.hutool.core.date.DateTime; - -/* - * 自动生成 - */ -public class AutoCodeUtil { - - /**生成文件路径**/ - private static String targetPath = getTargetPath(); - - - public static String getTargetPath() { - return AutoCodeConfig.getGlobalConfig().getParentPath(); - } - - public static List getTemplates(){ - List templates = new ArrayList(); - - //java代码模板 - templates.add("auto_code/model/Entity.java.vm"); - templates.add("auto_code/model/EntityExample.java.vm"); - templates.add("auto_code/mapperxml/EntityMapper.xml.vm"); - templates.add("auto_code/service/EntityService.java.vm"); - templates.add("auto_code/mapper/EntityMapper.java.vm"); - templates.add("auto_code/controller/EntityController.java.vm"); - //前端模板 - templates.add("auto_code/html/list.html.vm"); - templates.add("auto_code/html/add.html.vm"); - templates.add("auto_code/html/edit.html.vm"); - //sql模板 - templates.add("auto_code/sql/menu.sql.vm"); -// templates.add("auto_code/说明.txt.vm"); - return templates; - } - - /** - * 创建单表 - * @author fuce - * @Date 2019年8月24日 下午11:44:54 - */ - public static void autoCodeOneModel(SysUtilService sysUtilService,TsysTables tables,List beanColumns,String conditionQueryField,String pid,int sqlcheck){ - //设置velocity资源加载器 - Properties prop = new Properties(); - prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader" ); - Velocity.init(prop); - - GlobalConfig globalConfig= AutoCodeConfig.getGlobalConfig(); - Map map = new HashMap<>(); - //数据库表数据 - map.put("TsysTables",tables); - //字段集合 - map.put("beanColumns",beanColumns); - //配置文件 - map.put("globalConfig",globalConfig); - map.put("datetime",new DateTime()); - map.put("pid",pid); - map.put("sqlcheck",sqlcheck); - map.put("conditionQueryField",conditionQueryField); - map.put("conditionQueryField_a",com.fc.test.util.StringUtils.firstLowerCase(conditionQueryField)); - map.put("SnowflakeIdWorker", SnowflakeIdWorker.class); - //需要导入的java类 - map.put("JavaClassPackages", getJavaClassPackage(beanColumns)); - VelocityContext context = new VelocityContext(map); - - //获取模板列表 - List templates = getTemplates(); - for (String template : templates) { - try { - if(template.contains("menu.sql.vm")) { - if(sqlcheck==1) {//执行sql - Template tpl = Velocity.getTemplate(template, "UTF-8" ); - StringWriter sw = new StringWriter(); - tpl.merge(context, sw); - System.out.println(sw); - executeSQL(sysUtilService, sw.toString()); - }else {//只输出 - Template tpl = Velocity.getTemplate(template, "UTF-8" ); - StringWriter sw = new StringWriter(); - tpl.merge(context, sw); - System.out.println(sw); - } - - }else { - String filepath=getCoverFileName(template,tables.getTableModel_a() ,tables.getTableModel(),globalConfig.getParentPack() , "model","gen"); - Template tpl = Velocity.getTemplate(template, "UTF-8" ); - File file = new File(filepath); - if (!file.getParentFile().exists()) - file.getParentFile().mkdirs(); - if (!file.exists()) - file.createNewFile(); - FileOutputStream outStream = new FileOutputStream(file); - OutputStreamWriter writer = new OutputStreamWriter(outStream,"UTF-8"); - BufferedWriter sw = new BufferedWriter(writer); - tpl.merge(context, sw); - sw.flush(); - sw.close(); - outStream.close(); - System.out.println("成功生成Java文件:"+filepath); - } - - } catch (IOException e) { - try { - throw new Exception("渲染模板失败,表名:" +tables.getTableName()+"\n"+e.getMessage()); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - } - - - - /** - * 获取覆盖路径 - */ - public static String getCoverFileName(String template,String classname,String className, String packageName, String moduleName,String controller) { - String packagePath =targetPath+File.separator+"src"+File.separator + "main" + File.separator + "java" + File.separator; - String resourcesPath=targetPath+File.separator+"src"+File.separator + "main" + File.separator+"resources"+ File.separator;; - if (StringUtils.isNotBlank(packageName)) { - packagePath += packageName.replace(".", File.separator) + File.separator; - } - - if (template.contains("Entity.java.vm")) {//model - return packagePath+moduleName +File.separator+ "auto" + File.separator + className + ".java"; - } - if(template.contains("EntityExample.java.vm")) {//modelExample - return packagePath+moduleName +File.separator+ "auto" + File.separator + className + "Example.java"; - } - - if (template.contains("EntityMapper.java.vm")) {//dao or mapper - return packagePath + "mapper" + File.separator + "auto" + File.separator + className + "Mapper.java"; - } - if (template.contains("EntityMapper.xml.vm")) {//dao or mapper - return resourcesPath+"mybatis" + File.separator+"auto"+ File.separator + className + "Mapper.xml"; - } - - if (template.contains("EntityService.java.vm")) { - return packagePath + "service" + File.separator + className + "Service.java"; - } - if(template.contains("EntityController.java.vm")) { - return packagePath + "controller" + File.separator + controller + File.separator + className + "Controller.java"; - } - if(template.contains("list.html.vm")) { - return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"list.html"; - } - if(template.contains("add.html.vm")) { - System.err.println(resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator ); - return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"add.html"; - } - if(template.contains("edit.html.vm")) { - return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"edit.html"; - } - - return null; - } - - - /** - * 执行sql - * @param sysUtilService - * @param sql - * @author fuce - * @Date 2019年8月31日 下午6:40:14 - */ - public static void executeSQL(SysUtilService sysUtilService,String sql) { - int list= sysUtilService.executeSQL(sql); - System.out.println(list); - } - - /** - * 获取javamodel需要的导入类 - * @author fuce - * @Date 2019年8月26日 下午11:11:09 - */ - public static String getJavaClassPackage(List beanColumns) { - Map map=new HashMap<>(); - StringBuffer buffer=new StringBuffer(); - for (BeanColumn beanColumn : beanColumns) { - map.put(beanColumn.getBeanType(), beanColumn.getBeanType()); - } - if(map.size()>0) { - boolean time=false; - for (String key : map.keySet()) { - if(!"java.lang.String".equals(key)) { - buffer.append("import "+map.get(key)+";\n"); - } - if("java.util.Date".equals(key)&&time==false) { - time=true; - buffer.append("import com.fasterxml.jackson.annotation.JsonFormat;\n"); - } - - } - } - return buffer.toString(); - } - -} +package com.fc.test.util.AutoCode; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import org.apache.commons.lang.StringUtils; +import org.apache.velocity.Template; +import org.apache.velocity.VelocityContext; +import org.apache.velocity.app.Velocity; +import com.fc.test.model.custom.TsysTables; +import com.fc.test.model.custom.autocode.AutoCodeConfig; +import com.fc.test.model.custom.autocode.BeanColumn; +import com.fc.test.model.custom.autocode.GlobalConfig; +import com.fc.test.service.SysUtilService; +import com.fc.test.util.SnowflakeIdWorker; +import cn.hutool.core.date.DateTime; + +/* + * 自动生成 + */ +public class AutoCodeUtil { + + private AutoCodeUtil(){} + + /**生成文件路径**/ + private static String targetPath = getTargetPath(); + + + public static String getTargetPath() { + return AutoCodeConfig.getGlobalConfig().getParentPath(); + } + + public static List getTemplates(){ + List templates = new ArrayList(); + + //java代码模板 + templates.add("auto_code/model/Entity.java.vm"); + templates.add("auto_code/model/EntityExample.java.vm"); + templates.add("auto_code/mapperxml/EntityMapper.xml.vm"); + templates.add("auto_code/service/EntityService.java.vm"); + templates.add("auto_code/mapper/EntityMapper.java.vm"); + templates.add("auto_code/controller/EntityController.java.vm"); + //前端模板 + templates.add("auto_code/html/list.html.vm"); + templates.add("auto_code/html/add.html.vm"); + templates.add("auto_code/html/edit.html.vm"); + //sql模板 + templates.add("auto_code/sql/menu.sql.vm"); +// templates.add("auto_code/说明.txt.vm"); + return templates; + } + + /** + * 创建单表 + * @author fuce + * @Date 2019年8月24日 下午11:44:54 + */ + public static void autoCodeOneModel(SysUtilService sysUtilService,TsysTables tables,List beanColumns,String conditionQueryField,String pid,int sqlcheck){ + //设置velocity资源加载器 + Properties prop = new Properties(); + prop.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader" ); + Velocity.init(prop); + + GlobalConfig globalConfig= AutoCodeConfig.getGlobalConfig(); + Map map = new HashMap<>(); + //数据库表数据 + map.put("TsysTables",tables); + //字段集合 + map.put("beanColumns",beanColumns); + //配置文件 + map.put("globalConfig",globalConfig); + map.put("datetime",new DateTime()); + map.put("pid",pid); + map.put("sqlcheck",sqlcheck); + map.put("conditionQueryField",conditionQueryField); + map.put("conditionQueryField_a",com.fc.test.util.StringUtils.firstLowerCase(conditionQueryField)); + map.put("SnowflakeIdWorker", SnowflakeIdWorker.class); + //需要导入的java类 + map.put("JavaClassPackages", getJavaClassPackage(beanColumns)); + VelocityContext context = new VelocityContext(map); + + //获取模板列表 + List templates = getTemplates(); + for (String template : templates) { + try { + if(template.contains("menu.sql.vm")) { + if(sqlcheck==1) {//执行sql + Template tpl = Velocity.getTemplate(template, "UTF-8" ); + StringWriter sw = new StringWriter(); + tpl.merge(context, sw); + System.out.println(sw); + executeSQL(sysUtilService, sw.toString()); + }else {//只输出 + Template tpl = Velocity.getTemplate(template, "UTF-8" ); + StringWriter sw = new StringWriter(); + tpl.merge(context, sw); + System.out.println(sw); + } + + }else { + String filepath=getCoverFileName(template,tables.getTableModel_a() ,tables.getTableModel(),globalConfig.getParentPack() , "model","gen"); + Template tpl = Velocity.getTemplate(template, "UTF-8" ); + File file = new File(filepath); + if (!file.getParentFile().exists()) + file.getParentFile().mkdirs(); + if (!file.exists()) + file.createNewFile(); + try (FileOutputStream outStream = new FileOutputStream(file); + OutputStreamWriter writer = new OutputStreamWriter(outStream, "UTF-8"); + BufferedWriter sw = new BufferedWriter(writer)) { + tpl.merge(context, sw); + sw.flush(); + System.out.println("成功生成Java文件:" + filepath); + } + } + + } catch (IOException e) { + try { + throw new Exception("渲染模板失败,表名:" +tables.getTableName()+"\n"+e.getMessage()); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + } + + + + /** + * 获取覆盖路径 + */ + public static String getCoverFileName(String template,String classname,String className, String packageName, String moduleName,String controller) { + String packagePath =targetPath+File.separator+"src"+File.separator + "main" + File.separator + "java" + File.separator; + String resourcesPath=targetPath+File.separator+"src"+File.separator + "main" + File.separator+"resources"+ File.separator;; + if (StringUtils.isNotBlank(packageName)) { + packagePath += packageName.replace(".", File.separator) + File.separator; + } + + if (template.contains("Entity.java.vm")) {//model + return packagePath+moduleName +File.separator+ "auto" + File.separator + className + ".java"; + } + if(template.contains("EntityExample.java.vm")) {//modelExample + return packagePath+moduleName +File.separator+ "auto" + File.separator + className + "Example.java"; + } + + if (template.contains("EntityMapper.java.vm")) {//dao or mapper + return packagePath + "mapper" + File.separator + "auto" + File.separator + className + "Mapper.java"; + } + if (template.contains("EntityMapper.xml.vm")) {//dao or mapper + return resourcesPath+"mybatis" + File.separator+"auto"+ File.separator + className + "Mapper.xml"; + } + + if (template.contains("EntityService.java.vm")) { + return packagePath + "service" + File.separator + className + "Service.java"; + } + if(template.contains("EntityController.java.vm")) { + return packagePath + "controller" + File.separator + controller + File.separator + className + "Controller.java"; + } + if(template.contains("list.html.vm")) { + return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"list.html"; + } + if(template.contains("add.html.vm")) { + System.err.println(resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator ); + return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"add.html"; + } + if(template.contains("edit.html.vm")) { + return resourcesPath+"templates"+File.separator + controller+File.separator + classname+File.separator +"edit.html"; + } + + return null; + } + + + /** + * 执行sql + * @param sysUtilService + * @param sql + * @author fuce + * @Date 2019年8月31日 下午6:40:14 + */ + public static void executeSQL(SysUtilService sysUtilService,String sql) { + int list= sysUtilService.executeSQL(sql); + System.out.println(list); + } + + /** + * 获取javamodel需要的导入类 + * @author fuce + * @Date 2019年8月26日 下午11:11:09 + */ + public static String getJavaClassPackage(List beanColumns) { + Map map=new HashMap<>(); + StringBuffer buffer=new StringBuffer(); + for (BeanColumn beanColumn : beanColumns) { + map.put(beanColumn.getBeanType(), beanColumn.getBeanType()); + } + if(map.size()>0) { + boolean time=false; + for (String key : map.keySet()) { + if(!"java.lang.String".equals(key)) { + buffer.append("import "+map.get(key)+";\n"); + } + if("java.util.Date".equals(key)&&time==false) { + time=true; + buffer.append("import com.fasterxml.jackson.annotation.JsonFormat;\n"); + } + + } + } + return buffer.toString(); + } + +} diff --git a/src/main/java/com/fc/test/util/GenUtils.java b/src/main/java/com/fc/test/util/GenUtils.java index f616c88cf92fe1d1b06e6d57dbfd02cc8adc0143..12c88e5909907f226e897790d3adb5b311e15462 100644 --- a/src/main/java/com/fc/test/util/GenUtils.java +++ b/src/main/java/com/fc/test/util/GenUtils.java @@ -34,6 +34,8 @@ import java.util.zip.ZipOutputStream; * @date 2016年12月19日 下午11:40:24 */ public class GenUtils { + + private GenUtils(){} private static String targetPath = System.getProperty("user.dir"); @@ -72,6 +74,9 @@ public class GenUtils { public static void generatorCode(TsysTables table, List> columns, ZipOutputStream zip,GenVo genVo) { //配置信息 Configuration config = getConfig(); + if (null == config){ + throw new RuntimeException("渲染模板失败,表名:" + table.getTableName()+"\n"+"找不到配置文件"); + } boolean hasBigDecimal = false; //判断主键 boolean pklag=false; @@ -171,14 +176,14 @@ public class GenUtils { file.getParentFile().mkdirs(); if (!file.exists()) file.createNewFile(); + try( FileOutputStream outStream = new FileOutputStream(file); OutputStreamWriter writer = new OutputStreamWriter(outStream,"UTF-8"); - BufferedWriter sw = new BufferedWriter(writer); - tpl.merge(context, sw); - sw.flush(); - sw.close(); - outStream.close(); - System.out.println("成功生成Java文件:"+filepath); + BufferedWriter sw = new BufferedWriter(writer)) { + tpl.merge(context, sw); + sw.flush(); + System.out.println("成功生成Java文件:" + filepath); + } }else {//把sql文件单独处理 if(template.contains("menu.sql.vm")||template.contains("说明.txt.vm")) { StringWriter sw = new StringWriter();