瀏覽代碼

多模块重构 6:tool 模块的迁移完成

YunaiV 3 年之前
父節點
當前提交
e7e3b18704
共有 77 個文件被更改,包括 791 次插入641 次删除
  1. 1 0
      pom.xml
  2. 0 21
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java
  3. 0 70
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/codegen/ToolCodegenConvert.java
  4. 0 34
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/test/ToolTestDemoConvert.java
  5. 0 22
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java
  6. 0 25
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java
  7. 0 19
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java
  8. 0 26
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java
  9. 0 4
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/package-info.java
  10. 0 7
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/package-info.java
  11. 0 83
      yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java
  12. 1 1
      yudao-admin-server/src/main/resources/application-dev.yaml
  13. 1 1
      yudao-admin-server/src/main/resources/application-local.yaml
  14. 2 2
      yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java
  15. 1 1
      yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java
  16. 6 6
      yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenEngineTest.java
  17. 2 2
      yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenSQLParserTest.java
  18. 2 2
      yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenServiceImplTest.java
  19. 0 1
      yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/api/package-info.java
  20. 0 1
      yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java
  21. 24 0
      yudao-module-tool/pom.xml
  22. 26 0
      yudao-module-tool/yudao-module-tool-api/pom.xml
  23. 4 0
      yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/api/package-info.java
  24. 2 2
      yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/enums/DictTypeConstants.java
  25. 2 2
      yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/enums/ErrorCodeConstants.java
  26. 1 0
      yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/package-info.java
  27. 85 0
      yudao-module-tool/yudao-module-tool-impl/pom.xml
  28. 29 29
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/CodegenController.java
  29. 21 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenDetailRespVO.java
  30. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenPreviewRespVO.java
  31. 7 7
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenUpdateReqVO.java
  32. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java
  33. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/column/CodegenColumnRespVO.java
  34. 5 5
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTableBaseVO.java
  35. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java
  36. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTableRespVO.java
  37. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/SchemaTableRespVO.java
  38. 2 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.http
  39. 23 30
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.java
  40. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoBaseVO.java
  41. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoCreateReqVO.java
  42. 5 6
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExcelVO.java
  43. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExportReqVO.java
  44. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoPageReqVO.java
  45. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoRespVO.java
  46. 3 3
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoUpdateReqVO.java
  47. 4 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/package-info.java
  48. 6 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/package-info.java
  49. 70 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/convert/codegen/CodegenConvert.java
  50. 32 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/convert/test/TestDemoConvert.java
  51. 7 7
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/CodegenColumnDO.java
  52. 5 5
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/CodegenTableDO.java
  53. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/SchemaColumnDO.java
  54. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/SchemaTableDO.java
  55. 3 4
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/test/TestDemoDO.java
  56. 22 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/CodegenColumnMapper.java
  57. 25 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/CodegenTableMapper.java
  58. 19 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/SchemaColumnMapper.java
  59. 26 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/SchemaTableMapper.java
  60. 9 13
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/test/TestDemoMapper.java
  61. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenColumnHtmlTypeEnum.java
  62. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenColumnListConditionEnum.java
  63. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenImportTypeEnum.java
  64. 2 2
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenTemplateTypeEnum.java
  65. 4 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/package-info.java
  66. 1 1
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/config/CodegenConfiguration.java
  67. 1 1
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/config/CodegenProperties.java
  68. 4 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/package-info.java
  69. 1 1
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/package-info.java
  70. 8 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/package-info.java
  71. 13 13
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/CodegenService.java
  72. 61 59
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/CodegenServiceImpl.java
  73. 42 42
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenBuilder.java
  74. 11 11
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenEngine.java
  75. 17 17
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenSQLParser.java
  76. 15 11
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoService.java
  77. 86 0
      yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoServiceImpl.java

+ 1 - 0
pom.xml

@@ -17,6 +17,7 @@
 <!--        <module>yudao-module-bpm</module>-->
         <module>yudao-module-system</module>
         <module>yudao-module-infra</module>
+        <module>yudao-module-tool</module>
     </modules>
 
     <name>${artifactId}</name>

+ 0 - 21
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenDetailRespVO.java

@@ -1,21 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo;
-
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
-import lombok.Data;
-
-import java.util.List;
-
-@ApiModel("代码生成表和字段的明细 Response VO")
-@Data
-public class ToolCodegenDetailRespVO {
-
-    @ApiModelProperty("表定义")
-    private ToolCodegenTableRespVO table;
-
-    @ApiModelProperty("字段定义")
-    private List<ToolCodegenColumnRespVO> columns;
-
-}

+ 0 - 70
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/codegen/ToolCodegenConvert.java

@@ -1,70 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.convert.codegen;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-@Mapper
-public interface ToolCodegenConvert {
-
-    ToolCodegenConvert INSTANCE = Mappers.getMapper(ToolCodegenConvert.class);
-
-    // ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ==========
-
-    ToolCodegenTableDO convert(ToolSchemaTableDO bean);
-
-    List<ToolCodegenColumnDO> convertList(List<ToolSchemaColumnDO> list);
-
-    ToolCodegenTableRespVO convert(ToolSchemaColumnDO bean);
-
-    // ========== ToolCodegenTableDO 相关 ==========
-
-//    List<ToolCodegenTableRespVO> convertList02(List<ToolCodegenTableDO> list);
-
-    ToolCodegenTableRespVO convert(ToolCodegenTableDO bean);
-
-    PageResult<ToolCodegenTableRespVO> convertPage(PageResult<ToolCodegenTableDO> page);
-
-    // ========== ToolCodegenTableDO 相关 ==========
-
-    List<ToolCodegenColumnRespVO> convertList02(List<ToolCodegenColumnDO> list);
-
-    ToolCodegenTableDO convert(ToolCodegenUpdateReqVO.Table bean);
-
-    List<ToolCodegenColumnDO> convertList03(List<ToolCodegenUpdateReqVO.Column> columns);
-
-    List<ToolSchemaTableRespVO> convertList04(List<ToolSchemaTableDO> list);
-
-    // ========== 其它 ==========
-
-    default ToolCodegenDetailRespVO convert(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) {
-        ToolCodegenDetailRespVO respVO = new ToolCodegenDetailRespVO();
-        respVO.setTable(convert(table));
-        respVO.setColumns(convertList02(columns));
-        return respVO;
-    }
-
-    default List<ToolCodegenPreviewRespVO> convert(Map<String, String> codes) {
-        return codes.entrySet().stream().map(entry -> {
-            ToolCodegenPreviewRespVO respVO = new ToolCodegenPreviewRespVO();
-            respVO.setFilePath(entry.getKey());
-            respVO.setCode(entry.getValue());
-            return respVO;
-        }).collect(Collectors.toList());
-    }
-
-}

+ 0 - 34
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/convert/test/ToolTestDemoConvert.java

@@ -1,34 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.convert.test;
-
-import java.util.*;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import org.mapstruct.Mapper;
-import org.mapstruct.factory.Mappers;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO;
-
-/**
- * 字典类型 Convert
- *
- * @author 芋艿
- */
-@Mapper
-public interface ToolTestDemoConvert {
-
-    ToolTestDemoConvert INSTANCE = Mappers.getMapper(ToolTestDemoConvert.class);
-
-    ToolTestDemoDO convert(ToolTestDemoCreateReqVO bean);
-
-    ToolTestDemoDO convert(ToolTestDemoUpdateReqVO bean);
-
-    ToolTestDemoRespVO convert(ToolTestDemoDO bean);
-
-    List<ToolTestDemoRespVO> convertList(List<ToolTestDemoDO> list);
-
-    PageResult<ToolTestDemoRespVO> convertPage(PageResult<ToolTestDemoDO> page);
-
-    List<ToolTestDemoExcelVO> convertList02(List<ToolTestDemoDO> list);
-
-}

+ 0 - 22
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenColumnMapper.java

@@ -1,22 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-@Mapper
-public interface ToolCodegenColumnMapper extends BaseMapperX<ToolCodegenColumnDO> {
-
-    default List<ToolCodegenColumnDO> selectListByTableId(Long tableId) {
-        return selectList(new QueryWrapper<ToolCodegenColumnDO>().eq("table_id", tableId)
-                .orderByAsc("ordinal_position"));
-    }
-
-    default void deleteListByTableId(Long tableId) {
-        delete(new QueryWrapper<ToolCodegenColumnDO>().eq("table_id", tableId));
-    }
-
-}

+ 0 - 25
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolCodegenTableMapper.java

@@ -1,25 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
-
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-@Mapper
-public interface ToolCodegenTableMapper extends BaseMapperX<ToolCodegenTableDO> {
-
-    default ToolCodegenTableDO selectByTableName(String tableName) {
-        return selectOne(new QueryWrapper<ToolCodegenTableDO>().eq("table_name", tableName));
-    }
-
-    default PageResult<ToolCodegenTableDO> selectPage(ToolCodegenTablePageReqVO pageReqVO) {
-        return selectPage(pageReqVO, new QueryWrapperX<ToolCodegenTableDO>()
-                .likeIfPresent("table_name", pageReqVO.getTableName())
-                .likeIfPresent("table_comment", pageReqVO.getTableComment())
-                .betweenIfPresent("create_time", pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime()));
-    }
-
-}

+ 0 - 19
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaColumnMapper.java

@@ -1,19 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-@Mapper
-public interface ToolSchemaColumnMapper extends BaseMapperX<ToolSchemaColumnDO> {
-
-    default List<ToolSchemaColumnDO> selectListByTableName(String tableSchema, String tableName) {
-        return selectList(new QueryWrapper<ToolSchemaColumnDO>().eq("table_name", tableName)
-                .eq("table_schema", tableSchema)
-                .orderByAsc("ordinal_position"));
-    }
-
-}

+ 0 - 26
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolSchemaTableMapper.java

@@ -1,26 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
-
-import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.Collection;
-import java.util.List;
-
-@Mapper
-public interface ToolSchemaTableMapper extends BaseMapperX<ToolSchemaTableDO> {
-
-    default List<ToolSchemaTableDO> selectList(Collection<String> tableSchemas, String tableName, String tableComment) {
-        return selectList(new QueryWrapperX<ToolSchemaTableDO>().in("table_schema", tableSchemas)
-                .likeIfPresent("table_name", tableName)
-                .likeIfPresent("table_comment", tableComment));
-    }
-
-    default ToolSchemaTableDO selectByTableSchemaAndTableName(String tableSchema, String tableName) {
-        return selectOne(new QueryWrapper<ToolSchemaTableDO>().eq("table_schema",tableSchema)
-                        .eq("table_name", tableName));
-    }
-
-}

+ 0 - 4
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/package-info.java

@@ -1,4 +0,0 @@
-/**
- * 代码生成器
- */
-package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen;

+ 0 - 7
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/package-info.java

@@ -1,7 +0,0 @@
-/**
- * tool 包下,我们放研发工具,提升研发效率与质量。
- * 例如说:代码生成器、接口文档等等
- *
- * 缩写:tool
- */
-package cn.iocoder.yudao.adminserver.modules.tool;

+ 0 - 83
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/impl/ToolTestDemoServiceImpl.java

@@ -1,83 +0,0 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.test.impl;
-
-import org.springframework.stereotype.Service;
-import javax.annotation.Resource;
-import org.springframework.validation.annotation.Validated;
-
-import java.util.*;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO;
-import cn.iocoder.yudao.framework.common.pojo.PageResult;
-
-import cn.iocoder.yudao.adminserver.modules.tool.convert.test.ToolTestDemoConvert;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.test.ToolTestDemoMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.service.test.ToolTestDemoService;
-
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.adminserver.modules.tool.enums.ToolErrorCodeConstants.*;
-
-/**
- * 字典类型 Service 实现类
- *
- * @author 芋艿
- */
-@Service
-@Validated
-public class ToolTestDemoServiceImpl implements ToolTestDemoService {
-
-    @Resource
-    private ToolTestDemoMapper testDemoMapper;
-
-    @Override
-    public Long createTestDemo(ToolTestDemoCreateReqVO createReqVO) {
-        // 插入
-        ToolTestDemoDO testDemo = ToolTestDemoConvert.INSTANCE.convert(createReqVO);
-        testDemoMapper.insert(testDemo);
-        // 返回
-        return testDemo.getId();
-    }
-
-    @Override
-    public void updateTestDemo(ToolTestDemoUpdateReqVO updateReqVO) {
-        // 校验存在
-        this.validateTestDemoExists(updateReqVO.getId());
-        // 更新
-        ToolTestDemoDO updateObj = ToolTestDemoConvert.INSTANCE.convert(updateReqVO);
-        testDemoMapper.updateById(updateObj);
-    }
-
-    @Override
-    public void deleteTestDemo(Long id) {
-        // 校验存在
-        this.validateTestDemoExists(id);
-        // 删除
-        testDemoMapper.deleteById(id);
-    }
-
-    private void validateTestDemoExists(Long id) {
-        if (testDemoMapper.selectById(id) == null) {
-            throw exception(TEST_DEMO_NOT_EXISTS);
-        }
-    }
-
-    @Override
-    public ToolTestDemoDO getTestDemo(Long id) {
-        return testDemoMapper.selectById(id);
-    }
-
-    @Override
-    public List<ToolTestDemoDO> getTestDemoList(Collection<Long> ids) {
-        return testDemoMapper.selectBatchIds(ids);
-    }
-
-    @Override
-    public PageResult<ToolTestDemoDO> getTestDemoPage(ToolTestDemoPageReqVO pageReqVO) {
-        return testDemoMapper.selectPage(pageReqVO);
-    }
-
-    @Override
-    public List<ToolTestDemoDO> getTestDemoList(ToolTestDemoExportReqVO exportReqVO) {
-        return testDemoMapper.selectList(exportReqVO);
-    }
-
-}

