签入版本

This commit is contained in:
2026-09-28 18:51:35 +08:00
commit ab0f064ea6
2692 changed files with 354751 additions and 0 deletions
@@ -0,0 +1,45 @@
<?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>com.xiaomayi</groupId>
<artifactId>xiaomayi-services</artifactId>
<version>${revision}</version>
</parent>
<!-- 项目名称 -->
<artifactId>xiaomayi-generator</artifactId>
<!-- 项目打包类型:JAR包 -->
<packaging>jar</packaging>
<!-- 项目名称 -->
<name>xiaomayi-generator</name>
<!-- 项目描述 -->
<description>小蚂蚁云生成器模块</description>
<!-- 依赖声明 -->
<dependencies>
<!-- mybatis配置模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-mybatis</artifactId>
</dependency>
<!-- 文档依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-springdoc</artifactId>
</dependency>
<!-- 多租户模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-tenant</artifactId>
</dependency>
<!-- 系统管理依赖模块 -->
<dependency>
<groupId>com.xiaomayi</groupId>
<artifactId>xiaomayi-system</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,181 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* <p>
* 代码工具配置类
* </p>
* 特别注意:依赖非静态set方法,切记不然无法读取值
*
* @author 小蚂蚁云团队
* @since 2024-06-24
*/
@Configuration
@ConfigurationProperties(prefix = "generator")
public class GeneratorConfig {
/**
* 软件作者
*/
private static String author;
/**
* 服务层路径
*/
private static String serviceModelName;
/**
* 服务层包名
*/
private static String servicePackageName;
/**
* 应用层路径
*/
private static String moduleModelName;
/**
* 应用层路径包名
*/
private static String modulePackageName;
/**
* 生成文件是否移除前缀,默认:false
*/
private static boolean removePrefix;
/**
* 数据表前缀
*/
private static String tablePrefix;
public static String getAuthor() {
return author;
}
public void setAuthor(String author) {
GeneratorConfig.author = author;
}
public static String getServiceModelName() {
return serviceModelName;
}
public void setServiceModelName(String serviceModelName) {
GeneratorConfig.serviceModelName = serviceModelName;
}
public static String getServicePackageName() {
return servicePackageName;
}
public void setServicePackageName(String servicePackageName) {
GeneratorConfig.servicePackageName = servicePackageName;
}
public static String getModuleModelName() {
return moduleModelName;
}
public void setModuleModelName(String moduleModelName) {
GeneratorConfig.moduleModelName = moduleModelName;
}
public static String getModulePackageName() {
return modulePackageName;
}
public void setModulePackageName(String modulePackageName) {
GeneratorConfig.modulePackageName = modulePackageName;
}
public static boolean getRemovePrefix() {
return removePrefix;
}
public void setRemovePrefix(boolean removePrefix) {
GeneratorConfig.removePrefix = removePrefix;
}
public static String getTablePrefix() {
return tablePrefix;
}
public void setTablePrefix(String tablePrefix) {
GeneratorConfig.tablePrefix = tablePrefix;
}
}
@@ -0,0 +1,98 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.dto.generator;
import com.xiaomayi.mybatis.dto.PageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 代码生成
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "业务分页查询DTO", description = "业务分页查询DTO")
public class GeneratorPageDTO extends PageDTO {
@Schema(description = "数据表名称")
private String tableName;
@Schema(description = "数据表描述")
private String tableComment;
}
@@ -0,0 +1,96 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.dto.generator;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
/**
* <p>
* 一键生成DTO
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
@Data
public class GeneratorTableDTO {
/**
* 代码生成表名称(多个使用逗号“,”分隔)
*/
@Schema(description = "数据表名称")
@NotEmpty(message = "数据表名称不能为空")
private String[] tableNames;
}
@@ -0,0 +1,113 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.dto.template;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import lombok.Data;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@Schema(name = "模板添加DTO", description = "模板添加DTO")
public class TemplateAddDTO {
@Schema(description = "模板名称")
@NotBlank(message = "模板名称不能为空")
@Size(max = 100, message = "模板名称最多100个字符")
private String name;
@Schema(description = "模板编码")
@NotBlank(message = "模板编码不能为空")
@Size(max = 100, message = "模板编码最多100个字符")
private String code;
@Schema(description = "文件路径")
@NotBlank(message = "文件路径不能为空")
@Size(max = 255, message = "文件路径最多255个字符")
private String path;
@Schema(description = "模板描述")
@Size(max = 255, message = "模板描述最多255个字符")
private String note;
@Schema(description = "模板内容")
private String content;
}
@@ -0,0 +1,96 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.dto.template;
import com.xiaomayi.mybatis.dto.PageDTO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "模板分页查询DTO", description = "模板分页查询DTO")
public class TemplatePageDTO extends PageDTO {
@Schema(description = "模板名称")
private String name;
}
@@ -0,0 +1,120 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.dto.template;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Data;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@Schema(name = "模板更新DTO", description = "模板更新DTO")
public class TemplateUpdateDTO {
@Schema(description = "模板ID")
@NotNull(message = "模板ID不能为空")
@Min(value = 1, message = "模板ID必须大于0")
private Integer id;
@Schema(description = "模板名称")
@NotBlank(message = "模板名称不能为空")
@Size(max = 100, message = "模板名称最多100个字符")
private String name;
@Schema(description = "模板编码")
@NotBlank(message = "模板编码不能为空")
@Size(max = 100, message = "模板编码最多100个字符")
private String code;
@Schema(description = "文件路径")
@NotBlank(message = "文件路径不能为空")
@Size(max = 255, message = "文件路径最多255个字符")
private String path;
@Schema(description = "模板描述")
@Size(max = 255, message = "模板描述最多255个字符")
private String note;
@Schema(description = "模板内容")
private String content;
}
@@ -0,0 +1,117 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaomayi.mybatis.model.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
@TableName("gen_template")
@Schema(name = "模板", description = "模板")
public class Template extends BaseEntity {
@Schema(description = "模板ID")
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@Schema(description = "模板名称")
private String name;
@Schema(description = "模板编码")
private String code;
@Schema(description = "文件路径")
private String path;
@Schema(description = "模板描述")
private String note;
@Schema(description = "模板内容")
private String content;
}
@@ -0,0 +1,100 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xiaomayi.generator.dto.generator.GeneratorPageDTO;
import com.xiaomayi.generator.vo.generator.DbTableListVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
* 代码生成 Mapper 接口
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
@Mapper
public interface GeneratorMapper {
/**
* 获取数据表分页列表
*
* @param page 分页
* @param param 查询条件
* @return 返回结果
*/
IPage<DbTableListVO> getTableList(IPage<DbTableListVO> page, @Param("param") GeneratorPageDTO param);
}
@@ -0,0 +1,89 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xiaomayi.generator.entity.Template;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
* 模板 Mapper 接口
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Mapper
public interface TemplateMapper extends BaseMapper<Template> {
}
@@ -0,0 +1,105 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.generator.dto.generator.GeneratorPageDTO;
import com.xiaomayi.generator.vo.generator.DbTableListVO;
/**
* <p>
* 代码生成 服务类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
public interface GeneratorService {
/**
* 查询分页列表
*
* @param tablePageDTO 查询条件
* @return 返回结果
*/
IPage<DbTableListVO> page(GeneratorPageDTO tablePageDTO);
/**
* 一键生成
*
* @param tableNames 数据表名称
* @return 返回结果
*/
R generator(String[] tableNames);
}
@@ -0,0 +1,160 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.generator.dto.template.TemplateAddDTO;
import com.xiaomayi.generator.dto.template.TemplatePageDTO;
import com.xiaomayi.generator.dto.template.TemplateUpdateDTO;
import com.xiaomayi.generator.entity.Template;
import com.xiaomayi.generator.vo.template.TemplateInfoVO;
import java.util.List;
/**
* <p>
* 模板 服务类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
public interface TemplateService extends IService<Template> {
/**
* 查询分页列表
*
* @param templatePageDTO 查询条件
* @return 返回结果
*/
Page<Template> page(TemplatePageDTO templatePageDTO);
/**
* 根据ID查询信息
*
* @param id 模板ID
* @return 返回结果
*/
Template getInfo(Integer id);
/**
* 根据ID查询详情
*
* @param id 模板ID
* @return 返回结果
*/
TemplateInfoVO getDetail(Integer id);
/**
* 添加模板
*
* @param templateAddDTO 参数
* @return 返回结果
*/
R add(TemplateAddDTO templateAddDTO);
/**
* 更新模板
*
* @param templateUpdateDTO 参数
* @return 返回结果
*/
R update(TemplateUpdateDTO templateUpdateDTO);
/**
* 删除模板
*
* @param id 模板ID
* @return 返回结果
*/
R delete(Integer id);
/**
* 批量删除模板
*
* @param idList 模板ID
* @return 返回结果
*/
R batchDelete(List<Integer> idList);
/**
* 检查模板编码是否已存在
*
* @param code 模板编码
* @param id 模板ID
* @return 返回结果
*/
boolean checkExist(String code, Integer id);
}
@@ -0,0 +1,146 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.generator.utils.CodeGenerator;
import com.xiaomayi.generator.vo.generator.DbTableListVO;
import com.xiaomayi.generator.dto.generator.GeneratorPageDTO;
import com.xiaomayi.generator.mapper.GeneratorMapper;
import com.xiaomayi.generator.service.GeneratorService;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
/**
* <p>
* 代码生成 服务实现类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
@Service
@AllArgsConstructor
public class GeneratorServiceImpl implements GeneratorService {
private final GeneratorMapper generatorMapper;
/**
* 查询分页列表
*
* @param tablePageDTO 查询条件
* @return 返回结果
*/
@Override
public IPage<DbTableListVO> page(GeneratorPageDTO tablePageDTO) {
// 分页设置
IPage<DbTableListVO> page = new Page<>(tablePageDTO.getPageNo(), tablePageDTO.getPageSize());
IPage<DbTableListVO> tableList = generatorMapper.getTableList(page, tablePageDTO);
tableList.convert(item -> {
// 数据表自增索引值
if (StringUtils.isNull(item.getAutoIncrement()) && StringUtils.isNotNull(item.getTableRows())) {
item.setAutoIncrement(item.getTableRows() + 1);
}
return item;
});
return tableList;
}
/**
* 一键生成
*
* @param tableNames 数据表名称
* @return 返回结果
*/
@Override
public R generator(String[] tableNames) {
// 计数器
Integer totalNum = 0;
for (String table : tableNames) {
// 分裂字符串
String[] item = table.split("\\|");
// 数据表名称
String tableName = item[0];
// 数据表描述
String tableAnnotation = item[1];
// 调用代码生成工具
CodeGenerator.Generation(tableName, tableAnnotation);
// 计数器+1
totalNum++;
}
return R.ok(String.format("本次共计生成【%d】个模块", totalNum));
}
}
@@ -0,0 +1,281 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.generator.dto.template.TemplateAddDTO;
import com.xiaomayi.generator.dto.template.TemplatePageDTO;
import com.xiaomayi.generator.dto.template.TemplateUpdateDTO;
import com.xiaomayi.generator.entity.Template;
import com.xiaomayi.generator.mapper.TemplateMapper;
import com.xiaomayi.generator.service.TemplateService;
import com.xiaomayi.generator.utils.FileUtils;
import com.xiaomayi.generator.vo.template.TemplateInfoVO;
import com.xiaomayi.generator.vo.template.TemplateListVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.List;
/**
* <p>
* 模板 服务实现类
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Slf4j
@Service
public class TemplateServiceImpl extends ServiceImpl<TemplateMapper, Template> implements TemplateService {
/**
* 查询分页列表
*
* @param templatePageDTO 查询条件
* @return 返回结果
*/
@Override
public Page<Template> page(TemplatePageDTO templatePageDTO) {
// 分页设置
Page<Template> page = new Page<>(templatePageDTO.getPageNo(), templatePageDTO.getPageSize());
// 查询条件
LambdaQueryWrapper<Template> wrapper = new LambdaQueryWrapper<Template>()
// 模板名称
.like(StringUtils.isNotEmpty(templatePageDTO.getName()), Template::getName, templatePageDTO.getName())
.eq(Template::getDelFlag, 0)
.orderByAsc(Template::getId);
// 查询分页数据
Page<Template> pageData = page(page, wrapper);
// 遍历数据源
pageData.convert(item -> {
// 实例化VO对象
TemplateListVO templateListVO = new TemplateListVO();
BeanUtils.copyProperties(item, templateListVO);
return templateListVO;
});
// 返回结果
return pageData;
}
/**
* 根据ID查询信息
*
* @param id 模板ID
* @return 返回结果
*/
@Override
public Template getInfo(Integer id) {
Template template = getById(id);
if (StringUtils.isNull(template) || !template.getDelFlag().equals(0)) {
return null;
}
return template;
}
/**
* 根据ID查询详情
*
* @param id 模板ID
* @return 返回结果
*/
@Override
public TemplateInfoVO getDetail(Integer id) {
Template template = getInfo(id);
if (StringUtils.isNull(template)) {
return null;
}
// 实例化VO
TemplateInfoVO templateInfoVO = new TemplateInfoVO();
BeanUtils.copyProperties(template, templateInfoVO);
return templateInfoVO;
}
/**
* 添加模板
*
* @param templateAddDTO 参数
* @return 返回结果
*/
@Override
public R add(TemplateAddDTO templateAddDTO) {
// 检查模板名称是否已存在
if (checkExist(templateAddDTO.getName(), 0)) {
return R.failed("模板名称已存在");
}
// 实例化对象
Template template = new Template();
// 属性拷贝
BeanUtils.copyProperties(templateAddDTO, template);
boolean result = save(template);
if (!result) {
return R.failed();
}
return R.ok();
}
/**
* 更新模板
*
* @param templateUpdateDTO 参数
* @return 返回结果
*/
@Override
public R update(TemplateUpdateDTO templateUpdateDTO) {
// 根据ID查询信息
Template template = getInfo(templateUpdateDTO.getId());
if (StringUtils.isNull(template)) {
return R.failed("记录不存在");
}
// 检查模板名称是否已存在
if (checkExist(templateUpdateDTO.getName(), templateUpdateDTO.getId())) {
return R.failed("模板名称已存在");
}
// 属性拷贝
BeanUtils.copyProperties(templateUpdateDTO, template);
boolean result = updateById(template);
if (!result) {
return R.failed();
}
// 获取文件模块绝对路径
String filePath = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
FileUtils.writeFile(filePath, template.getCode(), template.getContent());
// 返回结果
return R.ok();
}
/**
* 删除模板
*
* @param id 模板ID
* @return 返回结果
*/
@Override
public R delete(Integer id) {
// 根据ID查询信息
Template template = getInfo(id);
if (StringUtils.isNull(template)) {
return R.failed("记录不存在");
}
// 删除
boolean result = removeById(id);
if (!result) {
return R.failed();
}
// 返回结果
return R.ok();
}
/**
* 批量删除模板
*
* @param idList 模板ID
* @return 返回结果
*/
@Override
public R batchDelete(List<Integer> idList) {
// 删除ID判空
if (StringUtils.isEmpty(idList)) {
return R.failed("删除记录ID不存在");
}
// 批量删除
boolean result = removeBatchByIds(idList);
if (!result) {
return R.failed();
}
return R.ok();
}
/**
* 检查模板编码是否已存在
*
* @param code 模板编码
* @param id 模板ID
* @return 返回结果
*/
@Override
public boolean checkExist(String code, Integer id) {
Template fileTemplate = getOne(new LambdaQueryWrapper<Template>()
.eq(Template::getCode, code)
.ne(id > 0, Template::getId, id)
.eq(Template::getDelFlag, 0), false);
return StringUtils.isNotNull(fileTemplate);
}
}
@@ -0,0 +1,763 @@
package com.xiaomayi.generator.utils;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.TemplateType;
import com.baomidou.mybatisplus.generator.config.builder.ConfigBuilder;
import com.baomidou.mybatisplus.generator.config.builder.CustomFile;
import com.baomidou.mybatisplus.generator.config.po.TableField;
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import com.xiaomayi.core.config.DbConfig;
import com.xiaomayi.core.utils.R;
import com.xiaomayi.core.utils.SpringUtils;
import com.xiaomayi.core.utils.StringUtils;
import com.xiaomayi.generator.config.GeneratorConfig;
import com.xiaomayi.system.dto.menu.MenuAddDTO;
import com.xiaomayi.system.dto.menu.MenuUpdateDTO;
import com.xiaomayi.system.entity.Menu;
import com.xiaomayi.system.service.MenuService;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Component;
import java.io.File;
import java.sql.Types;
import java.util.*;
/**
* <p>
* 代码工具
* </p>
*
* @author 小蚂蚁云团队
* @since 2023-05-28
*/
@Component
public class CodeGenerator {
/**
* 生成代码
*
* @param tableName 数据表名
*/
public static void Generation(String tableName, String tableAnnotation) {
System.out.println("开始生成");
// 设置数据库链接
String dbUrl = String.format("jdbc:mysql://%s:%s/%s?&useSSL=true&useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai",
StringUtils.isNotEmpty(DbConfig.getDbHost()) ? DbConfig.getDbHost() : "127.0.0.1",
StringUtils.isNotEmpty(DbConfig.getDbPort()) ? DbConfig.getDbPort() : "3306",
StringUtils.isNotEmpty(DbConfig.getDbName()) ? DbConfig.getDbName() : "xiaomayi.web"
);
// 设置数据源
DataSourceConfig.Builder dataSourceConfig = new DataSourceConfig.Builder(
dbUrl,
StringUtils.isNotEmpty(DbConfig.getUsername()) ? DbConfig.getUsername() : "root",
StringUtils.isNotEmpty(DbConfig.getPassword()) ? DbConfig.getPassword() : "root"
);
// 作者名称
String author = StringUtils.isNotEmpty(GeneratorConfig.getAuthor()) ? GeneratorConfig.getAuthor() : "小蚂蚁云团队";
// 模块名称
String serviceModuleName = StringUtils.isNotEmpty(GeneratorConfig.getServiceModelName()) ? GeneratorConfig.getServiceModelName() : "xiaomayi-services/xiaomayi-system";
// 模块文件报名
String servicePackageName = StringUtils.isNotEmpty(GeneratorConfig.getServicePackageName()) ? GeneratorConfig.getServicePackageName() : "com.xiaomayi.system";
// 是否去除文件前缀
boolean removePrefix = StringUtils.isNotNull(GeneratorConfig.getRemovePrefix()) ? GeneratorConfig.getRemovePrefix() : true;
// 数据表前缀
String[] tablePrefix = StringUtils.isNotEmpty(GeneratorConfig.getTablePrefix()) ? GeneratorConfig.getTablePrefix().split(",") : new String[]{"sys_"};
// 第一步:生成服务层模块文件
generateService(dataSourceConfig, author, serviceModuleName, servicePackageName, tablePrefix, tableName);
// 模块名称
String moduleModuleName = StringUtils.isNotEmpty(GeneratorConfig.getModuleModelName()) ? GeneratorConfig.getModuleModelName() : "xiaomayi-modules/xiaomayi-admin";
// 模块文件报名
String modulePackageName = StringUtils.isNotEmpty(GeneratorConfig.getModulePackageName()) ? GeneratorConfig.getModulePackageName() : "com.xiaomayi.admin";
// 第二步:生成应用层模块文件
generateModule(dataSourceConfig, author, moduleModuleName, modulePackageName, servicePackageName, tablePrefix, tableName);
// 第三步:创建模块菜单权限节点
generatePermission(tableName, tableAnnotation, tablePrefix, removePrefix);
}
/**
* 生成服务层模块文件
*
* @param dataSourceConfig 数据源
* @param author 作者名称
* @param moduleName 模块名称
* @param packageName 模板文件包名
* @param tablePrefix 数据表前缀
* @param tableName 数据表名
*/
private static void generateService(
DataSourceConfig.Builder dataSourceConfig,
String author,
String moduleName,
String packageName,
String[] tablePrefix,
String... tableName
) {
System.out.println("========================== 服务层生成开始 ==========================");
// 生成模块文件
FastAutoGenerator.create(dataSourceConfig)
.globalConfig(builder -> {
// 设置作者
builder.author(author)
// 启用springdoc, 默认值:false
.enableSpringdoc()
// 禁止打开输出目录 默认值:true
.disableOpenDir()
// 注释日期
.commentDate("yyyy-MM-dd")
// 定义生成的实体类中日期类型 DateType.ONLY_DATE 默认值: DateType.TIME_PACK
.dateType(DateType.TIME_PACK)
// 指定输出目录
.outputDir(System.getProperty("user.dir") + String.format("/%s/src/main/java", moduleName));
})
// 数据库字段的类型转换
.dataSourceConfig(builder -> builder.typeConvertHandler((globalConfig, typeRegistry, metaInfo) -> {
int typeCode = metaInfo.getJdbcType().TYPE_CODE;
if (typeCode == Types.SMALLINT || typeCode == Types.TINYINT) {
// 自定义类型转换
return DbColumnType.INTEGER;
}
return typeRegistry.getColumnType(metaInfo);
}))
.packageConfig(builder -> {
builder.parent(packageName)
.entity("entity")
.mapper("mapper")
// 关键配置:指定 XML 文件输出到 resources/mapper
.pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + String.format("/%s/src/main/resources/mapper", moduleName)));
})
.strategyConfig(builder -> {
//设置要生成的表名
builder.addInclude(tableName)
// 表前缀过滤
.addTablePrefix(tablePrefix)
// 1. Entity策略配置
.entityBuilder()
.enableFileOverride()
// 启用lombok
.enableLombok()
.disableSerialVersionUID()
// 链式
.enableChainModel()
// 开启boolean类型字段移除is前缀
// .enableRemoveIsPrefix()
// // 开启生成实体时生成的字段注解
// .enableTableFieldAnnotation()
// 乐观锁数据库字段
.versionColumnName("version")
// 乐观锁实体类名称
.versionPropertyName("version")
// 逻辑删除数据库中字段名
.logicDeleteColumnName("del_flag")
// 逻辑删除实体类中的字段名
.logicDeletePropertyName("delFlag")
// 命名策略,数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
.naming(NamingStrategy.underline_to_camel)
// 表字段映射实体属性命名规则:默认null,不指定按照naming执行
.columnNaming(NamingStrategy.underline_to_camel)
// 添加全局主键类型
.idType(IdType.AUTO)
// 格式化实体名称,%s取消首字母I
.formatFileName("%s")
// .formatFileName("%sEntity")
// .superClass("com.example.db.BaseEntity")
// .addSuperEntityColumns("id", "create_time", "update_time")
// 表字段填充
.addTableFills(new Column("create_time", FieldFill.INSERT))
// 表字段填充
.addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
// .enableColumnConstant()
// // MPlus中启用ActiveRecord模式,生成的实体类会继承activerecord.Model类,直接进行数据库操作
// .enableActiveRecord();
// .disable()
// 2. Mapper策略配置
.mapperBuilder()
.enableFileOverride()
// 开启mapper注解
.enableMapperAnnotation()
// 生成基本的resultMap,启用xml文件中的BaseResultMap 生成
.enableBaseResultMap()
// 生成基本的SQL片段,启用xml文件中的BaseColumnList
.enableBaseColumnList()
// 格式化Mapper文件名称
.formatMapperFileName("%sMapper")
// // 格式化Xml文件名称
.formatXmlFileName("%sMapper")
// // 禁用生成mapper
// .disable()
// 3. Service 策略配置
.serviceBuilder()
.enableFileOverride()
// 格式化Service文件名称
.formatServiceFileName("%sService")
// 格式化Service实现类文件名称
.formatServiceImplFileName("%sServiceImpl")
// // 禁用生成service
// .disable()
// 4. Controller策略配置
.controllerBuilder()
// 开启文件重写覆盖
.enableFileOverride()
// 开启驼峰转连字符
.enableHyphenStyle()
// 格式化Controller文件名称
.formatFileName("%sController")
// 开启生成@RestController控制器
.enableRestStyle()
// 禁用生成controller
.disable();
})
.templateConfig(builder -> {
builder
// 禁用所有默认模板
//.disable(TemplateType.values())
// 禁用Controller层的代码生成
.disable(TemplateType.CONTROLLER)
// 禁用Service接口的代码生成
.disable(TemplateType.SERVICE)
// 禁用Service实现类的代码生成
.disable(TemplateType.SERVICE_IMPL)
// 禁用Mapper接口的代码生成
.disable(TemplateType.MAPPER)
// 禁用XML映射文件的代码生成
.disable(TemplateType.XML)
// 禁用实体类的默认代码生成
.disable(TemplateType.ENTITY)
// 指定使用自定义模板来生成实体对象
.entity("/templates/entity.java")
.service("/templates/service.java")
.serviceImpl("/templates/serviceImpl.java")
.mapper("/templates/mapper.java")
.xml("/templates/mapper.xml");
;
})
// 注入配置(自定义DTO/VO模板注入)
.injectionConfig(builder -> {
// 自定义DTO、VO模板文件
Map<String, String> customFile = new HashMap<>();
// 自定义DTO模板文件
customFile.put("dto||AddDTO|添加DTO", "templates/dto.java.ftl");
customFile.put("dto||UpdateDTO|更新DTO", "templates/dto.java.ftl");
customFile.put("dto||PageDTO|分页查询DTO", "templates/dto.java.ftl");
customFile.put("dto||ListDTO|列表查询DTO", "templates/dto.java.ftl");
// 自定义VO模板文件
customFile.put("vo||ListVO|列表VO", "templates/vo.java.ftl");
customFile.put("vo||InfoVO|信息VO", "templates/vo.java.ftl");
// 自定义前端模板
customFile.put("|xiaomayi-ui\\src\\views\\tool|index|vue", "templates/ui/index.vue.ftl");
customFile.put("|xiaomayi-ui\\src\\views\\tool|edit|vue", "templates/ui/edit.vue.ftl");
customFile.put("|xiaomayi-ui\\src\\views\\tool|columns|ts", "templates/ui/columns.ts.ftl");
customFile.put("|xiaomayi-ui\\src\\views\\tool|querySchemas|ts", "templates/ui/querySchemas.ts.ftl");
customFile.put("|xiaomayi-ui\\src\\api\\tool|api|ts", "templates/ui/api.ts.ftl");
// 自定义模板
builder.customFile(customFile);
})
// 输出文件前预处理
.injectionConfig(builder -> builder.beforeOutputFile(
(tableInfo, objectMap) -> {
String entityName = tableInfo.getEntityName();
Map<String, Object> packageMap = (Map) objectMap.get("package");
// 定义一个变量,方便在模板中引用
objectMap.put("packageName", packageMap.get("Parent"));
// 模块描述
String tableComment = tableInfo.getComment();
if (StringUtils.isNotEmpty(tableComment)) {
tableComment = tableComment
.replace("表", "")
.replace("管理", "");
}
objectMap.put("comment", tableComment);
}
))
.templateEngine(new FreemarkerTemplateEngine() {
@Override
public Map<String, Object> getObjectMap(ConfigBuilder config, TableInfo tableInfo) {
// 获取原始对象映射
Map<String, Object> objectMap = super.getObjectMap(config, tableInfo);
// 模块描述
String tableComment = tableInfo.getComment();
if (StringUtils.isNotEmpty(tableComment)) {
tableComment = tableComment
.replace("表", "")
.replace("管理", "");
}
objectMap.put("comment", tableComment);
tableInfo.setComment(tableComment);
// 遍历数据表字段
for (TableField field : tableInfo.getFields()) {
// 字段描述
String comment = field.getComment();
if (StringUtils.isEmpty(comment)) {
continue;
}
// 删除标识直接跳过
if ("delFlag".equals(field.getPropertyName())) {
continue;
}
if ((comment.contains(":") || comment.contains(":")) && comment.contains("-")) {
// 字段注释分裂处理
String[] strings = comment.replace(":", ":").split(":");
field.setComment(strings[0]);
// 字段注释值分裂处理
String[] paramList = strings[1].split(" ");
// 字段解析值数组小于2时直接跳过
if (paramList.length < 2) {
continue;
}
// 字段注释解析并重组
Map<String, Object> map = new HashMap<>();
for (String s : paramList) {
String[] item = s.split("-");
map.put(item[0], item[1]);
}
field.setCustomMap(map);
}
}
return objectMap;
}
/**
* 输出自定义文件
* @param customFiles 自定义文件模板
* @param tableInfo 数据表信息
* @param objectMap 数据对象
*/
@Override
protected void outputCustomFile(@NotNull List<CustomFile> customFiles, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
// 实体类名称
String entityName = tableInfo.getEntityName();
// 获取父类包名路径
String filePath = this.getPathInfo(OutputFile.parent);
// 遍历自定义文件对象
customFiles.forEach(item -> {
// 模板文件KEY处理
String[] fileItem = item.getFileName().split("\\|");
// 目标文件夹
String fileDir = fileItem[0];
// 文件名前缀
String filePrefix = fileItem[1];
// 文件名后缀
String fileSuffix = fileItem[2];
// 描述
String fileComment = fileItem[3];
// 数据表字段列表
List<TableField> tableFields = tableInfo.getFields();
boolean hasChildren = false;
for (TableField tableField : tableFields) {
String propertyName = tableField.getPropertyName();
if (propertyName.equals("pid") || propertyName.equals("parentId")) {
hasChildren = true;
}
}
// 文件路径
String pathName = "";
if ("vue".equals(fileComment) || "ts".equals(fileComment)) {
// 文件存储路径
String tplPath = System.getProperty("user.dir") + File.separator + filePrefix + File.separator;
if ("api".equals(fileSuffix)) {
pathName = tplPath + entityName.toLowerCase() + "." + fileComment;
} else {
pathName = tplPath + entityName.toLowerCase() + File.separator + fileSuffix + "." + fileComment;
}
} else {
// 输出路径
pathName = filePath + File.separator + fileDir.toLowerCase() + File.separator;
// 设置存放目录
pathName = pathName + entityName.toLowerCase() + File.separator;
// 设置文件名和文件后缀
pathName = pathName + filePrefix + entityName + fileSuffix + ".java";
}
// 自定义模板参数
objectMap.put("modelPrefix", filePrefix);
objectMap.put("modelSuffix", fileSuffix);
objectMap.put("fileComment", fileComment);
objectMap.put("hasChildren", hasChildren);
// 输出模板文件
this.outputFile(new File(pathName), objectMap, item.getTemplatePath(), true);
});
}
})
.execute();
System.out.println("========================== 服务层生成结束 ==========================");
}
/**
* 生成应用层模块文件
*
* @param dataSourceConfig 数据源
* @param author 作者名称
* @param moduleName 模块名称
* @param packageName 模板文件包名
* @param tablePrefix 数据表前缀
* @param tableName 数据表名
*/
private static void generateModule(
DataSourceConfig.Builder dataSourceConfig,
String author,
String moduleName,
String packageName,
String servicePackageName,
String[] tablePrefix,
String... tableName
) {
System.out.println("========================== 应用层生成开始 ==========================");
// 生成模块文件
FastAutoGenerator.create(dataSourceConfig)
.globalConfig(builder -> {
builder.author(author)
.outputDir(System.getProperty("user.dir") + String.format("/%s/src/main/java", moduleName))
.disableOpenDir();
})
.packageConfig(builder -> {
builder.parent(packageName);
})
.strategyConfig(builder -> {
//设置要生成的表名
builder.addInclude(tableName)
// 表前缀过滤
.addTablePrefix(tablePrefix)
// 1. Entity策略配置
.entityBuilder()
.enableFileOverride()
// 启用lombok
.enableLombok()
.disableSerialVersionUID()
// 链式
.enableChainModel()
// 开启boolean类型字段移除is前缀
// .enableRemoveIsPrefix()
// 开启生成实体时生成的字段注解
.enableTableFieldAnnotation()
// 乐观锁数据库字段
.versionColumnName("version")
// 乐观锁实体类名称
.versionPropertyName("version")
// 逻辑删除数据库中字段名
.logicDeleteColumnName("del_flag")
// 逻辑删除实体类中的字段名
.logicDeletePropertyName("delFlag")
// 命名策略,数据表映射实体命名策略:默认下划线转驼峰underline_to_camel
.naming(NamingStrategy.underline_to_camel)
// 表字段映射实体属性命名规则:默认null,不指定按照naming执行
.columnNaming(NamingStrategy.underline_to_camel)
// 添加全局主键类型
.idType(IdType.AUTO)
// 格式化实体名称,%s取消首字母I
.formatFileName("%s")
// .formatFileName("%sEntity")
// .superClass("com.example.db.BaseEntity")
// .addSuperEntityColumns("id", "create_time", "update_time")
// 表字段填充
.addTableFills(new Column("create_time", FieldFill.INSERT))
// 表字段填充
.addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE))
// .enableColumnConstant()
// // MPlus中启用ActiveRecord模式,生成的实体类会继承activerecord.Model类,直接进行数据库操作
// .enableActiveRecord();
.disable()
// 2. Mapper策略配置
.mapperBuilder()
.enableFileOverride()
// 开启mapper注解
.enableMapperAnnotation()
// 生成基本的resultMap,启用xml文件中的BaseResultMap 生成
.enableBaseResultMap()
// 生成基本的SQL片段,启用xml文件中的BaseColumnList
.enableBaseColumnList()
// 格式化Mapper文件名称
.formatMapperFileName("%sMapper")
// // 格式化Xml文件名称
.formatXmlFileName("%sMapper")
// 禁用生成mapper
.disable()
// 3. Service 策略配置
.serviceBuilder()
.enableFileOverride()
// 格式化Service文件名称
.formatServiceFileName("%sService")
// 格式化Service实现类文件名称
.formatServiceImplFileName("%sServiceImpl")
// 禁用生成service
.disable()
// 4. Controller策略配置
.controllerBuilder()
// 开启文件重写覆盖
.enableFileOverride()
// 开启驼峰转连字符
.enableHyphenStyle()
// 格式化Controller文件名称
.formatFileName("%sController")
// 开启生成@RestController控制器
.enableRestStyle()
//禁用生成controller
.disable();
})
// 注入配置(自定义DTO/VO模板注入)
.injectionConfig(builder -> {
// 自定义DTO、VO模板文件
Map<String, String> customFile = new HashMap<>();
// 自定义模块控制器模板文件
customFile.put("controller||Controller|模块控制器", "templates/modules/controller.java.ftl");
// 自定义模板
builder.customFile(customFile);
})
// 输出文件前预处理
.injectionConfig(builder -> builder.beforeOutputFile(
(tableInfo, objectMap) -> {
String entityName = tableInfo.getEntityName();
Map<String, Object> packageMap = (Map) objectMap.get("package");
// 模块包名处理
String[] packages = servicePackageName.split("\\.");
String itemName = packages[packages.length - 1];
// 定义一个变量,方便在模板中引用
objectMap.put("packageName", packageMap.get("Parent").toString()
.replace("admin", itemName));
// 模块描述
String tableComment = tableInfo.getComment();
if (StringUtils.isNotEmpty(tableComment)) {
tableComment = tableComment
.replace("表", "")
.replace("管理", "");
}
objectMap.put("comment", tableComment);
}
))
.templateEngine(new FreemarkerTemplateEngine() {
@Override
public Map<String, Object> getObjectMap(ConfigBuilder config, TableInfo tableInfo) {
// Map对象
Map<String, Object> objectMap = super.getObjectMap(config, tableInfo);
// 实体类名称
String entityName = tableInfo.getEntityName();
// 获取父类包名
String otherPath = ((Map<String, Object>) objectMap.get("package")).get("Parent").toString();
// TODO... 自定义模板参数
// 模块描述
String tableComment = tableInfo.getComment();
if (StringUtils.isNotEmpty(tableComment)) {
tableComment = tableComment
.replace("表", "")
.replace("管理", "");
}
objectMap.put("comment", tableComment);
tableInfo.setComment(tableComment);
return objectMap;
}
/**
* 输出自定义文件
*
* @param customFiles 自定义文件模板
* @param tableInfo 数据表信息
* @param objectMap 数据对象
*/
@Override
protected void outputCustomFile(@NotNull List<CustomFile> customFiles, @NotNull TableInfo tableInfo, @NotNull Map<String, Object> objectMap) {
// 实体类名称
String entityName = tableInfo.getEntityName();
// 获取父类包名路径
String filePath = this.getPathInfo(OutputFile.parent);
// 遍历自定义文件对象
customFiles.forEach(item -> {
// 模板文件KEY处理
String[] fileItem = item.getFileName().split("\\|");
// 目标文件夹
String fileDir = fileItem[0];
// 文件名前缀
String filePrefix = fileItem[1];
// 文件名后缀
String fileSuffix = fileItem[2];
// 描述
String fileComment = fileItem[3];
// 输出路径
String pathName = filePath + File.separator + fileDir.toLowerCase() + File.separator + filePrefix + entityName + fileSuffix + ".java";
// 自定义模板参数
objectMap.put("modelPrefix", filePrefix);
objectMap.put("modelSuffix", fileSuffix);
objectMap.put("fileComment", fileComment);
// 输出模板文件
this.outputFile(new File(pathName), objectMap, item.getTemplatePath(), true);
});
}
})
.execute();
System.out.println("========================== 应用层生成结束 ==========================");
}
/**
* 创建模块菜单和权限节点
*
* @param tableName 数据表名
* @param tableAnnotation 数据表描述
* @param tablePrefix 数据表前缀
* @param removePrefix 移除数据表前缀
*/
private static void generatePermission(
String tableName,
String tableAnnotation,
String[] tablePrefix,
boolean removePrefix
) {
System.out.println("========================== 权限菜单创建开始 ==========================");
// 是否替换前缀
if (removePrefix) {
// 遍历前缀并替换
for (String prefix : tablePrefix) {
tableName = tableName.replace(prefix, "");
}
}
// 实体类名
String entityName = StringUtils.replaceUnderLineAndUpperCase(tableName);
if (StringUtils.isEmpty(entityName)) {
return;
}
// 数据表描述
tableAnnotation = tableAnnotation.replace("表", "")
.replace("管理", "");
// 获取菜单Bean对象
MenuService menuService = SpringUtils.getBean(MenuService.class);
// 根据菜单路径查询菜单信息
Menu entity = menuService.getMenuByPath(String.format("/tool/%s", entityName.toLowerCase()));
R result = null;
if (StringUtils.isNotNull(entity)) {
// 更新
entity.setName(tableAnnotation);
entity.setPath(String.format("/tool/%s", entityName.toLowerCase()));
entity.setComponent(String.format("/tool/%s/index", entityName.toLowerCase()));
entity.setPermission(String.format("sys:%s:index", entityName.toLowerCase()));
// 类型转换
MenuUpdateDTO menuUpdateDTO = new MenuUpdateDTO();
BeanUtils.copyProperties(entity, menuUpdateDTO);
result = menuService.update(menuUpdateDTO);
} else {
// 创建
entity = new Menu();
entity.setName(tableAnnotation);
entity.setIcon("el-icon-Bicycle");
entity.setIcon2("AlertOutlined");
entity.setPath(String.format("/tool/%s", entityName.toLowerCase()));
entity.setComponent(String.format("/tool/%s/index", entityName.toLowerCase()));
entity.setParentId(247);
entity.setType(0);
entity.setStatus(0);
entity.setHide(0);
entity.setSort(5);
entity.setTarget(0);
// 类型转换
MenuAddDTO menuAddDTO = new MenuAddDTO();
BeanUtils.copyProperties(entity, menuAddDTO);
result = menuService.add(menuAddDTO);
}
if (!R.isOK(result)) {
return;
}
// 菜单ID
Integer menuId = Integer.valueOf(result.getData().toString());
// 删除菜单子级权限节点
menuService.deleteByParentId(menuId);
// 创建或更新权限节点
String[] strings = entity.getPath().split("/");
// 模块名称
String moduleName = strings[strings.length - 1];
// 目标标题
String moduleTitle = entity.getName().replace("管理", "");
// 遍历权限节点
Integer[] permissionList = new Integer[]{1, 5, 10, 15, 20, 25, 30, 35};
// 菜单权限列表
List<Menu> menuList = new ArrayList<>();
for (Integer item : permissionList) {
// 创建对象
Menu menu = new Menu();
menu.setParentId(menuId);
menu.setType(1);
menu.setStatus(0);
menu.setHide(0);
menu.setSort(item);
menu.setTarget(entity.getTarget());
if (item.equals(1)) {
// 查询分页
menu.setName(String.format("查询%s分页", moduleTitle));
menu.setPath(String.format("/%s/index", moduleName));
menu.setPermission(String.format("sys:%s:index", moduleName));
} else if (item.equals(5)) {
// 查询列表
menu.setName(String.format("查询%s列表", moduleTitle));
menu.setPath(String.format("/%s/list", moduleName));
menu.setPermission(String.format("sys:%s:list", moduleName));
} else if (item.equals(10)) {
// 查询列表
menu.setName(String.format("查询%s详情", moduleTitle));
menu.setPath(String.format("/%s/detail", moduleName));
menu.setPermission(String.format("sys:%s:detail", moduleName));
} else if (item.equals(15)) {
// 添加
menu.setName(String.format("添加%s", moduleTitle));
menu.setPath(String.format("/%s/add", moduleName));
menu.setPermission(String.format("sys:%s:add", moduleName));
} else if (item.equals(20)) {
// 修改
menu.setName(String.format("更新%s", moduleTitle));
menu.setPath(String.format("/%s/update", moduleName));
menu.setPermission(String.format("sys:%s:update", moduleName));
} else if (item.equals(25)) {
// 设置状态
menu.setName("设置状态");
menu.setPath(String.format("/%s/status", moduleName));
menu.setPermission(String.format("sys:%s:status", moduleName));
} else if (item.equals(30)) {
// 删除
menu.setName(String.format("删除%s", moduleTitle));
menu.setPath(String.format("/%s/delete", moduleName));
menu.setPermission(String.format("sys:%s:delete", moduleName));
} else if (item.equals(35)) {
// 批量删除
menu.setName("批量删除");
menu.setPath(String.format("/%s/batchDelete", moduleName));
menu.setPermission(String.format("sys:%s:batchDelete", moduleName));
}
// 加入列表
menuList.add(menu);
}
// 批量插入权限节点数据
menuService.batchAddMenu(menuList);
System.out.println("========================== 权限菜单创建结束 ==========================");
}
}
@@ -0,0 +1,263 @@
package com.xiaomayi.generator.utils;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Collections;
import java.util.Scanner;
/**
* MyBatis-Plus 代码生成器工具类
* <p>
* 功能特性:
* 1. 支持控制台交互式输入表名
* 2. 支持单表、多表、全表生成
* 3. 自动生成 Entity、Mapper、Service、Controller 等层代码
* 4. 集成 Lombok、Swagger 等常用框架
* 5. 支持自定义包名、模块名、文件覆盖等配置
*
* @author Generator
* @version 1.0
* @since 2024
*/
public class CodeGenerator2 {
// ==================== 数据库配置 ====================
/**
* 数据库连接URL - 请根据实际数据库修改
*/
private static final String JDBC_URL = "jdbc:mysql://localhost:3306/rxthinkcmf.web?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8";
/**
* 数据库用户名 - 请修改为实际用户名
*/
private static final String JDBC_USERNAME = "root";
/**
* 数据库密码 - 请修改为实际密码
*/
private static final String JDBC_PASSWORD = "root";
/**
* 数据库驱动类
*/
private static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
// ==================== 代码生成配置 ====================
/**
* 项目基础包名 - 生成的代码将放在此包下
*/
private static final String BASE_PACKAGE = "com.xiaomayi";
/**
* 模块名称 - 会在基础包下创建该模块包,如不需要可设置为空字符串
*/
private static final String MODULE_NAME = "member";
/**
* 代码作者 - 生成的类注释中的作者信息
*/
private static final String AUTHOR = "小蚂蚁云";
/**
* 表前缀 - 生成实体类时会自动去除这些前缀
*/
private static final String[] TABLE_PREFIXES = {"sys_", "ums_", "oms_"};
/**
* 字段前缀(如:is_) - 生成实体字段时会自动去除这些前缀
*/
private static final String[] FIELD_PREFIXES = {};
/**
* 主方法 - 程序入口
*
* @param args 命令行参数(未使用)
*/
public static void main(String[] args) {
// 创建控制台输入扫描器
Scanner scanner = new Scanner(System.in);
try {
// 提示用户输入表名
System.out.println("================================================");
System.out.println(" MyBatis-Plus 代码生成器");
System.out.println("================================================");
System.out.println("请输入表名(支持以下格式):");
System.out.println(" - 单表:user");
System.out.println(" - 多表:user,role,menu");
System.out.println(" - 全表:all");
System.out.println("================================================");
System.out.print("请输入: ");
// 读取用户输入并去除首尾空格
String tableName = scanner.nextLine().trim();
// 验证输入是否为空
if (tableName.isEmpty()) {
System.err.println("错误:表名不能为空!");
return;
}
// 执行代码生成
generateCode(tableName);
} catch (Exception e) {
// 异常处理
System.err.println("代码生成过程中发生错误:" + e.getMessage());
e.printStackTrace();
} finally {
// 确保扫描器被关闭
scanner.close();
}
}
/**
* 执行代码生成的核心方法
*
* @param tableName 表名字符串,支持单表、多表逗号分隔、全表(all)
*/
public static void generateCode(String tableName) {
// 获取当前项目根路径
String projectPath = System.getProperty("user.dir") + "/xiaomayi-services/xiaomayi-member";
System.out.println("当前工程路径:" + projectPath);
System.out.println("开始生成代码,目标表:" + tableName);
// 使用 MyBatis-Plus 的 FastAutoGenerator 进行代码生成
FastAutoGenerator.create(JDBC_URL, JDBC_USERNAME, JDBC_PASSWORD)
// ========== 全局配置 ==========
.globalConfig(builder -> {
builder.author(AUTHOR) // 设置代码作者
// .enableSwagger() // 开启 Swagger 注解支持
.disableOpenDir() // 生成完成后不打开输出目录
.dateType(DateType.ONLY_DATE) // 使用 java.util.Date
.commentDate("yyyy-MM-dd") // 注释日期格式
.outputDir(projectPath + "/src/main/java"); // 代码输出目录
})
// ========== 包配置 ==========
.packageConfig(builder -> {
builder.parent(BASE_PACKAGE) // 父包名
.moduleName(MODULE_NAME) // 模块包名
.entity("entity") // 实体类包名
.service("service") // Service 接口包名
.serviceImpl("service.impl") // Service 实现类包名
.mapper("mapper") // Mapper 接口包名
.controller("controller") // Controller 包名
.xml("mapper.xml") // Mapper XML 文件包名
.pathInfo(Collections.singletonMap(
OutputFile.xml,
projectPath + "/src/main/resources/mapper" // XML 文件输出路径
));
})
// ========== 生成策略配置 ==========
.strategyConfig(builder -> {
// 表配置:包含的表和过滤的前缀
builder.addInclude(getTables(tableName)) // 设置要生成的表
.addTablePrefix(TABLE_PREFIXES) // 设置过滤表前缀
.addFieldPrefix(FIELD_PREFIXES); // 设置过滤字段前缀
// ===== 实体类策略配置 =====
builder.entityBuilder()
.enableLombok() // 启用 Lombok
.enableFileOverride() // 覆盖已存在的文件
.enableTableFieldAnnotation() // 启用字段注解
.naming(NamingStrategy.underline_to_camel) // 表名转驼峰
.columnNaming(NamingStrategy.underline_to_camel) // 列名转驼峰
.idType(IdType.ASSIGN_ID) // 主键策略:雪花算法
.logicDeletePropertyName("deleted") // 逻辑删除字段名
.versionPropertyName("version") // 乐观锁字段名
.addTableFills(new Column("create_time", FieldFill.INSERT)) // 创建时间自动填充
.addTableFills(new Column("update_time", FieldFill.INSERT_UPDATE)); // 更新时间自动填充
// .formatFileName("%sEntity"); // 实体类文件名格式
// ===== Controller 策略配置 =====
builder.controllerBuilder()
.enableRestStyle() // 生成 @RestController
.enableHyphenStyle() // 请求路径使用连字符格式
.enableFileOverride() // 覆盖已存在的文件
.formatFileName("%sController"); // 控制器文件名格式
// ===== Service 策略配置 =====
builder.serviceBuilder()
.enableFileOverride() // 覆盖已存在的文件
.formatServiceFileName("%sService") // Service 接口文件名格式
.formatServiceImplFileName("%sServiceImpl"); // Service 实现类文件名格式
// ===== Mapper 策略配置 =====
builder.mapperBuilder()
.enableFileOverride() // 覆盖已存在的文件
.enableMapperAnnotation() // 启用 @Mapper 注解
.enableBaseResultMap() // 生成基础 ResultMap
.enableBaseColumnList() // 生成基础 ColumnList
.formatMapperFileName("%sMapper") // Mapper 接口文件名格式
.formatXmlFileName("%sMapper"); // Mapper XML 文件名格式
})
// ========== 模板引擎配置 ==========
.templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
// ========== 执行生成 ==========
.execute();
System.out.println("================================================");
System.out.println("代码生成完成!");
System.out.println("生成位置:" + projectPath + "/src/main/java/" + BASE_PACKAGE.replace(".", "/"));
System.out.println("================================================");
}
/**
* 处理表名字符串,转换为生成器需要的数组格式
*
* @param tables 表名字符串,支持格式:
* - "user" (单表)
* - "user,role,menu" (多表逗号分隔)
* - "all" (所有表)
* @return 表名数组,如果输入 "all" 返回空数组表示生成所有表
*/
private static String[] getTables(String tables) {
// 检查是否生成所有表
if ("all".equalsIgnoreCase(tables)) {
System.out.println("生成模式:所有表");
return new String[]{}; // 空数组表示所有表
}
// 按逗号分割多表输入
String[] tableArray = tables.split(",");
System.out.println("生成模式:指定表,数量:" + tableArray.length);
// 打印要生成的表名
for (int i = 0; i < tableArray.length; i++) {
System.out.println(" " + (i + 1) + ". " + tableArray[i].trim());
}
return tableArray;
}
/**
* 获取数据库配置信息(用于调试或日志)
*
* @return 数据库配置信息字符串
*/
public static String getDataSourceInfo() {
return String.format("数据库连接: %s, 用户名: %s", JDBC_URL, JDBC_USERNAME);
}
/**
* 获取代码生成配置信息(用于调试或日志)
*
* @return 代码生成配置信息字符串
*/
public static String getGeneratorConfigInfo() {
return String.format("基础包名: %s, 模块名: %s, 作者: %s",
BASE_PACKAGE, MODULE_NAME, AUTHOR);
}
}
@@ -0,0 +1,113 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.utils;
import cn.hutool.core.net.URLDecoder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.ResourceUtils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.charset.Charset;
@Slf4j
public class FileUtils {
/**
* 写入文件
*
* @param fileName 文件名称
* @param content 文件内容
*/
public static void writeFile(String className, String fileName, String content) {
try {
String filePath = className.replace("/target/classes", "") + "src/main/resources/templates/";
filePath = URLDecoder.decode(filePath, Charset.defaultCharset());
File dir = new File(filePath);
if (!dir.exists()) {
dir.mkdir();
}
// 拼接文件名
filePath = filePath + fileName;
File file = ResourceUtils.getFile(filePath);
FileWriter writer = new FileWriter(file);
BufferedWriter bw = new BufferedWriter(writer);
bw.write(content);
bw.close();
} catch (IOException e) {
log.error("文件模板写入异常:{}", e.getMessage());
}
}
}
@@ -0,0 +1,112 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.utils;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
public class FreeMarkerUtil {
private Configuration configuration = new Configuration(Configuration.VERSION_2_3_32);
public FreeMarkerUtil() throws IOException {
configuration.setClassForTemplateLoading(this.getClass(), "/templates");
}
public String processTemplate(String templateName, Map<String, Object> data) throws TemplateException, IOException {
Template template = configuration.getTemplate(templateName);
StringWriter writer = new StringWriter();
template.process(data, writer);
return writer.toString();
}
public static void main(String[] args) {
FreeMarkerUtil freeMarkerUtil = null;
try {
freeMarkerUtil = new FreeMarkerUtil();
Map<String, Object> data = new HashMap<>();
// 假设你想要处理controller.java.ftl文件
String content = freeMarkerUtil.processTemplate("controller.java.ftl", data);
System.out.println(content);
} catch (IOException | TemplateException e) {
e.printStackTrace();
}
}
}
@@ -0,0 +1,122 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.vo.generator;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
/**
* <p>
* 数据库表列表VO
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-07-23
*/
@Data
@Schema(name = "业务信息VO", description = "业务信息VO")
public class DbTableListVO {
@Schema(description = "数据表名称")
private String tableName;
@Schema(description = "数据表描述")
private String tableComment;
@Schema(description = "数据表引擎")
private String engine;
@Schema(description = "数据表行数")
private Integer tableRows;
@Schema(description = "数据表长度")
private String dataLength;
@Schema(description = "数据表自增索引")
private Integer autoIncrement;
@Schema(description = "数据表编码")
private String tableCollation;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
}
@@ -0,0 +1,92 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.vo.template;
import com.xiaomayi.generator.entity.Template;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "模板信息VO", description = "模板信息VO")
public class TemplateInfoVO extends Template {
}
@@ -0,0 +1,92 @@
// +======================================================================
// | 小蚂蚁云·企业数字化开发平台 [ 加速数字化转型,构建智能未来 ]
// +----------------------------------------------------------------------
// | 核心价值:赋能开发者 · 服务企业 · 共建生态
// +----------------------------------------------------------------------
// | Copyright (c) 2020-2026 小蚂蚁云团队 版权所有
// +----------------------------------------------------------------------
// | 官方平台: https://www.xiaomayicloud.com
// +======================================================================
// | 【知识产权声明】
// | 1. 权属声明:本软件是受《中华人民共和国著作权法》
// | 保护的专有财产,完整版权归小蚂蚁云团队所有
// | 2. 权利范围:所有知识产权(商标、专利、著作权、
// | 商业秘密等)均归小蚂蚁云团队所有,受法律保护
// | 3. 授权性质:用户仅可获得有限的、非独占的使用许可
// | 4. 禁止行为:未经书面授权,禁止对本软件本身
// | 申请任何知识产权
// | 5. 权利保留:未在本协议中明示授予的一切权利
// | 均由小蚂蚁云团队保留
// +======================================================================
// | 【授权状态说明】
// | 1. 未授权状态:用户未购买有效的商业许可证
// | 2. 商业授权:已购买正式商业许可证的用户
// +======================================================================
// | 【绝对禁止条款】
// | 无论授权状态如何,任何用户均严格禁止以下行为:
// | 1. 逆向工程:对软件进行反编译、反汇编、技术破解或任何形式的逆向分析
// | 2. 版权破坏:移除、修改、遮挡软件中的版权标识、许可控制或技术保护措施
// | 3. 非法传播:复制、分发、出租、出借、转售、再许可本软件或其许可权利
// | 4. 竞争性使用:利用本软件的代码、架构、设计开发直接竞争的产品或服务
// | 5. 侵权使用:将软件用于侵犯第三方知识产权或其他合法权益的用途
// +======================================================================
// | 【商业授权许可范围】
// | 购买有效商业许可证的用户,在遵守上述禁止条款的前提下,获得:
// | 1. 使用权利:在许可证约定的项目数量、开发者数量范围内使用本软件
// | 2. 技术支持:商业授权用户可以获取本地开发部署的技术支持服务
// | 3. 版本更新:在许可证有效期内获取软件更新、安全补丁和功能增强
// | 4. 商业部署:将基于本软件开发的应用程序用于商业运营和生产环境
// +======================================================================
// | 【许可证获取】
// | 1. 获取途径:仅通过小蚂蚁云官方渠道购买(官网、授权代理商),购买记录凭证
// | 2. 转让限制:许可证与购买主体绑定,未经书面同意不得转让
// | 3. 终止情形:许可证到期、违反协议、破产清算等情况下自动终止
// +======================================================================
// | 【合法使用要求】
// | 1. 仅限用于合法合规的软件研发
// | 2. 严禁用于任何违法、侵权或恶意行为
// | 3. 严禁违反我国法律法规和政策
// +======================================================================
// | 【免责声明】
// | 因使用本框架导致的以下情况,我们概不负责:
// | 1. 项目研发中的意外、疏忽、违约等风险
// | 2. 侵犯第三方知识产权或其他合法权益
// | 3. 任何直接、间接、附带或衍生一切损失
// | 4. 用户违规违法行为的一切法律后果
// +======================================================================
// | 【协议重要提示】
// | 1. 本声明是《小蚂蚁云最终用户许可协议》的摘要版本
// | 2. 下载、安装或使用本软件即表示您接受全部协议条款
// | 3. 我们保留单方面修改本声明的权利,修改后的版本在官网公布即生效
// | 4. 用户有义务定期查看最新版本,继续使用视为接受修改
// +======================================================================
// | 【侵权举报与合规】
// | 1. 知识产权侵权举报:请联系官方客服
// | 2. 许可证合规咨询:xiaomayicloud@163.com
// | 3. 违规使用将终止授权并追究责任
// | 4. 无条件配合司法机关调查取证
// | 5. 保留一切法律追诉权利
// | 6. 对有效举报和合规建议,我们将给予感谢和奖励
// +======================================================================
package com.xiaomayi.generator.vo.template;
import com.xiaomayi.generator.entity.Template;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* <p>
* 模板
* </p>
*
* @author 小蚂蚁云团队
* @since 2024-06-18
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(name = "模板列表VO", description = "模板列表VO")
public class TemplateListVO extends Template {
}
@@ -0,0 +1,127 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaomayi.generator.mapper.GeneratorMapper">
<!-- 1、获取数据库表(MySQL版本) -->
<select id="getTableList" resultType="com.xiaomayi.generator.vo.generator.DbTableListVO">
SELECT
table_name,
table_comment,
ENGINE,
table_rows,
data_length,
auto_increment,
table_collation,
create_time,
update_time
FROM
information_schema.tables
WHERE
table_schema = (
SELECT DATABASE
())
AND table_name NOT LIKE 'gen_%'
AND table_name NOT LIKE 'qrtz_%'
AND table_name NOT LIKE 'oauth2_%'
AND table_name NOT LIKE 'undo_%'
<if test="param.tableName != null and param.tableName != ''">
AND lower(table_name) like lower(concat('%', #{param.tableName}, '%'))
</if>
<if test="param.tableComment != null and param.tableComment != ''">
AND lower(table_comment) like lower(concat('%', #{param.tableComment}, '%'))
</if>
</select>
<!-- &lt;!&ndash; 2、获取数据库表(PostgreSQL版本) &ndash;&gt;-->
<!-- <select id="getTableList" resultType="com.xiaomayi.generator.vo.generator.DbTableListVO">-->
<!-- SELECT C-->
<!-- .relname AS TABLE_NAME,&#45;&#45; 表名称-->
<!-- obj_description ( C.OID, 'pg_class' ) AS table_comment,&#45;&#45; 表描述-->
<!-- st.n_live_tup AS table_rows,&#45;&#45; 行数-->
<!-- pg_size_pretty ( pg_total_relation_size ( C.OID ) ) AS data_length &#45;&#45; 表总大小-->
<!-- FROM-->
<!-- pg_class-->
<!-- C LEFT JOIN pg_namespace n ON n.OID = C.relnamespace-->
<!-- LEFT JOIN pg_stat_user_tables st ON st.relid = C.OID-->
<!-- WHERE-->
<!-- C.relkind = 'r' &#45;&#45; 只选择普通表-->
<!-- AND n.nspname NOT IN ( 'pg_catalog', 'information_schema' ) &#45;&#45; 排除系统表-->
<!-- AND C.relname NOT LIKE'gen_%'-->
<!-- AND C.relname NOT LIKE'qrtz_%'-->
<!-- AND C.relname NOT LIKE'oauth2_%'-->
<!-- AND C.relname NOT LIKE'undo_%'-->
<!-- <if test="param.tableName != null and param.tableName != ''">-->
<!-- AND lower(table_name) like lower(concat('%', #{param.tableName}, '%'))-->
<!-- </if>-->
<!-- <if test="param.tableComment != null and param.tableComment != ''">-->
<!-- AND lower(table_comment) like lower(concat('%', #{param.tableComment}, '%'))-->
<!-- </if>-->
<!-- </select>-->
<!-- &lt;!&ndash; 3、获取数据库表(SqlServer版本) &ndash;&gt;-->
<!-- <select id="getTableList" resultType="com.xiaomayi.generator.vo.generator.DbTableListVO">-->
<!-- SELECT-->
<!-- t.name AS table_name,-->
<!-- ep.value AS table_comment,-->
<!-- s.name AS ENGINE,-->
<!-- p.rows AS table_rows,-->
<!-- SUM(a.total_pages) * 8 AS data_length,-->
<!-- t.create_date AS create_time,-->
<!-- t.modify_date AS update_time-->
<!-- FROM-->
<!-- sys.tables t-->
<!-- INNER JOIN-->
<!-- sys.indexes i ON t.object_id = i.object_id-->
<!-- INNER JOIN-->
<!-- sys.partitions p ON i.object_id = p.object_id AND i.index_id = p.index_id-->
<!-- INNER JOIN-->
<!-- sys.allocation_units a ON p.partition_id = a.container_id-->
<!-- LEFT JOIN-->
<!-- sys.extended_properties ep ON t.object_id = ep.major_id AND ep.minor_id = 0 AND ep.name = 'MS_Description'-->
<!-- INNER JOIN-->
<!-- sys.schemas s ON t.schema_id = s.schema_id-->
<!-- WHERE-->
<!-- i.index_id &lt;= 1-->
<!-- AND t.name NOT LIKE 'gen_%'-->
<!-- AND t.name NOT LIKE 'qrtz_%'-->
<!-- AND t.name NOT LIKE 'oauth2_%'-->
<!-- AND t.name NOT LIKE 'undo_%'-->
<!-- <if test="param.tableName != null and param.tableName != ''">-->
<!-- AND lower(t.name) like lower(concat('%', #{param.tableName}, '%'))-->
<!-- </if>-->
<!-- <if test="param.tableComment != null and param.tableComment != ''">-->
<!-- AND lower(t.name) like lower(concat('%', #{param.tableComment}, '%'))-->
<!-- </if>-->
<!-- GROUP BY-->
<!-- t.name, s.name, p.rows, t.create_date, t.modify_date, ep.value-->
<!-- ORDER BY-->
<!-- t.name;-->
<!-- </select>-->
<!-- 4、获取数据库表(Sqlite版本)
特别说明:由于Sqlite特性以及参数不完整,此处仅用于展示,如需使用代码生成器功能请使用MySQL、PostgreSQL、SqlServer等其他数据库
-->
<!-- <select id="getTableList" resultType="com.xiaomayi.generator.vo.generator.DbTableListVO">-->
<!-- SELECT-->
<!-- name AS table_name-->
<!-- FROM-->
<!-- sqlite_master-->
<!-- WHERE-->
<!-- type = 'table'-->
<!-- AND name NOT LIKE 'sqlite_%'-->
<!-- AND name NOT LIKE 'gen_%'-->
<!-- AND name NOT LIKE 'qrtz_%'-->
<!-- AND name NOT LIKE 'oauth2_%'-->
<!-- AND name NOT LIKE 'undo_%'-->
<!-- <if test="param.tableName != null and param.tableName != ''">-->
<!-- AND lower(name) like lower(concat('%', #{param.tableName}, '%'))-->
<!-- </if>-->
<!-- <if test="param.tableComment != null and param.tableComment != ''">-->
<!-- AND lower(name) like lower(concat('%', #{param.tableComment}, '%'))-->
<!-- </if>-->
<!-- </select>-->
</mapper>
@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xiaomayi.generator.mapper.TemplateMapper">
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.xiaomayi.generator.entity.Template">
<id column="id" property="id" />
<result column="name" property="name" />
<result column="code" property="code" />
<result column="path" property="path" />
<result column="note" property="note" />
<result column="content" property="content" />
<result column="create_user" property="createUser" />
<result column="create_time" property="createTime" />
<result column="update_user" property="updateUser" />
<result column="update_time" property="updateTime" />
<result column="del_flag" property="delFlag" />
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, name, code, path, note, content, create_user, create_time, update_user, update_time, del_flag
</sql>
</mapper>