From 755e5fa5e5e93b9a0cf3b4fd37f6092d3e0f27f0 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 22 Jul 2025 21:26:13 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BF=AE=E6=94=B9=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E7=94=9F=E6=88=90=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/common/model/common/BasePageDto.java | 16 ++++++ .../com/auth/common/model/common/BaseVo.java | 1 + .../java/com/auth/model/base/dto/DictDto.java | 9 ++-- .../core/dialect/DatabaseDialect.java | 14 +++++ .../generator/core/dialect/MySqlDialect.java | 46 ++++++++++++++++ .../provider/DatabaseMetadataProvider.java | 13 ++--- .../core/provider/SqlMetadataProvider.java | 11 ++-- .../template/VmsTBaseTemplateGenerator.java | 6 +-- .../helper/VmsGeneratorPathHelper.java | 50 ++++++------------ .../utils/CamelCaseNameConvertUtil.java | 29 +++++++++++ .../generator/utils/MysqlTypeConvertUtil.java | 52 ------------------- .../vms/server/controller/controller.java.vm | 27 ++++------ .../vms/server/model/dto/dto.java.vm | 9 ++-- .../server/service/impl/serviceImpl.java.vm | 8 +-- .../vms/server/service/service.java.vm | 8 +-- .../src/main/resources/vms/web/api/api.ts.vm | 24 +++++---- .../main/resources/vms/web/store/store.ts.vm | 45 +++++++++------- .../vms/web/types/$className/types.ts.vm | 45 +++++++++++++--- .../views/$className/components/dialog.vue.vm | 26 +++++----- .../vms/web/views/$className/index.vue.vm | 43 +++++++++------ .../web/views/$className/utils/columns.tsx.vm | 17 +++--- .../web/views/$className/utils/hook.tsx.vm | 36 ++++++++----- .../base/controller/DictController.java | 14 ++--- 23 files changed, 317 insertions(+), 232 deletions(-) create mode 100644 auth-common/src/main/java/com/auth/common/model/common/BasePageDto.java create mode 100644 auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/CamelCaseNameConvertUtil.java delete mode 100644 auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/MysqlTypeConvertUtil.java diff --git a/auth-common/src/main/java/com/auth/common/model/common/BasePageDto.java b/auth-common/src/main/java/com/auth/common/model/common/BasePageDto.java new file mode 100644 index 0000000..4511cf0 --- /dev/null +++ b/auth-common/src/main/java/com/auth/common/model/common/BasePageDto.java @@ -0,0 +1,16 @@ +package com.auth.common.model.common; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(name = "BaseDto", title = "基础分页请求") +public class BasePageDto { + + @Schema(name = "pageIndex", title = "当前页") + private Integer pageIndex; + + @Schema(name = "pageSize", title = "分页大小") + private Integer pageSize; + +} diff --git a/auth-common/src/main/java/com/auth/common/model/common/BaseVo.java b/auth-common/src/main/java/com/auth/common/model/common/BaseVo.java index 92e5b0a..28398d1 100644 --- a/auth-common/src/main/java/com/auth/common/model/common/BaseVo.java +++ b/auth-common/src/main/java/com/auth/common/model/common/BaseVo.java @@ -6,6 +6,7 @@ import lombok.Data; import java.time.LocalDateTime; @Data +@Schema(name = "BaseVo", title = "基础返回数据") public class BaseVo { @Schema(name = "createTime", title = "创建时间") diff --git a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java index cccfe0c..3cf327b 100644 --- a/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java +++ b/auth-model/model-base/src/main/java/com/auth/model/base/dto/DictDto.java @@ -1,17 +1,16 @@ package com.auth.model.base.dto; +import com.auth.common.model.common.BasePageDto; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; +@EqualsAndHashCode(callSuper = true) @Data @AllArgsConstructor @NoArgsConstructor @Builder @Schema(name = "DictDTO-系统数据字典传输", title = "系统数据字典", description = "系统数据字典的DTO对象") -public class DictDto { +public class DictDto extends BasePageDto { @Schema(name = "dictType", title = "字典类型") private String dictType; diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/DatabaseDialect.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/DatabaseDialect.java index 1cdf905..2a6af4a 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/DatabaseDialect.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/DatabaseDialect.java @@ -7,6 +7,13 @@ import java.util.List; */ public interface DatabaseDialect { + /** + * 将数据库类型转换为Java类型 + * + * @param columnType 数据库中的列类型 + */ + String convertToJavaType(String columnType); + /** * 提取表注释 * @@ -23,4 +30,11 @@ public interface DatabaseDialect { */ String extractColumnComment(List columnSpecs); + /** + * 将数据库类型转换为JavaScript类型 + * + * @param columnType 数据库中的列类型 + */ + String convertToJavaScriptType(String columnType); + } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java index b34c0c0..912211e 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/dialect/MySqlDialect.java @@ -1,6 +1,7 @@ package com.auth.module.generator.core.dialect; import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; import java.util.List; import java.util.regex.Matcher; @@ -34,4 +35,49 @@ public class MySqlDialect implements DatabaseDialect { Matcher columnSpecsStringMatcher = Pattern.compile("COMMENT\\s*'(.*?)'", Pattern.CASE_INSENSITIVE).matcher(columnSpecsString); return columnSpecsStringMatcher.find() ? columnSpecsStringMatcher.group(1) : null; } + + /** + * 将数据库类型转换为Java类型 + * + * @param columnType 数据库中的列类型 + */ + @Override + public String convertToJavaType(String columnType) { + if (columnType == null) return "Object"; + + columnType = columnType.toLowerCase(); + return switch (columnType) { + case "varchar", "char", "text", "longtext", "mediumtext", "tinytext" -> "String"; + case "int", "integer", "tinyint", "smallint" -> "Integer"; + case "bigint" -> "Long"; + case "decimal", "numeric" -> "BigDecimal"; + case "float" -> "Float"; + case "double" -> "Double"; + case "boolean", "bit", "tinyint unsigned" -> "Boolean"; + case "date", "year" -> "Date"; + case "time" -> "Time"; + case "datetime", "timestamp" -> "LocalDateTime"; + case "blob", "longblob", "mediumblob", "tinyblob" -> "byte[]"; + default -> "Object"; + }; + } + + /** + * 将数据库类型转换为JavaScript类型 + * + * @param columnType 数据库中的列类型 + */ + @Override + public String convertToJavaScriptType(String columnType) { + if (columnType == null || columnType.equals("object")) return "any"; + + columnType = StringUtils.uncapitalize(columnType); + + return switch (columnType) { + case "double", "int", "long", "integer", "float", "decimal" -> "number"; + case "localDateTime", "date" -> "string"; + default -> columnType; + }; + } + } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/DatabaseMetadataProvider.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/DatabaseMetadataProvider.java index a03826b..65aa851 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/DatabaseMetadataProvider.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/DatabaseMetadataProvider.java @@ -1,17 +1,17 @@ package com.auth.module.generator.core.provider; +import com.auth.module.generator.core.dialect.DatabaseDialect; import com.auth.module.generator.exception.GeneratorCodeException; import com.auth.module.generator.exception.MetadataNotFoundException; import com.auth.module.generator.exception.MetadataProviderException; import com.auth.module.generator.model.entity.ColumnMetaData; import com.auth.module.generator.model.entity.DatabaseInfoMetaData; import com.auth.module.generator.model.entity.TableMetaData; -import com.auth.module.generator.utils.MysqlTypeConvertUtil; +import com.auth.module.generator.utils.CamelCaseNameConvertUtil; import com.zaxxer.hikari.HikariDataSource; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -29,6 +29,7 @@ import java.util.stream.Collectors; public class DatabaseMetadataProvider implements IMetadataProvider { private final HikariDataSource dataSource; + private final DatabaseDialect dialect; @Value("${bunny.master.database}") private String currentDatabase; @@ -127,11 +128,11 @@ public class DatabaseMetadataProvider implements IMetadataProvider { ColumnMetaData column = new ColumnMetaData(); column.setColumnName(columnName); - column.setLowercaseName(MysqlTypeConvertUtil.convertToCamelCase(columnName, false)); - column.setUppercaseName(MysqlTypeConvertUtil.convertToCamelCase(columnName, true)); + column.setLowercaseName(CamelCaseNameConvertUtil.convertToCamelCase(columnName, false)); + column.setUppercaseName(CamelCaseNameConvertUtil.convertToCamelCase(columnName, true)); column.setJdbcType(typeName); - column.setJavaType(MysqlTypeConvertUtil.convertToJavaType(typeName)); - column.setJavascriptType(StringUtils.uncapitalize(column.getJavaType())); + column.setJavaType(dialect.convertToJavaType(typeName)); + column.setJavascriptType(dialect.convertToJavaScriptType(column.getJavaType())); column.setComment(columnsRs.getString("REMARKS")); column.setIsPrimaryKey(primaryKeys.contains(columnName)); diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/SqlMetadataProvider.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/SqlMetadataProvider.java index a4597d0..0b4e662 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/SqlMetadataProvider.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/provider/SqlMetadataProvider.java @@ -6,14 +6,13 @@ import com.auth.module.generator.exception.GeneratorCodeException; import com.auth.module.generator.exception.SqlParseException; import com.auth.module.generator.model.entity.ColumnMetaData; import com.auth.module.generator.model.entity.TableMetaData; -import com.auth.module.generator.utils.MysqlTypeConvertUtil; +import com.auth.module.generator.utils.CamelCaseNameConvertUtil; import lombok.RequiredArgsConstructor; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.Statement; import net.sf.jsqlparser.statement.create.table.CreateTable; import org.springframework.stereotype.Component; -import org.springframework.util.StringUtils; import java.util.List; @@ -94,18 +93,18 @@ public class SqlMetadataProvider implements IMetadataProvider { columnInfo.setJdbcType(dataType); // 设置 Java 类型 - String javaType = MysqlTypeConvertUtil.convertToJavaType(dataType.contains("varchar") ? "varchar" : dataType); + String javaType = dialect.convertToJavaType(dataType.contains("varchar") ? "varchar" : dataType); columnInfo.setJavaType(javaType); // 设置 JavaScript 类型 - columnInfo.setJavascriptType(StringUtils.uncapitalize(javaType)); + columnInfo.setJavascriptType(dialect.convertToJavaScriptType(javaType)); // 列字段转成 下划线 -> 小驼峰 - String lowercaseName = MysqlTypeConvertUtil.convertToCamelCase(columnName, false); + String lowercaseName = CamelCaseNameConvertUtil.convertToCamelCase(columnName, false); columnInfo.setLowercaseName(lowercaseName); // 列字段转成 下划线 -> 大驼峰名称 - String uppercaseName = MysqlTypeConvertUtil.convertToCamelCase(columnName, true); + String uppercaseName = CamelCaseNameConvertUtil.convertToCamelCase(columnName, true); columnInfo.setUppercaseName(uppercaseName); // 解析注释 diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/template/VmsTBaseTemplateGenerator.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/template/VmsTBaseTemplateGenerator.java index 18ba01e..fdd2493 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/template/VmsTBaseTemplateGenerator.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/core/template/VmsTBaseTemplateGenerator.java @@ -2,7 +2,7 @@ package com.auth.module.generator.core.template; import com.auth.module.generator.model.dto.VmsArgumentDto; import com.auth.module.generator.model.entity.TableMetaData; -import com.auth.module.generator.utils.MysqlTypeConvertUtil; +import com.auth.module.generator.utils.CamelCaseNameConvertUtil; import com.google.common.base.CaseFormat; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; @@ -78,11 +78,11 @@ public class VmsTBaseTemplateGenerator extends AbstractTemplateGenerator { context.put("package", dto.getPackageName()); // 将类名称转成小驼峰 - String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(cleanTableName, false); + String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(cleanTableName, false); context.put("classLowercaseName", lowerCamelCase); // 将类名称转成大驼峰 - String upperCameCase = MysqlTypeConvertUtil.convertToCamelCase(cleanTableName, true); + String upperCameCase = CamelCaseNameConvertUtil.convertToCamelCase(cleanTableName, true); context.put("classUppercaseName", upperCameCase); // 添加中划线 diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/service/helper/VmsGeneratorPathHelper.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/service/helper/VmsGeneratorPathHelper.java index 3c60c8b..0d8bcac 100644 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/service/helper/VmsGeneratorPathHelper.java +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/service/helper/VmsGeneratorPathHelper.java @@ -1,24 +1,12 @@ package com.auth.module.generator.service.helper; -import com.auth.module.generator.utils.MysqlTypeConvertUtil; +import com.auth.module.generator.utils.CamelCaseNameConvertUtil; import com.google.common.base.CaseFormat; -import java.util.Map; - /** * 代码生成工具类 */ public class VmsGeneratorPathHelper { - private static final Map FILE_TYPE_SUFFIXES = Map.of( - "controller", "Controller", - "service", "Service", - "serviceImpl", "ServiceImpl", - "mapper", "Mapper", - "resourceMapper", "Mapper", - "dto", "Dto", - "entity", "Entity", - "vo", "Vo" - ); /** * 处理模板文件路径和命名 @@ -28,7 +16,7 @@ public class VmsGeneratorPathHelper { * @return 处理后的文件路径 */ public static String processVmPath(String path, String tableName) { - String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, false); + String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, false); if (lowerCamelCase != null) { String[] pathParts = path.replace("$className", lowerCamelCase).split("/"); @@ -53,29 +41,23 @@ public class VmsGeneratorPathHelper { String baseName = parts[0]; String extension = parts.length > 1 ? parts[1] : ""; - String upperCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, true); - String lowerCamelCase = MysqlTypeConvertUtil.convertToCamelCase(tableName, false); + String upperCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, true); + String lowerCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(tableName, false); - // ========================== - // 💡Java - // 如果包含Java和xml需要进行处理 - // ========================== - if (filename.contains("java") || filename.contains("xml")) { - return upperCamelCase + FILE_TYPE_SUFFIXES.getOrDefault(baseName, "") + "." + extension; + // 💡含Java和xml需要进行处理 + if (filename.contains(".java") || filename.contains(".xml")) { + String toUpperCamelCase = CamelCaseNameConvertUtil.convertToCamelCase(baseName, true); + return upperCamelCase + toUpperCamelCase + "." + extension; } - // ========================== - // 💡前端 - // 前端配置 - // ========================== - if (filename.equals("api.ts") || filename.equals("store.ts")) { - return lowerCamelCase + ".ts"; - } + // 💡前端配置 + return switch (filename) { + case "api.ts", "store.ts" -> lowerCamelCase + ".ts"; + case "types.ts" -> lowerCamelCase + "DataType.ts"; + case "dialog.vue" -> CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, lowerCamelCase) + "-dialog.vue"; + case "columns.tsx" -> lowerCamelCase + "-columns.tsx"; + default -> filename; + }; - if (filename.equals("dialog.vue")) { - return CaseFormat.LOWER_CAMEL.to(CaseFormat.LOWER_HYPHEN, lowerCamelCase) + "-dialog.vue"; - } - - return filename; } } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/CamelCaseNameConvertUtil.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/CamelCaseNameConvertUtil.java new file mode 100644 index 0000000..8d7b0d1 --- /dev/null +++ b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/CamelCaseNameConvertUtil.java @@ -0,0 +1,29 @@ +package com.auth.module.generator.utils; + +import com.google.common.base.CaseFormat; +import org.assertj.core.util.introspection.CaseFormatUtils; + +/* 类型转换,数据库转Java类型等 */ +public class CamelCaseNameConvertUtil { + + /** + * 下划线命名转驼峰命名 + * + * @param name 原始名称,传入的值可以是 + * `xxx_xxx` `CaseFormat` + * `caseFormat` + * @param firstLetterCapital 首字母是否大写 + */ + public static String convertToCamelCase(String name, boolean firstLetterCapital) { + if (name == null || name.isEmpty()) return name; + + // 转成小驼峰 + String lowerCamelCase = CaseFormatUtils.toCamelCase(name); + + // 首字母不大写 + if (!firstLetterCapital) return lowerCamelCase; + + // 将小驼峰转成大驼峰 + return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, lowerCamelCase); + } +} diff --git a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/MysqlTypeConvertUtil.java b/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/MysqlTypeConvertUtil.java deleted file mode 100644 index 519c69d..0000000 --- a/auth-module/module-generator-code/src/main/java/com/auth/module/generator/utils/MysqlTypeConvertUtil.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.auth.module.generator.utils; - -import com.google.common.base.CaseFormat; -import org.assertj.core.util.introspection.CaseFormatUtils; - -/* 类型转换,数据库转Java类型等 */ -public class MysqlTypeConvertUtil { - - /** - * 将数据库类型转换为Java类型 - */ - public static String convertToJavaType(String columnType) { - if (columnType == null) return "Object"; - - columnType = columnType.toLowerCase(); - return switch (columnType) { - case "varchar", "char", "text", "longtext", "mediumtext", "tinytext" -> "String"; - case "int", "integer", "tinyint", "smallint" -> "Integer"; - case "bigint" -> "Long"; - case "decimal", "numeric" -> "BigDecimal"; - case "float" -> "Float"; - case "double" -> "Double"; - case "boolean", "bit", "tinyint unsigned" -> "Boolean"; - case "date", "year" -> "Date"; - case "time" -> "Time"; - case "datetime", "timestamp" -> "LocalDateTime"; - case "blob", "longblob", "mediumblob", "tinyblob" -> "byte[]"; - default -> "Object"; - }; - } - - /** - * 下划线命名转驼峰命名 - * - * @param name 原始名称,传入的值可以是 - * `xxx_xxx` `CaseFormat` - * `caseFormat` - * @param firstLetterCapital 首字母是否大写 - */ - public static String convertToCamelCase(String name, boolean firstLetterCapital) { - if (name == null || name.isEmpty()) return name; - - // 转成小驼峰 - String lowerCamelCase = CaseFormatUtils.toCamelCase(name); - - // 首字母不大写 - if (!firstLetterCapital) return lowerCamelCase; - - // 将小驼峰转成大驼峰 - return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, lowerCamelCase); - } -} diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/controller/controller.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/controller/controller.java.vm index b532e7b..6683bdd 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/controller/controller.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/controller/controller.java.vm @@ -35,44 +35,39 @@ public class ${classUppercaseName}Controller { private final ${classUppercaseName}Service ${classLowercaseName}Service; @Operation(summary = "分页查询${comment}", description = "分页查询${comment}") - @GetMapping("{page}/{limit}") - public Result> get${classUppercaseName}Page( - @Parameter(name = "page", description = "当前页", required = true) - @PathVariable("page") Integer page, - @Parameter(name = "limit", description = "每页记录数", required = true) - @PathVariable("limit") Integer limit, - ${classUppercaseName}Dto dto) { - Page<${classUppercaseName}Entity> pageParams = new Page<>(page, limit); + @GetMapping() + public Result> get${classUppercaseName}Page(${classUppercaseName}Dto dto) { + Page<${classUppercaseName}Entity> pageParams = new Page<>(dto.getPageIndex(), dto.getPageSize()); PageResult<${classUppercaseName}Vo> pageResult = ${classLowercaseName}Service.get${classUppercaseName}Page(pageParams, dto); return Result.success(pageResult); } @Operation(summary = "根据id查询${comment}详情", description = "根据id查询${comment}详情") @GetMapping("{id}") - public Result<${classUppercaseName}Vo> get${classUppercaseName}ById(@PathVariable("id") Long id) { - ${classUppercaseName}Vo ${classLowercaseName}Vo = ${classLowercaseName}Service.get${classUppercaseName}ById(id); + public Result<${classUppercaseName}Vo> getById(@PathVariable("id") Long id) { + ${classUppercaseName}Vo ${classLowercaseName}Vo = ${classLowercaseName}Service.getById(id); return Result.success(${classLowercaseName}Vo); } @Operation(summary = "添加${comment}", description = "添加${comment}") @PostMapping() - public Result add${classUppercaseName}(@Valid @RequestBody ${classUppercaseName}Dto dto) { - ${classLowercaseName}Service.add${classUppercaseName}(dto); + public Result create(@Valid @RequestBody ${classUppercaseName}Dto dto) { + ${classLowercaseName}Service.create(dto); return Result.success(ResultCodeEnum.ADD_SUCCESS); } @Operation(summary = "更新${comment}", description = "更新${comment}") @PutMapping() - public Result update${classUppercaseName}(@Valid @RequestBody ${classUppercaseName}Dto dto) { - ${classLowercaseName}Service.update${classUppercaseName}(dto); + public Result update(@Valid @RequestBody ${classUppercaseName}Dto dto) { + ${classLowercaseName}Service.update(dto); return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } @Operation(summary = "删除${comment}", description = "删除${comment}") @DeleteMapping() - public Result delete${classUppercaseName}(@RequestBody List ids) { - ${classLowercaseName}Service.delete${classUppercaseName}(ids); + public Result batchDelete(@RequestBody List ids) { + ${classLowercaseName}Service.batchDelete(ids); return Result.success(ResultCodeEnum.DELETE_SUCCESS); } } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm index a38dab8..bed927d 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/model/dto/dto.java.vm @@ -1,19 +1,18 @@ import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; +import lombok.*; +import com.auth.common.model.common.BasePageDto; import java.time.LocalDateTime; import java.math.BigDecimal; import java.util.Date; +@EqualsAndHashCode(callSuper = true) @Data @AllArgsConstructor @NoArgsConstructor @Builder @Schema(name = "${classUppercaseName}DTO-${comment}传输对象", title = "${comment}", description = "${comment}的DTO对象") -public class ${classUppercaseName}Dto { +public class ${classUppercaseName}Dto extends BasePageDto{ #foreach($field in ${columnInfoList}) @Schema(name = "${field.lowercaseName}", title = "${field.comment}") diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/service/impl/serviceImpl.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/service/impl/serviceImpl.java.vm index 33a0558..99c5184 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/service/impl/serviceImpl.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/service/impl/serviceImpl.java.vm @@ -54,7 +54,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca * @param id 主键 * @return ${comment}详情 ${classUppercaseName}Vo} */ - public ${classUppercaseName}Vo get${classUppercaseName}ById(Long id){ + public ${classUppercaseName}Vo getById(Long id){ ${classUppercaseName}Entity ${classLowercaseName}Entity = getById(id); ${classUppercaseName}Vo ${classLowercaseName}Vo = new ${classUppercaseName}Vo(); @@ -69,7 +69,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca * @param dto ${comment}添加 */ @Override - public void add${classUppercaseName}(${classUppercaseName}Dto dto) { + public void create(${classUppercaseName}Dto dto) { ${classUppercaseName}Entity ${classLowercaseName} = new ${classUppercaseName}Entity(); BeanUtils.copyProperties(dto, ${classLowercaseName}); @@ -82,7 +82,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca * @param dto ${comment}更新 */ @Override - public void update${classUppercaseName}(${classUppercaseName}Dto dto) { + public void update(${classUppercaseName}Dto dto) { ${classUppercaseName}Entity ${classLowercaseName} = new ${classUppercaseName}Entity(); BeanUtils.copyProperties(dto, ${classLowercaseName}); @@ -95,7 +95,7 @@ public class ${classUppercaseName}ServiceImpl extends ServiceImpl<${classUpperca * @param ids 删除id列表 */ @Override - public void delete${classUppercaseName}(List ids) { + public void batchDelete(List ids) { removeByIds(ids); } } \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/server/service/service.java.vm b/auth-module/module-generator-code/src/main/resources/vms/server/service/service.java.vm index c7a0180..bd1c9db 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/server/service/service.java.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/server/service/service.java.vm @@ -34,26 +34,26 @@ public interface ${classUppercaseName}Service extends IService<${classUppercaseN * @param id 主键 * @return ${comment}详情 ${classUppercaseName}Vo} */ - ${classUppercaseName}Vo get${classUppercaseName}ById(Long id); + ${classUppercaseName}Vo getById(Long id); /** * 添加${comment} * * @param dto {@link ${classUppercaseName}Dto} 添加表单 */ - void add${classUppercaseName}(${classUppercaseName}Dto dto); + void create(${classUppercaseName}Dto dto); /** * 更新${comment} * * @param dto {@link ${classUppercaseName}Dto} 更新表单 */ - void update${classUppercaseName}(${classUppercaseName}Dto dto); + void update(${classUppercaseName}Dto dto); /** * 删除|批量删除${comment}类型 * * @param ids 删除id列表 */ - void delete${classUppercaseName}(List ids); + void batchDelete(List ids); } diff --git a/auth-module/module-generator-code/src/main/resources/vms/web/api/api.ts.vm b/auth-module/module-generator-code/src/main/resources/vms/web/api/api.ts.vm index c7751de..52186b1 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/web/api/api.ts.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/web/api/api.ts.vm @@ -1,22 +1,28 @@ -import type { PageResult, Result } from "@/types/common/Result"; +import type { ResultPage, Result } from "@/types/base"; +import type { ${classUppercaseName}ListItem } from "@/types/${classLowercaseName}/${classLowercaseName}DataType.ts"; import { http } from "@/utils/http"; /** ${comment}---获取${comment}列表 */ -export const fetchGet${classUppercaseName}List = (data: any) => { - return http.request>('get', `${classLowercaseName}/get${classUppercaseName}List/${data.currentPage}/${data.pageSize}`, {params: data}); +export const query${classUppercaseName}Page = (params: any) => { + return http.request>('get', `${classLowercaseName}`, {params}); +}; + +/** 部门表---获取${comment}详情 */ +export const get${classUppercaseName}Detail = (params: any) => { + return http.request>("get", `${classLowercaseName}/${params.id}`); }; /** ${comment}---添加${comment} */ -export const fetchAdd${classUppercaseName} = (data: any) => { - return http.request>('post', '${classLowercaseName}/add${classUppercaseName}', {data}); +export const create${classUppercaseName} = (data: any) => { + return http.request>('post', '${classLowercaseName}', {data}); }; /** ${comment}---更新${comment} */ -export const fetchUpdate${classUppercaseName} = (data: any) => { - return http.request>('put', '${classLowercaseName}/update${classUppercaseName}', {data}); +export const update${classUppercaseName}ById = (data: any) => { + return http.request>('put', '${classLowercaseName}', {data}); }; /** ${comment}---删除${comment} */ -export const fetchDelete${classUppercaseName} = (data: any) => { - return http.request>('delete', '${classLowercaseName}/delete${classUppercaseName}', {data}); +export const batchDelete${classUppercaseName} = (data: any) => { + return http.request>('delete', '${classLowercaseName}', {data}); }; \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/web/store/store.ts.vm b/auth-module/module-generator-code/src/main/resources/vms/web/store/store.ts.vm index f99602c..c870af8 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/web/store/store.ts.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/web/store/store.ts.vm @@ -1,13 +1,16 @@ import {defineStore} from 'pinia'; -import {fetchAdd${classUppercaseName}, fetchDelete${classUppercaseName}, fetchUpdate${classUppercaseName}} from ''; -import {pageSizes} from '@/enums/baseConstant'; +import {query${classUppercaseName}Page,get${classUppercaseName}Detail, create${classUppercaseName}, update${classUppercaseName}ById,batchDelete${classUppercaseName}} from '@/api/${classLowercaseName}'; import {storeMessage} from '@/utils/message'; -import {storePagination} from '@/store/useStorePagination'; +import { storePagination } from "@/utils/pageResultUtil"; /** - * ${comment} Store - */ -export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store', { +* ${comment} Store +* 数据库表名称:${tableName} +* +* @author ${author} +* @since ${date} +*/ +export const use${classUppercaseName}Store = defineStore('${classLowercaseName}Store', { state() { return { // ${comment}列表 @@ -15,8 +18,8 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store' // 查询表单 form: { #foreach($item in $columnInfoList) - // $!{item.comment} - $!{item.columnName}: undefined, + // $!{item.comment} + $!{item.lowercaseName}: undefined, #end }, // 分页查询结果 @@ -24,7 +27,7 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store' currentPage: 1, pageSize: 30, total: 1, - pageSizes, + pageSizes: 0, }, // 加载 loading: false, @@ -33,36 +36,42 @@ export const use${classUppercaseName}Store = defineStore('${lowercaseName}Store' getters: {}, actions: { /** 获取${comment} */ - async get${classUppercaseName}List() { + async fetch${classUppercaseName}Page() { // 整理请求参数 - const data = {...this.pagination, ...this.form}; + const data = {...this.pagination, ...this.form} as any;; delete data.pageSizes; delete data.total; delete data.background; // 获取${comment}列表 - const result = await fetchGet${classUppercaseName}List(data); + const result = await query${classUppercaseName}Page(data); // 公共页面函数hook const pagination = storePagination.bind(this); return pagination(result); }, + /** 查看${comment}详情 */ + async get${classUppercaseName}Detail(data:any){ + const result = await get${classUppercaseName}Detail(data); + return result.data; + }, + /** 添加${comment} */ - async add${classUppercaseName}(data: any) { - const result = await fetchAdd${classUppercaseName}(data); + async create${classUppercaseName}(data: any) { + const result = await create${classUppercaseName}(data); return storeMessage(result); }, /** 修改${comment} */ - async update${classUppercaseName}(data: any) { - const result = await fetchUpdate${classUppercaseName}(data); + async update${classUppercaseName}ById(data: any) { + const result = await update${classUppercaseName}ById(data); return storeMessage(result); }, /** 删除${comment} */ - async delete${classUppercaseName}(data: any) { - const result = await fetchDelete${classUppercaseName}(data); + async batchDelete${classUppercaseName}(data: any) { + const result = await batchDelete${classUppercaseName}(data); return storeMessage(result); }, }, diff --git a/auth-module/module-generator-code/src/main/resources/vms/web/types/$className/types.ts.vm b/auth-module/module-generator-code/src/main/resources/vms/web/types/$className/types.ts.vm index f9bae4c..573b648 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/web/types/$className/types.ts.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/web/types/$className/types.ts.vm @@ -1,17 +1,46 @@ +import type { BaseModel } from "@/types/base"; + /** -* ${comment} -* 数据库表:${tableName} +* ${comment}列表 +* 数据库表名称:${tableName} * * @author ${author} * @since ${date} */ -export type ${classUppercaseName}Result = { +export interface ${classUppercaseName}ListItem extends BaseModel{ #foreach($field in $columnInfoList) - /* $field.comment */ - #if($field.javascriptType == "object") - $field.columnName: any - #else - $field.columnName: $field.javascriptType + /* $field.comment */ + $field.lowercaseName: $field.javascriptType; + #end +}; + +/** +* ${comment}提交表单 +* 数据库表名称:${tableName} +* +* @author ${author} +* @since ${date} +*/ +export interface ${classUppercaseName}Form { +#foreach($field in $columnInfoList) + /* $field.comment */ + $field.lowercaseName: $field.javascriptType; + +#end +}; + +/** +* ${comment}详情 +* 数据库表名称:${tableName} +* +* @author ${author} +* @since ${date} +*/ +export interface ${classUppercaseName}Info { +#foreach($field in $columnInfoList) + /* $field.comment */ + $field.lowercaseName: $field.javascriptType | undefined; + #end }; \ No newline at end of file diff --git a/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/components/dialog.vue.vm b/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/components/dialog.vue.vm index ef3b61f..ab4c082 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/components/dialog.vue.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/components/dialog.vue.vm @@ -1,21 +1,23 @@ @@ -25,9 +27,9 @@ #foreach($item in $columnInfoList) - - + + #end diff --git a/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/index.vue.vm b/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/index.vue.vm index c3924f4..41060b0 100644 --- a/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/index.vue.vm +++ b/auth-module/module-generator-code/src/main/resources/vms/web/views/$className/index.vue.vm @@ -1,7 +1,15 @@