+ 1 - 1
yudao-admin-server/src/main/resources/application-dev.yaml

@@ -100,7 +100,7 @@ apollo:
     eagerLoad:
       enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
   jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
-    dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigCoreDAOImpl
+    dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigDAOImpl
     url: ${spring.datasource.dynamic.datasource.master.url}
     username: ${spring.datasource.dynamic.datasource.master.username}
     password: ${spring.datasource.dynamic.datasource.master.password}

+ 1 - 1
yudao-admin-server/src/main/resources/application-local.yaml

@@ -113,7 +113,7 @@ apollo:
     eagerLoad:
       enabled: true # 设置 Apollo 在日志初始化前生效,可以实现日志的动态级别配置
   jdbc: # 自定义的 JDBC 配置项,用于数据库的地址
-    dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigCoreDAOImpl
+    dao: cn.iocoder.yudao.module.infra.dal.mysql.config.ConfigDAOImpl
     url: ${spring.datasource.dynamic.datasource.master.url}
     username: ${spring.datasource.dynamic.datasource.master.username}
     password: ${spring.datasource.dynamic.datasource.master.password}

+ 2 - 2
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaColumnMapperTest.java

@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
 
 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
 import org.junit.jupiter.api.Test;
 
 import javax.annotation.Resource;

+ 1 - 1
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/codegen/ToolInformationSchemaTableMapperTest.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen;
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
 
 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
 

+ 6 - 6
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenEngineTest.java

@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen;
+package cn.iocoder.yudao.module.tool.service.codegen;
 
 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenEngine;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.ToolCodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.ToolCodegenColumnMapper;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.ToolCodegenTableMapper;
+import cn.iocoder.yudao.module.tool.service.codegen.impl.ToolCodegenEngine;
 import org.junit.jupiter.api.Test;
 
 import javax.annotation.Resource;

+ 2 - 2
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenSQLParserTest.java

@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen;
+package cn.iocoder.yudao.module.tool.service.codegen;
 
 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenSQLParser;
