Merge branch 'master' of https://gitee.com/youlaiorg/youlai-boot into feature/noticews

This commit is contained in:
胡少翔
2024-09-05 09:46:15 +08:00
16 changed files with 61 additions and 49 deletions

View File

@@ -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;
} }

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,4 +1,5 @@
server:
port: 8989
spring: spring:
jackson: jackson:

View File

@@ -1,3 +1,6 @@
server:
port: 8989
spring: spring:
jackson: jackson:
## 默认序列化时间格式 ## 默认序列化时间格式

View File

@@ -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

View File

@@ -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,

View File

@@ -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