修改bug

This commit is contained in:
xuwenbo
2020-05-13 17:14:15 +08:00
parent 9ff4465134
commit d3cf0d6c44
6 changed files with 38 additions and 40 deletions

View File

@ -15,7 +15,7 @@ import javax.persistence.*;
@Entity
@NoArgsConstructor
@Table(name = "column_config")
public class ColumnInfo {
public class ColumnConfig {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@ -60,7 +60,7 @@ public class ColumnInfo {
/** 日期注解 */
private String dateAnnotation;
public ColumnInfo(String tableName, String columnName, Boolean notNull, String columnType, String remark, String keyType, String extra) {
public ColumnConfig(String tableName, String columnName, Boolean notNull, String columnType, String remark, String keyType, String extra) {
this.tableName = tableName;
this.columnName = columnName;
this.columnType = columnType;

View File

@ -1,6 +1,6 @@
package co.yixiang.rest;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.ColumnConfig;
import co.yixiang.service.GenConfigService;
import co.yixiang.service.GeneratorService;
import io.swagger.annotations.Api;
@ -54,13 +54,13 @@ public class GeneratorController {
@ApiOperation("查询字段数据")
@GetMapping(value = "/columns")
public ResponseEntity<Object> getTables(@RequestParam String tableName){
List<ColumnInfo> columnInfos = generatorService.getColumns(tableName);
List<ColumnConfig> columnInfos = generatorService.getColumns(tableName);
return new ResponseEntity<>(PageUtil.toPage(columnInfos,columnInfos.size()), HttpStatus.OK);
}
@ApiOperation("保存字段数据")
@PutMapping
public ResponseEntity<HttpStatus> save(@RequestBody List<ColumnInfo> columnInfos){
public ResponseEntity<HttpStatus> save(@RequestBody List<ColumnConfig> columnInfos){
generatorService.save(columnInfos);
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@ -1,6 +1,6 @@
package co.yixiang.service;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.ColumnConfig;
import co.yixiang.domain.GenConfig;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
@ -27,7 +27,7 @@ public interface GeneratorService {
* @param name 表名
* @return /
*/
List<ColumnInfo> getColumns(String name);
List<ColumnConfig> getColumns(String name);
/**
* 同步表数据
@ -35,13 +35,13 @@ public interface GeneratorService {
* @param columnInfoList
*/
@Async
void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList);
void sync(List<ColumnConfig> columnInfos, List<ColumnConfig> columnInfoList);
/**
* 保持数据
* @param columnInfos /
*/
void save(List<ColumnInfo> columnInfos);
void save(List<ColumnConfig> columnInfos);
/**
* 获取所有table
@ -54,7 +54,7 @@ public interface GeneratorService {
* @param genConfig 配置信息
* @param columns 字段信息
*/
void generator(GenConfig genConfig, List<ColumnInfo> columns);
void generator(GenConfig genConfig, List<ColumnConfig> columns);
/**
* 预览
@ -62,7 +62,7 @@ public interface GeneratorService {
* @param columns 字段信息
* @return /
*/
ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnInfo> columns);
ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnConfig> columns);
/**
* 打包下载
@ -71,12 +71,12 @@ public interface GeneratorService {
* @param request /
* @param response /
*/
void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response);
void download(GenConfig genConfig, List<ColumnConfig> columns, HttpServletRequest request, HttpServletResponse response);
/**
* 查询数据库的表字段数据数据
* @param table /
* @return /
*/
List<ColumnInfo> query(String table);
List<ColumnConfig> query(String table);
}

View File

@ -4,10 +4,9 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ZipUtil;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.ColumnConfig;
import co.yixiang.domain.GenConfig;
import co.yixiang.service.mapper.ColumnInfoMapper;
import co.yixiang.service.mapper.GenConfigMapper;
import co.yixiang.utils.GenUtil;
import co.yixiang.domain.vo.TableInfo;
import co.yixiang.exception.BadRequestException;
@ -37,7 +36,7 @@ import java.util.stream.Collectors;
*/
@Service
@SuppressWarnings({"unchecked","all"})
public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, ColumnInfo> implements GeneratorService {
public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, ColumnConfig> implements GeneratorService {
@PersistenceContext
private EntityManager em;
@ -75,8 +74,8 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public List<ColumnInfo> getColumns(String tableName) {
List<ColumnInfo> columnInfos = this.list(new QueryWrapper<ColumnInfo>()
public List<ColumnConfig> getColumns(String tableName) {
List<ColumnConfig> columnInfos = this.list(new QueryWrapper<ColumnConfig>()
.eq("table_name",tableName).orderByAsc("id"));
if(CollectionUtil.isNotEmpty(columnInfos)){
return columnInfos;
@ -88,18 +87,18 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public List<ColumnInfo> query(String tableName){
public List<ColumnConfig> query(String tableName){
// 使用预编译防止sql注入
String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " +
"where table_name = ? and table_schema = (select database()) order by ordinal_position";
Query query = em.createNativeQuery(sql);
query.setParameter(1,tableName);
List result = query.getResultList();
List<ColumnInfo> columnInfos = new ArrayList<>();
List<ColumnConfig> columnInfos = new ArrayList<>();
for (Object obj : result) {
Object[] arr = (Object[]) obj;
columnInfos.add(
new ColumnInfo(
new ColumnConfig(
tableName,
arr[0].toString(),
"NO".equals(arr[1]),
@ -113,14 +112,14 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList) {
public void sync(List<ColumnConfig> columnInfos, List<ColumnConfig> columnInfoList) {
// 第一种情况,数据库类字段改变或者新增字段
for (ColumnInfo columnInfo : columnInfoList) {
for (ColumnConfig columnInfo : columnInfoList) {
// 根据字段名称查找
List<ColumnInfo> columns = new ArrayList<ColumnInfo>(columnInfos.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
List<ColumnConfig> columns = new ArrayList<ColumnConfig>(columnInfos.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
// 如果能找到,就修改部分可能被字段
if(CollectionUtil.isNotEmpty(columns)){
ColumnInfo column = columns.get(0);
ColumnConfig column = columns.get(0);
column.setColumnType(columnInfo.getColumnType());
column.setExtra(columnInfo.getExtra());
column.setKeyType(columnInfo.getKeyType());
@ -134,9 +133,9 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
}
// 第二种情况,数据库字段删除了
for (ColumnInfo columnInfo : columnInfos) {
for (ColumnConfig columnInfo : columnInfos) {
// 根据字段名称查找
List<ColumnInfo> columns = new ArrayList<ColumnInfo>(columnInfoList.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
List<ColumnConfig> columns = new ArrayList<ColumnConfig>(columnInfoList.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
// 如果找不到,就代表字段被删除了,则需要删除该字段
if(CollectionUtil.isEmpty(columns)){
this.removeById(columnInfo.getId());
@ -145,12 +144,12 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public void save(List<ColumnInfo> columnInfos) {
public void save(List<ColumnConfig> columnInfos) {
this.saveBatch(columnInfos);
}
@Override
public void generator(GenConfig genConfig, List<ColumnInfo> columns) {
public void generator(GenConfig genConfig, List<ColumnConfig> columns) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}
@ -163,7 +162,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnInfo> columns) {
public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnConfig> columns) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}
@ -172,7 +171,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response) {
public void download(GenConfig genConfig, List<ColumnConfig> columns, HttpServletRequest request, HttpServletResponse response) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}

View File

@ -1,12 +1,11 @@
package co.yixiang.service.mapper;
import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.GenConfig;
import co.yixiang.domain.ColumnConfig;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface ColumnInfoMapper extends CoreMapper<ColumnInfo> {
public interface ColumnInfoMapper extends CoreMapper<ColumnConfig> {
}

View File

@ -4,7 +4,7 @@ import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.*;
import lombok.extern.slf4j.Slf4j;
import co.yixiang.domain.GenConfig;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.ColumnConfig;
import org.springframework.util.ObjectUtils;
import java.io.File;
import java.io.FileWriter;
@ -66,7 +66,7 @@ public class GenUtil {
return templateNames;
}
public static List<Map<String, Object>> preview(List<ColumnInfo> columns, GenConfig genConfig) {
public static List<Map<String, Object>> preview(List<ColumnConfig> columns, GenConfig genConfig) {
Map<String,Object> genMap = getGenMap(columns, genConfig);
List<Map<String,Object>> genList = new ArrayList<>();
// 获取后端模版
@ -92,7 +92,7 @@ public class GenUtil {
return genList;
}
public static String download(List<ColumnInfo> columns, GenConfig genConfig) throws IOException {
public static String download(List<ColumnConfig> columns, GenConfig genConfig) throws IOException {
String tempPath =System.getProperty("java.io.tmpdir") + "yshop-gen-temp" + File.separator + genConfig.getTableName() + File.separator;
Map<String,Object> genMap = getGenMap(columns, genConfig);
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
@ -130,7 +130,7 @@ public class GenUtil {
return tempPath;
}
public static void generatorCode(List<ColumnInfo> columnInfos, GenConfig genConfig) throws IOException {
public static void generatorCode(List<ColumnConfig> columnInfos, GenConfig genConfig) throws IOException {
Map<String,Object> genMap = getGenMap(columnInfos, genConfig);
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
// 生成后端代码
@ -169,7 +169,7 @@ public class GenUtil {
}
// 获取模版数据
private static Map<String,Object> getGenMap(List<ColumnInfo> columnInfos, GenConfig genConfig) {
private static Map<String,Object> getGenMap(List<ColumnConfig> columnInfos, GenConfig genConfig) {
// 存储模版字段数据
Map<String,Object> genMap = new HashMap<>(16);
// 接口别名
@ -226,7 +226,7 @@ public class GenUtil {
// 存储不为空的字段信息
List<Map<String,Object>> isNotNullColumns = new ArrayList<>();
for (ColumnInfo column : columnInfos) {
for (ColumnConfig column : columnInfos) {
Map<String,Object> listMap = new HashMap<>(16);
// 字段描述
listMap.put("remark",column.getRemark());