Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot into feature/noticews
This commit is contained in:
@@ -57,8 +57,14 @@ public class GeneratorProperties {
|
|||||||
@Data
|
@Data
|
||||||
public static class TemplateConfig {
|
public static class TemplateConfig {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 模板路径 (e.g. /templates/generator/controller.java.vm)
|
||||||
|
*/
|
||||||
private String templatePath;
|
private String templatePath;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 子包名 (e.g. controller/service/mapper/model)
|
||||||
|
*/
|
||||||
private String subpackageName;
|
private String subpackageName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -74,8 +80,16 @@ public class GeneratorProperties {
|
|||||||
@Data
|
@Data
|
||||||
public static class DefaultConfig {
|
public static class DefaultConfig {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作者 (e.g. Ray)
|
||||||
|
*/
|
||||||
private String author;
|
private String author;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认模块名(e.g. system)
|
||||||
|
*/
|
||||||
|
private String moduleName;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import com.youlai.boot.config.property.GeneratorProperties;
|
|||||||
import com.youlai.boot.common.enums.LogModuleEnum;
|
import com.youlai.boot.common.enums.LogModuleEnum;
|
||||||
import com.youlai.boot.platform.generator.service.GeneratorService;
|
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.query.TablePageQuery;
|
||||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.platform.generator.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
import com.youlai.boot.platform.generator.model.vo.TablePageVO;
|
||||||
import com.youlai.boot.common.annotation.Log;
|
import com.youlai.boot.common.annotation.Log;
|
||||||
import io.swagger.v3.oas.annotations.Operation;
|
import io.swagger.v3.oas.annotations.Operation;
|
||||||
import io.swagger.v3.oas.annotations.Parameter;
|
import io.swagger.v3.oas.annotations.Parameter;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.converter;
|
package com.youlai.boot.platform.generator.converter;
|
||||||
|
|
||||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
@@ -2,18 +2,17 @@ package com.youlai.boot.platform.generator.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
import com.youlai.boot.platform.generator.model.bo.ColumnMetaData;
|
||||||
import com.youlai.boot.system.model.bo.TableMetaData;
|
import com.youlai.boot.platform.generator.model.bo.TableMetaData;
|
||||||
import com.youlai.boot.system.model.entity.Dept;
|
import com.youlai.boot.platform.generator.model.query.TablePageQuery;
|
||||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.vo.TablePageVO;
|
||||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
|
||||||
import org.apache.ibatis.annotations.Mapper;
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface DatabaseMapper extends BaseMapper<Dept> {
|
public interface DatabaseMapper extends BaseMapper {
|
||||||
|
|
||||||
|
|
||||||
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
Page<TablePageVO> getTablePage(Page<TablePageVO> page, TablePageQuery queryParams);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.model.bo;
|
package com.youlai.boot.platform.generator.model.bo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.model.bo;
|
package com.youlai.boot.platform.generator.model.bo;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.model.query;
|
package com.youlai.boot.platform.generator.model.query;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
||||||
import com.youlai.boot.common.base.BasePageQuery;
|
import com.youlai.boot.common.base.BasePageQuery;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.model.vo;
|
package com.youlai.boot.platform.generator.model.vo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.youlai.boot.system.model.vo;
|
package com.youlai.boot.platform.generator.model.vo;
|
||||||
|
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -2,9 +2,9 @@ package com.youlai.boot.platform.generator.service;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.query.TablePageQuery;
|
||||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.platform.generator.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
import com.youlai.boot.platform.generator.model.vo.TablePageVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
|||||||
@@ -19,17 +19,17 @@ import com.youlai.boot.config.property.GeneratorProperties;
|
|||||||
import com.youlai.boot.platform.generator.service.GenConfigService;
|
import com.youlai.boot.platform.generator.service.GenConfigService;
|
||||||
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
import com.youlai.boot.platform.generator.service.GenFieldConfigService;
|
||||||
import com.youlai.boot.platform.generator.service.GeneratorService;
|
import com.youlai.boot.platform.generator.service.GeneratorService;
|
||||||
import com.youlai.boot.system.converter.GenConfigConverter;
|
import com.youlai.boot.platform.generator.converter.GenConfigConverter;
|
||||||
import com.youlai.boot.common.exception.BusinessException;
|
import com.youlai.boot.common.exception.BusinessException;
|
||||||
import com.youlai.boot.platform.generator.mapper.DatabaseMapper;
|
import com.youlai.boot.platform.generator.mapper.DatabaseMapper;
|
||||||
import com.youlai.boot.system.model.bo.ColumnMetaData;
|
import com.youlai.boot.platform.generator.model.bo.ColumnMetaData;
|
||||||
import com.youlai.boot.system.model.bo.TableMetaData;
|
import com.youlai.boot.platform.generator.model.bo.TableMetaData;
|
||||||
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenConfig;
|
||||||
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
import com.youlai.boot.platform.generator.model.entity.GenFieldConfig;
|
||||||
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
import com.youlai.boot.platform.generator.model.form.GenConfigForm;
|
||||||
import com.youlai.boot.system.model.query.TablePageQuery;
|
import com.youlai.boot.platform.generator.model.query.TablePageQuery;
|
||||||
import com.youlai.boot.system.model.vo.GeneratorPreviewVO;
|
import com.youlai.boot.platform.generator.model.vo.GeneratorPreviewVO;
|
||||||
import com.youlai.boot.system.model.vo.TablePageVO;
|
import com.youlai.boot.platform.generator.model.vo.TablePageVO;
|
||||||
import com.youlai.boot.system.service.MenuService;
|
import com.youlai.boot.system.service.MenuService;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
@@ -42,7 +42,6 @@ import java.nio.charset.StandardCharsets;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.zip.ZipOutputStream;
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据库服务实现类
|
* 数据库服务实现类
|
||||||
*
|
*
|
||||||
@@ -112,12 +111,9 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0]));
|
String entityName = StrUtil.toCamelCase(StrUtil.removePrefix(tableName, tableName.split("_")[0]));
|
||||||
genConfig.setEntityName(entityName);
|
genConfig.setEntityName(entityName);
|
||||||
|
|
||||||
String packageName = YouLaiApplication.class.getPackageName();
|
genConfig.setPackageName(YouLaiApplication.class.getPackageName());
|
||||||
genConfig.setPackageName(StrUtil.subBefore(packageName, ".", true));
|
genConfig.setModuleName(generatorProperties.getDefaultConfig().getModuleName()); // 默认模块名
|
||||||
genConfig.setModuleName(StrUtil.subAfter(packageName, ".", true));
|
|
||||||
|
|
||||||
genConfig.setAuthor(generatorProperties.getDefaultConfig().getAuthor());
|
genConfig.setAuthor(generatorProperties.getDefaultConfig().getAuthor());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据表的列 + 已经存在的字段生成配置 得到 组合后的字段生成配置
|
// 根据表的列 + 已经存在的字段生成配置 得到 组合后的字段生成配置
|
||||||
@@ -229,7 +225,6 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
* 删除代码生成配置
|
* 删除代码生成配置
|
||||||
*
|
*
|
||||||
* @param tableName 表名
|
* @param tableName 表名
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void deleteGenConfig(String tableName) {
|
public void deleteGenConfig(String tableName) {
|
||||||
@@ -261,14 +256,18 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
GenConfig genConfig = genConfigService.getOne(new LambdaQueryWrapper<GenConfig>()
|
GenConfig genConfig = genConfigService.getOne(new LambdaQueryWrapper<GenConfig>()
|
||||||
.eq(GenConfig::getTableName, tableName)
|
.eq(GenConfig::getTableName, tableName)
|
||||||
);
|
);
|
||||||
Assert.isTrue(genConfig != null, "未找到表生成配置");
|
if (genConfig == null) {
|
||||||
|
throw new BusinessException("未找到表生成配置");
|
||||||
|
}
|
||||||
|
|
||||||
List<GenFieldConfig> fieldConfigs = genFieldConfigService.list(new LambdaQueryWrapper<GenFieldConfig>()
|
List<GenFieldConfig> fieldConfigs = genFieldConfigService.list(new LambdaQueryWrapper<GenFieldConfig>()
|
||||||
.eq(GenFieldConfig::getConfigId, genConfig.getId())
|
.eq(GenFieldConfig::getConfigId, genConfig.getId())
|
||||||
.orderByAsc(GenFieldConfig::getFieldSort)
|
.orderByAsc(GenFieldConfig::getFieldSort)
|
||||||
|
|
||||||
);
|
);
|
||||||
Assert.isTrue(CollectionUtil.isNotEmpty(fieldConfigs), "未找到字段生成配置");
|
if (CollectionUtil.isEmpty(fieldConfigs)) {
|
||||||
|
throw new BusinessException("未找到字段生成配置");
|
||||||
|
}
|
||||||
|
|
||||||
// 遍历模板配置
|
// 遍历模板配置
|
||||||
Map<String, GeneratorProperties.TemplateConfig> templateConfigs = generatorProperties.getTemplateConfigs();
|
Map<String, GeneratorProperties.TemplateConfig> templateConfigs = generatorProperties.getTemplateConfigs();
|
||||||
@@ -290,22 +289,21 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
previewVO.setFileName(fileName);
|
previewVO.setFileName(fileName);
|
||||||
|
|
||||||
/* 2. 生成文件路径 */
|
/* 2. 生成文件路径 */
|
||||||
// com.youlai
|
// 包名:com.youlai.boot
|
||||||
String packageName = genConfig.getPackageName();
|
String packageName = genConfig.getPackageName();
|
||||||
// system
|
// 模块名:system
|
||||||
String moduleName = genConfig.getModuleName();
|
String moduleName = genConfig.getModuleName();
|
||||||
// controller
|
// 子包名:controller
|
||||||
String subpackageName = templateConfig.getSubpackageName();
|
String subpackageName = templateConfig.getSubpackageName();
|
||||||
// 文件路径 src/main/java/com/youlai/system/controller
|
// 组合成文件路径:src/main/java/com/youlai/boot/system/controller
|
||||||
String filePath = getFilePath(templateName, moduleName, packageName, subpackageName, entityName);
|
String filePath = getFilePath(templateName, moduleName, packageName, subpackageName, entityName);
|
||||||
previewVO.setPath(filePath);
|
previewVO.setPath(filePath);
|
||||||
|
|
||||||
/* 3. 生成文件内容 */
|
/* 3. 生成文件内容 */
|
||||||
|
// 将模板文件中的变量替换为具体的值 生成代码内容
|
||||||
String content = getCodeContent(templateConfig, genConfig, fieldConfigs);
|
String content = getCodeContent(templateConfig, genConfig, fieldConfigs);
|
||||||
previewVO.setContent(content);
|
previewVO.setContent(content);
|
||||||
|
|
||||||
|
|
||||||
list.add(previewVO);
|
list.add(previewVO);
|
||||||
}
|
}
|
||||||
return list;
|
return list;
|
||||||
@@ -400,7 +398,7 @@ public class GeneratorServiceImpl implements GeneratorService {
|
|||||||
bindMap.put("tableName", genConfig.getTableName());
|
bindMap.put("tableName", genConfig.getTableName());
|
||||||
bindMap.put("author", genConfig.getAuthor());
|
bindMap.put("author", genConfig.getAuthor());
|
||||||
bindMap.put("lowerFirstEntityName", StrUtil.lowerFirst(entityName)); // UserTest → userTest
|
bindMap.put("lowerFirstEntityName", StrUtil.lowerFirst(entityName)); // UserTest → userTest
|
||||||
bindMap.put("kebabCaseEntityName", StrUtil.toSymbolCase(entityName,'-')); // UserTest → user-test
|
bindMap.put("kebabCaseEntityName", StrUtil.toSymbolCase(entityName, '-')); // UserTest → user-test
|
||||||
bindMap.put("businessName", genConfig.getBusinessName());
|
bindMap.put("businessName", genConfig.getBusinessName());
|
||||||
bindMap.put("fieldConfigs", fieldConfigs);
|
bindMap.put("fieldConfigs", fieldConfigs);
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
|
server:
|
||||||
|
port: 8989
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
jackson:
|
jackson:
|
||||||
|
|||||||
@@ -1,3 +1,6 @@
|
|||||||
|
server:
|
||||||
|
port: 8989
|
||||||
|
|
||||||
spring:
|
spring:
|
||||||
jackson:
|
jackson:
|
||||||
## 默认序列化时间格式
|
## 默认序列化时间格式
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
server:
|
|
||||||
port: 8989
|
|
||||||
spring:
|
spring:
|
||||||
main:
|
|
||||||
allow-circular-references: true
|
|
||||||
application:
|
application:
|
||||||
name: youlai-boot
|
name: youlai-boot
|
||||||
profiles:
|
profiles:
|
||||||
@@ -19,6 +15,7 @@ generator:
|
|||||||
# 默认配置
|
# 默认配置
|
||||||
defaultConfig:
|
defaultConfig:
|
||||||
author: youlaitech
|
author: youlaitech
|
||||||
|
moduleName: system
|
||||||
# 排除数据表
|
# 排除数据表
|
||||||
excludeTables:
|
excludeTables:
|
||||||
- gen_config
|
- gen_config
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<mapper namespace="com.youlai.boot.platform.generator.mapper.DatabaseMapper">
|
<mapper namespace="com.youlai.boot.platform.generator.mapper.DatabaseMapper">
|
||||||
|
|
||||||
<!-- 查询数据库表分页 -->
|
<!-- 查询数据库表分页 -->
|
||||||
<select id="getTablePage" resultType="com.youlai.boot.system.model.vo.TablePageVO">
|
<select id="getTablePage" resultType="com.youlai.boot.platform.generator.model.vo.TablePageVO">
|
||||||
SELECT
|
SELECT
|
||||||
t1.TABLE_NAME ,
|
t1.TABLE_NAME ,
|
||||||
t1.TABLE_COMMENT ,
|
t1.TABLE_COMMENT ,
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
CREATE_TIME DESC
|
CREATE_TIME DESC
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getTableMetadata" resultType="com.youlai.boot.system.model.bo.TableMetaData">
|
<select id="getTableMetadata" resultType="com.youlai.boot.platform.generator.model.bo.TableMetaData">
|
||||||
SELECT
|
SELECT
|
||||||
TABLE_NAME ,
|
TABLE_NAME ,
|
||||||
TABLE_COMMENT ,
|
TABLE_COMMENT ,
|
||||||
@@ -47,7 +47,7 @@
|
|||||||
AND TABLE_NAME = #{tableName}
|
AND TABLE_NAME = #{tableName}
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="getTableColumns" resultType="com.youlai.boot.system.model.bo.ColumnMetaData">
|
<select id="getTableColumns" resultType="com.youlai.boot.platform.generator.model.bo.ColumnMetaData">
|
||||||
SELECT
|
SELECT
|
||||||
COLUMN_NAME,
|
COLUMN_NAME,
|
||||||
DATA_TYPE,
|
DATA_TYPE,
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ export default ${entityName}API;
|
|||||||
/** ${businessName}分页查询参数 */
|
/** ${businessName}分页查询参数 */
|
||||||
export interface ${entityName}PageQuery extends PageQuery {
|
export interface ${entityName}PageQuery extends PageQuery {
|
||||||
#foreach($fieldConfig in $fieldConfigs)
|
#foreach($fieldConfig in $fieldConfigs)
|
||||||
#if($fieldConfig.isShowInList)
|
#if($fieldConfig.isShowInQuery)
|
||||||
#if("$!fieldConfig.fieldComment" != "")
|
#if("$!fieldConfig.fieldComment" != "")
|
||||||
/** ${fieldConfig.fieldComment} */
|
/** ${fieldConfig.fieldComment} */
|
||||||
#end
|
#end
|
||||||
|
|||||||
Reference in New Issue
Block a user