Revert "v2.2后端管理移除jpa,升级为mybaitisplus"

This reverts merge request !6
This commit is contained in:
xuwenbo
2020-05-18 15:39:39 +08:00
parent 911c831a2e
commit 21ea51a3ef
948 changed files with 20283 additions and 25088 deletions

View File

@ -1,30 +1,25 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.domain;
package co.yixiang.domain;
import co.yixiang.gen.utils.GenUtil;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import co.yixiang.utils.GenUtil;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
/**
* 列的数据信息
* @author Zheng Jie
* @date 2019-01-02
*/
@Data
@Entity
@NoArgsConstructor
@TableName("column_config")
public class ColumnConfig {
@Table(name = "column_config")
public class ColumnInfo {
@TableId
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
private String tableName;
@ -65,7 +60,7 @@ public class ColumnConfig {
/** 日期注解 */
private String dateAnnotation;
public ColumnConfig(String tableName, String columnName, Boolean notNull, String columnType, String remark, String keyType, String extra) {
public ColumnInfo(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,17 +1,9 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.domain;
package co.yixiang.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
/**
* 代码生成配置
@ -19,8 +11,9 @@ import lombok.NoArgsConstructor;
* @date 2019-01-03
*/
@Data
@Entity
@NoArgsConstructor
@TableName("gen_config")
@Table(name = "gen_config")
public class GenConfig {
public GenConfig(String tableName) {
@ -29,25 +22,32 @@ public class GenConfig {
this.tableName = tableName;
}
@TableId
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private Long id;
/**表明**/
@NotBlank
private String tableName;
/** 接口名称 **/
private String apiAlias;
/** 包路径 */
@NotBlank
private String pack;
/** 模块名 */
@Column(name = "module_name")
@NotBlank
private String moduleName;
/** 前端文件路径 */
@NotBlank
private String path;
/** 前端文件路径 */
@Column(name = "api_path")
private String apiPath;
/** 作者 */

View File

@ -1,12 +1,4 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.domain.vo;
package co.yixiang.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -1,12 +1,4 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.domain.vo;
package co.yixiang.domain.vo;
import lombok.AllArgsConstructor;
import lombok.Data;

View File

@ -1,33 +0,0 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖、分享、上传到码云、github等开源平台
* 一经发现盗用、分享等行为,将追究法律责任,后果自负
*/
package co.yixiang.gen.service;
import co.yixiang.gen.domain.GenConfig;
/**
* @author Zheng Jie
* @date 2019-01-14
*/
public interface GenConfigService {
/**
* 查询表配置
* @param tableName 表名
* @return 表配置
*/
GenConfig find(String tableName);
/**
* 更新表配置
* @param tableName 表名
* @param genConfig 表配置
* @return 表配置
*/
GenConfig update(String tableName, GenConfig genConfig);
}

View File

@ -1,19 +0,0 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖、分享、上传到码云、github等开源平台
* 一经发现盗用、分享等行为,将追究法律责任,后果自负
*/
package co.yixiang.gen.service.mapper;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.common.mapper.CoreMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface ColumnInfoMapper extends CoreMapper<ColumnConfig> {
}

View File

@ -1,19 +0,0 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意:
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖、分享、上传到码云、github等开源平台
* 一经发现盗用、分享等行为,将追究法律责任,后果自负
*/
package co.yixiang.gen.service.mapper;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.common.mapper.CoreMapper;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
@Repository
@Mapper
public interface GenConfigMapper extends CoreMapper<GenConfig> {
}

View File

@ -0,0 +1,19 @@
package co.yixiang.repository;
import co.yixiang.domain.ColumnInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
/**
* @author Zheng Jie
* @date 2019-01-14
*/
public interface ColumnInfoRepository extends JpaRepository<ColumnInfo,Long> {
/**
* 查询表信息
* @param tableName 表格名
* @return 表信息
*/
List<ColumnInfo> findByTableNameOrderByIdAsc(String tableName);
}

View File

@ -0,0 +1,18 @@
package co.yixiang.repository;
import co.yixiang.domain.GenConfig;
import org.springframework.data.jpa.repository.JpaRepository;
/**
* @author Zheng Jie
* @date 2019-01-14
*/
public interface GenConfigRepository extends JpaRepository<GenConfig,Long> {
/**
* 查询表配置
* @param tableName 表名
* @return /
*/
GenConfig findByTableName(String tableName);
}

View File

@ -1,15 +1,7 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.rest;
package co.yixiang.rest;
import co.yixiang.gen.service.GenConfigService;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.domain.GenConfig;
import co.yixiang.service.GenConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.HttpStatus;

View File

@ -1,16 +1,8 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.rest;
package co.yixiang.rest;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.gen.service.GenConfigService;
import co.yixiang.gen.service.GeneratorService;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.service.GenConfigService;
import co.yixiang.service.GeneratorService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import co.yixiang.exception.BadRequestException;
@ -62,13 +54,13 @@ public class GeneratorController {
@ApiOperation("查询字段数据")
@GetMapping(value = "/columns")
public ResponseEntity<Object> getTables(@RequestParam String tableName){
List<ColumnConfig> columnInfos = generatorService.getColumns(tableName);
List<ColumnInfo> columnInfos = generatorService.getColumns(tableName);
return new ResponseEntity<>(PageUtil.toPage(columnInfos,columnInfos.size()), HttpStatus.OK);
}
@ApiOperation("保存字段数据")
@PutMapping
public ResponseEntity<HttpStatus> save(@RequestBody List<ColumnConfig> columnInfos){
public ResponseEntity<HttpStatus> save(@RequestBody List<ColumnInfo> columnInfos){
generatorService.save(columnInfos);
return new ResponseEntity<>(HttpStatus.OK);
}

View File

@ -0,0 +1,25 @@
package co.yixiang.service;
import co.yixiang.domain.GenConfig;
/**
* @author Zheng Jie
* @date 2019-01-14
*/
public interface GenConfigService {
/**
* 查询表配置
* @param tableName 表名
* @return 表配置
*/
GenConfig find(String tableName);
/**
* 更新表配置
* @param tableName 表名
* @param genConfig 表配置
* @return 表配置
*/
GenConfig update(String tableName, GenConfig genConfig);
}

View File

@ -1,15 +1,7 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.service;
package co.yixiang.service;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.GenConfig;
import org.springframework.http.ResponseEntity;
import org.springframework.scheduling.annotation.Async;
import javax.servlet.http.HttpServletRequest;
@ -35,7 +27,7 @@ public interface GeneratorService {
* @param name 表名
* @return /
*/
List<ColumnConfig> getColumns(String name);
List<ColumnInfo> getColumns(String name);
/**
* 同步表数据
@ -43,13 +35,13 @@ public interface GeneratorService {
* @param columnInfoList
*/
@Async
void sync(List<ColumnConfig> columnInfos, List<ColumnConfig> columnInfoList);
void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList);
/**
* 保持数据
* @param columnInfos /
*/
void save(List<ColumnConfig> columnInfos);
void save(List<ColumnInfo> columnInfos);
/**
* 获取所有table
@ -62,7 +54,7 @@ public interface GeneratorService {
* @param genConfig 配置信息
* @param columns 字段信息
*/
void generator(GenConfig genConfig, List<ColumnConfig> columns);
void generator(GenConfig genConfig, List<ColumnInfo> columns);
/**
* 预览
@ -70,7 +62,7 @@ public interface GeneratorService {
* @param columns 字段信息
* @return /
*/
ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnConfig> columns);
ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnInfo> columns);
/**
* 打包下载
@ -79,12 +71,12 @@ public interface GeneratorService {
* @param request /
* @param response /
*/
void download(GenConfig genConfig, List<ColumnConfig> columns, HttpServletRequest request, HttpServletResponse response);
void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response);
/**
* 查询数据库的表字段数据数据
* @param table /
* @return /
*/
List<ColumnConfig> query(String table);
List<ColumnInfo> query(String table);
}

View File

@ -1,19 +1,12 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.service.impl;
package co.yixiang.service.impl;
import co.yixiang.gen.service.mapper.GenConfigMapper;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.gen.service.GenConfigService;
import co.yixiang.domain.GenConfig;
import co.yixiang.repository.GenConfigRepository;
import co.yixiang.service.GenConfigService;
import co.yixiang.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.cache.annotation.CacheConfig;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import java.io.File;
@ -22,13 +15,19 @@ import java.io.File;
* @date 2019-01-14
*/
@Service
//@CacheConfig(cacheNames = "genConfig")
public class GenConfigServiceImpl extends BaseServiceImpl<GenConfigMapper, GenConfig> implements GenConfigService {
@CacheConfig(cacheNames = "genConfig")
public class GenConfigServiceImpl implements GenConfigService {
private final GenConfigRepository genConfigRepository;
public GenConfigServiceImpl(GenConfigRepository genConfigRepository) {
this.genConfigRepository = genConfigRepository;
}
@Override
// @Cacheable(key = "#p0")
@Cacheable(key = "#p0")
public GenConfig find(String tableName) {
GenConfig genConfig = this.getOne(new QueryWrapper<GenConfig>().eq("table_name",tableName));
GenConfig genConfig = genConfigRepository.findByTableName(tableName);
if(genConfig == null){
return new GenConfig(tableName);
}
@ -36,7 +35,7 @@ public class GenConfigServiceImpl extends BaseServiceImpl<GenConfigMapper, GenCo
}
@Override
// @CachePut(key = "#p0")
@CachePut(key = "#p0")
public GenConfig update(String tableName, GenConfig genConfig) {
// 如果 api 路径为空则自动生成路径
if(StringUtils.isBlank(genConfig.getApiPath())){
@ -59,7 +58,6 @@ public class GenConfigServiceImpl extends BaseServiceImpl<GenConfigMapper, GenCo
}
genConfig.setApiPath(api.toString());
}
this.saveOrUpdate(genConfig);
return genConfig;
return genConfigRepository.save(genConfig);
}
}

View File

@ -1,28 +1,18 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.service.impl;
package co.yixiang.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.ZipUtil;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.gen.service.mapper.ColumnInfoMapper;
import co.yixiang.gen.utils.GenUtil;
import co.yixiang.common.service.impl.BaseServiceImpl;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.gen.domain.vo.TableInfo;
import co.yixiang.domain.ColumnInfo;
import co.yixiang.domain.GenConfig;
import co.yixiang.utils.GenUtil;
import co.yixiang.domain.vo.TableInfo;
import co.yixiang.exception.BadRequestException;
import co.yixiang.gen.service.GeneratorService;
import co.yixiang.repository.ColumnInfoRepository;
import co.yixiang.service.GeneratorService;
import co.yixiang.utils.FileUtil;
import co.yixiang.utils.PageUtil;
import co.yixiang.utils.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
@ -44,11 +34,16 @@ import java.util.stream.Collectors;
*/
@Service
@SuppressWarnings({"unchecked","all"})
public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, ColumnConfig> implements GeneratorService {
public class GeneratorServiceImpl implements GeneratorService {
@PersistenceContext
private EntityManager em;
private final ColumnInfoRepository columnInfoRepository;
public GeneratorServiceImpl(ColumnInfoRepository columnInfoRepository) {
this.columnInfoRepository = columnInfoRepository;
}
@Override
public Object getTables() {
@ -76,39 +71,35 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
Object[] arr = (Object[]) obj;
tableInfos.add(new TableInfo(arr[0],arr[1],arr[2],arr[3], ObjectUtil.isNotEmpty(arr[4])? arr[4] : "-"));
}
Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database()) " +
"and table_name like ? order by create_time desc");
query1.setParameter(1, StringUtils.isNotBlank(name) ? ("%" + name + "%") : "%%");
Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database())");
Object totalElements = query1.getSingleResult();
return PageUtil.toPage(tableInfos,totalElements);
}
@Override
public List<ColumnConfig> getColumns(String tableName) {
List<ColumnConfig> columnInfos = this.list(new QueryWrapper<ColumnConfig>()
.eq("table_name",tableName).orderByAsc("id"));
public List<ColumnInfo> getColumns(String tableName) {
List<ColumnInfo> columnInfos = columnInfoRepository.findByTableNameOrderByIdAsc(tableName);
if(CollectionUtil.isNotEmpty(columnInfos)){
return columnInfos;
} else {
columnInfos = query(tableName);
this.saveBatch(columnInfos);
return columnInfos;
return columnInfoRepository.saveAll(columnInfos);
}
}
@Override
public List<ColumnConfig> query(String tableName){
public List<ColumnInfo> 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<ColumnConfig> columnInfos = new ArrayList<>();
List<ColumnInfo> columnInfos = new ArrayList<>();
for (Object obj : result) {
Object[] arr = (Object[]) obj;
columnInfos.add(
new ColumnConfig(
new ColumnInfo(
tableName,
arr[0].toString(),
"NO".equals(arr[1]),
@ -122,44 +113,44 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public void sync(List<ColumnConfig> columnInfos, List<ColumnConfig> columnInfoList) {
public void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList) {
// 第一种情况数据库类字段改变或者新增字段
for (ColumnConfig columnInfo : columnInfoList) {
for (ColumnInfo columnInfo : columnInfoList) {
// 根据字段名称查找
List<ColumnConfig> columns = new ArrayList<ColumnConfig>(columnInfos.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
List<ColumnInfo> columns = new ArrayList<ColumnInfo>(columnInfos.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
// 如果能找到就修改部分可能被字段
if(CollectionUtil.isNotEmpty(columns)){
ColumnConfig column = columns.get(0);
ColumnInfo column = columns.get(0);
column.setColumnType(columnInfo.getColumnType());
column.setExtra(columnInfo.getExtra());
column.setKeyType(columnInfo.getKeyType());
if(StringUtils.isBlank(column.getRemark())){
column.setRemark(columnInfo.getRemark());
}
this.save(column);
columnInfoRepository.save(column);
} else {
// 如果找不到则保存新字段信息
this.save(columnInfo);
columnInfoRepository.save(columnInfo);
}
}
// 第二种情况数据库字段删除了
for (ColumnConfig columnInfo : columnInfos) {
for (ColumnInfo columnInfo : columnInfos) {
// 根据字段名称查找
List<ColumnConfig> columns = new ArrayList<ColumnConfig>(columnInfoList.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
List<ColumnInfo> columns = new ArrayList<ColumnInfo>(columnInfoList.stream().filter(c-> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList()));
// 如果找不到就代表字段被删除了则需要删除该字段
if(CollectionUtil.isEmpty(columns)){
this.removeById(columnInfo.getId());
columnInfoRepository.delete(columnInfo);
}
}
}
@Override
public void save(List<ColumnConfig> columnInfos) {
this.saveOrUpdateBatch(columnInfos);
public void save(List<ColumnInfo> columnInfos) {
columnInfoRepository.saveAll(columnInfos);
}
@Override
public void generator(GenConfig genConfig, List<ColumnConfig> columns) {
public void generator(GenConfig genConfig, List<ColumnInfo> columns) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}
@ -172,7 +163,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnConfig> columns) {
public ResponseEntity<Object> preview(GenConfig genConfig, List<ColumnInfo> columns) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}
@ -181,7 +172,7 @@ public class GeneratorServiceImpl extends BaseServiceImpl<ColumnInfoMapper, Colu
}
@Override
public void download(GenConfig genConfig, List<ColumnConfig> columns, HttpServletRequest request, HttpServletResponse response) {
public void download(GenConfig genConfig, List<ColumnInfo> columns, HttpServletRequest request, HttpServletResponse response) {
if(genConfig.getId() == null){
throw new BadRequestException("请先配置生成器");
}

View File

@ -1,12 +1,4 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.utils;
package co.yixiang.utils;
import org.apache.commons.configuration.*;

View File

@ -1,20 +1,10 @@
/**
* Copyright (C) 2018-2020
* All rights reserved, Designed By www.yixiang.co
* 注意
* 本软件为www.yixiang.co开发研制未经购买不得使用
* 购买后可获得全部源代码禁止转卖分享上传到码云github等开源平台
* 一经发现盗用分享等行为将追究法律责任后果自负
*/
package co.yixiang.gen.utils;
package co.yixiang.utils;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.*;
import co.yixiang.gen.domain.GenConfig;
import co.yixiang.utils.FileUtil;
import co.yixiang.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import co.yixiang.gen.domain.ColumnConfig;
import co.yixiang.domain.GenConfig;
import co.yixiang.domain.ColumnInfo;
import org.springframework.util.ObjectUtils;
import java.io.File;
import java.io.FileWriter;
@ -46,22 +36,14 @@ public class GenUtil {
*/
private static List<String> getAdminTemplateNames() {
List<String> templateNames = new ArrayList<>();
/*templateNames.add("Entity");
templateNames.add("Entity");
templateNames.add("Dto");
templateNames.add("Mapper");
templateNames.add("Controller");
templateNames.add("QueryCriteria");
templateNames.add("Service");
templateNames.add("ServiceImpl");
templateNames.add("Repository");*/
templateNames.add("EntityP");
templateNames.add("DtoP");
templateNames.add("MapperP");
templateNames.add("ControllerP");
templateNames.add("QueryCriteriaP");
templateNames.add("ServiceP");
templateNames.add("ServiceImplP");
//templateNames.add("Repository");
templateNames.add("Repository");
return templateNames;
}
@ -76,7 +58,7 @@ public class GenUtil {
return templateNames;
}
public static List<Map<String, Object>> preview(List<ColumnConfig> columns, GenConfig genConfig) {
public static List<Map<String, Object>> preview(List<ColumnInfo> columns, GenConfig genConfig) {
Map<String,Object> genMap = getGenMap(columns, genConfig);
List<Map<String,Object>> genList = new ArrayList<>();
// 获取后端模版
@ -102,7 +84,7 @@ public class GenUtil {
return genList;
}
public static String download(List<ColumnConfig> columns, GenConfig genConfig) throws IOException {
public static String download(List<ColumnInfo> 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));
@ -140,7 +122,7 @@ public class GenUtil {
return tempPath;
}
public static void generatorCode(List<ColumnConfig> columnInfos, GenConfig genConfig) throws IOException {
public static void generatorCode(List<ColumnInfo> columnInfos, GenConfig genConfig) throws IOException {
Map<String,Object> genMap = getGenMap(columnInfos, genConfig);
TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH));
// 生成后端代码
@ -179,7 +161,7 @@ public class GenUtil {
}
// 获取模版数据
private static Map<String,Object> getGenMap(List<ColumnConfig> columnInfos, GenConfig genConfig) {
private static Map<String,Object> getGenMap(List<ColumnInfo> columnInfos, GenConfig genConfig) {
// 存储模版字段数据
Map<String,Object> genMap = new HashMap<>(16);
// 接口别名
@ -209,8 +191,6 @@ public class GenUtil {
genMap.put("changeClassName", changeClassName);
// 存在 Timestamp 字段
genMap.put("hasTimestamp",false);
// 存在 Images 字段
genMap.put("hasImages",false);
// 查询类中存在 Timestamp 字段
genMap.put("queryHasTimestamp",false);
// 存在 BigDecimal 字段
@ -236,7 +216,7 @@ public class GenUtil {
// 存储不为空的字段信息
List<Map<String,Object>> isNotNullColumns = new ArrayList<>();
for (ColumnConfig column : columnInfos) {
for (ColumnInfo column : columnInfos) {
Map<String,Object> listMap = new HashMap<>(16);
// 字段描述
listMap.put("remark",column.getRemark());
@ -256,10 +236,6 @@ public class GenUtil {
// 存储大写开头的字段名
genMap.put("pkCapitalColName",capitalColumnName);
}
if("Images".equals(column.getFormType())){
// 存在 Images 字段
genMap.put("hasImages",true);
}
// 是否存在 Timestamp 类型的字段
if(TIMESTAMP.equals(colType)){
genMap.put("hasTimestamp",true);
@ -355,50 +331,30 @@ public class GenUtil {
if ("Entity".equals(templateName)) {
return packagePath + "domain" + File.separator + className + ".java";
}
if ("EntityP".equals(templateName)) {
return packagePath + "domain" + File.separator + className + ".java";
}
if ("Controller".equals(templateName)) {
return packagePath + "rest" + File.separator + className + "Controller.java";
}
if ("ControllerP".equals(templateName)) {
return packagePath + "rest" + File.separator + className + "Controller.java";
}
if ("Service".equals(templateName)) {
return packagePath + "service" + File.separator + className + "Service.java";
}
if ("ServiceP".equals(templateName)) {
return packagePath + "service" + File.separator + className + "Service.java";
}
if ("ServiceImpl".equals(templateName)) {
return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java";
}
if ("ServiceImplP".equals(templateName)) {
return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java";
}
if ("Dto".equals(templateName)) {
return packagePath + "service" + File.separator + "dto" + File.separator + className + "Dto.java";
}
if ("DtoP".equals(templateName)) {
return packagePath + "service" + File.separator + "dto" + File.separator + className + "Dto.java";
}
if ("QueryCriteria".equals(templateName)) {
return packagePath + "service" + File.separator + "dto" + File.separator + className + "QueryCriteria.java";
}
if ("QueryCriteriaP".equals(templateName)) {
return packagePath + "service" + File.separator + "dto" + File.separator + className + "QueryCriteria.java";
}
if ("Mapper".equals(templateName)) {
return packagePath + "service" + File.separator + "mapper" + File.separator + className + "Mapper.java";
}
if ("MapperP".equals(templateName)) {
return packagePath + "service" + File.separator + "mapper" + File.separator + className + "Mapper.java";
}
if ("Repository".equals(templateName)) {
return packagePath + "repository" + File.separator + className + "Repository.java";