+import cn.iocoder.yudao.module.tool.service.codegen.impl.ToolCodegenSQLParser;
 import org.junit.jupiter.api.Test;
 
 public class ToolCodegenSQLParserTest extends BaseDbUnitTest {

+ 2 - 2
yudao-admin-server/src/test-integration/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenServiceImplTest.java

@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen;
+package cn.iocoder.yudao.module.tool.service.codegen;
 
 import cn.iocoder.yudao.adminserver.BaseDbUnitTest;
-import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl.ToolCodegenServiceImpl;
+import cn.iocoder.yudao.module.tool.service.codegen.impl.ToolCodegenServiceImpl;
 import org.junit.jupiter.api.Test;
 
 import javax.annotation.Resource;

+ 0 - 1
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/api/package-info.java

@@ -1 +0,0 @@
-package cn.iocoder.yudao.module.system.api;

+ 0 - 1
yudao-module-system/yudao-module-system-impl/src/main/java/cn/iocoder/yudao/module/system/service/auth/AdminAuthServiceImpl.java

@@ -137,7 +137,6 @@ public class AdminAuthServiceImpl implements AdminAuthService {
             // 在其内部,会调用到 loadUserByUsername 方法,获取 User 信息
             authentication = authenticationManager.authenticate(new MultiUsernamePasswordAuthenticationToken(
                     username, password, getUserType()));
-           //  org.activiti.engine.impl.identity.Authentication.setAuthenticatedUserId(username);
         } catch (BadCredentialsException badCredentialsException) {
             this.createLoginLog(username, logTypeEnum, LoginResultEnum.BAD_CREDENTIALS);
             throw exception(AUTH_LOGIN_BAD_CREDENTIALS);

+ 24 - 0
yudao-module-tool/pom.xml

@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>cn.iocoder.boot</groupId>
+        <artifactId>yudao</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <modules>
+        <module>yudao-module-tool-api</module>
+        <module>yudao-module-tool-impl</module>
+    </modules>
+    <artifactId>yudao-module-tool</artifactId>
+    <packaging>pom</packaging>
+
+    <name>${artifactId}</name>
+    <description>
+        tool 模块,我们放研发工具,提升研发效率与质量。
+        例如说:代码生成器、接口文档等等
+    </description>
+
+</project>

+ 26 - 0
yudao-module-tool/yudao-module-tool-api/pom.xml

@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <groupId>cn.iocoder.boot</groupId>
+        <artifactId>yudao-module-tool</artifactId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>yudao-module-tool-api</artifactId>
+    <packaging>jar</packaging>
+
+    <name>${artifactId}</name>
+    <description>
+        tool 模块 API,暴露给其它模块调用
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-common</artifactId>
+        </dependency>
+    </dependencies>
+
+</project>

+ 4 - 0
yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/api/package-info.java

@@ -0,0 +1,4 @@
+/**
+ * Tool API 包,定义暴露给其它模块的 API
+ */
+package cn.iocoder.yudao.module.tool.api;

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/ToolDictTypeConstants.java → yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/enums/DictTypeConstants.java

@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums;
+package cn.iocoder.yudao.module.tool.enums;
 
 /**
  * Tool 字典类型的枚举类
  *
  * @author 芋道源码
  */
-public interface ToolDictTypeConstants {
+public interface DictTypeConstants {
 
     String TEST_DEMO_TYPE = "tool_test_demo_type";
 

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/ToolErrorCodeConstants.java → yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/enums/ErrorCodeConstants.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums;
+package cn.iocoder.yudao.module.tool.enums;
 
 import cn.iocoder.yudao.framework.common.exception.ErrorCode;
 
@@ -7,7 +7,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
  *
  * tool 系统,使用 1-003-000-000 段
  */
-public interface ToolErrorCodeConstants {
+public interface ErrorCodeConstants {
 
     // ========== 字典类型(测试) 1003000000 ==========
     ErrorCode TEST_DEMO_NOT_EXISTS = new ErrorCode(1003000000, "测试示例不存在");

+ 1 - 0
yudao-module-tool/yudao-module-tool-api/src/main/java/cn/iocoder/yudao/module/tool/package-info.java

@@ -0,0 +1 @@
+package cn.iocoder.yudao.module.tool;

+ 85 - 0
yudao-module-tool/yudao-module-tool-impl/pom.xml

@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>yudao-module-tool</artifactId>
+        <groupId>cn.iocoder.boot</groupId>
+        <version>${revision}</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>yudao-module-tool-impl</artifactId>
+    <packaging>jar</packaging>
+
+    <name>${artifactId}</name>
+    <description>
+        tool 模块,我们放研发工具,提升研发效率与质量。
+        例如说:代码生成器、接口文档等等
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-tool-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
+
+        <!-- 业务组件 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-biz-operatelog</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-biz-dict</artifactId>
+        </dependency>
+
+        <!-- Web 相关 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-security</artifactId>
+        </dependency>
+
+        <!-- DB 相关 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-mybatis</artifactId>
+        </dependency>
+
+        <!-- Test 测试相关 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-test</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- 工具类相关 -->
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-spring-boot-starter-excel</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <!-- 设置构建的 jar 包名 -->
+        <finalName>${artifactId}</finalName>
+        <plugins>
+            <!-- 打包 -->
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+                <configuration>
+                    <fork>true</fork>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>repackage</goal> <!-- 将引入的 jar 打入其中 -->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 29 - 29
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/ToolCodegenController.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/CodegenController.java

@@ -1,20 +1,20 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen;
 
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.ZipUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenPreviewRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolSchemaTableRespVO;
-import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.ToolCodegenService;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenDetailRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenPreviewRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenUpdateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTablePageReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTableRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.SchemaTableRespVO;
+import cn.iocoder.yudao.module.tool.convert.codegen.CodegenConvert;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
+import cn.iocoder.yudao.module.tool.service.codegen.CodegenService;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils;
 import io.swagger.annotations.Api;
@@ -37,14 +37,14 @@ import java.util.Set;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 
-@Api(tags = "代码生成器")
+@Api(tags = "管理后台 - 代码生成器")
 @RestController
 @RequestMapping("/tool/codegen")
 @Validated
-public class ToolCodegenController {
+public class CodegenController {
 
     @Resource
-    private ToolCodegenService codegenService;
+    private CodegenService codegenService;
 
     @GetMapping("/db/table/list")
     @ApiOperation(value = "获得数据库自带的表定义列表", notes = "会过滤掉已经导入 Codegen 的表")
@@ -53,34 +53,34 @@ public class ToolCodegenController {
             @ApiImplicitParam(name = "tableComment", value = "描述,模糊匹配", required = true, example = "芋道", dataTypeClass = String.class)
     })
     @PreAuthorize("@ss.hasPermission('tool:codegen:query')")
-    public CommonResult<List<ToolSchemaTableRespVO>> getSchemaTableList(
+    public CommonResult<List<SchemaTableRespVO>> getSchemaTableList(
             @RequestParam(value = "tableName", required = false) String tableName,
             @RequestParam(value = "tableComment", required = false) String tableComment) {
         // 获得数据库自带的表定义列表
-        List<ToolSchemaTableDO> schemaTables = codegenService.getSchemaTableList(tableName, tableComment);
+        List<SchemaTableDO> schemaTables = codegenService.getSchemaTableList(tableName, tableComment);
         // 移除在 Codegen 中,已经存在的
-        Set<String> existsTables = CollectionUtils.convertSet(codegenService.getCodeGenTableList(), ToolCodegenTableDO::getTableName);
+        Set<String> existsTables = CollectionUtils.convertSet(codegenService.getCodeGenTableList(), CodegenTableDO::getTableName);
         schemaTables.removeIf(table -> existsTables.contains(table.getTableName()));
-        return success(ToolCodegenConvert.INSTANCE.convertList04(schemaTables));
+        return success(CodegenConvert.INSTANCE.convertList04(schemaTables));
     }
 
     @GetMapping("/table/page")
     @ApiOperation("获得表定义分页")
     @PreAuthorize("@ss.hasPermission('tool:codegen:query')")
-    public CommonResult<PageResult<ToolCodegenTableRespVO>> getCodeGenTablePage(@Valid ToolCodegenTablePageReqVO pageReqVO) {
-        PageResult<ToolCodegenTableDO> pageResult = codegenService.getCodegenTablePage(pageReqVO);
-        return success(ToolCodegenConvert.INSTANCE.convertPage(pageResult));
+    public CommonResult<PageResult<CodegenTableRespVO>> getCodeGenTablePage(@Valid CodegenTablePageReqVO pageReqVO) {
+        PageResult<CodegenTableDO> pageResult = codegenService.getCodegenTablePage(pageReqVO);
+        return success(CodegenConvert.INSTANCE.convertPage(pageResult));
     }
 
     @GetMapping("/detail")
     @ApiOperation("获得表和字段的明细")
     @ApiImplicitParam(name = "tableId", value = "表编号", required = true, example = "1024", dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('tool:codegen:query')")
-    public CommonResult<ToolCodegenDetailRespVO> getCodegenDetail(@RequestParam("tableId") Long tableId) {
-        ToolCodegenTableDO table = codegenService.getCodegenTablePage(tableId);
-        List<ToolCodegenColumnDO> columns = codegenService.getCodegenColumnListByTableId(tableId);
+    public CommonResult<CodegenDetailRespVO> getCodegenDetail(@RequestParam("tableId") Long tableId) {
+        CodegenTableDO table = codegenService.getCodegenTablePage(tableId);
+        List<CodegenColumnDO> columns = codegenService.getCodegenColumnListByTableId(tableId);
         // 拼装返回
-        return success(ToolCodegenConvert.INSTANCE.convert(table, columns));
+        return success(CodegenConvert.INSTANCE.convert(table, columns));
     }
 
     @ApiOperation("基于数据库的表结构,创建代码生成器的表和字段定义")
@@ -102,7 +102,7 @@ public class ToolCodegenController {
     @ApiOperation("更新数据库的表和字段定义")
     @PutMapping("/update")
     @PreAuthorize("@ss.hasPermission('tool:codegen:update')")
-    public CommonResult<Boolean> updateCodegen(@Valid @RequestBody ToolCodegenUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updateCodegen(@Valid @RequestBody CodegenUpdateReqVO updateReqVO) {
         codegenService.updateCodegen(updateReqVO);
         return success(true);
     }
@@ -142,9 +142,9 @@ public class ToolCodegenController {
     @GetMapping("/preview")
     @ApiImplicitParam(name = "tableId", value = "表编号", required = true, example = "1024", dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('tool:codegen:preview')")
-    public CommonResult<List<ToolCodegenPreviewRespVO>> previewCodegen(@RequestParam("tableId") Long tableId) {
+    public CommonResult<List<CodegenPreviewRespVO>> previewCodegen(@RequestParam("tableId") Long tableId) {
         Map<String, String> codes = codegenService.generationCodes(tableId);
-        return success(ToolCodegenConvert.INSTANCE.convert(codes));
+        return success(CodegenConvert.INSTANCE.convert(codes));
     }
 
     @ApiOperation("下载生成代码")

+ 21 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenDetailRespVO.java

@@ -0,0 +1,21 @@
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo;
+
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.column.CodegenColumnRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTableRespVO;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.List;
+
+@ApiModel("管理后台 - 代码生成表和字段的明细 Response VO")
+@Data
+public class CodegenDetailRespVO {
+
+    @ApiModelProperty("表定义")
+    private CodegenTableRespVO table;
+
+    @ApiModelProperty("字段定义")
+    private List<CodegenColumnRespVO> columns;
+
+}

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenPreviewRespVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenPreviewRespVO.java

@@ -1,12 +1,12 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-@ApiModel(value = "代码生成预览 Response VO", description ="注意,每个文件都是一个该对象")
+@ApiModel(value = "管理后台 - 代码生成预览 Response VO", description ="注意,每个文件都是一个该对象")
 @Data
-public class ToolCodegenPreviewRespVO {
+public class CodegenPreviewRespVO {
 
     @ApiModelProperty(value = "文件路径", required = true, example = "java/cn/iocoder/yudao/adminserver/modules/system/controller/test/SysTestDemoController.java")
     private String filePath;

+ 7 - 7
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/ToolCodegenUpdateReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/CodegenUpdateReqVO.java

@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo;
 
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column.ToolCodegenColumnBaseVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTableBaseVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTableBaseVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.column.CodegenColumnBaseVO;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -12,9 +12,9 @@ import javax.validation.Valid;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
-@ApiModel("代码生成表和字段的修改 Request VO")
+@ApiModel("管理后台 - 代码生成表和字段的修改 Request VO")
 @Data
-public class ToolCodegenUpdateReqVO {
+public class CodegenUpdateReqVO {
 
     @Valid // 校验内嵌的字段
     @NotNull(message = "表定义不能为空")
@@ -28,7 +28,7 @@ public class ToolCodegenUpdateReqVO {
     @Data
     @EqualsAndHashCode(callSuper = true)
     @ToString(callSuper = true)
-    public static class Table extends ToolCodegenTableBaseVO {
+    public static class Table extends CodegenTableBaseVO {
 
         @ApiModelProperty(value = "编号", required = true, example = "1")
         private Long id;
@@ -39,7 +39,7 @@ public class ToolCodegenUpdateReqVO {
     @Data
     @EqualsAndHashCode(callSuper = true)
     @ToString(callSuper = true)
-    public static class Column extends ToolCodegenColumnBaseVO {
+    public static class Column extends CodegenColumnBaseVO {
 
         @ApiModelProperty(value = "编号", required = true, example = "1")
         private Long id;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnBaseVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/column/CodegenColumnBaseVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.column;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 */
 @Data
-public class ToolCodegenColumnBaseVO {
+public class CodegenColumnBaseVO {
 
     @ApiModelProperty(value = "表编号", required = true, example = "1")
     @NotNull(message = "表编号不能为空")
@@ -70,7 +70,7 @@ public class ToolCodegenColumnBaseVO {
     @NotNull(message = "是否为 List 查询操作的字段不能为空")
     private Boolean listOperation;
 
-    @ApiModelProperty(value = "List 查询操作的条件类型", required = true, example = "LIKE", notes = "参见 ToolCodegenColumnListConditionEnum 枚举")
+    @ApiModelProperty(value = "List 查询操作的条件类型", required = true, example = "LIKE", notes = "参见 CodegenColumnListConditionEnum 枚举")
     @NotNull(message = "List 查询操作的条件类型不能为空")
     private String listOperationCondition;
 

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/column/ToolCodegenColumnRespVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/column/CodegenColumnRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.column;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.column;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,11 +8,11 @@ import lombok.ToString;
 
 import java.util.Date;
 
-@ApiModel("代码生成字段定义 Response VO")
+@ApiModel("管理后台 - 代码生成字段定义 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolCodegenColumnRespVO extends ToolCodegenColumnBaseVO {
+public class CodegenColumnRespVO extends CodegenColumnBaseVO {
 
     @ApiModelProperty(value = "编号", required = true, example = "1")
     private Long id;

+ 5 - 5
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableBaseVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTableBaseVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -10,9 +10,9 @@ import javax.validation.constraints.NotNull;
 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 */
 @Data
-public class ToolCodegenTableBaseVO {
+public class CodegenTableBaseVO {
 
-    @ApiModelProperty(value = "导入类型", required = true, example = "1", notes = "参见 ToolCodegenImportTypeEnum 枚举")
+    @ApiModelProperty(value = "导入类型", required = true, example = "1", notes = "参见 CodegenImportTypeEnum 枚举")
     @NotNull(message = "导入类型不能为空")
     private Integer importType;
 
@@ -35,7 +35,7 @@ public class ToolCodegenTableBaseVO {
     @NotNull(message = "业务名不能为空")
     private String businessName;
 
-    @ApiModelProperty(value = "类名称", required = true, example = "ToolCodegenTable")
+    @ApiModelProperty(value = "类名称", required = true, example = "CodegenTable")
     @NotNull(message = "类名称不能为空")
     private String className;
 
@@ -47,7 +47,7 @@ public class ToolCodegenTableBaseVO {
     @NotNull(message = "作者不能为空")
     private String author;
 
-    @ApiModelProperty(value = "模板类型", required = true, example = "1", notes = "参见 ToolCodegenTemplateTypeEnum 枚举")
+    @ApiModelProperty(value = "模板类型", required = true, example = "1", notes = "参见 CodegenTemplateTypeEnum 枚举")
     @NotNull(message = "模板类型不能为空")
     private Integer templateType;
 

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTablePageReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTablePageReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table;
 
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import io.swagger.annotations.ApiModel;
@@ -12,11 +12,11 @@ import java.util.Date;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@ApiModel("表定义分页 Request VO")
+@ApiModel("管理后台 - 表定义分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolCodegenTablePageReqVO extends PageParam {
+public class CodegenTablePageReqVO extends PageParam {
 
     @ApiModelProperty(value = "表名称", example = "yudao", notes = "模糊匹配")
     private String tableName;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolCodegenTableRespVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/CodegenTableRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,11 +8,11 @@ import lombok.ToString;
 
 import java.util.Date;
 
-@ApiModel("代码生成表定义 Response VO")
+@ApiModel("管理后台 - 代码生成表定义 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolCodegenTableRespVO extends ToolCodegenTableBaseVO {
+public class CodegenTableRespVO extends CodegenTableBaseVO {
 
     @ApiModelProperty(value = "编号", required = true, example = "1")
     private Long id;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/codegen/vo/table/ToolSchemaTableRespVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/codegen/vo/table/SchemaTableRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table;
+package cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -6,9 +6,9 @@ import lombok.Data;
 
 import java.util.Date;
 
-@ApiModel("数据字典的表定义 Response VO")
+@ApiModel("管理后台 - 数据字典的表定义 Response VO")
 @Data
-public class ToolSchemaTableRespVO {
+public class SchemaTableRespVO {
 
     @ApiModelProperty(value = "数据库", required = true, example = "yudao")
     private String tableSchema;

+ 2 - 0
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.http → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.http

@@ -1,7 +1,9 @@
 ### 请求 /tool/test-demo/get 接口 => 成功
 GET {{baseUrl}}/tool/test-demo/get?id=1
 Authorization: Bearer {{token}}
+tenant-id: {{adminTenentId}}
 
 ### 请求 /tool/test-demo/list 接口 => 成功
 GET {{baseUrl}}/tool/test-demo/list?ids=1
 Authorization: Bearer {{token}}
+tenant-id: {{adminTenentId}}

+ 23 - 30
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/ToolTestDemoController.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/TestDemoController.java

@@ -1,15 +1,13 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test;
+package cn.iocoder.yudao.module.tool.controller.admin.test;
 
-import cn.hutool.core.thread.ThreadUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
 import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog;
-import cn.iocoder.yudao.framework.tracer.core.annotation.BizTrace;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*;
-import cn.iocoder.yudao.adminserver.modules.tool.convert.test.ToolTestDemoConvert;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO;
-import cn.iocoder.yudao.adminserver.modules.tool.service.test.ToolTestDemoService;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.*;
+import cn.iocoder.yudao.module.tool.convert.test.TestDemoConvert;
+import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO;
+import cn.iocoder.yudao.module.tool.service.test.TestDemoService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiOperation;
@@ -23,31 +21,30 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.TimeUnit;
 
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
 import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT;
 
-@Api(tags = "测试示例")
+@Api(tags = "管理后台 - 测试示例")
 @RestController
 @RequestMapping("/tool/test-demo")
 @Validated
-public class ToolTestDemoController {
+public class TestDemoController {
 
     @Resource
-    private ToolTestDemoService testDemoService;
+    private TestDemoService testDemoService;
 
     @PostMapping("/create")
     @ApiOperation("创建测试示例")
     @PreAuthorize("@ss.hasPermission('tool:test-demo:create')")
-    public CommonResult<Long> createTestDemo(@Valid @RequestBody ToolTestDemoCreateReqVO createReqVO) {
+    public CommonResult<Long> createTestDemo(@Valid @RequestBody TestDemoCreateReqVO createReqVO) {
         return success(testDemoService.createTestDemo(createReqVO));
     }
 
     @PutMapping("/update")
     @ApiOperation("更新测试示例")
     @PreAuthorize("@ss.hasPermission('tool:test-demo:update')")
-    public CommonResult<Boolean> updateTestDemo(@Valid @RequestBody ToolTestDemoUpdateReqVO updateReqVO) {
+    public CommonResult<Boolean> updateTestDemo(@Valid @RequestBody TestDemoUpdateReqVO updateReqVO) {
         testDemoService.updateTestDemo(updateReqVO);
         return success(true);
     }
@@ -66,12 +63,9 @@ public class ToolTestDemoController {
     @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class)
     @PreAuthorize("@ss.hasPermission('tool:test-demo:query')")
 //    @Lock4j // 分布式锁
-    public CommonResult<ToolTestDemoRespVO> getTestDemo(@RequestParam("id") Long id) {
-        if (true) { // 测试分布式锁
-            ThreadUtil.sleep(5, TimeUnit.SECONDS);
-        }
-        ToolTestDemoDO testDemo = testDemoService.getTestDemo(id);
-        return success(ToolTestDemoConvert.INSTANCE.convert(testDemo));
+    public CommonResult<TestDemoRespVO> getTestDemo(@RequestParam("id") Long id) {
+        TestDemoDO testDemo = testDemoService.getTestDemo(id);
+        return success(TestDemoConvert.INSTANCE.convert(testDemo));
     }
 
     @GetMapping("/list")
@@ -79,30 +73,29 @@ public class ToolTestDemoController {
     @ApiImplicitParam(name = "ids", value = "编号列表", required = true, dataTypeClass = List.class)
     @PreAuthorize("@ss.hasPermission('tool:test-demo:query')")
 //    @RateLimiter(name = "backendA")
-    @BizTrace(id = "#ids", type = "'user'")
-    public CommonResult<List<ToolTestDemoRespVO>> getTestDemoList(@RequestParam("ids") Collection<Long> ids) {
-        List<ToolTestDemoDO> list = testDemoService.getTestDemoList(ids);
-        return success(ToolTestDemoConvert.INSTANCE.convertList(list));
+    public CommonResult<List<TestDemoRespVO>> getTestDemoList(@RequestParam("ids") Collection<Long> ids) {
+        List<TestDemoDO> list = testDemoService.getTestDemoList(ids);
+        return success(TestDemoConvert.INSTANCE.convertList(list));
     }
 
     @GetMapping("/page")
     @ApiOperation("获得测试示例分页")
     @PreAuthorize("@ss.hasPermission('tool:test-demo:query')")
-    public CommonResult<PageResult<ToolTestDemoRespVO>> getTestDemoPage(@Valid ToolTestDemoPageReqVO pageVO) {
-        PageResult<ToolTestDemoDO> pageResult = testDemoService.getTestDemoPage(pageVO);
-        return success(ToolTestDemoConvert.INSTANCE.convertPage(pageResult));
+    public CommonResult<PageResult<TestDemoRespVO>> getTestDemoPage(@Valid TestDemoPageReqVO pageVO) {
+        PageResult<TestDemoDO> pageResult = testDemoService.getTestDemoPage(pageVO);
+        return success(TestDemoConvert.INSTANCE.convertPage(pageResult));
     }
 
     @GetMapping("/export-excel")
     @ApiOperation("导出测试示例 Excel")
     @PreAuthorize("@ss.hasPermission('tool:test-demo:export')")
     @OperateLog(type = EXPORT)
-    public void exportTestDemoExcel(@Valid ToolTestDemoExportReqVO exportReqVO,
+    public void exportTestDemoExcel(@Valid TestDemoExportReqVO exportReqVO,
                                     HttpServletResponse response) throws IOException {
-        List<ToolTestDemoDO> list = testDemoService.getTestDemoList(exportReqVO);
+        List<TestDemoDO> list = testDemoService.getTestDemoList(exportReqVO);
         // 导出 Excel
-        List<ToolTestDemoExcelVO> datas = ToolTestDemoConvert.INSTANCE.convertList02(list);
-        ExcelUtils.write(response, "测试示例.xls", "数据", ToolTestDemoExcelVO.class, datas);
+        List<TestDemoExcelVO> datas = TestDemoConvert.INSTANCE.convertList02(list);
+        ExcelUtils.write(response, "测试示例.xls", "数据", TestDemoExcelVO.class, datas);
     }
 
 }

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoBaseVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoBaseVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull;
 * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 */
 @Data
-public class ToolTestDemoBaseVO {
+public class TestDemoBaseVO {
 
     @ApiModelProperty(value = "名字", required = true, example = "芋道")
     @NotNull(message = "名字不能为空")

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoCreateReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoCreateReqVO.java

@@ -1,14 +1,14 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import io.swagger.annotations.ApiModel;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.ToString;
 
-@ApiModel("字典类型创建 Request VO")
+@ApiModel("管理后台 - 字典类型创建 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolTestDemoCreateReqVO extends ToolTestDemoBaseVO {
+public class TestDemoCreateReqVO extends TestDemoBaseVO {
 
 }

+ 5 - 6
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExcelVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExcelVO.java

@@ -1,8 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
-import cn.iocoder.yudao.module.infra.enums.DictTypeConstants;
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
@@ -14,7 +13,7 @@ import java.util.Date;
  * @author 芋艿
  */
 @Data
-public class ToolTestDemoExcelVO {
+public class TestDemoExcelVO {
 
     @ExcelProperty("编号")
     private Long id;
@@ -23,15 +22,15 @@ public class ToolTestDemoExcelVO {
     private String name;
 
     @ExcelProperty(value = "状态", converter = DictConvert.class)
-    @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.COMMON_STATUS)
+    @DictFormat("")
     private Integer status;
 
     @ExcelProperty(value = "类型", converter = DictConvert.class)
-    @DictFormat(cn.iocoder.yudao.module.system.enums.DictTypeConstants.OPERATE_TYPE)
+    @DictFormat("sys_common_status")
     private Integer type;
 
     @ExcelProperty(value = "分类", converter = DictConvert.class)
-    @DictFormat(DictTypeConstants.REDIS_TIMEOUT_TYPE)
+    @DictFormat("inf_redis_timeout_type")
     private Integer category;
 
     @ExcelProperty("备注")

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoExportReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoExportReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -9,9 +9,9 @@ import java.util.Date;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@ApiModel(value = "字典类型 Excel 导出 Request VO", description = "参数和 ToolTestDemoPageReqVO 是一致的")
+@ApiModel(value = "管理后台 - 字典类型 Excel 导出 Request VO", description = "参数和 TestDemoPageReqVO 是一致的")
 @Data
-public class ToolTestDemoExportReqVO {
+public class TestDemoExportReqVO {
 
     @ApiModelProperty(value = "名字", example = "芋道")
     private String name;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoPageReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoPageReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import io.swagger.annotations.ApiModel;
@@ -12,11 +12,11 @@ import java.util.Date;
 
 import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 
-@ApiModel("字典类型分页 Request VO")
+@ApiModel("管理后台 - 字典类型分页 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolTestDemoPageReqVO extends PageParam {
+public class TestDemoPageReqVO extends PageParam {
 
     @ApiModelProperty(value = "名字", example = "芋道")
     private String name;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoRespVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoRespVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,11 +8,11 @@ import lombok.ToString;
 
 import java.util.Date;
 
-@ApiModel("字典类型 Response VO")
+@ApiModel("管理后台 - 字典类型 Response VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolTestDemoRespVO extends ToolTestDemoBaseVO {
+public class TestDemoRespVO extends TestDemoBaseVO {
 
     @ApiModelProperty(value = "编号", required = true, example = "1")
     private Long id;

+ 3 - 3
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/controller/test/vo/ToolTestDemoUpdateReqVO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/admin/test/vo/TestDemoUpdateReqVO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo;
+package cn.iocoder.yudao.module.tool.controller.admin.test.vo;
 
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,11 +8,11 @@ import lombok.ToString;
 
 import javax.validation.constraints.NotNull;
 
-@ApiModel("字典类型更新 Request VO")
+@ApiModel("管理后台 - 字典类型更新 Request VO")
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ToString(callSuper = true)
-public class ToolTestDemoUpdateReqVO extends ToolTestDemoBaseVO {
+public class TestDemoUpdateReqVO extends TestDemoBaseVO {
 
     @ApiModelProperty(value = "编号", required = true, example = "1")
     @NotNull(message = "编号不能为空")

+ 4 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/app/package-info.java

@@ -0,0 +1,4 @@
+/**
+ * 占位,避免 package 无法提交到 Git 仓库
+ */
+package cn.iocoder.yudao.module.tool.controller.app;

+ 6 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/controller/package-info.java

@@ -0,0 +1,6 @@
+/**
+ * 提供 RESTful API 给前端:
+ * 1. admin 包:提供给管理后台 yudao-ui-admin 前端项目
+ * 2. app 包:提供给用户 APP yudao-ui-app 前端项目,它的 Controller 和 VO 都要添加 App 前缀,用于和管理后台进行区分
+ */
+package cn.iocoder.yudao.module.tool.controller;

+ 70 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/convert/codegen/CodegenConvert.java

@@ -0,0 +1,70 @@
+package cn.iocoder.yudao.module.tool.convert.codegen;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenDetailRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenPreviewRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenUpdateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.column.CodegenColumnRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTableRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.SchemaTableRespVO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@Mapper
+public interface CodegenConvert {
+
+    CodegenConvert INSTANCE = Mappers.getMapper(CodegenConvert.class);
+
+    // ========== InformationSchemaTableDO 和 InformationSchemaColumnDO 相关 ==========
+
+    CodegenTableDO convert(SchemaTableDO bean);
+
+    List<CodegenColumnDO> convertList(List<SchemaColumnDO> list);
+
+    CodegenTableRespVO convert(SchemaColumnDO bean);
+
+    // ========== CodegenTableDO 相关 ==========
+
+//    List<CodegenTableRespVO> convertList02(List<CodegenTableDO> list);
+
+    CodegenTableRespVO convert(CodegenTableDO bean);
+
+    PageResult<CodegenTableRespVO> convertPage(PageResult<CodegenTableDO> page);
+
+    // ========== CodegenTableDO 相关 ==========
+
+    List<CodegenColumnRespVO> convertList02(List<CodegenColumnDO> list);
+
+    CodegenTableDO convert(CodegenUpdateReqVO.Table bean);
+
+    List<CodegenColumnDO> convertList03(List<CodegenUpdateReqVO.Column> columns);
+
+    List<SchemaTableRespVO> convertList04(List<SchemaTableDO> list);
+
+    // ========== 其它 ==========
+
+    default CodegenDetailRespVO convert(CodegenTableDO table, List<CodegenColumnDO> columns) {
+        CodegenDetailRespVO respVO = new CodegenDetailRespVO();
+        respVO.setTable(convert(table));
+        respVO.setColumns(convertList02(columns));
+        return respVO;
+    }
+
+    default List<CodegenPreviewRespVO> convert(Map<String, String> codes) {
+        return codes.entrySet().stream().map(entry -> {
+            CodegenPreviewRespVO respVO = new CodegenPreviewRespVO();
+            respVO.setFilePath(entry.getKey());
+            respVO.setCode(entry.getValue());
+            return respVO;
+        }).collect(Collectors.toList());
+    }
+
+}

+ 32 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/convert/test/TestDemoConvert.java

@@ -0,0 +1,32 @@
+package cn.iocoder.yudao.module.tool.convert.test;
+
+import java.util.*;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExcelVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoRespVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO;
+
+@Mapper
+public interface TestDemoConvert {
+
+    TestDemoConvert INSTANCE = Mappers.getMapper(TestDemoConvert.class);
+
+    TestDemoDO convert(TestDemoCreateReqVO bean);
+
+    TestDemoDO convert(TestDemoUpdateReqVO bean);
+
+    TestDemoRespVO convert(TestDemoDO bean);
+
+    List<TestDemoRespVO> convertList(List<TestDemoDO> list);
+
+    PageResult<TestDemoRespVO> convertPage(PageResult<TestDemoDO> page);
+
+    List<TestDemoExcelVO> convertList02(List<TestDemoDO> list);
+
+}

+ 7 - 7
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenColumnDO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/CodegenColumnDO.java

@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
+package cn.iocoder.yudao.module.tool.dal.dataobject.codegen;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenColumnHtmlTypeEnum;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenColumnListConditionEnum;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -18,7 +18,7 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = true)
-public class ToolCodegenColumnDO extends BaseDO {
+public class CodegenColumnDO extends BaseDO {
 
     /**
      * ID 编号
@@ -28,7 +28,7 @@ public class ToolCodegenColumnDO extends BaseDO {
     /**
      * 表编号
      *
-     * 关联 {@link ToolCodegenTableDO#getId()}
+     * 关联 {@link CodegenTableDO#getId()}
      */
     private Long tableId;
 
@@ -104,7 +104,7 @@ public class ToolCodegenColumnDO extends BaseDO {
     /**
      * List 查询操作的条件类型
      *
-     * 枚举 {@link ToolCodegenColumnListConditionEnum}
+     * 枚举 {@link CodegenColumnListConditionEnum}
      */
     private String listOperationCondition;
     /**
@@ -117,7 +117,7 @@ public class ToolCodegenColumnDO extends BaseDO {
     /**
      * 显示类型
      *
-     * 枚举 {@link ToolCodegenColumnHtmlTypeEnum}
+     * 枚举 {@link CodegenColumnHtmlTypeEnum}
      */
     private String htmlType;
 

+ 5 - 5
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolCodegenTableDO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/CodegenTableDO.java

@@ -1,7 +1,7 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
+package cn.iocoder.yudao.module.tool.dal.dataobject.codegen;
 
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenTemplateTypeEnum;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
@@ -16,7 +16,7 @@ import lombok.experimental.Accessors;
 @Data
 @Accessors(chain = true)
 @EqualsAndHashCode(callSuper = true)
-public class ToolCodegenTableDO extends BaseDO {
+public class CodegenTableDO extends BaseDO {
 
     /**
      * ID 编号
@@ -26,7 +26,7 @@ public class ToolCodegenTableDO extends BaseDO {
     /**
      * 导入类型
      *
-     * 枚举 {@link ToolCodegenTemplateTypeEnum}
+     * 枚举 {@link CodegenTemplateTypeEnum}
      */
     private Integer importType;
 
@@ -79,7 +79,7 @@ public class ToolCodegenTableDO extends BaseDO {
     /**
      * 模板类型
      *
-     * 枚举 {@link ToolCodegenTemplateTypeEnum}
+     * 枚举 {@link CodegenTemplateTypeEnum}
      */
     private Integer templateType;
 

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaColumnDO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/SchemaColumnDO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
+package cn.iocoder.yudao.module.tool.dal.dataobject.codegen;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableName;
@@ -13,7 +13,7 @@ import lombok.Data;
 @TableName(value = "information_schema.columns", autoResultMap = true)
 @Data
 @Builder
-public class ToolSchemaColumnDO {
+public class SchemaColumnDO {
 
     /**
      * 表名称

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/codegen/ToolSchemaTableDO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/codegen/SchemaTableDO.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen;
+package cn.iocoder.yudao.module.tool.dal.dataobject.codegen;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Builder;
@@ -14,7 +14,7 @@ import java.util.Date;
 @TableName(value = "information_schema.tables", autoResultMap = true)
 @Data
 @Builder
-public class ToolSchemaTableDO {
+public class SchemaTableDO {
 
     /**
      * 数据库

+ 3 - 4
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/dataobject/test/ToolTestDemoDO.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/dataobject/test/TestDemoDO.java

@@ -1,12 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test;
+package cn.iocoder.yudao.module.tool.dal.dataobject.test;
 
 import lombok.*;
-import java.util.*;
 import com.baomidou.mybatisplus.annotation.*;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 
 /**
- * 字典类型 DO
+ * 测试示例 DO
  *
  * @author 芋艿
  */
@@ -17,7 +16,7 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class ToolTestDemoDO extends BaseDO {
+public class TestDemoDO extends BaseDO {
 
     /**
      * 编号

+ 22 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/CodegenColumnMapper.java

@@ -0,0 +1,22 @@
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface CodegenColumnMapper extends BaseMapperX<CodegenColumnDO> {
+
+    default List<CodegenColumnDO> selectListByTableId(Long tableId) {
+        return selectList(new QueryWrapper<CodegenColumnDO>().eq("table_id", tableId)
+                .orderByAsc("ordinal_position"));
+    }
+
+    default void deleteListByTableId(Long tableId) {
+        delete(new QueryWrapper<CodegenColumnDO>().eq("table_id", tableId));
+    }
+
+}

+ 25 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/CodegenTableMapper.java

@@ -0,0 +1,25 @@
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
+
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTablePageReqVO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface CodegenTableMapper extends BaseMapperX<CodegenTableDO> {
+
+    default CodegenTableDO selectByTableName(String tableName) {
+        return selectOne(new QueryWrapper<CodegenTableDO>().eq("table_name", tableName));
+    }
+
+    default PageResult<CodegenTableDO> selectPage(CodegenTablePageReqVO pageReqVO) {
+        return selectPage(pageReqVO, new QueryWrapperX<CodegenTableDO>()
+                .likeIfPresent("table_name", pageReqVO.getTableName())
+                .likeIfPresent("table_comment", pageReqVO.getTableComment())
+                .betweenIfPresent("create_time", pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime()));
+    }
+
+}

+ 19 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/SchemaColumnMapper.java

@@ -0,0 +1,19 @@
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaColumnDO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+@Mapper
+public interface SchemaColumnMapper extends BaseMapperX<SchemaColumnDO> {
+
+    default List<SchemaColumnDO> selectListByTableName(String tableSchema, String tableName) {
+        return selectList(new QueryWrapper<SchemaColumnDO>().eq("table_name", tableName)
+                .eq("table_schema", tableSchema)
+                .orderByAsc("ordinal_position"));
+    }
+
+}

+ 26 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/codegen/SchemaTableMapper.java

@@ -0,0 +1,26 @@
+package cn.iocoder.yudao.module.tool.dal.mysql.codegen;
+
+import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
+import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.Collection;
+import java.util.List;
+
+@Mapper
+public interface SchemaTableMapper extends BaseMapperX<SchemaTableDO> {
+
+    default List<SchemaTableDO> selectList(Collection<String> tableSchemas, String tableName, String tableComment) {
+        return selectList(new QueryWrapperX<SchemaTableDO>().in("table_schema", tableSchemas)
+                .likeIfPresent("table_name", tableName)
+                .likeIfPresent("table_comment", tableComment));
+    }
+
+    default SchemaTableDO selectByTableSchemaAndTableName(String tableSchema, String tableName) {
+        return selectOne(new QueryWrapper<SchemaTableDO>().eq("table_schema",tableSchema)
+                        .eq("table_name", tableName));
+    }
+
+}

+ 9 - 13
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/dal/mysql/test/ToolTestDemoMapper.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/dal/mysql/test/TestDemoMapper.java

@@ -1,24 +1,20 @@
-package cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.test;
+package cn.iocoder.yudao.module.tool.dal.mysql.test;
 
 import java.util.*;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO;
 import org.apache.ibatis.annotations.Mapper;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*;
 
-/**
- * 字典类型 Mapper
- *
- * @author 芋艿
- */
 @Mapper
-public interface ToolTestDemoMapper extends BaseMapperX<ToolTestDemoDO> {
+public interface TestDemoMapper extends BaseMapperX<TestDemoDO> {
 
-    default PageResult<ToolTestDemoDO> selectPage(ToolTestDemoPageReqVO reqVO) {
-        return selectPage(reqVO, new QueryWrapperX<ToolTestDemoDO>()
+    default PageResult<TestDemoDO> selectPage(TestDemoPageReqVO reqVO) {
+        return selectPage(reqVO, new QueryWrapperX<TestDemoDO>()
                 .likeIfPresent("name", reqVO.getName())
                 .eqIfPresent("status", reqVO.getStatus())
                 .eqIfPresent("type", reqVO.getType())
@@ -28,8 +24,8 @@ public interface ToolTestDemoMapper extends BaseMapperX<ToolTestDemoDO> {
                 .orderByDesc("id"));
     }
 
-    default List<ToolTestDemoDO> selectList(ToolTestDemoExportReqVO reqVO) {
-        return selectList(new QueryWrapperX<ToolTestDemoDO>()
+    default List<TestDemoDO> selectList(TestDemoExportReqVO reqVO) {
+        return selectList(new QueryWrapperX<TestDemoDO>()
                 .likeIfPresent("name", reqVO.getName())
                 .eqIfPresent("status", reqVO.getStatus())
                 .eqIfPresent("type", reqVO.getType())

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnHtmlTypeEnum.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenColumnHtmlTypeEnum.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen;
+package cn.iocoder.yudao.module.tool.enums.codegen;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -8,7 +8,7 @@ import lombok.Getter;
  */
 @AllArgsConstructor
 @Getter
-public enum ToolCodegenColumnHtmlTypeEnum {
+public enum CodegenColumnHtmlTypeEnum {
 
     INPUT("input"), // 文本框
     TEXTAREA("textarea"), // 文本域

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenColumnListConditionEnum.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenColumnListConditionEnum.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen;
+package cn.iocoder.yudao.module.tool.enums.codegen;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -8,7 +8,7 @@ import lombok.Getter;
  */
 @AllArgsConstructor
 @Getter
-public enum ToolCodegenColumnListConditionEnum {
+public enum CodegenColumnListConditionEnum {
 
     EQ("="),
     NE("!="),

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenImportTypeEnum.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenImportTypeEnum.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen;
+package cn.iocoder.yudao.module.tool.enums.codegen;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -10,7 +10,7 @@ import lombok.Getter;
  */
 @AllArgsConstructor
 @Getter
-public enum ToolCodegenImportTypeEnum {
+public enum CodegenImportTypeEnum {
 
     DB(1), // 从 information_schema 的 table 和 columns 表导入
     SQL(2); // 基于建表 SQL 语句导入

+ 2 - 2
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/enums/codegen/ToolCodegenTemplateTypeEnum.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/codegen/CodegenTemplateTypeEnum.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.enums.codegen;
+package cn.iocoder.yudao.module.tool.enums.codegen;
 
 import lombok.AllArgsConstructor;
 import lombok.Getter;
@@ -10,7 +10,7 @@ import lombok.Getter;
  */
 @AllArgsConstructor
 @Getter
-public enum ToolCodegenTemplateTypeEnum {
+public enum CodegenTemplateTypeEnum {
 
     CRUD(1), // 单表(增删改查)
     TREE(2), // 树表(增删改查)

+ 4 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/enums/package-info.java

@@ -0,0 +1,4 @@
+/**
+ * 占位
+ */
+package cn.iocoder.yudao.module.tool.enums;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenConfiguration.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/config/CodegenConfiguration.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config;
+package cn.iocoder.yudao.module.tool.framework.codegen.config;
 
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Configuration;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/codegen/config/CodegenProperties.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/config/CodegenProperties.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config;
+package cn.iocoder.yudao.module.tool.framework.codegen.config;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;

+ 4 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/codegen/package-info.java

@@ -0,0 +1,4 @@
+/**
+ * 代码生成器
+ */
+package cn.iocoder.yudao.module.tool.framework.codegen;

+ 1 - 1
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/framework/package-info.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/framework/package-info.java

@@ -3,4 +3,4 @@
  *
  * @author 芋道源码
  */
-package cn.iocoder.yudao.adminserver.modules.tool.framework;
+package cn.iocoder.yudao.module.tool.framework;

+ 8 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/package-info.java

@@ -0,0 +1,8 @@
+/**
+ * tool 模块下,我们放研发工具,提升研发效率与质量。
+ * 例如说:代码生成器、接口文档等等
+ *
+ * 1. Controller URL:以 /tool/ 开头,避免和其它 Module 冲突
+ * 2. DataObject 表名:以 tool_ 开头,方便在数据库中区分
+ */
+package cn.iocoder.yudao.module.tool;

+ 13 - 13
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/ToolCodegenService.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/CodegenService.java

@@ -1,11 +1,11 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen;
+package cn.iocoder.yudao.module.tool.service.codegen;
 
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenUpdateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTablePageReqVO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
 
 import java.util.List;
 import java.util.Map;
@@ -15,7 +15,7 @@ import java.util.Map;
  *
  * @author 芋道源码
  */
-public interface ToolCodegenService {
+public interface CodegenService {
 
     /**
      * 基于 SQL 建表语句,创建代码生成器的表定义
@@ -46,7 +46,7 @@ public interface ToolCodegenService {
      *
      * @param updateReqVO 更新信息
      */
-    void updateCodegen(ToolCodegenUpdateReqVO updateReqVO);
+    void updateCodegen(CodegenUpdateReqVO updateReqVO);
 
     /**
      * 基于数据库的表结构,同步数据库的表和字段定义
@@ -76,7 +76,7 @@ public interface ToolCodegenService {
      * @param pageReqVO 分页条件
      * @return 表定义分页
      */
-    PageResult<ToolCodegenTableDO> getCodegenTablePage(ToolCodegenTablePageReqVO pageReqVO);
+    PageResult<CodegenTableDO> getCodegenTablePage(CodegenTablePageReqVO pageReqVO);
 
     /**
      * 获得表定义
@@ -84,14 +84,14 @@ public interface ToolCodegenService {
      * @param id 表编号
      * @return 表定义
      */
-    ToolCodegenTableDO getCodegenTablePage(Long id);
+    CodegenTableDO getCodegenTablePage(Long id);
 
     /**
      * 获得全部表定义
      *
      * @return 表定义数组
      */
-    List<ToolCodegenTableDO> getCodeGenTableList();
+    List<CodegenTableDO> getCodeGenTableList();
 
     /**
      * 获得指定表的字段定义数组
@@ -99,7 +99,7 @@ public interface ToolCodegenService {
      * @param tableId 表编号
      * @return 字段定义数组
      */
-    List<ToolCodegenColumnDO> getCodegenColumnListByTableId(Long tableId);
+    List<CodegenColumnDO> getCodegenColumnListByTableId(Long tableId);
 
     /**
      * 执行指定表的代码生成
@@ -116,6 +116,6 @@ public interface ToolCodegenService {
      * @param tableComment 表描述
      * @return 表定义列表
      */
-    List<ToolSchemaTableDO> getSchemaTableList(String tableName, String tableComment);
+    List<SchemaTableDO> getSchemaTableList(String tableName, String tableComment);
 
 }

+ 61 - 59
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenServiceImpl.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/CodegenServiceImpl.java

@@ -1,22 +1,24 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl;
+package cn.iocoder.yudao.module.tool.service.codegen;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config.CodegenProperties;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.ToolCodegenUpdateReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.codegen.vo.table.ToolCodegenTablePageReqVO;
-import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenColumnMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolCodegenTableMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolSchemaColumnMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.mysql.codegen.ToolSchemaTableMapper;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenImportTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.tool.service.codegen.ToolCodegenService;
+import cn.iocoder.yudao.module.tool.framework.codegen.config.CodegenProperties;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.CodegenUpdateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.codegen.vo.table.CodegenTablePageReqVO;
+import cn.iocoder.yudao.module.tool.convert.codegen.CodegenConvert;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.CodegenColumnMapper;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.CodegenTableMapper;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.SchemaColumnMapper;
+import cn.iocoder.yudao.module.tool.dal.mysql.codegen.SchemaTableMapper;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenImportTypeEnum;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
+import cn.iocoder.yudao.module.tool.service.codegen.inner.CodegenBuilder;
+import cn.iocoder.yudao.module.tool.service.codegen.inner.CodegenEngine;
+import cn.iocoder.yudao.module.tool.service.codegen.inner.CodegenSQLParser;
 import org.apache.commons.collections4.KeyValue;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -29,7 +31,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
-import static cn.iocoder.yudao.adminserver.modules.tool.enums.ToolErrorCodeConstants.*;
+import static cn.iocoder.yudao.module.tool.enums.ErrorCodeConstants.*;
 
 /**
  * 代码生成 Service 实现类
@@ -37,27 +39,27 @@ import static cn.iocoder.yudao.adminserver.modules.tool.enums.ToolErrorCodeConst
  * @author 芋道源码
  */
 @Service
-public class ToolCodegenServiceImpl implements ToolCodegenService {
+public class CodegenServiceImpl implements CodegenService {
 
     @Resource
-    private ToolSchemaTableMapper schemaTableMapper;
+    private SchemaTableMapper schemaTableMapper;
     @Resource
-    private ToolSchemaColumnMapper schemaColumnMapper;
+    private SchemaColumnMapper schemaColumnMapper;
     @Resource
-    private ToolCodegenTableMapper codegenTableMapper;
+    private CodegenTableMapper codegenTableMapper;
     @Resource
-    private ToolCodegenColumnMapper codegenColumnMapper;
+    private CodegenColumnMapper codegenColumnMapper;
 
     @Resource
-    private ToolCodegenBuilder codegenBuilder;
+    private CodegenBuilder codegenBuilder;
     @Resource
-    private ToolCodegenEngine codegenEngine;
+    private CodegenEngine codegenEngine;
 
     @Resource
     private CodegenProperties codegenProperties;
 
-    private Long createCodegen0(ToolCodegenImportTypeEnum importType,
-                                ToolSchemaTableDO schemaTable, List<ToolSchemaColumnDO> schemaColumns) {
+    private Long createCodegen0(CodegenImportTypeEnum importType,
+                                SchemaTableDO schemaTable, List<SchemaColumnDO> schemaColumns) {
         // 校验导入的表和字段非空
         if (schemaTable == null) {
             throw exception(CODEGEN_IMPORT_TABLE_NULL);
@@ -70,12 +72,12 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
             throw exception(CODEGEN_TABLE_EXISTS);
         }
 
-        // 构建 ToolCodegenTableDO 对象,插入到 DB 中
-        ToolCodegenTableDO table = codegenBuilder.buildTable(schemaTable);
+        // 构建 CodegenTableDO 对象,插入到 DB 中
+        CodegenTableDO table = codegenBuilder.buildTable(schemaTable);
         table.setImportType(importType.getType());
         codegenTableMapper.insert(table);
-        // 构建 ToolCodegenColumnDO 数组,插入到 DB 中
-        List<ToolCodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
+        // 构建 CodegenColumnDO 数组,插入到 DB 中
+        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
         columns.forEach(column -> {
             column.setTableId(table.getId());
             codegenColumnMapper.insert(column); // TODO 批量插入
@@ -86,17 +88,17 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
     @Override
     public Long createCodegenListFromSQL(String sql) {
         // 从 SQL 中,获得数据库表结构
-        ToolSchemaTableDO schemaTable;
-        List<ToolSchemaColumnDO> schemaColumns;
+        SchemaTableDO schemaTable;
+        List<SchemaColumnDO> schemaColumns;
         try {
-            KeyValue<ToolSchemaTableDO, List<ToolSchemaColumnDO>> result = ToolCodegenSQLParser.parse(sql);
+            KeyValue<SchemaTableDO, List<SchemaColumnDO>> result = CodegenSQLParser.parse(sql);
             schemaTable = result.getKey();
             schemaColumns = result.getValue();
         } catch (Exception ex) {
             throw exception(CODEGEN_PARSE_SQL_ERROR);
         }
         // 导入
-        return this.createCodegen0(ToolCodegenImportTypeEnum.SQL, schemaTable, schemaColumns);
+        return this.createCodegen0(CodegenImportTypeEnum.SQL, schemaTable, schemaColumns);
     }
 
     @Override
@@ -104,10 +106,10 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
         // 获取当前schema
         String tableSchema = codegenProperties.getDbSchemas().iterator().next();
         // 从数据库中,获得数据库表结构
-        ToolSchemaTableDO schemaTable = schemaTableMapper.selectByTableSchemaAndTableName(tableSchema, tableName);
-        List<ToolSchemaColumnDO> schemaColumns = schemaColumnMapper.selectListByTableName(tableSchema, tableName);
+        SchemaTableDO schemaTable = schemaTableMapper.selectByTableSchemaAndTableName(tableSchema, tableName);
+        List<SchemaColumnDO> schemaColumns = schemaColumnMapper.selectListByTableName(tableSchema, tableName);
         // 导入
-        return this.createCodegen0(ToolCodegenImportTypeEnum.DB, schemaTable, schemaColumns);
+        return this.createCodegen0(CodegenImportTypeEnum.DB, schemaTable, schemaColumns);
     }
 
     @Override
@@ -121,17 +123,17 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateCodegen(ToolCodegenUpdateReqVO updateReqVO) {
+    public void updateCodegen(CodegenUpdateReqVO updateReqVO) {
         // 校验是否已经存在
         if (codegenTableMapper.selectById(updateReqVO.getTable().getId()) == null) {
             throw exception(CODEGEN_TABLE_NOT_EXISTS);
         }
 
         // 更新 table 表定义
-        ToolCodegenTableDO updateTableObj = ToolCodegenConvert.INSTANCE.convert(updateReqVO.getTable());
+        CodegenTableDO updateTableObj = CodegenConvert.INSTANCE.convert(updateReqVO.getTable());
         codegenTableMapper.updateById(updateTableObj);
         // 更新 column 字段定义
-        List<ToolCodegenColumnDO> updateColumnObjs = ToolCodegenConvert.INSTANCE.convertList03(updateReqVO.getColumns());
+        List<CodegenColumnDO> updateColumnObjs = CodegenConvert.INSTANCE.convertList03(updateReqVO.getColumns());
         updateColumnObjs.forEach(updateColumnObj -> codegenColumnMapper.updateById(updateColumnObj));
     }
 
@@ -139,13 +141,13 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
     @Transactional(rollbackFor = Exception.class)
     public void syncCodegenFromDB(Long tableId) {
         // 校验是否已经存在
-        ToolCodegenTableDO table = codegenTableMapper.selectById(tableId);
+        CodegenTableDO table = codegenTableMapper.selectById(tableId);
         if (table == null) {
             throw exception(CODEGEN_TABLE_NOT_EXISTS);
         }
         String tableSchema = codegenProperties.getDbSchemas().iterator().next();
         // 从数据库中,获得数据库表结构
-        List<ToolSchemaColumnDO> schemaColumns = schemaColumnMapper.selectListByTableName(tableSchema, table.getTableName());
+        List<SchemaColumnDO> schemaColumns = schemaColumnMapper.selectListByTableName(tableSchema, table.getTableName());
 
         // 执行同步
         this.syncCodegen0(tableId, schemaColumns);
@@ -155,14 +157,14 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
     @Transactional(rollbackFor = Exception.class)
     public void syncCodegenFromSQL(Long tableId, String sql) {
         // 校验是否已经存在
-        ToolCodegenTableDO table = codegenTableMapper.selectById(tableId);
+        CodegenTableDO table = codegenTableMapper.selectById(tableId);
         if (table == null) {
             throw exception(CODEGEN_TABLE_NOT_EXISTS);
         }
         // 从 SQL 中,获得数据库表结构
-        List<ToolSchemaColumnDO> schemaColumns;
+        List<SchemaColumnDO> schemaColumns;
         try {
-            KeyValue<ToolSchemaTableDO, List<ToolSchemaColumnDO>> result = ToolCodegenSQLParser.parse(sql);
+            KeyValue<SchemaTableDO, List<SchemaColumnDO>> result = CodegenSQLParser.parse(sql);
             schemaColumns = result.getValue();
         } catch (Exception ex) {
             throw exception(CODEGEN_PARSE_SQL_ERROR);
@@ -172,27 +174,27 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
         this.syncCodegen0(tableId, schemaColumns);
     }
 
-    private void syncCodegen0(Long tableId, List<ToolSchemaColumnDO> schemaColumns) {
+    private void syncCodegen0(Long tableId, List<SchemaColumnDO> schemaColumns) {
         // 校验导入的字段不为空
         if (CollUtil.isEmpty(schemaColumns)) {
             throw exception(CODEGEN_SYNC_COLUMNS_NULL);
         }
-        Set<String> schemaColumnNames = CollectionUtils.convertSet(schemaColumns, ToolSchemaColumnDO::getColumnName);
+        Set<String> schemaColumnNames = CollectionUtils.convertSet(schemaColumns, SchemaColumnDO::getColumnName);
 
-        // 构建 ToolCodegenColumnDO 数组,只同步新增的字段
-        List<ToolCodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId);
-        Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, ToolCodegenColumnDO::getColumnName);
+        // 构建 CodegenColumnDO 数组,只同步新增的字段
+        List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId);
+        Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName);
         // 移除已经存在的字段
         schemaColumns.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
         // 计算需要删除的字段
         Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !schemaColumnNames.contains(column.getColumnName()))
-                .map(ToolCodegenColumnDO::getId).collect(Collectors.toSet());
+                .map(CodegenColumnDO::getId).collect(Collectors.toSet());
         if (CollUtil.isEmpty(schemaColumns) && CollUtil.isEmpty(deleteColumnIds)) {
             throw exception(CODEGEN_SYNC_NONE_CHANGE);
         }
 
         // 插入新增的字段
-        List<ToolCodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
+        List<CodegenColumnDO> columns = codegenBuilder.buildColumns(schemaColumns);
         columns.forEach(column -> {
             column.setTableId(tableId);
             codegenColumnMapper.insert(column); // TODO 批量插入
@@ -218,33 +220,33 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
     }
 
     @Override
-    public PageResult<ToolCodegenTableDO> getCodegenTablePage(ToolCodegenTablePageReqVO pageReqVO) {
+    public PageResult<CodegenTableDO> getCodegenTablePage(CodegenTablePageReqVO pageReqVO) {
         return codegenTableMapper.selectPage(pageReqVO);
     }
 
     @Override
-    public ToolCodegenTableDO getCodegenTablePage(Long id) {
+    public CodegenTableDO getCodegenTablePage(Long id) {
         return codegenTableMapper.selectById(id);
     }
 
     @Override
-    public List<ToolCodegenTableDO> getCodeGenTableList() {
+    public List<CodegenTableDO> getCodeGenTableList() {
         return codegenTableMapper.selectList();
     }
 
     @Override
-    public List<ToolCodegenColumnDO> getCodegenColumnListByTableId(Long tableId) {
+    public List<CodegenColumnDO> getCodegenColumnListByTableId(Long tableId) {
         return codegenColumnMapper.selectListByTableId(tableId);
     }
 
     @Override
     public Map<String, String> generationCodes(Long tableId) {
         // 校验是否已经存在
-        ToolCodegenTableDO table = codegenTableMapper.selectById(tableId);
+        CodegenTableDO table = codegenTableMapper.selectById(tableId);
         if (codegenTableMapper.selectById(tableId) == null) {
             throw exception(CODEGEN_TABLE_NOT_EXISTS);
         }
-        List<ToolCodegenColumnDO> columns = codegenColumnMapper.selectListByTableId(tableId);
+        List<CodegenColumnDO> columns = codegenColumnMapper.selectListByTableId(tableId);
         if (CollUtil.isEmpty(columns)) {
             throw exception(CODEGEN_COLUMN_NOT_EXISTS);
         }
@@ -254,8 +256,8 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
     }
 
     @Override
-    public List<ToolSchemaTableDO> getSchemaTableList(String tableName, String tableComment) {
-        List<ToolSchemaTableDO> tables = schemaTableMapper.selectList(codegenProperties.getDbSchemas(), tableName, tableComment);
+    public List<SchemaTableDO> getSchemaTableList(String tableName, String tableComment) {
+        List<SchemaTableDO> tables = schemaTableMapper.selectList(codegenProperties.getDbSchemas(), tableName, tableComment);
         // TODO 强制移除 Quartz 的表,未来做成可配置
         tables.removeIf(table -> table.getTableName().startsWith("QRTZ_"));
         tables.removeIf(table -> table.getTableName().startsWith("ACT_"));

+ 42 - 42
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenBuilder.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenBuilder.java

@@ -1,16 +1,16 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl;
+package cn.iocoder.yudao.module.tool.service.codegen.inner;
 
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
-import cn.iocoder.yudao.adminserver.modules.tool.convert.codegen.ToolCodegenConvert;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnHtmlTypeEnum;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenColumnListConditionEnum;
-import cn.iocoder.yudao.adminserver.modules.tool.enums.codegen.ToolCodegenTemplateTypeEnum;
+import cn.iocoder.yudao.module.tool.convert.codegen.CodegenConvert;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenColumnHtmlTypeEnum;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenColumnListConditionEnum;
+import cn.iocoder.yudao.module.tool.enums.codegen.CodegenTemplateTypeEnum;
 import com.google.common.collect.Sets;
 import org.springframework.stereotype.Component;
 
@@ -21,11 +21,11 @@ import static cn.hutool.core.text.CharSequenceUtil.*;
 
 /**
  * 代码生成器的 Builder,负责:
- * 1. 将数据库的表 {@link ToolSchemaTableDO} 定义,构建成 {@link ToolCodegenTableDO}
- * 2. 将数据库的列 {@link ToolSchemaColumnDO} 构定义,建成 {@link ToolCodegenColumnDO}
+ * 1. 将数据库的表 {@link SchemaTableDO} 定义,构建成 {@link CodegenTableDO}
+ * 2. 将数据库的列 {@link SchemaColumnDO} 构定义,建成 {@link CodegenColumnDO}
  */
 @Component
-public class ToolCodegenBuilder {
+public class CodegenBuilder {
 
     /**
      * Module 名字的映射 TODO 后续梳理到配置类
@@ -40,30 +40,30 @@ public class ToolCodegenBuilder {
             .build();
 
     /**
-     * 字段名与 {@link ToolCodegenColumnListConditionEnum} 的默认映射
+     * 字段名与 {@link CodegenColumnListConditionEnum} 的默认映射
      * 注意,字段的匹配以后缀的方式
      */
-    private static final Map<String, ToolCodegenColumnListConditionEnum> columnListOperationConditionMappings =
-            MapUtil.<String, ToolCodegenColumnListConditionEnum>builder()
-                    .put("name", ToolCodegenColumnListConditionEnum.LIKE)
-                    .put("time", ToolCodegenColumnListConditionEnum.BETWEEN)
-                    .put("date", ToolCodegenColumnListConditionEnum.BETWEEN)
+    private static final Map<String, CodegenColumnListConditionEnum> columnListOperationConditionMappings =
+            MapUtil.<String, CodegenColumnListConditionEnum>builder()
+                    .put("name", CodegenColumnListConditionEnum.LIKE)
+                    .put("time", CodegenColumnListConditionEnum.BETWEEN)
+                    .put("date", CodegenColumnListConditionEnum.BETWEEN)
                     .build();
 
     /**
-     * 字段名与 {@link ToolCodegenColumnHtmlTypeEnum} 的默认映射
+     * 字段名与 {@link CodegenColumnHtmlTypeEnum} 的默认映射
      * 注意,字段的匹配以后缀的方式
      */
-    private static final Map<String, ToolCodegenColumnHtmlTypeEnum> columnHtmlTypeMappings =
-            MapUtil.<String, ToolCodegenColumnHtmlTypeEnum>builder()
-                    .put("status", ToolCodegenColumnHtmlTypeEnum.RADIO)
-                    .put("sex", ToolCodegenColumnHtmlTypeEnum.RADIO)
-                    .put("type", ToolCodegenColumnHtmlTypeEnum.SELECT)
-                    .put("image", ToolCodegenColumnHtmlTypeEnum.UPLOAD_IMAGE)
-                    .put("file", ToolCodegenColumnHtmlTypeEnum.UPLOAD_FILE)
-                    .put("content", ToolCodegenColumnHtmlTypeEnum.EDITOR)
-                    .put("time", ToolCodegenColumnHtmlTypeEnum.DATETIME)
-                    .put("date", ToolCodegenColumnHtmlTypeEnum.DATETIME)
+    private static final Map<String, CodegenColumnHtmlTypeEnum> columnHtmlTypeMappings =
+            MapUtil.<String, CodegenColumnHtmlTypeEnum>builder()
+                    .put("status", CodegenColumnHtmlTypeEnum.RADIO)
+                    .put("sex", CodegenColumnHtmlTypeEnum.RADIO)
+                    .put("type", CodegenColumnHtmlTypeEnum.SELECT)
+                    .put("image", CodegenColumnHtmlTypeEnum.UPLOAD_IMAGE)
+                    .put("file", CodegenColumnHtmlTypeEnum.UPLOAD_FILE)
+                    .put("content", CodegenColumnHtmlTypeEnum.EDITOR)
+                    .put("time", CodegenColumnHtmlTypeEnum.DATETIME)
+                    .put("date", CodegenColumnHtmlTypeEnum.DATETIME)
                     .build();
 
     /**
@@ -113,8 +113,8 @@ public class ToolCodegenBuilder {
         LIST_OPERATION_RESULT_EXCLUDE_COLUMN.remove("createTime"); // 创建时间,还是需要返回的
     }
 
-    public ToolCodegenTableDO buildTable(ToolSchemaTableDO schemaTable) {
-        ToolCodegenTableDO table = ToolCodegenConvert.INSTANCE.convert(schemaTable);
+    public CodegenTableDO buildTable(SchemaTableDO schemaTable) {
+        CodegenTableDO table = CodegenConvert.INSTANCE.convert(schemaTable);
         initTableDefault(table);
         return table;
     }
@@ -124,7 +124,7 @@ public class ToolCodegenBuilder {
      *
      * @param table 表定义
      */
-    private void initTableDefault(ToolCodegenTableDO table) {
+    private void initTableDefault(CodegenTableDO table) {
         table.setModuleName(getFullModuleName(StrUtil.subBefore(table.getTableName(),
                 '_', false))); // 第一个 _ 前缀的前面,作为 module 名字
         table.setBusinessName(toCamelCase(subAfter(table.getTableName(),
@@ -133,11 +133,11 @@ public class ToolCodegenBuilder {
         table.setClassComment(subBefore(table.getTableComment(), // 去除结尾的表,作为类描述
                 '表', true));
         table.setAuthor("芋艿"); // TODO 稍后改成创建人
-        table.setTemplateType(ToolCodegenTemplateTypeEnum.CRUD.getType());
+        table.setTemplateType(CodegenTemplateTypeEnum.CRUD.getType());
     }
 
-    public List<ToolCodegenColumnDO> buildColumns(List<ToolSchemaColumnDO> schemaColumns) {
-        List<ToolCodegenColumnDO> columns = ToolCodegenConvert.INSTANCE.convertList(schemaColumns);
+    public List<CodegenColumnDO> buildColumns(List<SchemaColumnDO> schemaColumns) {
+        List<CodegenColumnDO> columns = CodegenConvert.INSTANCE.convertList(schemaColumns);
         columns.forEach(this::initColumnDefault);
         return columns;
     }
@@ -147,7 +147,7 @@ public class ToolCodegenBuilder {
      *
      * @param column 列定义
      */
-    private void initColumnDefault(ToolCodegenColumnDO column) {
+    private void initColumnDefault(CodegenColumnDO column) {
         // 处理 Java 相关的字段的默认值
         processColumnJava(column);
         // 处理 CRUD 相关的字段的默认值
@@ -156,7 +156,7 @@ public class ToolCodegenBuilder {
         processColumnUI(column);
     }
 
-    private void processColumnJava(ToolCodegenColumnDO column) {
+    private void processColumnJava(CodegenColumnDO column) {
         // 处理 javaField 字段
         column.setJavaField(toCamelCase(column.getColumnName()));
         // 处理 dictType 字段,暂无
@@ -171,7 +171,7 @@ public class ToolCodegenBuilder {
         }
     }
 
-    private void processColumnOperation(ToolCodegenColumnDO column) {
+    private void processColumnOperation(CodegenColumnDO column) {
         // 处理 createOperation 字段
         column.setCreateOperation(!CREATE_OPERATION_EXCLUDE_COLUMN.contains(column.getJavaField())
                 && !column.getPrimaryKey()); // 对于主键,创建时无需传递
@@ -186,13 +186,13 @@ public class ToolCodegenBuilder {
                 .filter(entry -> StrUtil.endWithIgnoreCase(column.getJavaField(), entry.getKey()))
                 .findFirst().ifPresent(entry -> column.setListOperationCondition(entry.getValue().getCondition()));
         if (column.getListOperationCondition() == null) {
-            column.setListOperationCondition(ToolCodegenColumnListConditionEnum.EQ.getCondition());
+            column.setListOperationCondition(CodegenColumnListConditionEnum.EQ.getCondition());
         }
         // 处理 listOperationResult 字段
         column.setListOperationResult(!LIST_OPERATION_RESULT_EXCLUDE_COLUMN.contains(column.getJavaField()));
     }
 
-    private void processColumnUI(ToolCodegenColumnDO column) {
+    private void processColumnUI(CodegenColumnDO column) {
         // 基于后缀进行匹配
         columnHtmlTypeMappings.entrySet().stream()
                 .filter(entry -> StrUtil.endWithIgnoreCase(column.getJavaField(), entry.getKey()))
@@ -200,11 +200,11 @@ public class ToolCodegenBuilder {
         // 如果是 Boolean 类型时,设置为 radio 类型.
         // 其它类型,因为字段名可以相对保障,所以不进行处理。例如说 date 对应 datetime 类型.
         if (Boolean.class.getSimpleName().equals(column.getJavaType())) {
-            column.setHtmlType(ToolCodegenColumnHtmlTypeEnum.RADIO.getType());
+            column.setHtmlType(CodegenColumnHtmlTypeEnum.RADIO.getType());
         }
         // 兜底,设置默认为 input 类型
         if (column.getHtmlType() == null) {
-            column.setHtmlType(ToolCodegenColumnHtmlTypeEnum.INPUT.getType());
+            column.setHtmlType(CodegenColumnHtmlTypeEnum.INPUT.getType());
         }
     }
 

+ 11 - 11
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenEngine.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenEngine.java

@@ -1,4 +1,4 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl;
+package cn.iocoder.yudao.module.tool.service.codegen.inner;
 
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
@@ -9,7 +9,7 @@ import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
-import cn.iocoder.yudao.adminserver.modules.tool.framework.codegen.config.CodegenProperties;
+import cn.iocoder.yudao.module.tool.framework.codegen.config.CodegenProperties;
 import cn.iocoder.yudao.framework.common.util.object.ObjectUtils;
 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
 import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;
@@ -19,8 +19,8 @@ import cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum;
 import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
 import cn.iocoder.yudao.framework.mybatis.core.query.QueryWrapperX;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolCodegenTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.CodegenTableDO;
 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
 import cn.iocoder.yudao.framework.common.util.date.DateUtils;
 import com.google.common.collect.Maps;
@@ -45,7 +45,7 @@ import static cn.hutool.core.text.CharSequenceUtil.*;
  * @author 芋道源码
  */
 @Component
-public class ToolCodegenEngine {
+public class CodegenEngine {
 
     /**
      * 模板配置
@@ -95,7 +95,7 @@ public class ToolCodegenEngine {
             .build();
 
     @Resource
-    private ToolCodegenBuilder codegenBuilder;
+    private CodegenBuilder codegenBuilder;
 
     @Resource
     private CodegenProperties codegenProperties;
@@ -109,7 +109,7 @@ public class ToolCodegenEngine {
      */
     private final Map<String, Object> globalBindingMap = new HashMap<>();
 
-    public ToolCodegenEngine() {
+    public CodegenEngine() {
         // 初始化 TemplateEngine 属性
         TemplateConfig config = new TemplateConfig();
         config.setResourceMode(TemplateConfig.ResourceMode.CLASSPATH);
@@ -129,7 +129,7 @@ public class ToolCodegenEngine {
         globalBindingMap.put("PageParamClassName", PageParam.class.getName());
         globalBindingMap.put("DictFormatClassName", DictFormat.class.getName());
         // DO 类,独有字段
-        globalBindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS);
+        globalBindingMap.put("baseDOFields", CodegenBuilder.BASE_DO_FIELDS);
         globalBindingMap.put("BaseDOClassName", BaseDO.class.getName());
         globalBindingMap.put("QueryWrapperClassName", QueryWrapperX.class.getName());
         globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName());
@@ -143,12 +143,12 @@ public class ToolCodegenEngine {
         globalBindingMap.put("OperateTypeEnumClassName", OperateTypeEnum.class.getName());
     }
 
-    public Map<String, String> execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) {
+    public Map<String, String> execute(CodegenTableDO table, List<CodegenColumnDO> columns) {
         // 创建 bindingMap
         Map<String, Object> bindingMap = new HashMap<>(globalBindingMap);
         bindingMap.put("table", table);
         bindingMap.put("columns", columns);
-        bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, ToolCodegenColumnDO::getPrimaryKey)); // 主键字段
+        bindingMap.put("primaryColumn", CollectionUtils.findFirst(columns, CodegenColumnDO::getPrimaryKey)); // 主键字段
         // moduleName 相关
         String simpleModuleName = codegenBuilder.getSimpleModuleName(table.getModuleName());
         bindingMap.put("simpleModuleName", simpleModuleName); // 将 system 转成 sys
@@ -183,7 +183,7 @@ public class ToolCodegenEngine {
                 getStr(bindingMap, "classNameVar"));
 
         // table 包含的字段
-        ToolCodegenTableDO table = (ToolCodegenTableDO) bindingMap.get("table");
+        CodegenTableDO table = (CodegenTableDO) bindingMap.get("table");
         filePath = StrUtil.replace(filePath, "${table.moduleName}", table.getModuleName());
         filePath = StrUtil.replace(filePath, "${table.businessName}", table.getBusinessName());
         filePath = StrUtil.replace(filePath, "${table.className}", table.getClassName());

+ 17 - 17
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/codegen/impl/ToolCodegenSQLParser.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/codegen/inner/CodegenSQLParser.java

@@ -1,8 +1,8 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.codegen.impl;
+package cn.iocoder.yudao.module.tool.service.codegen.inner;
 
 import cn.hutool.core.collection.CollUtil;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaColumnDO;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.codegen.ToolSchemaTableDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaColumnDO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.codegen.SchemaTableDO;
 import com.alibaba.druid.DbType;
 import com.alibaba.druid.sql.ast.expr.SQLCharExpr;
 import com.alibaba.druid.sql.ast.statement.SQLColumnDefinition;
@@ -21,26 +21,26 @@ import java.util.Objects;
 import static com.alibaba.druid.sql.SQLUtils.normalize;
 
 /**
- * SQL 解析器,将创建表的 SQL,解析成 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象,
+ * SQL 解析器,将创建表的 SQL,解析成 {@link SchemaTableDO} 和 {@link SchemaColumnDO} 对象,
  * 后续可以基于它们,生成代码~
  *
  * @author 芋道源码
  */
-public class ToolCodegenSQLParser {
+public class CodegenSQLParser {
 
     /**
-     * 解析建表 SQL 语句,返回 {@link ToolSchemaTableDO} 和 {@link ToolSchemaColumnDO} 对象
+     * 解析建表 SQL 语句,返回 {@link SchemaTableDO} 和 {@link SchemaColumnDO} 对象
      *
      * @param sql 建表 SQL 语句
      * @return 解析结果
      */
-    public static KeyValue<ToolSchemaTableDO, List<ToolSchemaColumnDO>> parse(String sql) {
+    public static KeyValue<SchemaTableDO, List<SchemaColumnDO>> parse(String sql) {
         // 解析 SQL 成 Statement
         SQLCreateTableStatement statement = parseCreateSQL(sql);
         // 解析 Table 表
-        ToolSchemaTableDO table = parseTable(statement);
+        SchemaTableDO table = parseTable(statement);
         // 解析 Column 字段
-        List<ToolSchemaColumnDO> columns = parseColumns(statement);
+        List<SchemaColumnDO> columns = parseColumns(statement);
         columns.forEach(column -> column.setTableName(table.getTableName()));
         // 返回
         return new DefaultKeyValue<>(table, columns);
@@ -61,8 +61,8 @@ public class ToolCodegenSQLParser {
         return (MySqlCreateTableStatement) repository.findTable(tableName).getStatement();
     }
 
-    private static ToolSchemaTableDO parseTable(SQLCreateTableStatement statement) {
-        return ToolSchemaTableDO.builder()
+    private static SchemaTableDO parseTable(SQLCreateTableStatement statement) {
+        return SchemaTableDO.builder()
                 .tableName(statement.getTableSource().getTableName(true))
                 .tableComment(getCommentText(statement))
                 .build();
@@ -75,13 +75,13 @@ public class ToolCodegenSQLParser {
         return ((SQLCharExpr) statement.getComment()).getText();
     }
 
-    private static List<ToolSchemaColumnDO> parseColumns(SQLCreateTableStatement statement) {
-        List<ToolSchemaColumnDO> columns = new ArrayList<>();
+    private static List<SchemaColumnDO> parseColumns(SQLCreateTableStatement statement) {
+        List<SchemaColumnDO> columns = new ArrayList<>();
         statement.getTableElementList().forEach(element -> parseColumn(columns, element));
         return columns;
     }
 
-    private static void parseColumn(List<ToolSchemaColumnDO> columns, SQLTableElement element) {
+    private static void parseColumn(List<SchemaColumnDO> columns, SQLTableElement element) {
         // 处理主键
         if (element instanceof SQLPrimaryKey) {
             parsePrimaryKey(columns, (SQLPrimaryKey) element);
@@ -93,16 +93,16 @@ public class ToolCodegenSQLParser {
         }
     }
 
-    private static void parsePrimaryKey(List<ToolSchemaColumnDO> columns, SQLPrimaryKey primaryKey) {
+    private static void parsePrimaryKey(List<SchemaColumnDO> columns, SQLPrimaryKey primaryKey) {
         String columnName = normalize(primaryKey.getColumns().get(0).toString()); // 暂时不考虑联合主键
         // 匹配 columns 主键字段,设置为 primary
         columns.stream().filter(column -> column.getColumnName().equals(columnName))
             .forEach(column -> column.setPrimaryKey(true));
     }
 
-    private static void parseColumnDefinition(List<ToolSchemaColumnDO> columns, SQLColumnDefinition definition) {
+    private static void parseColumnDefinition(List<SchemaColumnDO> columns, SQLColumnDefinition definition) {
         String text = definition.toString().toUpperCase();
-        columns.add(ToolSchemaColumnDO.builder()
+        columns.add(SchemaColumnDO.builder()
                 .columnName(normalize(definition.getColumnName()))
                 .columnType(definition.getDataType().toString())
                 .columnComment(Objects.isNull(definition.getComment()) ? ""

+ 15 - 11
yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/tool/service/test/ToolTestDemoService.java → yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoService.java

@@ -1,17 +1,21 @@
-package cn.iocoder.yudao.adminserver.modules.tool.service.test;
+package cn.iocoder.yudao.module.tool.service.test;
 
 import java.util.*;
 import javax.validation.*;
-import cn.iocoder.yudao.adminserver.modules.tool.controller.test.vo.*;
-import cn.iocoder.yudao.adminserver.modules.tool.dal.dataobject.test.ToolTestDemoDO;
+
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO;
+import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO;
 import cn.iocoder.yudao.framework.common.pojo.PageResult;
 
 /**
- * 字典类型 Service 接口
+ * 测试示例 Service 接口
  *
  * @author 芋艿
  */
-public interface ToolTestDemoService {
+public interface TestDemoService {
 
     /**
      * 创建字典类型
@@ -19,14 +23,14 @@ public interface ToolTestDemoService {
      * @param createReqVO 创建信息
      * @return 编号
      */
-    Long createTestDemo(@Valid ToolTestDemoCreateReqVO createReqVO);
+    Long createTestDemo(@Valid TestDemoCreateReqVO createReqVO);
 
     /**
      * 更新字典类型
      *
      * @param updateReqVO 更新信息
      */
-    void updateTestDemo(@Valid ToolTestDemoUpdateReqVO updateReqVO);
+    void updateTestDemo(@Valid TestDemoUpdateReqVO updateReqVO);
 
     /**
      * 删除字典类型
@@ -41,7 +45,7 @@ public interface ToolTestDemoService {
      * @param id 编号
      * @return 字典类型
      */
-    ToolTestDemoDO getTestDemo(Long id);
+    TestDemoDO getTestDemo(Long id);
 
     /**
      * 获得字典类型列表
@@ -49,7 +53,7 @@ public interface ToolTestDemoService {
      * @param ids 编号
      * @return 字典类型列表
      */
-    List<ToolTestDemoDO> getTestDemoList(Collection<Long> ids);
+    List<TestDemoDO> getTestDemoList(Collection<Long> ids);
 
     /**
      * 获得字典类型分页
@@ -57,7 +61,7 @@ public interface ToolTestDemoService {
      * @param pageReqVO 分页查询
      * @return 字典类型分页
      */
-    PageResult<ToolTestDemoDO> getTestDemoPage(ToolTestDemoPageReqVO pageReqVO);
+    PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO);
 
     /**
      * 获得字典类型列表, 用于 Excel 导出
@@ -65,6 +69,6 @@ public interface ToolTestDemoService {
      * @param exportReqVO 查询条件
      * @return 字典类型列表
      */
-    List<ToolTestDemoDO> getTestDemoList(ToolTestDemoExportReqVO exportReqVO);
+    List<TestDemoDO> getTestDemoList(TestDemoExportReqVO exportReqVO);
 
 }

+ 86 - 0
yudao-module-tool/yudao-module-tool-impl/src/main/java/cn/iocoder/yudao/module/tool/service/test/TestDemoServiceImpl.java

@@ -0,0 +1,86 @@
+package cn.iocoder.yudao.module.tool.service.test;
+
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoCreateReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoExportReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoPageReqVO;
+import cn.iocoder.yudao.module.tool.controller.admin.test.vo.TestDemoUpdateReqVO;
+import org.springframework.stereotype.Service;
+import javax.annotation.Resource;
+import org.springframework.validation.annotation.Validated;
+
+import java.util.*;
+
+import cn.iocoder.yudao.module.tool.dal.dataobject.test.TestDemoDO;
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
+
+import cn.iocoder.yudao.module.tool.convert.test.TestDemoConvert;
+import cn.iocoder.yudao.module.tool.dal.mysql.test.TestDemoMapper;
+
+import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
+import static cn.iocoder.yudao.module.tool.enums.ErrorCodeConstants.*;
+
+/**
+ * 测试示例 Service 实现类
+ *
+ * @author 芋艿
+ */
+@Service
+@Validated
+public class TestDemoServiceImpl implements TestDemoService {
+
+    @Resource
+    private TestDemoMapper testDemoMapper;
+
+    @Override
+    public Long createTestDemo(TestDemoCreateReqVO createReqVO) {
+        // 插入
+        TestDemoDO testDemo = TestDemoConvert.INSTANCE.convert(createReqVO);
+        testDemoMapper.insert(testDemo);
+        // 返回
+        return testDemo.getId();
+    }
+
+    @Override
+    public void updateTestDemo(TestDemoUpdateReqVO updateReqVO) {
+        // 校验存在
+        this.validateTestDemoExists(updateReqVO.getId());
+        // 更新
+        TestDemoDO updateObj = TestDemoConvert.INSTANCE.convert(updateReqVO);
+        testDemoMapper.updateById(updateObj);
+    }
+
+    @Override
+    public void deleteTestDemo(Long id) {
+        // 校验存在
+        this.validateTestDemoExists(id);
+        // 删除
+        testDemoMapper.deleteById(id);
+    }
+
+    private void validateTestDemoExists(Long id) {
+        if (testDemoMapper.selectById(id) == null) {
+            throw exception(TEST_DEMO_NOT_EXISTS);
+        }
+    }
+
+    @Override
+    public TestDemoDO getTestDemo(Long id) {
+        return testDemoMapper.selectById(id);
+    }
+
+    @Override
+    public List<TestDemoDO> getTestDemoList(Collection<Long> ids) {
+        return testDemoMapper.selectBatchIds(ids);
+    }
+
+    @Override
+    public PageResult<TestDemoDO> getTestDemoPage(TestDemoPageReqVO pageReqVO) {
+        return testDemoMapper.selectPage(pageReqVO);
+    }
+
+    @Override
+    public List<TestDemoDO> getTestDemoList(TestDemoExportReqVO exportReqVO) {
+        return testDemoMapper.selectList(exportReqVO);
+    }
+
+}