mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-11-04 22:57:12 +08:00 
			
		
		
		
	feat: 新增系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等)
This commit is contained in:
		
							
								
								
									
										46
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								README.md
									
									
									
									
									
								
							@@ -142,7 +142,7 @@ continew-admin  # 全局通用项目配置及依赖版本管理
 | 
				
			|||||||
  │      │          └─ service       # 系统监控相关业务接口及实现类
 | 
					  │      │          └─ service       # 系统监控相关业务接口及实现类
 | 
				
			||||||
  │      │             └─ impl         # 系统监控相关业务实现类
 | 
					  │      │             └─ impl         # 系统监控相关业务实现类
 | 
				
			||||||
  │      └─ resources   # 工程配置目录
 | 
					  │      └─ resources   # 工程配置目录
 | 
				
			||||||
  │         └─ mapper        # MyBatis Mapper XML 文件目录
 | 
					  │         └─ mapper       # MyBatis Mapper XML 文件目录
 | 
				
			||||||
  ├─ continew-admin-system   # 系统管理模块(存放系统管理模块相关功能,例如:部门管理、角色管理、用户管理等)
 | 
					  ├─ continew-admin-system   # 系统管理模块(存放系统管理模块相关功能,例如:部门管理、角色管理、用户管理等)
 | 
				
			||||||
  │  └─ src
 | 
					  │  └─ src
 | 
				
			||||||
  │    └─ main
 | 
					  │    └─ main
 | 
				
			||||||
@@ -169,6 +169,28 @@ continew-admin  # 全局通用项目配置及依赖版本管理
 | 
				
			|||||||
  │      │             └─ impl        # 系统管理相关业务实现类
 | 
					  │      │             └─ impl        # 系统管理相关业务实现类
 | 
				
			||||||
  │      └─ resources   # 工程配置目录
 | 
					  │      └─ resources   # 工程配置目录
 | 
				
			||||||
  │         └─ mapper        # MyBatis Mapper XML 文件目录
 | 
					  │         └─ mapper        # MyBatis Mapper XML 文件目录
 | 
				
			||||||
 | 
					  ├─ continew-admin-tool  # 系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等)
 | 
				
			||||||
 | 
					  │  └─ src
 | 
				
			||||||
 | 
					  │    └─ main
 | 
				
			||||||
 | 
					  │      ├─ java        # 工程源文件代码目录
 | 
				
			||||||
 | 
					  │      │  └─ top
 | 
				
			||||||
 | 
					  │      │    └─ charles7c
 | 
				
			||||||
 | 
					  │      │      └─ cnadmin
 | 
				
			||||||
 | 
					  │      │        └─ tool
 | 
				
			||||||
 | 
					  │      │          ├─ mapper     # 系统工具相关 Mapper
 | 
				
			||||||
 | 
					  │      │          ├─ model      # 系统工具相关模型
 | 
				
			||||||
 | 
					  │      │          │  ├─ entity      # 系统工具相关实体对象
 | 
				
			||||||
 | 
					  │      │          │  ├─ query       # 系统工具相关查询条件
 | 
				
			||||||
 | 
					  │      │          │  ├─ request     # 系统工具相关请求对象
 | 
				
			||||||
 | 
					  │      │          │  └─ vo          # 系统工具相关 VO(View Object)
 | 
				
			||||||
 | 
					  │      │          └─ service    # 系统工具相关业务接口及实现类
 | 
				
			||||||
 | 
					  │      │             └─ impl        # 系统工具相关业务实现类
 | 
				
			||||||
 | 
					  │      └─ resources   # 工程配置目录
 | 
				
			||||||
 | 
					  │        ├─ mapper        # MyBatis Mapper XML 文件目录
 | 
				
			||||||
 | 
					  │        └─ templates     # 模板文件
 | 
				
			||||||
 | 
					  │          └─ generator       # 代码生成器模板
 | 
				
			||||||
 | 
					  │            ├─ admin-backend     # 管理系统后端模板
 | 
				
			||||||
 | 
					  │            └─ admin-frontend    # 管理系统前端模板
 | 
				
			||||||
  ├─ continew-admin-common   # 公共模块(存放公共工具类,公共配置等)
 | 
					  ├─ continew-admin-common   # 公共模块(存放公共工具类,公共配置等)
 | 
				
			||||||
  │  └─ src
 | 
					  │  └─ src
 | 
				
			||||||
  │    └─ main
 | 
					  │    └─ main
 | 
				
			||||||
