Skip to content

Commit cf25647

Browse files
committed
更新代码生成预览的sql文件
1 parent 0cbc6e5 commit cf25647

5 files changed

Lines changed: 93 additions & 43 deletions

File tree

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ public ResponseEntity generator(@PathVariable String tableName, @PathVariable In
7575
// 生成代码
7676
case 0: generatorService.generator(genConfigService.find(tableName), generatorService.getColumns(tableName));
7777
break;
78+
// 预览
79+
case 1: return generatorService.preview(genConfigService.find(tableName), generatorService.getColumns(tableName));
7880
default: break;
7981
}
8082
return new ResponseEntity(HttpStatus.OK);

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
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;
67

78
import java.util.List;
@@ -50,7 +51,14 @@ public interface GeneratorService {
5051
* 代码生成
5152
* @param genConfig 配置信息
5253
* @param columns 字段信息
54+
*/
55+
void generator(GenConfig genConfig, List<ColumnInfo> columns);
56+
57+
/**
58+
* 预览
59+
* @param genConfig 配置信息
60+
* @param columns 字段信息
5361
* @return /
5462
*/
55-
Object generator(GenConfig genConfig, List<ColumnInfo> columns);
63+
ResponseEntity preview(GenConfig genConfig, List<ColumnInfo> columns);
5664
}

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

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,16 @@
1111
import me.zhengjie.utils.GenUtil;
1212
import me.zhengjie.utils.PageUtil;
1313
import me.zhengjie.utils.StringUtils;
14+
import org.springframework.http.HttpStatus;
15+
import org.springframework.http.ResponseEntity;
1416
import org.springframework.stereotype.Service;
1517
import javax.persistence.EntityManager;
1618
import javax.persistence.PersistenceContext;
1719
import javax.persistence.Query;
1820
import java.io.IOException;
1921
import java.util.ArrayList;
2022
import java.util.List;
23+
import java.util.Map;
2124

