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 497766ae..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,15 +69,20 @@ 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){
// 生成代码
case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName));
break;
- default: break;
+ // 预览
+ case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName));
+ // 打包
+ 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 027d2bdd..860d1afa 100644
--- a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java
+++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java
@@ -2,8 +2,10 @@ 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 javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
@@ -50,7 +52,23 @@ 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);
+
+ /**
+ * 打包下载
+ * @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 4a2168a0..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,22 +2,30 @@ 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;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
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;
+import java.util.Map;
/**
* @author Zheng Jie
@@ -113,17 +121,39 @@ 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