@@ -177,26 +199,26 @@ continew-admin  # 全局通用项目配置及依赖版本管理
 | 
				
			|||||||
  │          └─ charles7c
 | 
					  │          └─ charles7c
 | 
				
			||||||
  │            └─ cnadmin
 | 
					  │            └─ cnadmin
 | 
				
			||||||
  │              └─ common
 | 
					  │              └─ common
 | 
				
			||||||
  │                ├─ annotation   # 公共注解
 | 
					  │                ├─ annotation    # 公共注解
 | 
				
			||||||
  │                ├─ base         # 公共基类
 | 
					  │                ├─ base          # 公共基类
 | 
				
			||||||
  │                ├─ config       # 公共配置
 | 
					  │                ├─ config        # 公共配置
 | 
				
			||||||
  │                │  ├─ easyexcel    # Easy Excel 配置
 | 
					  │                │  ├─ easyexcel    # Easy Excel 配置
 | 
				
			||||||
  │                │  ├─ jackson      # Jackson 配置
 | 
					  │                │  ├─ jackson      # Jackson 配置
 | 
				
			||||||
  │                │  ├─ mybatis      # MyBatis Plus 配置
 | 
					  │                │  ├─ mybatis      # MyBatis Plus 配置
 | 
				
			||||||
  │                │  ├─ threadpool   # 线程池配置
 | 
					  │                │  ├─ threadpool   # 线程池配置
 | 
				
			||||||
  │                │  └─ properties   # 公共配置属性
 | 
					  │                │  └─ properties   # 公共配置属性
 | 
				
			||||||
  │                ├─ constant     # 公共常量
 | 
					  │                ├─ constant      # 公共常量
 | 
				
			||||||
  │                ├─ enums        # 公共枚举
 | 
					  │                ├─ enums         # 公共枚举
 | 
				
			||||||
  │                ├─ exception    # 公共异常
 | 
					  │                ├─ exception     # 公共异常
 | 
				
			||||||
  │                ├─ handler      # 公共处理器
 | 
					  │                ├─ handler       # 公共处理器
 | 
				
			||||||
  │                ├─ model        # 公共模型
 | 
					  │                ├─ model         # 公共模型
 | 
				
			||||||
  │                │  ├─ dto          # 公共 DTO(Data Transfer Object)
 | 
					  │                │  ├─ dto          # 公共 DTO(Data Transfer Object)
 | 
				
			||||||
  │                │  ├─ query        # 公共查询条件
 | 
					  │                │  ├─ query        # 公共查询条件
 | 
				
			||||||
  │                │  ├─ request      # 公共请求对象
 | 
					  │                │  ├─ request      # 公共请求对象
 | 
				
			||||||
  │                │  └─ vo           # 公共 VO(View Object)
 | 
					  │                │  └─ vo           # 公共 VO(View Object)
 | 
				
			||||||
  │                ├─ service      # 公共业务接口
 | 
					  │                ├─ service       # 公共业务接口
 | 
				
			||||||
  │                └─ util         # 公共工具类
 | 
					  │                └─ util          # 公共工具类
 | 
				
			||||||
  │                  ├─ helper        # 公共 Helper(助手)
 | 
					  │                  ├─ helper      # 公共 Helper(助手)
 | 
				
			||||||
  │                  ├─ holder        # 公共 Holder(持有者)
 | 
					  │                  ├─ holder        # 公共 Holder(持有者)
 | 
				
			||||||
  │                  └─ validate      # 公共校验器(参数校验,业务校验)
 | 
					  │                  └─ validate      # 公共校验器(参数校验,业务校验)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,7 +76,7 @@ public class PageDataVO<V> implements Serializable {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        PageDataVO<V> pageDataVO = new PageDataVO<>();
 | 
					        PageDataVO<V> pageDataVO = new PageDataVO<>();
 | 
				
			||||||
        pageDataVO.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
 | 
					        pageDataVO.setList(BeanUtil.copyToList(page.getRecords(), targetClass));
 | 
				
			||||||
        pageDataVO.setTotal((int) page.getTotal());
 | 
					        pageDataVO.setTotal((int)page.getTotal());
 | 
				
			||||||
        return pageDataVO;
 | 
					        return pageDataVO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -95,7 +95,7 @@ public class PageDataVO<V> implements Serializable {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        PageDataVO<V> pageDataVO = new PageDataVO<>();
 | 
					        PageDataVO<V> pageDataVO = new PageDataVO<>();
 | 
				
			||||||
        pageDataVO.setList(page.getRecords());
 | 
					        pageDataVO.setList(page.getRecords());
 | 
				
			||||||
        pageDataVO.setTotal((int) page.getTotal());
 | 
					        pageDataVO.setTotal((int)page.getTotal());
 | 
				
			||||||
        return pageDataVO;
 | 
					        return pageDataVO;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										26
									
								
								continew-admin-tool/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								continew-admin-tool/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -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">
 | 
				
			||||||
 | 
					    <modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <parent>
 | 
				
			||||||
 | 
					        <groupId>top.charles7c</groupId>
 | 
				
			||||||
 | 
					        <artifactId>continew-admin</artifactId>
 | 
				
			||||||
 | 
					        <version>${revision}</version>
 | 
				
			||||||
 | 
					    </parent>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <artifactId>continew-admin-tool</artifactId>
 | 
				
			||||||
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <name>${project.artifactId}</name>
 | 
				
			||||||
 | 
					    <description>系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等)</description>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependencies>
 | 
				
			||||||
 | 
					        <!-- 公共模块(存放公共工具类,公共配置等) -->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>top.charles7c</groupId>
 | 
				
			||||||
 | 
					            <artifactId>continew-admin-common</artifactId>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
