修改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 @Entity
@NoArgsConstructor @NoArgsConstructor
@Table(name = "column_config") @Table(name = "column_config")
public class ColumnInfo { public class ColumnConfig {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@ -60,7 +60,7 @@ public class ColumnInfo {
/** 日期注解 */ /** 日期注解 */
private String dateAnnotation; 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.tableName = tableName;
this.columnName = columnName; this.columnName = columnName;
this.columnType = columnType; this.columnType = columnType;

View File

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

View File

@ -1,6 +1,6 @@
package co.yixiang.service; package co.yixiang.service;
import co.yixiang.domain.ColumnInfo; import co.yixiang.domain.ColumnConfig;
import co.yixiang.domain.GenConfig; import co.yixiang.domain.GenConfig;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Async;
@ -27,7 +27,7 @@ public interface GeneratorService {
* @param name 表名 * @param name 表名
* @return / * @return /
*/ */
List<ColumnInfo> getColumns(String name); List<ColumnConfig> getColumns(String name);
/** /**
* 同步表数据 * 同步表数据
@ -35,13 +35,13 @@ public interface GeneratorService {
* @param columnInfoList * @param columnInfoList
*/ */
@Async @Async
void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList); void sync(List<ColumnConfig> columnInfos, List<ColumnConfig> columnInfoList);
/** /**
* 保持数据 * 保持数据
* @param columnInfos / * @param columnInfos /
*/ */
void save(List<ColumnInfo> columnInfos); void save(List<ColumnConfig> columnInfos);
/** /**
* 获取所有table * 获取所有table
@ -54,7 +54,7 @@ public interface GeneratorService {
* @param genConfig 配置信息 * @param genConfig 配置信息
* @param columns 字段信息 * @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 字段信息 * @param columns 字段信息
* @return / * @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 request /
* @param response / * @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 / * @param table /
* @return / * @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.ObjectUtil;
import cn.hutool.core.util.ZipUtil; import cn.hutool.core.util.ZipUtil;
import co.yixiang.common.service.impl.BaseServiceImpl; 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.domain.GenConfig;
import co.yixiang.service.mapper.ColumnInfoMapper; import co.yixiang.service.mapper.ColumnInfoMapper;
import co.yixiang.service.mapper.GenConfigMapper;
import co.yixiang.utils.GenUtil; import co.yixiang.utils.GenUtil;
import co.yixiang.domain.vo.TableInfo; import co.yixiang.domain.vo.TableInfo;
import co.yixiang.exception.BadRequestException; import co.yixiang.exception.BadRequestException;
@ -37,7 +36,7 @@ import java.util.stream.Collectors;
*/ */
@Service @Service
@SuppressWarnings({"unchecked","all"}) @SuppressWarnings({"unchecked","all"})
public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, ColumnInfo> implements GeneratorService { public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, ColumnConfig> implements GeneratorService {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
@ -75,8 +74,8 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @Override
public List<ColumnInfo> getColumns(String tableName) { public List<ColumnConfig> getColumns(String tableName) {
List<ColumnInfo> columnInfos = this.list(new QueryWrapper<ColumnInfo>() List<ColumnConfig> columnInfos = this.list(new QueryWrapper<ColumnConfig>()
.eq("table_name",tableName).orderByAsc("id")); .eq("table_name",tableName).orderByAsc("id"));
if(CollectionUtil.isNotEmpty(columnInfos)){ if(CollectionUtil.isNotEmpty(columnInfos)){
return columnInfos; return columnInfos;
@ -88,18 +87,18 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @Override
public List<ColumnInfo> query(String tableName){ public List<ColumnConfig> query(String tableName){
// 使用预编译防止sql注入 // 使用预编译防止sql注入
String sql = "select column_name, is_nullable, data_type, column_comment, column_key, extra from information_schema.columns " + 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"; "where table_name = ? and table_schema = (select database()) order by ordinal_position";
Query query = em.createNativeQuery(sql); Query query = em.createNativeQuery(sql);
query.setParameter(1,tableName); query.setParameter(1,tableName);
List result = query.getResultList(); List result = query.getResultList();
List<ColumnInfo> columnInfos = new ArrayList<>(); List<ColumnConfig> columnInfos = new ArrayList<>();
for (Object obj : result) { for (Object obj : result) {
Object[] arr = (Object[]) obj; Object[] arr = (Object[]) obj;
columnInfos.add( columnInfos.add(
new ColumnInfo( new ColumnConfig(
tableName, tableName,
arr[0].toString(), arr[0].toString(),
"NO".equals(arr[1]), "NO".equals(arr[1]),
@ -113,14 +112,14 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @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)){ if(CollectionUtil.isNotEmpty(columns)){
ColumnInfo column = columns.get(0); ColumnConfig column = columns.get(0);
column.setColumnType(columnInfo.getColumnType()); column.setColumnType(columnInfo.getColumnType());
column.setExtra(columnInfo.getExtra()); column.setExtra(columnInfo.getExtra());
column.setKeyType(columnInfo.getKeyType()); 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)){ if(CollectionUtil.isEmpty(columns)){
this.removeById(columnInfo.getId()); this.removeById(columnInfo.getId());
@ -145,12 +144,12 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @Override
public void save(List<ColumnInfo> columnInfos) { public void save(List<ColumnConfig> columnInfos) {
this.saveBatch(columnInfos); this.saveBatch(columnInfos);
} }
@Override @Override
public void generator(GenConfig genConfig, List<ColumnInfo> columns) { public void generator(GenConfig genConfig, List<ColumnConfig> columns) {
if(genConfig.getId() == null){ if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器"); throw new BadRequestException("请先配置生成器");
} }
@ -163,7 +162,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @Override
public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnInfo> columns) { public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnConfig> columns) {
if(genConfig.getId() == null){ if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器"); throw new BadRequestException("请先配置生成器");
} }
@ -172,7 +171,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
} }
@Override @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){ if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器"); throw new BadRequestException("请先配置生成器");
} }

View File

@ -1,12 +1,11 @@
package co.yixiang.service.mapper; package co.yixiang.service.mapper;
import co.yixiang.common.mapper.CoreMapper; import co.yixiang.common.mapper.CoreMapper;
import co.yixiang.domain.ColumnInfo; import co.yixiang.domain.ColumnConfig;
import co.yixiang.domain.GenConfig;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
@Repository @Repository
@Mapper @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 cn.hutool.extra.template.*;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import co.yixiang.domain.GenConfig; import co.yixiang.domain.GenConfig;
import co.yixiang.domain.ColumnInfo; import co.yixiang.domain.ColumnConfig;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.io.File; import java.io.File;
import java.io.FileWriter; import java.io.FileWriter;
@ -66,7 +66,7 @@ public class GenUtil {
return templateNames; 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); Map<String,Object> genMap = getGenMap(columns, genConfig);
List<Map<String,Object>> genList = new ArrayList<>(); List<Map<String,Object>> genList = new ArrayList<>();
// 获取后端模版 // 获取后端模版
@ -92,7 +92,7 @@ public class GenUtil {
return genList; 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; String tempPath =System.getProperty("java.io.tmpdir") + "yshop-gen-temp" + File.separator + genConfig.getTableName() + File.separator;
Map<String,Object> genMap = getGenMap(columns, genConfig); Map<String,Object> genMap = getGenMap(columns, genConfig);
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
@ -130,7 +130,7 @@ public class GenUtil {
return tempPath; 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); Map<String,Object> genMap = getGenMap(columnInfos, genConfig);
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); 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); Map<String,Object> genMap = new HashMap<>(16);
// 接口别名 // 接口别名
@ -226,7 +226,7 @@ public class GenUtil {
// 存储不为空的字段信息 // 存储不为空的字段信息
List<Map<String,Object>> isNotNullColumns = new ArrayList<>(); List<Map<String,Object>> isNotNullColumns = new ArrayList<>();
for (ColumnInfo column : columnInfos) { for (ColumnConfig column : columnInfos) {
Map<String,Object> listMap = new HashMap<>(16); Map<String,Object> listMap = new HashMap<>(16);
// 字段描述 // 字段描述
listMap.put("remark",column.getRemark()); listMap.put("remark",column.getRemark());