Skip to content

Commit 53583b2

Browse files
committed
Merge branches '2.4dev' and '2.4opt' of https://gitee.com/elunez/eladmin into 2.4opt
2 parents 1cec669 + 2ecb82a commit 53583b2

7 files changed

Lines changed: 213 additions & 58 deletions

File tree

eladmin-common/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111
<properties>
12-
<hutool.version>[4.1.12,)</hutool.version>
12+
<hutool.version>5.0.6</hutool.version>
1313
</properties>
1414

1515
<artifactId>eladmin-common</artifactId>

eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@
66
import cn.hutool.poi.excel.BigExcelWriter;
77
import cn.hutool.poi.excel.ExcelUtil;
88
import me.zhengjie.exception.BadRequestException;
9+
import org.apache.poi.util.IOUtils;
910
import org.springframework.web.multipart.MultipartFile;
1011
import javax.activation.MimetypesFileTypeMap;
1112
import javax.servlet.ServletOutputStream;
13+
import javax.servlet.http.HttpServletRequest;
1214
import javax.servlet.http.HttpServletResponse;
1315
import java.io.*;
1416
import java.security.MessageDigest;
@@ -273,6 +275,37 @@ private static String getMd5(byte[] bytes) {
273275
return null;
274276
}
275277

278+
/**
279+
* 下载文件
280+
* @param request /
281+
* @param response /
282+
* @param file /
283+
*/
284+
public static void downloadFile(HttpServletRequest request, HttpServletResponse response, File file, boolean deleteOnExit){
285+
response.setCharacterEncoding(request.getCharacterEncoding());
286+
response.setContentType("application/octet-stream");
287+
FileInputStream fis = null;
288+
try {
289+
fis = new FileInputStream(file);
290+
response.setHeader("Content-Disposition", "attachment; filename="+file.getName());
291+
IOUtils.copy(fis,response.getOutputStream());
292+
response.flushBuffer();
293+
} catch (Exception e) {
294+
e.printStackTrace();
295+
} finally {
296+
if (fis != null) {
297+
try {
298+
fis.close();
299+
if(deleteOnExit){
300+
file.deleteOnExit();
301+
}
302+
} catch (IOException e) {
303+
e.printStackTrace();
304+
}
305+
}
306+
}
307+
}
308+
276309
public static String getMd5(File file) {
277310
return getMd5(getByte(file));
278311
}

eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.springframework.http.HttpStatus;
1212
import org.springframework.http.ResponseEntity;
1313
import org.springframework.web.bind.annotation.*;
14+
import javax.servlet.http.HttpServletRequest;
15+
import javax.servlet.http.HttpServletResponse;
1416
import java.util.List;
1517

1618
/**
@@ -67,15 +69,20 @@ public ResponseEntity save(@RequestBody List<ColumnInfo> columnInfos){
6769

6870
@ApiOperation("生成代码")
6971
@PostMapping(value = "/{tableName}/{type}")
70-
public ResponseEntity generator(@PathVariable String tableName, @PathVariable Integer type){
71-
if(!generatorEnabled){
72-
throw new BadRequestException("此环境不允许生成代码!");
72+
public ResponseEntity generator(@PathVariable String tableName, @PathVariable Integer type, HttpServletRequest request, HttpServletResponse response){
73+
if(!generatorEnabled && type == 0){
74+
throw new BadRequestException("此环境不允许生成代码,请选择预览或者下载查看!");
7375
}
7476
switch (type){
7577
// 生成代码
7678
case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName));
7779
break;
78-
default: break;
80+
// 预览
81+
case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName));
82+
// 打包
83+
case 2: generatorService.download(genConfigService.find(tableName), generatorService.getColumns(tableName), request, response);
84+
break;
85+
default: throw new BadRequestException("没有这个选项");
7986
}
8087
return new ResponseEntity(HttpStatus.OK);
8188
}

eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import me.zhengjie.domain.GenConfig;
44
import me.zhengjie.domain.ColumnInfo;
5+
import org.springframework.http.ResponseEntity;
56
import org.springframework.scheduling.annotation.Async;
6-
7+
import javax.servlet.http.HttpServletRequest;
8+
import javax.servlet.http.HttpServletResponse;
79
import java.util.List;
810

911
/**
@@ -50,7 +52,23 @@ public interface GeneratorService {
5052
* 代码生成
5153
* @param genConfig 配置信息
5254
* @param columns 字段信息
55+
*/
56+
void generator(GenConfig genConfig, List<ColumnInfo> columns);
57+
58+
/**
59+
* 预览
60+
* @param genConfig 配置信息
61+
* @param columns 字段信息
5362
* @return /
5463
*/
55-
Object generator(GenConfig genConfig, List<ColumnInfo> columns);
64+
ResponseEntity preview(GenConfig genConfig, List<ColumnInfo> columns);
65+
66+
/**
67+
* 打包下载
68+
* @param genConfig 配置信息
69+
* @param columns 字段信息
70+
* @param request
71+
* @param response
72+
*/
73+
void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response);
5674
}

eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,30 @@
22

33
import cn.hutool.core.collection.CollectionUtil;
44
import cn.hutool.core.util.ObjectUtil;
5+
import cn.hutool.core.util.ZipUtil;
56
import me.zhengjie.domain.GenConfig;
67
import me.zhengjie.domain.ColumnInfo;
78
import me.zhengjie.domain.vo.TableInfo;
89
import me.zhengjie.exception.BadRequestException;
910
import me.zhengjie.repository.ColumnInfoRepository;
1011
import me.zhengjie.service.GeneratorService;
12+
import me.zhengjie.utils.FileUtil;
1113
import me.zhengjie.utils.GenUtil;
1214
import me.zhengjie.utils.PageUtil;
1315
import me.zhengjie.utils.StringUtils;
16+
import org.springframework.http.HttpStatus;
17+
import org.springframework.http.ResponseEntity;
1418
import org.springframework.stereotype.Service;
1519
import javax.persistence.EntityManager;
1620
import javax.persistence.PersistenceContext;
1721
import javax.persistence.Query;
22+
import javax.servlet.http.HttpServletRequest;
23+
import javax.servlet.http.HttpServletResponse;
24+
import java.io.File;
1825
import java.io.IOException;
1926
import java.util.ArrayList;
2027
import java.util.List;
28+
import java.util.Map;
2129

2230
/**
2331
* @author Zheng Jie
@@ -113,17 +121,39 @@ public void save(List<ColumnInfo> columnInfos) {
113121
}
114122

115123
@Override
116-
public Object generator(GenConfig genConfig, List<ColumnInfo> columns) {
124+
public void generator(GenConfig genConfig, List<ColumnInfo> columns) {
117125
if(genConfig.getId() == null){
118126
throw new BadRequestException("请先配置生成器");
119127
}
120128
try {
121-
// 查询是否存在关联实体字段信息
122129
GenUtil.generatorCode(columns, genConfig);
123130
} catch (IOException e) {
124131
e.printStackTrace();
125132
throw new BadRequestException("生成失败,请手动处理已生成的文件");
126133
}
127-
return null;
134+
}
135+
136+
@Override
137+
public ResponseEntity preview(GenConfig genConfig, List<ColumnInfo> columns) {
138+
if(genConfig.getId() == null){
139+
throw new BadRequestException("请先配置生成器");
140+
}
141+
List<Map<String,Object>> genList = GenUtil.preview(columns, genConfig);
142+
return new ResponseEntity<>(genList, HttpStatus.OK);
143+
}
144+
145+
@Override
146+
public void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response) {
147+
if(genConfig.getId() == null){
148+
throw new BadRequestException("请先配置生成器");
149+
}
150+
try {
151+
File file = new File(GenUtil.download(columns, genConfig));
152+
String zipPath = file.getPath() + ".zip";
153+
ZipUtil.zip(file.getPath(), zipPath);
154+
FileUtil.downloadFile(request, response, new File(zipPath), true);
155+
} catch (IOException e) {
156+
throw new BadRequestException("打包失败");
157+
}
128158
}
129159
}

0 commit comments

Comments
 (0)