2225
/**
2326
* @author Zheng Jie
@@ -113,17 +116,24 @@ public void save(List<ColumnInfo> columnInfos) {
113116
}
114117

115118
@Override
116-
public Object generator(GenConfig genConfig, List<ColumnInfo> columns) {
119+
public void generator(GenConfig genConfig, List<ColumnInfo> columns) {
117120
if(genConfig.getId() == null){
118121
throw new BadRequestException("请先配置生成器");
119122
}
120123
try {
121-
// 查询是否存在关联实体字段信息
122124
GenUtil.generatorCode(columns, genConfig);
123125
} catch (IOException e) {
124126
e.printStackTrace();
125127
throw new BadRequestException("生成失败,请手动处理已生成的文件");
126128
}
127-
return null;
129+
}
130+
131+
@Override
132+
public ResponseEntity preview(GenConfig genConfig, List<ColumnInfo> columns) {
133+
if(genConfig.getId() == null){
134+
throw new BadRequestException("请先配置生成器");
135+
}
136+
List<Map<String,Object>> genList = GenUtil.preview(columns, genConfig);
137+
return new ResponseEntity<>(genList, HttpStatus.OK);
128138
}
129139
}

eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java

Lines changed: 68 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,7 @@
1111
import java.io.IOException;
1212
import java.io.Writer;
1313
import java.time.LocalDate;
14-
import java.util.ArrayList;
15-
import java.util.HashMap;
16-
import java.util.List;
17-
import java.util.Map;
14+
import java.util.*;
1815

1916
/**
2017
* 代码生成
@@ -61,7 +58,72 @@ private static List<String> getFrontTemplateNames() {
6158
return templateNames;
6259
}
6360

61+
public static List<Map<String, Object>> preview(List<ColumnInfo> columns, GenConfig genConfig) {
62+
Map<String,Object> genMap = getGenMap(columns, genConfig);
63+
List<Map<String,Object>> genList = new ArrayList<>();
64+
// 获取后端模版
65+
List<String> templates = getAdminTemplateNames();
66+
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
67+
for (String templateName : templates) {
68+
Map<String,Object> map = new HashMap<>(1);
69+
Template template = engine.getTemplate("generator/admin/"+templateName+".ftl");
70+
map.put("content", template.render(genMap));
71+
map.put("name", templateName);
72+
genList.add(map);
73+
}
74+
// 获取前端模版
75+
templates = getFrontTemplateNames();
76+
for (String templateName : templates) {
77+
Map<String,Object> map = new HashMap<>(1);
78+
Template template = engine.getTemplate("generator/front/"+templateName+".ftl");
79+
map.put(templateName, template.render(genMap));
80+
map.put("content", template.render(genMap));
81+
map.put("name", templateName);
82+
genList.add(map);
83+
}
84+
return genList;
85+
}
86+
6487
public static void generatorCode(List<ColumnInfo> columnInfos, GenConfig genConfig) throws IOException {
88+
Map<String,Object> genMap = getGenMap(columnInfos, genConfig);
89+
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
90+
// 生成后端代码
91+
List<String> templates = getAdminTemplateNames();
92+
for (String templateName : templates) {
93+
Template template = engine.getTemplate("generator/admin/"+templateName+".ftl");
94+
String filePath = getAdminFilePath(templateName,genConfig,genMap.get("className").toString());
95+
96+
assert filePath != null;
97+
File file = new File(filePath);
98+
99+
// 如果非覆盖生成
100+
if(!genConfig.getCover() && FileUtil.exist(file)){
101+
continue;
102+
}
103+
// 生成代码
104+
genFile(file, template, genMap);
105+
}
106+
107+
// 生成前端代码
108+
templates = getFrontTemplateNames();
109+
for (String templateName : templates) {
110+
Template template = engine.getTemplate("generator/front/"+templateName+".ftl");
111+
String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString());
112+
113+
assert filePath != null;
114+
File file = new File(filePath);
115+
116+
// 如果非覆盖生成
117+
if(!genConfig.getCover() && FileUtil.exist(file)){
118+
continue;
119+
}
120+
// 生成代码
121+
genFile(file, template, genMap);
122+
}
123+
}
124+
125+
// 获取模版数据
126+
private static Map<String,Object> getGenMap(List<ColumnInfo> columnInfos, GenConfig genConfig) {
65127
// 存储模版字段数据
66128
Map<String,Object> genMap = new HashMap<>(16);
67129
// 接口别名
@@ -165,7 +227,7 @@ public static void generatorCode(List<ColumnInfo> columnInfos, GenConfig genConf
165227
// 表单显示
166228
listMap.put("formShow",column.getFormShow());
167229
// 表单组件类型
168-
listMap.put("formType",column.getFormType());
230+
listMap.put("formType", StringUtils.isNotBlank(column.getFormType()) ? column.getFormType() : "Input");
169231
// 小写开头的字段名称
170232
listMap.put("changeColumnName",changeColumnName);
171233
//大写开头的字段名称
@@ -215,40 +277,7 @@ public static void generatorCode(List<ColumnInfo> columnInfos, GenConfig genConf
215277
genMap.put("betweens",betweens);
216278
// 保存非空字段信息
217279
genMap.put("isNotNullColumns",isNotNullColumns);
218-
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
219-
// 生成后端代码
220-
List<String> templates = getAdminTemplateNames();
221-
for (String templateName : templates) {
222-
Template template = engine.getTemplate("generator/admin/"+templateName+".ftl");
223-
String filePath = getAdminFilePath(templateName,genConfig,className);
224-
225-
assert filePath != null;
226-
File file = new File(filePath);
227-
228-
// 如果非覆盖生成
229-
if(!genConfig.getCover() && FileUtil.exist(file)){
230-
continue;
231-
}
232-
// 生成代码
233-
genFile(file, template, genMap);
234-
}
235-
236-
// 生成前端代码
237-
templates = getFrontTemplateNames();
238-
for (String templateName : templates) {
239-
Template template = engine.getTemplate("generator/front/"+templateName+".ftl");
240-
String filePath = getFrontFilePath(templateName,genConfig,genMap.get("changeClassName").toString());
241-
242-
assert filePath != null;
243-
File file = new File(filePath);
244-
245-
// 如果非覆盖生成
246-
if(!genConfig.getCover() && FileUtil.exist(file)){
247-
continue;
248-
}
249-
// 生成代码
250-
genFile(file, template, genMap);
251-
}
280+
return genMap;
252281
}
253282

254283
/**

sql/eladmin-gen.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
-- ----------------------------
44

55
INSERT INTO `menu` VALUES (82, b'0', '生成配置', 'generator/config', 36, 33, 'dev', 'generator/config/:tableName', b'1', b'1', 'GeneratorConfig', '2019-11-17 20:08:56', '', 1);
6+
INSERT INTO `menu` VALUES (116, b'0', '生成预览', 'generator/preview', 36, 999, 'java', 'generator/preview/:tableName', b'1', b'1', 'Preview', '2019-11-26 14:54:36', NULL, 1);
67

78
-- ----------------------------
89
-- Table structure for column_config

0 commit comments

Comments
 (0)