修改bug
This commit is contained in:
@ -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;
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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("请先配置生成器");
|
||||||
}
|
}
|
||||||
|
@ -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> {
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
|
Reference in New Issue
Block a user