@@ -0,0 +1,42 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.model.query;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 表信息查询条件
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/12 20:21
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Schema(description = "表信息查询条件")
 | 
				
			||||||
 | 
					public class TableQuery implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 表名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "表名称")
 | 
				
			||||||
 | 
					    private String tableName;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,69 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.model.vo;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Data;
 | 
				
			||||||
 | 
					import lombok.experimental.Accessors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.media.Schema;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 表信息
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/12 20:21
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Data
 | 
				
			||||||
 | 
					@Accessors(chain = true)
 | 
				
			||||||
 | 
					@Schema(description = "表信息")
 | 
				
			||||||
 | 
					public class TableVO implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 表名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "表名称")
 | 
				
			||||||
 | 
					    private String tableName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 注释
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "注释")
 | 
				
			||||||
 | 
					    private String comment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 存储引擎
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "存储引擎")
 | 
				
			||||||
 | 
					    private String engine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 字符集
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "字符集")
 | 
				
			||||||
 | 
					    private String charset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 创建时间
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Schema(description = "创建时间")
 | 
				
			||||||
 | 
					    private LocalDateTime createTime;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,44 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.sql.SQLException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.query.PageQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.vo.PageDataVO;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.query.TableQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.vo.TableVO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 代码生成业务接口
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/12 23:57
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface GeneratorService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 分页查询列表
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param query
 | 
				
			||||||
 | 
					     *            查询条件
 | 
				
			||||||
 | 
					     * @param pageQuery
 | 
				
			||||||
 | 
					     *            分页查询条件
 | 
				
			||||||
 | 
					     * @return 分页列表信息
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.service.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.sql.SQLException;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.sql.DataSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.bean.BeanUtil;
 | 
				
			||||||
 | 
					import cn.hutool.core.util.StrUtil;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.query.PageQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.vo.PageDataVO;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.query.TableQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.vo.TableVO;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.service.GeneratorService;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.util.MetaUtils;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.util.Table;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 代码生成业务实现
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/12 23:58
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					@RequiredArgsConstructor
 | 
				
			||||||
 | 
					public class GeneratorServiceImpl implements GeneratorService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final DataSource dataSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException {
 | 
				
			||||||
 | 
					        List<Table> tableList = MetaUtils.getTables(dataSource);
 | 
				
			||||||
 | 
					        String tableName = query.getTableName();
 | 
				
			||||||
 | 
					        if (StrUtil.isNotBlank(tableName)) {
 | 
				
			||||||
 | 
					            tableList.removeIf(table -> !StrUtil.containsAny(table.getTableName(), tableName));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        tableList
 | 
				
			||||||
 | 
					            .removeIf(table -> StrUtil.equalsAny(table.getTableName(), "DATABASECHANGELOG", "DATABASECHANGELOGLOCK"));
 | 
				
			||||||
 | 
					        List<TableVO> tableVOList = BeanUtil.copyToList(tableList, TableVO.class);
 | 
				
			||||||
 | 
					        return PageDataVO.build(pageQuery.getPage(), pageQuery.getSize(), tableVOList);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,62 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.sql.*;
 | 
				
			||||||
 | 
					import java.util.ArrayList;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.sql.DataSource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.AccessLevel;
 | 
				
			||||||
 | 
					import lombok.NoArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.date.DateUtil;
 | 
				
			||||||
 | 
					import cn.hutool.db.Db;
 | 
				
			||||||
 | 
					import cn.hutool.db.Entity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 数据库元数据信息工具类
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/26 21:39
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@NoArgsConstructor(access = AccessLevel.PRIVATE)
 | 
				
			||||||
 | 
					public class MetaUtils {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 获取所有表信息
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param dataSource
 | 
				
			||||||
 | 
					     *            数据源
 | 
				
			||||||
 | 
					     * @return 表信息列表
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static List<Table> getTables(DataSource dataSource) throws SQLException {
 | 
				
			||||||
 | 
					        List<Entity> tableEntityList = Db.use(dataSource).query("SHOW TABLE STATUS");
 | 
				
			||||||
 | 
					        List<Table> tableList = new ArrayList<>(tableEntityList.size());
 | 
				
			||||||
 | 
					        for (Entity tableEntity : tableEntityList) {
 | 
				
			||||||
 | 
					            Table table = new Table(tableEntity.getStr("NAME"));
 | 
				
			||||||
 | 
					            table.setComment(tableEntity.getStr("COMMENT"));
 | 
				
			||||||
 | 
					            table.setEngine(tableEntity.getStr("ENGINE"));
 | 
				
			||||||
 | 
					            table.setCharset(tableEntity.getStr("COLLATION"));
 | 
				
			||||||
 | 
					            table.setCreateTime(DateUtil.toLocalDateTime(tableEntity.getDate("CREATE_TIME")));
 | 
				
			||||||
 | 
					            table.setUpdateTime(DateUtil.toLocalDateTime(tableEntity.getDate("UPDATE_TIME")));
 | 
				
			||||||
 | 
					            tableList.add(table);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return tableList;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,70 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.tool.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					import java.time.LocalDateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.Getter;
 | 
				
			||||||
 | 
					import lombok.Setter;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 数据库表信息
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/4/26 21:41
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Getter
 | 
				
			||||||
 | 
					@Setter
 | 
				
			||||||
 | 
					public class Table implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final long serialVersionUID = 1L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 表名称
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String tableName;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 注释
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String comment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 存储引擎
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String engine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 字符集
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private String charset;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 创建时间
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private LocalDateTime createTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 修改时间
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    private LocalDateTime updateTime;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public Table(String tableName) {
 | 
				
			||||||
 | 
					        this.tableName = tableName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										30
									
								
								continew-admin-ui/src/api/tool/generator.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								continew-admin-ui/src/api/tool/generator.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
				
			|||||||
 | 
					import axios from 'axios';
 | 
				
			||||||
 | 
					import qs from 'query-string';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const BASE_URL = '/tool/generator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface TableRecord {
 | 
				
			||||||
 | 
					  tableName: string;
 | 
				
			||||||
 | 
					  comment?: string;
 | 
				
			||||||
 | 
					  engine: string;
 | 
				
			||||||
 | 
					  charset: string;
 | 
				
			||||||
 | 
					  createTime?: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface TableParam {
 | 
				
			||||||
 | 
					  tableName?: string;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export interface TableListRes {
 | 
				
			||||||
 | 
					  list: TableRecord[];
 | 
				
			||||||
 | 
					  total: number;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export function listTable(params: TableParam) {
 | 
				
			||||||
 | 
					  return axios.get<TableListRes>(`${BASE_URL}/table`, {
 | 
				
			||||||
 | 
					    params,
 | 
				
			||||||
 | 
					    paramsSerializer: (obj) => {
 | 
				
			||||||
 | 
					      return qs.stringify(obj);
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -5,6 +5,8 @@ import localeRole from '@/views/system/role/locale/en-US';
 | 
				
			|||||||
import localeMenu from '@/views/system/menu/locale/en-US';
 | 
					import localeMenu from '@/views/system/menu/locale/en-US';
 | 
				
			||||||
import localeDept from '@/views/system/dept/locale/en-US';
 | 
					import localeDept from '@/views/system/dept/locale/en-US';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import localeGenerator from '@/views/tool/generator/locale/en-US';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import localeOnlineUser from '@/views/monitor/online/locale/en-US';
 | 
					import localeOnlineUser from '@/views/monitor/online/locale/en-US';
 | 
				
			||||||
import localeLoginLog from '@/views/monitor/log/login/locale/en-US';
 | 
					import localeLoginLog from '@/views/monitor/log/login/locale/en-US';
 | 
				
			||||||
import localeOperationLog from '@/views/monitor/log/operation/locale/en-US';
 | 
					import localeOperationLog from '@/views/monitor/log/operation/locale/en-US';
 | 
				
			||||||
@@ -35,6 +37,7 @@ export default {
 | 
				
			|||||||
  'menu.server.dashboard': 'Dashboard-Server',
 | 
					  'menu.server.dashboard': 'Dashboard-Server',
 | 
				
			||||||
  'menu.server.workplace': 'Workplace-Server',
 | 
					  'menu.server.workplace': 'Workplace-Server',
 | 
				
			||||||
  'menu.system': 'System management',
 | 
					  'menu.system': 'System management',
 | 
				
			||||||
 | 
					  'menu.tool': 'Tool',
 | 
				
			||||||
  'menu.monitor': 'Monitor',
 | 
					  'menu.monitor': 'Monitor',
 | 
				
			||||||
  'menu.list': 'List',
 | 
					  'menu.list': 'List',
 | 
				
			||||||
  'menu.form': 'Form',
 | 
					  'menu.form': 'Form',
 | 
				
			||||||
@@ -56,6 +59,8 @@ export default {
 | 
				
			|||||||
  ...localeMenu,
 | 
					  ...localeMenu,
 | 
				
			||||||
  ...localeDept,
 | 
					  ...localeDept,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ...localeGenerator,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ...localeOnlineUser,
 | 
					  ...localeOnlineUser,
 | 
				
			||||||
  ...localeLoginLog,
 | 
					  ...localeLoginLog,
 | 
				
			||||||
  ...localeOperationLog,
 | 
					  ...localeOperationLog,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,8 @@ import localeRole from '@/views/system/role/locale/zh-CN';
 | 
				
			|||||||
import localeMenu from '@/views/system/menu/locale/zh-CN';
 | 
					import localeMenu from '@/views/system/menu/locale/zh-CN';
 | 
				
			||||||
import localeDept from '@/views/system/dept/locale/zh-CN';
 | 
					import localeDept from '@/views/system/dept/locale/zh-CN';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import localeGenerator from '@/views/tool/generator/locale/zh-CN';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import localeOnlineUser from '@/views/monitor/online/locale/zh-CN';
 | 
					import localeOnlineUser from '@/views/monitor/online/locale/zh-CN';
 | 
				
			||||||
import localeLoginLog from '@/views/monitor/log/login/locale/zh-CN';
 | 
					import localeLoginLog from '@/views/monitor/log/login/locale/zh-CN';
 | 
				
			||||||
import localeOperationLog from '@/views/monitor/log/operation/locale/zh-CN';
 | 
					import localeOperationLog from '@/views/monitor/log/operation/locale/zh-CN';
 | 
				
			||||||
@@ -35,6 +37,7 @@ export default {
 | 
				
			|||||||
  'menu.server.dashboard': '仪表盘-服务端',
 | 
					  'menu.server.dashboard': '仪表盘-服务端',
 | 
				
			||||||
  'menu.server.workplace': '工作台-服务端',
 | 
					  'menu.server.workplace': '工作台-服务端',
 | 
				
			||||||
  'menu.system': '系统管理',
 | 
					  'menu.system': '系统管理',
 | 
				
			||||||
 | 
					  'menu.tool': '系统工具',
 | 
				
			||||||
  'menu.monitor': '系统监控',
 | 
					  'menu.monitor': '系统监控',
 | 
				
			||||||
  'menu.list': '列表页',
 | 
					  'menu.list': '列表页',
 | 
				
			||||||
  'menu.form': '表单页',
 | 
					  'menu.form': '表单页',
 | 
				
			||||||
@@ -56,6 +59,8 @@ export default {
 | 
				
			|||||||
  ...localeMenu,
 | 
					  ...localeMenu,
 | 
				
			||||||
  ...localeDept,
 | 
					  ...localeDept,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ...localeGenerator,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ...localeOnlineUser,
 | 
					  ...localeOnlineUser,
 | 
				
			||||||
  ...localeLoginLog,
 | 
					  ...localeLoginLog,
 | 
				
			||||||
  ...localeOperationLog,
 | 
					  ...localeOperationLog,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ const Monitor: AppRouteRecordRaw = {
 | 
				
			|||||||
    locale: 'menu.monitor',
 | 
					    locale: 'menu.monitor',
 | 
				
			||||||
    icon: 'computer',
 | 
					    icon: 'computer',
 | 
				
			||||||
    requiresAuth: true,
 | 
					    requiresAuth: true,
 | 
				
			||||||
    order: 2,
 | 
					    order: 3,
 | 
				
			||||||
  },
 | 
					  },
 | 
				
			||||||
  children: [
 | 
					  children: [
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										28
									
								
								continew-admin-ui/src/router/routes/modules/tool.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								continew-admin-ui/src/router/routes/modules/tool.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
				
			|||||||
 | 
					import { DEFAULT_LAYOUT } from '../base';
 | 
				
			||||||
 | 
					import { AppRouteRecordRaw } from '../types';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					const Tool: AppRouteRecordRaw = {
 | 
				
			||||||
 | 
					  path: '/tool',
 | 
				
			||||||
 | 
					  name: 'tool',
 | 
				
			||||||
 | 
					  component: DEFAULT_LAYOUT,
 | 
				
			||||||
 | 
					  meta: {
 | 
				
			||||||
 | 
					    locale: 'menu.tool',
 | 
				
			||||||
 | 
					    icon: 'tool',
 | 
				
			||||||
 | 
					    requiresAuth: true,
 | 
				
			||||||
 | 
					    order: 2,
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  children: [
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					      path: '/tool/generator',
 | 
				
			||||||
 | 
					      name: 'Generator',
 | 
				
			||||||
 | 
					      component: () => import('@/views/tool/generator/index.vue'),
 | 
				
			||||||
 | 
					      meta: {
 | 
				
			||||||
 | 
					        locale: 'menu.tool.generator.list',
 | 
				
			||||||
 | 
					        requiresAuth: true,
 | 
				
			||||||
 | 
					        roles: ['*'],
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export default Tool;
 | 
				
			||||||
							
								
								
									
										214
									
								
								continew-admin-ui/src/views/tool/generator/index.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										214
									
								
								continew-admin-ui/src/views/tool/generator/index.vue
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,214 @@
 | 
				
			|||||||
 | 
					<template>
 | 
				
			||||||
 | 
					  <div class="app-container">
 | 
				
			||||||
 | 
					    <Breadcrumb :items="['menu.tool', 'menu.tool.generator.list']" />
 | 
				
			||||||
 | 
					    <a-card class="general-card" :title="$t('menu.tool.generator.list')">
 | 
				
			||||||
 | 
					      <!-- 头部区域 -->
 | 
				
			||||||
 | 
					      <div class="header">
 | 
				
			||||||
 | 
					        <!-- 搜索栏 -->
 | 
				
			||||||
 | 
					        <div v-if="showQuery" class="header-query">
 | 
				
			||||||
 | 
					          <a-form ref="queryRef" :model="queryParams" layout="inline">
 | 
				
			||||||
 | 
					            <a-form-item field="tableName" hide-label>
 | 
				
			||||||
 | 
					              <a-input
 | 
				
			||||||
 | 
					                v-model="queryParams.tableName"
 | 
				
			||||||
 | 
					                placeholder="输入表名称搜索"
 | 
				
			||||||
 | 
					                allow-clear
 | 
				
			||||||
 | 
					                style="width: 150px"
 | 
				
			||||||
 | 
					                @press-enter="handleQuery"
 | 
				
			||||||
 | 
					              />
 | 
				
			||||||
 | 
					            </a-form-item>
 | 
				
			||||||
 | 
					            <a-form-item hide-label>
 | 
				
			||||||
 | 
					              <a-space>
 | 
				
			||||||
 | 
					                <a-button type="primary" @click="handleQuery">
 | 
				
			||||||
 | 
					                  <template #icon><icon-search /></template>查询
 | 
				
			||||||
 | 
					                </a-button>
 | 
				
			||||||
 | 
					                <a-button @click="resetQuery">
 | 
				
			||||||
 | 
					                  <template #icon><icon-refresh /></template>重置
 | 
				
			||||||
 | 
					                </a-button>
 | 
				
			||||||
 | 
					              </a-space>
 | 
				
			||||||
 | 
					            </a-form-item>
 | 
				
			||||||
 | 
					          </a-form>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					        <!-- 操作栏 -->
 | 
				
			||||||
 | 
					        <div class="header-operation">
 | 
				
			||||||
 | 
					          <a-row>
 | 
				
			||||||
 | 
					            <a-col :span="12">
 | 
				
			||||||
 | 
					              <a-space>
 | 
				
			||||||
 | 
					                <a-button type="primary" @click="toGenerate(ids[0])">
 | 
				
			||||||
 | 
					                  <template #icon><icon-robot-add /></template>代码生成
 | 
				
			||||||
 | 
					                </a-button>
 | 
				
			||||||
 | 
					              </a-space>
 | 
				
			||||||
 | 
					            </a-col>
 | 
				
			||||||
 | 
					            <a-col :span="12">
 | 
				
			||||||
 | 
					              <right-toolbar
 | 
				
			||||||
 | 
					                v-model:show-query="showQuery"
 | 
				
			||||||
 | 
					                @refresh="getList"
 | 
				
			||||||
 | 
					              />
 | 
				
			||||||
 | 
					            </a-col>
 | 
				
			||||||
 | 
					          </a-row>
 | 
				
			||||||
 | 
					        </div>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <!-- 列表区域 -->
 | 
				
			||||||
 | 
					      <a-table
 | 
				
			||||||
 | 
					        ref="tableRef"
 | 
				
			||||||
 | 
					        :data="tableList"
 | 
				
			||||||
 | 
					        :row-selection="{
 | 
				
			||||||
 | 
					          type: 'checkbox',
 | 
				
			||||||
 | 
					          showCheckedAll: true,
 | 
				
			||||||
 | 
					          onlyCurrent: false,
 | 
				
			||||||
 | 
					        }"
 | 
				
			||||||
 | 
					        :pagination="{
 | 
				
			||||||
 | 
					          showTotal: true,
 | 
				
			||||||
 | 
					          showPageSize: true,
 | 
				
			||||||
 | 
					          total: total,
 | 
				
			||||||
 | 
					          current: queryParams.page,
 | 
				
			||||||
 | 
					        }"
 | 
				
			||||||
 | 
					        row-key="tableName"
 | 
				
			||||||
 | 
					        :bordered="false"
 | 
				
			||||||
 | 
					        :stripe="true"
 | 
				
			||||||
 | 
					        :loading="loading"
 | 
				
			||||||
 | 
					        size="large"
 | 
				
			||||||
 | 
					        @page-change="handlePageChange"
 | 
				
			||||||
 | 
					        @page-size-change="handlePageSizeChange"
 | 
				
			||||||
 | 
					        @selection-change="handleSelectionChange"
 | 
				
			||||||
 | 
					      >
 | 
				
			||||||
 | 
					        <template #columns>
 | 
				
			||||||
 | 
					          <a-table-column title="序号">
 | 
				
			||||||
 | 
					            <template #cell="{ rowIndex }">
 | 
				
			||||||
 | 
					              {{ rowIndex + 1 + (queryParams.page - 1) * queryParams.size }}
 | 
				
			||||||
 | 
					            </template>
 | 
				
			||||||
 | 
					          </a-table-column>
 | 
				
			||||||
 | 
					          <a-table-column
 | 
				
			||||||
 | 
					            title="表名称"
 | 
				
			||||||
 | 
					            data-index="tableName"
 | 
				
			||||||
 | 
					            :width="200"
 | 
				
			||||||
 | 
					            tooltip
 | 
				
			||||||
 | 
					          />
 | 
				
			||||||
 | 
					          <a-table-column title="注释" data-index="comment" tooltip />
 | 
				
			||||||
 | 
					          <a-table-column title="存储引擎" data-index="engine" align="center" />
 | 
				
			||||||
 | 
					          <a-table-column title="字符集" data-index="charset" />
 | 
				
			||||||
 | 
					          <a-table-column title="创建时间" data-index="createTime" />
 | 
				
			||||||
 | 
					          <a-table-column title="操作" align="center">
 | 
				
			||||||
 | 
					            <template #cell="{ record }">
 | 
				
			||||||
 | 
					              <a-button
 | 
				
			||||||
 | 
					                type="text"
 | 
				
			||||||
 | 
					                size="small"
 | 
				
			||||||
 | 
					                title="生成"
 | 
				
			||||||
 | 
					                @click="toGenerate(record.tableName)"
 | 
				
			||||||
 | 
					              >
 | 
				
			||||||
 | 
					                <template #icon><icon-robot-add /></template>生成
 | 
				
			||||||
 | 
					              </a-button>
 | 
				
			||||||
 | 
					            </template>
 | 
				
			||||||
 | 
					          </a-table-column>
 | 
				
			||||||
 | 
					        </template>
 | 
				
			||||||
 | 
					      </a-table>
 | 
				
			||||||
 | 
					    </a-card>
 | 
				
			||||||
 | 
					  </div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts" setup>
 | 
				
			||||||
 | 
					  import { getCurrentInstance, ref, toRefs, reactive } from 'vue';
 | 
				
			||||||
 | 
					  import { TableRecord, TableParam, listTable } from '@/api/tool/generator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const { proxy } = getCurrentInstance() as any;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const tableList = ref<TableRecord[]>([]);
 | 
				
			||||||
 | 
					  const total = ref(0);
 | 
				
			||||||
 | 
					  const ids = ref<Array<string>>([]);
 | 
				
			||||||
 | 
					  const single = ref(true);
 | 
				
			||||||
 | 
					  const multiple = ref(true);
 | 
				
			||||||
 | 
					  const showQuery = ref(true);
 | 
				
			||||||
 | 
					  const loading = ref(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const data = reactive({
 | 
				
			||||||
 | 
					    // 查询参数
 | 
				
			||||||
 | 
					    queryParams: {
 | 
				
			||||||
 | 
					      tableName: undefined,
 | 
				
			||||||
 | 
					      page: 1,
 | 
				
			||||||
 | 
					      size: 10,
 | 
				
			||||||
 | 
					      sort: ['createTime,desc', 'updateTime,desc'],
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					  const { queryParams } = toRefs(data);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查询列表
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param params 查询参数
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const getList = (params: TableParam = { ...queryParams.value }) => {
 | 
				
			||||||
 | 
					    loading.value = true;
 | 
				
			||||||
 | 
					    listTable(params)
 | 
				
			||||||
 | 
					      .then((res) => {
 | 
				
			||||||
 | 
					        tableList.value = res.data.list;
 | 
				
			||||||
 | 
					        total.value = res.data.total;
 | 
				
			||||||
 | 
					      })
 | 
				
			||||||
 | 
					      .finally(() => {
 | 
				
			||||||
 | 
					        loading.value = false;
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					  getList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 代码生成
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param tableName 表名称
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const toGenerate = (tableName: string) => {
 | 
				
			||||||
 | 
					    proxy.$message.info(tableName);
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 已选择的数据行发生改变时触发
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param rowKeys ID 列表
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const handleSelectionChange = (rowKeys: Array<any>) => {
 | 
				
			||||||
 | 
					    ids.value = rowKeys;
 | 
				
			||||||
 | 
					    single.value = rowKeys.length !== 1;
 | 
				
			||||||
 | 
					    multiple.value = !rowKeys.length;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 查询
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const handleQuery = () => {
 | 
				
			||||||
 | 
					    getList();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 重置
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const resetQuery = () => {
 | 
				
			||||||
 | 
					    proxy.$refs.queryRef.resetFields();
 | 
				
			||||||
 | 
					    handleQuery();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 切换页码
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param current 页码
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const handlePageChange = (current: number) => {
 | 
				
			||||||
 | 
					    queryParams.value.page = current;
 | 
				
			||||||
 | 
					    getList();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  /**
 | 
				
			||||||
 | 
					   * 切换每页条数
 | 
				
			||||||
 | 
					   *
 | 
				
			||||||
 | 
					   * @param pageSize 每页条数
 | 
				
			||||||
 | 
					   */
 | 
				
			||||||
 | 
					  const handlePageSizeChange = (pageSize: number) => {
 | 
				
			||||||
 | 
					    queryParams.value.size = pageSize;
 | 
				
			||||||
 | 
					    getList();
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					  export default {
 | 
				
			||||||
 | 
					    name: 'Role',
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style scoped lang="less"></style>
 | 
				
			||||||
@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  'menu.tool.generator.list': 'Code generate',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -0,0 +1,3 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  'menu.tool.generator.list': '代码生成',
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@@ -49,6 +49,12 @@ limitations under the License.
 | 
				
			|||||||
            <groupId>top.charles7c</groupId>
 | 
					            <groupId>top.charles7c</groupId>
 | 
				
			||||||
            <artifactId>continew-admin-monitor</artifactId>
 | 
					            <artifactId>continew-admin-monitor</artifactId>
 | 
				
			||||||
        </dependency>
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <!-- 系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等) -->
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>top.charles7c</groupId>
 | 
				
			||||||
 | 
					            <artifactId>continew-admin-tool</artifactId>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
    </dependencies>
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <build>
 | 
					    <build>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
				
			||||||
 | 
					 * you may not use this file except in compliance with the License.
 | 
				
			||||||
 | 
					 * You may obtain a copy of the License at
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *     http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Unless required by applicable law or agreed to in writing, software
 | 
				
			||||||
 | 
					 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
				
			||||||
 | 
					 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
				
			||||||
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 | 
					 * limitations under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					package top.charles7c.cnadmin.webapi.controller.tool;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.sql.SQLException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import lombok.RequiredArgsConstructor;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.Operation;
 | 
				
			||||||
 | 
					import io.swagger.v3.oas.annotations.tags.Tag;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.validation.annotation.Validated;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.GetMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RequestMapping;
 | 
				
			||||||
 | 
					import org.springframework.web.bind.annotation.RestController;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.query.PageQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.vo.PageDataVO;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.common.model.vo.R;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.query.TableQuery;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.model.vo.TableVO;
 | 
				
			||||||
 | 
					import top.charles7c.cnadmin.tool.service.GeneratorService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 代码生成 API
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Charles7c
 | 
				
			||||||
 | 
					 * @since 2023/8/3 22:58
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Tag(name = "代码生成 API")
 | 
				
			||||||
 | 
					@Validated
 | 
				
			||||||
 | 
					@RestController
 | 
				
			||||||
 | 
					@RequiredArgsConstructor
 | 
				
			||||||
 | 
					@RequestMapping("/tool/generator")
 | 
				
			||||||
 | 
					public class GeneratorController {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private final GeneratorService generatorService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Operation(summary = "分页查询数据表", description = "分页查询数据表")
 | 
				
			||||||
 | 
					    @GetMapping("/table")
 | 
				
			||||||
 | 
					    public R<PageDataVO<TableVO>> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException {
 | 
				
			||||||
 | 
					        return R.ok(generatorService.pageTable(query, pageQuery));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								pom.xml
									
									
									
									
									
								
							@@ -32,6 +32,7 @@ limitations under the License.
 | 
				
			|||||||
        <module>continew-admin-webapi</module>
 | 
					        <module>continew-admin-webapi</module>
 | 
				
			||||||
        <module>continew-admin-monitor</module>
 | 
					        <module>continew-admin-monitor</module>
 | 
				
			||||||
        <module>continew-admin-system</module>
 | 
					        <module>continew-admin-system</module>
 | 
				
			||||||
 | 
					        <module>continew-admin-tool</module>
 | 
				
			||||||
        <module>continew-admin-common</module>
 | 
					        <module>continew-admin-common</module>
 | 
				
			||||||
    </modules>
 | 
					    </modules>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -207,6 +208,13 @@ limitations under the License.
 | 
				
			|||||||
                <version>${project.version}</version>
 | 
					                <version>${project.version}</version>
 | 
				
			||||||
            </dependency>
 | 
					            </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- 系统工具模块(存放系统工具模块相关功能,例如:代码生成、文件管理等) -->
 | 
				
			||||||
 | 
					            <dependency>
 | 
				
			||||||
 | 
					                <groupId>top.charles7c</groupId>
 | 
				
			||||||
 | 
					                <artifactId>continew-admin-tool</artifactId>
 | 
				
			||||||
 | 
					                <version>${project.version}</version>
 | 
				
			||||||
 | 
					            </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            <!-- 公共模块(存放公共工具类,公共配置等) -->
 | 
					            <!-- 公共模块(存放公共工具类,公共配置等) -->
 | 
				
			||||||
            <dependency>
 | 
					            <dependency>
 | 
				
			||||||
                <groupId>top.charles7c</groupId>
 | 
					                <groupId>top.charles7c</groupId>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user