├── spring-takeaway ├── spring-takeaway-boot-ui │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ └── META-INF │ │ │ │ ├── spring-takeaway-ui │ │ │ │ ├── css │ │ │ │ │ ├── chunk-18c7c12e.f1305914.css │ │ │ │ │ ├── chunk-4ed5262f.babe2f8b.css │ │ │ │ │ ├── chunk-10dd38c8.9dddaaaa.css │ │ │ │ │ ├── chunk-5e082f56.a0e5fa91.css │ │ │ │ │ ├── chunk-16ab22d8.d50c18c6.css │ │ │ │ │ ├── chunk-265a5e86.ea2eaec3.css │ │ │ │ │ └── chunk-vendors.777c5038.css │ │ │ │ ├── favicon.ico │ │ │ │ ├── fonts │ │ │ │ │ ├── element-icons.535877f5.woff │ │ │ │ │ └── element-icons.732389de.ttf │ │ │ │ ├── index.html │ │ │ │ └── js │ │ │ │ │ ├── chunk-5e082f56.85cc6d94.js │ │ │ │ │ ├── chunk-16ab22d8.7a275b17.js │ │ │ │ │ ├── chunk-4ed5262f.01fab838.js │ │ │ │ │ ├── chunk-18c7c12e.7f1fcc6c.js │ │ │ │ │ ├── chunk-10dd38c8.aa18d112.js │ │ │ │ │ └── chunk-265a5e86.e837e6a3.js │ │ │ │ └── spring.factories │ │ │ └── java │ │ │ └── io │ │ │ └── github │ │ │ └── tanghuibo │ │ │ └── springtakeawaybootui │ │ │ └── config │ │ │ └── AutoUiConfig.java │ ├── .gitignore │ └── pom.xml ├── spring-takeaway-baseinfo │ ├── src │ │ └── main │ │ │ ├── resources │ │ │ └── META-INF │ │ │ │ ├── spring.factories │ │ │ │ └── templates │ │ │ │ └── entity.java.ftl │ │ │ └── java │ │ │ └── io │ │ │ └── github │ │ │ └── tanghuibo │ │ │ └── springtakeawaybaseinfo │ │ │ ├── config │ │ │ ├── ConstantConfig.java │ │ │ ├── AutoBaseInfoConfig.java │ │ │ └── DbType.java │ │ │ ├── entity │ │ │ ├── vo │ │ │ │ ├── TableInfo.java │ │ │ │ ├── SqlFieldInfo.java │ │ │ │ ├── ClassInfo.java │ │ │ │ ├── SpringBeanInfo.java │ │ │ │ ├── JarInfo.java │ │ │ │ └── JvmInfo.java │ │ │ ├── dto │ │ │ │ ├── JavaFieldInfo.java │ │ │ │ ├── DowmloadSwaggerapiForm.java │ │ │ │ └── JavaEntityInfo.java │ │ │ ├── GenerateJsonToJavaConfig.java │ │ │ └── GenerateMybatisConfig.java │ │ │ ├── exception │ │ │ └── SpringTakeawayException.java │ │ │ ├── service │ │ │ ├── MybatisPlusAutoGeneratorConfig.java │ │ │ ├── SpringBaseInfoService.java │ │ │ ├── DataBaseInfoService.java │ │ │ ├── SystemBaseInfoService.java │ │ │ ├── GeneratorCodeService.java │ │ │ └── impl │ │ │ │ ├── SpringBaseInfoServiceImpl.java │ │ │ │ ├── SystemBaseInfoServiceImpl.java │ │ │ │ ├── DataBaseInfoServiceImpl.java │ │ │ │ └── GeneratorCodeServiceImpl.java │ │ │ ├── controller │ │ │ ├── SpringTakeawayExceptionHandler.java │ │ │ ├── SpringBaseInfoController.java │ │ │ ├── DataBaseInfoController.java │ │ │ ├── SystemBaseInfoController.java │ │ │ ├── GeneratorCodeController.java │ │ │ └── SwaggerDocmentController.java │ │ │ └── util │ │ │ └── DbTypeUtil.java │ ├── .gitignore │ └── pom.xml ├── .gitignore ├── spring-takeaway-core │ ├── .gitignore │ ├── src │ │ └── main │ │ │ └── java │ │ │ └── io │ │ │ └── github │ │ │ └── tanghuibo │ │ │ ├── constant │ │ │ └── ConstantCommand.java │ │ │ ├── result │ │ │ ├── entity │ │ │ │ └── Result.java │ │ │ └── util │ │ │ │ └── ResultTool.java │ │ │ └── util │ │ │ ├── ClassUtil.java │ │ │ ├── DataBaseUtil.java │ │ │ ├── StringUtil.java │ │ │ └── FileUtil.java │ └── pom.xml ├── spring-takeaway-boot-starter │ ├── .gitignore │ └── pom.xml ├── pom.xml └── spring-takeaway-dependencies │ └── pom.xml ├── spring-takeaway-test-web ├── src │ └── main │ │ ├── resources │ │ ├── application.yml │ │ └── .gitignore │ │ └── java │ │ └── io │ │ └── github │ │ └── tanghuibo │ │ └── springtakeawaytestweb │ │ ├── TestController.java │ │ └── SpringTakeawayTestWebApplication.java ├── .gitignore └── pom.xml ├── .gitignore ├── pom.xml └── README.md /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-18c7c12e.f1305914.css: -------------------------------------------------------------------------------- 1 | .jvm[data-v-1d462618]{margin:30px} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-4ed5262f.babe2f8b.css: -------------------------------------------------------------------------------- 1 | .spring[data-v-85d1889a]{margin:30px} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-10dd38c8.9dddaaaa.css: -------------------------------------------------------------------------------- 1 | .database-info[data-v-1b8ea85c]{margin:30px} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | io.github.tanghuibo.springtakeawaybootui.config.AutoUiConfig -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/resources/META-INF/spring.factories: -------------------------------------------------------------------------------- 1 | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ 2 | io.github.tanghuibo.springtakeawaybaseinfo.config.AutoBaseInfoConfig -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-5e082f56.a0e5fa91.css: -------------------------------------------------------------------------------- 1 | .document-swagger[data-v-1d432172]{margin:10px}.document-swagger .iframe[data-v-1d432172]{height:calc(100vh - 100px)} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanghuibo/spring-takeaway/HEAD/spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/favicon.ico -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/fonts/element-icons.535877f5.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanghuibo/spring-takeaway/HEAD/spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/fonts/element-icons.535877f5.woff -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/fonts/element-icons.732389de.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tanghuibo/spring-takeaway/HEAD/spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/fonts/element-icons.732389de.ttf -------------------------------------------------------------------------------- /spring-takeaway-test-web/src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | spring: 2 | datasource: 3 | url: jdbc:mysql://localhost:3306/old?serverTimezone=GMT%2B8&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8 4 | username: root 5 | driver-class-name: com.mysql.jdbc.Driver 6 | profiles: 7 | active: secret 8 | server: 9 | port: 8081 -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway-test-web/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-starter/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway-test-web/src/main/resources/.gitignore: -------------------------------------------------------------------------------- 1 | application-secret.yml 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | .sts4-cache 12 | 13 | ### IntelliJ IDEA ### 14 | .idea 15 | *.iws 16 | *.iml 17 | *.ipr 18 | 19 | ### NetBeans ### 20 | /nbproject/private/ 21 | /build/ 22 | /nbbuild/ 23 | /dist/ 24 | /nbdist/ 25 | /.nb-gradle/ -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/config/ConstantConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.config; 2 | 3 | /** 4 | * @description: 常量配置信息 5 | * @author: tanghuibo aa18984850147@qq.com 6 | * @create: 2019-01-30 02:07 7 | **/ 8 | public class ConstantConfig { 9 | 10 | /** 11 | * content-path 12 | */ 13 | public static final String CONTENT_PATH = "takeaway"; 14 | } 15 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/TableInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 数据库信息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-27 16:22 9 | **/ 10 | 11 | @Data 12 | public class TableInfo { 13 | 14 | /** 15 | * 表名称 16 | */ 17 | private String tableName; 18 | 19 | 20 | /** 21 | * 备注 22 | */ 23 | private String comment; 24 | } 25 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/dto/JavaFieldInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: java字段信息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-02-06 22:59 9 | **/ 10 | @Data 11 | public class JavaFieldInfo { 12 | 13 | /** 14 | * 字段名称 15 | */ 16 | private String fieldName; 17 | 18 | /** 19 | * 字段类型 20 | */ 21 | private String fieldType; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /spring-takeaway-test-web/src/main/java/io/github/tanghuibo/springtakeawaytestweb/TestController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaytestweb; 2 | 3 | import org.springframework.web.bind.annotation.GetMapping; 4 | import org.springframework.web.bind.annotation.RestController; 5 | 6 | /** 7 | * @description: 测试controller 8 | * @author: tanghuibo aa18984850147@qq.com 9 | * @create: 2019-02-03 00:57 10 | **/ 11 | @RestController 12 | public class TestController { 13 | 14 | @GetMapping("test") 15 | public String test() { 16 | return "success"; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/exception/SpringTakeawayException.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.exception; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-02-01 01:34 9 | **/ 10 | @Data 11 | public class SpringTakeawayException extends RuntimeException { 12 | /** 13 | * 错误信息 14 | */ 15 | private String error; 16 | 17 | public SpringTakeawayException(String error) { 18 | this.error = error; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/MybatisPlusAutoGeneratorConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service; 2 | 3 | import com.baomidou.mybatisplus.generator.AutoGenerator; 4 | 5 | /** 6 | * @description: mybatis配置信息处理类 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-30 23:06 9 | **/ 10 | public interface MybatisPlusAutoGeneratorConfig { 11 | 12 | /** 13 | * 处理AutoGenerator 14 | * @param autoGenerator 15 | */ 16 | void handleAutoGenerator(AutoGenerator autoGenerator); 17 | } 18 | -------------------------------------------------------------------------------- /spring-takeaway-test-web/src/main/java/io/github/tanghuibo/springtakeawaytestweb/SpringTakeawayTestWebApplication.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaytestweb; 2 | 3 | import org.springframework.boot.SpringApplication; 4 | import org.springframework.boot.autoconfigure.SpringBootApplication; 5 | 6 | import java.io.IOException; 7 | 8 | 9 | /** 10 | * @author tanghuibo 11 | */ 12 | @SpringBootApplication 13 | public class SpringTakeawayTestWebApplication { 14 | 15 | public static void main(String[] args) { 16 | SpringApplication.run(SpringTakeawayTestWebApplication.class, args); 17 | 18 | } 19 | 20 | } 21 | 22 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/constant/ConstantCommand.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.constant; 2 | 3 | /** 4 | * @description: 命令常量 5 | * @author: tanghuibo aa18984850147@qq.com 6 | * @create: 2019-02-01 00:33 7 | **/ 8 | public class ConstantCommand { 9 | 10 | 11 | /** 12 | * 工作路径 13 | */ 14 | public static final String USER_DIR = "user.dir"; 15 | 16 | /** 17 | * 启动类位置 18 | */ 19 | public static final String MAIN_CLASS_PATH = "sun.java.command"; 20 | 21 | /** 22 | * 用户名 23 | */ 24 | public static final String USER_NAME = "user.name"; 25 | } 26 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/SqlFieldInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 数据库字段 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-29 00:03 9 | **/ 10 | @Data 11 | public class SqlFieldInfo { 12 | 13 | /** 14 | * 字段名称 15 | */ 16 | private String fieldName; 17 | 18 | /** 19 | * 备注 20 | */ 21 | private String comment; 22 | 23 | /** 24 | * 数据类型 25 | */ 26 | private String dataType; 27 | 28 | 29 | } 30 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/ClassInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: class信息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-27 02:37 9 | **/ 10 | @Data 11 | public class ClassInfo { 12 | 13 | /** 14 | * 全名称 15 | */ 16 | private String className; 17 | 18 | /** 19 | * 简单名称 20 | */ 21 | private String simpleClassName; 22 | 23 | /** 24 | * 类加载器名称 25 | */ 26 | private String classLoaderName; 27 | 28 | } 29 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/dto/DowmloadSwaggerapiForm.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 下载接口文档form表单 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-02-03 03:23 9 | **/ 10 | @Data 11 | public class DowmloadSwaggerapiForm { 12 | 13 | /** 14 | * 前端url 15 | */ 16 | private String hostUrl; 17 | 18 | /** 19 | * 语言 20 | */ 21 | private String language; 22 | 23 | /** 24 | * 文件类型 25 | */ 26 | private String fileType; 27 | } 28 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/SpringBeanInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: bean基本信息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-21 22:44 9 | **/ 10 | @Data 11 | public class SpringBeanInfo { 12 | 13 | /** 14 | * bean名称 15 | */ 16 | private String beanName; 17 | 18 | /** 19 | * bean className 20 | */ 21 | private String className; 22 | 23 | /** 24 | * bean simpleClassName 25 | */ 26 | private String simpleClassName; 27 | } 28 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/result/entity/Result.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.result.entity; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: 返回实体类 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-20 23:21 9 | **/ 10 | @Data 11 | public class Result { 12 | 13 | /** 14 | * 是否成功 15 | */ 16 | private Boolean success; 17 | 18 | /** 19 | * 数据 20 | */ 21 | private DATA data; 22 | 23 | /** 24 | * 数据 25 | */ 26 | private String message; 27 | 28 | public Result(Boolean success, String message, DATA data) { 29 | this.success = success; 30 | this.message = message; 31 | this.data = data; 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/SpringBaseInfoService.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service; 2 | 3 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SpringBeanInfo; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | /** 9 | * @description: spring基本信息service 10 | * @author: tanghuibo aa18984850147@qq.com 11 | * @create: 2019-01-21 22:38 12 | **/ 13 | public interface SpringBaseInfoService { 14 | 15 | /** 16 | * 获取bean基本信息 17 | * 18 | * @return 19 | */ 20 | List getSpringBeans(); 21 | 22 | /** 23 | * 获取配置信息 24 | * 25 | * @return 26 | */ 27 | Map getProperties(); 28 | } 29 | -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | io.github.tanghuibo 8 | spring-takeaway-all 9 | 1.0-SNAPSHOT 10 | 11 | spring-takeaway 12 | spring-takeaway-test-web 13 | 14 | 15 | pom 16 | 17 | 18 | UTF-8 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/GenerateJsonToJavaConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity; 2 | 3 | import lombok.Data; 4 | 5 | 6 | /** 7 | * @description: json转java配置信息 8 | * @author: tanghuibo aa18984850147@qq.com 9 | * @create: 2019-02-06 22:55 10 | **/ 11 | @Data 12 | public class GenerateJsonToJavaConfig { 13 | 14 | 15 | /** 16 | * 工程路径 17 | */ 18 | private String projectPath; 19 | 20 | /** 21 | * 包名前缀 22 | */ 23 | private String packageParentName; 24 | 25 | /** 26 | * 使用lombok 27 | */ 28 | private Boolean entityLombokModel; 29 | 30 | /** 31 | * 用户名 32 | */ 33 | private String author; 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/JarInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: jar包信息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-28 22:57 9 | **/ 10 | @Data 11 | public class JarInfo { 12 | 13 | 14 | 15 | /** 16 | * jar包路径 17 | */ 18 | private String jarPath; 19 | 20 | /** 21 | * jar包名称 22 | */ 23 | public String getJarName() { 24 | if(jarPath != null) { 25 | String[] split = jarPath.split("\\\\"); 26 | if(split.length > 0) { 27 | return split[split.length - 1]; 28 | } 29 | } 30 | return null; 31 | } 32 | 33 | 34 | } 35 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/java/io/github/tanghuibo/springtakeawaybootui/config/AutoUiConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybootui.config; 2 | 3 | import org.springframework.context.annotation.Configuration; 4 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 5 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 6 | 7 | /** 8 | * @description: 配置信息类 9 | * @author: tanghuibo aa18984850147@qq.com 10 | * @create: 2019-01-30 00:08 11 | **/ 12 | 13 | @Configuration 14 | public class AutoUiConfig implements WebMvcConfigurer { 15 | 16 | @Override 17 | public void addResourceHandlers(ResourceHandlerRegistry registry) { 18 | registry.addResourceHandler("/spring-takeaway-ui/**").addResourceLocations("classpath:/META-INF/spring-takeaway-ui/"); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/util/ClassUtil.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.util; 2 | 3 | import java.lang.reflect.Field; 4 | 5 | /** 6 | * @description: class工具类 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-27 02:48 9 | **/ 10 | public class ClassUtil { 11 | 12 | /** 13 | * 通过字段名获取属性 14 | * 15 | * @param obj 源 16 | * @param clazz 类 17 | * @param filedName 字段名 18 | * @return 19 | */ 20 | public static Object getPropertyByFiledName(Object obj, Class clazz, String filedName) { 21 | try { 22 | Field field = clazz.getDeclaredField(filedName); 23 | field.setAccessible(true); 24 | return field.get(obj); 25 | 26 | } catch (NoSuchFieldException e) { 27 | e.printStackTrace(); 28 | } catch (IllegalAccessException e) { 29 | e.printStackTrace(); 30 | } 31 | return null; 32 | 33 | } 34 | 35 | 36 | } 37 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/SpringTakeawayExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | 3 | import io.github.tanghuibo.result.entity.Result; 4 | import io.github.tanghuibo.result.util.ResultTool; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.exception.SpringTakeawayException; 6 | import org.springframework.web.bind.annotation.ExceptionHandler; 7 | import org.springframework.web.bind.annotation.RestControllerAdvice; 8 | 9 | /** 10 | * @description: 统一异常处理 11 | * @author: tanghuibo aa18984850147@qq.com 12 | * @create: 2019-02-01 03:20 13 | **/ 14 | @RestControllerAdvice 15 | public class SpringTakeawayExceptionHandler { 16 | 17 | /** 18 | * 处理自定义异常 19 | * @param e 20 | * @return 21 | */ 22 | @ExceptionHandler(SpringTakeawayException.class) 23 | public Result handleException(SpringTakeawayException e){ 24 | return ResultTool.fail(e.getError()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/dto/JavaEntityInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @description: java实体信息 9 | * @author: tanghuibo aa18984850147@qq.com 10 | * @create: 2019-02-06 22:58 11 | **/ 12 | @Data 13 | public class JavaEntityInfo { 14 | 15 | /** 16 | * 类名信息 17 | */ 18 | private String className; 19 | 20 | /** 21 | * 包名信息 22 | */ 23 | private String packageName; 24 | 25 | /** 26 | * 字段信息 27 | */ 28 | private List javaFieldInfoList; 29 | 30 | /** 31 | * 导入列表 32 | */ 33 | private List importList; 34 | 35 | 36 | /** 37 | * 工程路径 38 | */ 39 | private String projectPath; 40 | 41 | 42 | /** 43 | * 使用lombok 44 | */ 45 | private Boolean entityLombokModel; 46 | 47 | /** 48 | * 用户名 49 | */ 50 | private String author; 51 | 52 | 53 | } 54 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/DataBaseInfoService.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service; 2 | 3 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SqlFieldInfo; 4 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.TableInfo; 5 | 6 | import java.sql.SQLException; 7 | import java.util.List; 8 | 9 | /** 10 | * @description: 数据库基本信息service 11 | * @author: tanghuibo aa18984850147@qq.com 12 | * @create: 2019-01-27 16:23 13 | **/ 14 | public interface DataBaseInfoService { 15 | 16 | /** 17 | * 获取表格数据 18 | * @return 19 | * @throws SQLException 20 | */ 21 | List getTables() throws SQLException; 22 | 23 | /** 24 | * 获取表格字段 25 | * @param tableName 26 | * @throws SQLException 27 | * @return 28 | */ 29 | List getFields(String tableName) throws SQLException; 30 | 31 | /** 32 | * 获取支持数据库列表 33 | * @return 34 | */ 35 | List getDbDriverList(); 36 | } 37 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/result/util/ResultTool.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.result.util; 2 | 3 | import io.github.tanghuibo.result.entity.Result; 4 | 5 | import java.util.Properties; 6 | 7 | /** 8 | * @description: 返回实体类工厂 9 | * @author: tanghuibo aa18984850147@qq.com 10 | * @create: 2019-01-20 23:23 11 | **/ 12 | public class ResultTool { 13 | 14 | /** 15 | * 返回成功 16 | * 17 | * @return 18 | */ 19 | public static Result success() { 20 | 21 | return new Result(true, "", null); 22 | } 23 | 24 | /** 25 | * 返回成功 26 | * 27 | * @param data 28 | * @param 29 | * @return 30 | */ 31 | public static Result successData(DATA data) { 32 | return new Result(true, "", data); 33 | } 34 | 35 | /** 36 | * 返回失败 37 | * 38 | * @param message 39 | * @return 40 | */ 41 | public static Result fail(String message) { 42 | return new Result(false, message, null); 43 | 44 | 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/vo/JvmInfo.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @description: jvm系统消息 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-01-25 04:46 9 | **/ 10 | @Data 11 | public class JvmInfo { 12 | 13 | /** 14 | * cpu频率 15 | */ 16 | private Long cpuFrequencyInHz; 17 | 18 | /** 19 | * cpu核心数 20 | */ 21 | private Integer numCpus; 22 | 23 | /** 24 | * 空闲内存字节数 25 | */ 26 | private Long memoryFreeBytes; 27 | 28 | /** 29 | * 总内存字节数 30 | */ 31 | private Long memoryTotalBytes; 32 | 33 | /** 34 | * 系统名称 35 | */ 36 | private String osName; 37 | 38 | /** 39 | * cpu使用情况 40 | */ 41 | private Float cpuUsage; 42 | 43 | /** 44 | * 内存使用情况 45 | * 46 | * @return 47 | */ 48 | public Float getMemoryUsage() { 49 | return (float) (1 - (memoryFreeBytes * 1.0 / memoryTotalBytes)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/SystemBaseInfoService.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service; 2 | 3 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.ClassInfo; 4 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JarInfo; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JvmInfo; 6 | 7 | import java.util.List; 8 | import java.util.Map; 9 | 10 | /** 11 | * @description: 系统基本信息service 12 | * @author: tanghuibo aa18984850147@qq.com 13 | * @create: 2019-01-20 23:36 14 | **/ 15 | public interface SystemBaseInfoService { 16 | 17 | /** 18 | * 获取基础配置信息 19 | * 20 | * @return 21 | */ 22 | Map getProperties(); 23 | 24 | /** 25 | * 获取jvm运行状态 26 | * 27 | * @return 28 | */ 29 | JvmInfo getRunTimeInfo(); 30 | 31 | /** 32 | * 获取已装载到类加载器中的class信息 33 | * 34 | * @return 35 | */ 36 | List getClassByClassLoader(); 37 | 38 | /** 39 | * 获取jar包列表 40 | * @return 41 | */ 42 | List getJarList(); 43 | } 44 | -------------------------------------------------------------------------------- /spring-takeaway/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | io.github.tanghuibo 6 | spring-takeaway 7 | 0.0.2-SNAPSHOT 8 | spring-takeaway 9 | spring takeaway project 10 | 11 | 12 | git@github.com:tanghuibo/spring-takeaway.git 13 | 14 | 15 | pom 16 | 17 | 18 | 1.8 19 | UTF-8 20 | ${java.version} 21 | ${java.version} 22 | 23 | 24 | 25 | spring-takeaway-dependencies 26 | spring-takeaway-core 27 | spring-takeaway-baseinfo 28 | spring-takeaway-boot-starter 29 | spring-takeaway-boot-ui 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/config/AutoBaseInfoConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.ComponentScan; 5 | import org.springframework.context.annotation.Configuration; 6 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 7 | 8 | /** 9 | * @description: 基础信息配置 10 | * @author: tanghuibo aa18984850147@qq.com 11 | * @create: 2019-01-20 23:47 12 | **/ 13 | @Configuration 14 | @ComponentScan(value = {"io.github.tanghuibo.springtakeawaybaseinfo"}) 15 | @EnableSwagger2 16 | public class AutoBaseInfoConfig { 17 | 18 | /** 19 | * 生成freemark config 20 | * @return 21 | */ 22 | @Bean("javaCodeGeneratorConfiguration") 23 | public freemarker.template.Configuration getFreemarkerConfiguration() { 24 | freemarker.template.Configuration configuration 25 | = new freemarker.template.Configuration(freemarker.template.Configuration.VERSION_2_3_28); 26 | 27 | 28 | configuration.setClassForTemplateLoading(AutoBaseInfoConfig.class, "/META-INF/templates"); 29 | 30 | 31 | return configuration; 32 | 33 | } 34 | 35 | } 36 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/resources/META-INF/templates/entity.java.ftl: -------------------------------------------------------------------------------- 1 | package ${packageName}; 2 | 3 | import java.io.Serializable; 4 | <#list importList as import> 5 | import ${import}; 6 | 7 | <#if entityLombokModel> 8 | import lombok.Data; 9 | 10 | 11 | /** 12 | *

13 | * ${className} 14 | *

15 | * 16 | * @author ${author} 17 | * @since ${.now?string["yyyy-MM-dd HH:mm:ss"]} 18 | */ 19 | <#if entityLombokModel> 20 | @Data 21 | 22 | public class ${className} implements Serializable { 23 | 24 | private static final long serialVersionUID = 1L; 25 | <#list javaFieldInfoList as javaFieldInfo> 26 | 27 | /** 28 | * ${javaFieldInfo.fieldName} 29 | */ 30 | private ${javaFieldInfo.fieldType} ${javaFieldInfo.fieldName}; 31 | 32 | <#if !entityLombokModel> 33 | <#list javaFieldInfoList as javaFieldInfo> 34 | 35 | public ${javaFieldInfo.fieldType} get${javaFieldInfo.fieldName?cap_first}() { 36 | return this.${javaFieldInfo.fieldName}; 37 | } 38 | 39 | public void set${javaFieldInfo.fieldName?cap_first}(${javaFieldInfo.fieldType} ${javaFieldInfo.fieldName}) { 40 | this.${javaFieldInfo.fieldName} = ${javaFieldInfo.fieldName}; 41 | } 42 | 43 | 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-16ab22d8.d50c18c6.css: -------------------------------------------------------------------------------- 1 | .github-corner:hover .octo-arm[data-v-5e59eec7]{-webkit-animation:octocat-wave-data-v-5e59eec7 .56s ease-in-out;animation:octocat-wave-data-v-5e59eec7 .56s ease-in-out}@-webkit-keyframes octocat-wave-data-v-5e59eec7{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@keyframes octocat-wave-data-v-5e59eec7{0%,to{-webkit-transform:rotate(0);transform:rotate(0)}20%,60%{-webkit-transform:rotate(-25deg);transform:rotate(-25deg)}40%,80%{-webkit-transform:rotate(10deg);transform:rotate(10deg)}}@media (max-width:500px){.github-corner:hover .octo-arm[data-v-5e59eec7]{-webkit-animation:none;animation:none}.github-corner .octo-arm[data-v-5e59eec7]{-webkit-animation:octocat-wave-data-v-5e59eec7 .56s ease-in-out;animation:octocat-wave-data-v-5e59eec7 .56s ease-in-out}}.icon[data-v-347aab32]{width:28px;height:28px;line-height:28px;position:absolute}.home .home-main[data-v-347aab32]{padding:32px;position:relative}.home .home-main .git_cat[data-v-347aab32]{position:absolute;top:0;border:0;right:0}.baseinfo[data-v-347aab32]{background-color:#eee}.baseinfo .el-form-item--mini.el-form-item[data-v-347aab32]{margin-bottom:5px} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/GeneratorCodeService.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service; 2 | 3 | import freemarker.template.TemplateException; 4 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateJsonToJavaConfig; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateMybatisConfig; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.dto.JavaEntityInfo; 7 | 8 | import java.io.IOException; 9 | import java.util.List; 10 | 11 | /** 12 | * @description: 13 | * @author: tanghuibo aa18984850147@qq.com 14 | * @create: 2019-01-30 23:06 15 | **/ 16 | public interface GeneratorCodeService { 17 | 18 | /** 19 | * 生成mybatis代码 20 | * @param generateMybatisConfig 21 | */ 22 | void generatorMybatisCode(GenerateMybatisConfig generateMybatisConfig); 23 | 24 | /** 25 | * 获取mybatis代码生成器默认参数 26 | * @return 27 | */ 28 | GenerateMybatisConfig getDefaultGenerateMybatisConfig(); 29 | 30 | /** 31 | * 获取json转java默认配置信息 32 | * @return 33 | */ 34 | GenerateJsonToJavaConfig getDefaultGenerateJsonToJavaConfig(); 35 | 36 | /** 37 | * json转java代码 38 | * @param javaEntityInfoList 39 | */ 40 | void generatoJsonToJavaCode(List javaEntityInfoList); 41 | } 42 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/index.html: -------------------------------------------------------------------------------- 1 | spring-takeaway-ui
-------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/util/DataBaseUtil.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.util; 2 | 3 | import java.sql.ResultSet; 4 | import java.sql.ResultSetMetaData; 5 | import java.sql.SQLException; 6 | import java.util.ArrayList; 7 | import java.util.HashMap; 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | /** 12 | * @description: 数据库工具 13 | * @author: tanghuibo aa18984850147@qq.com 14 | * @create: 2019-01-27 16:56 15 | **/ 16 | public class DataBaseUtil { 17 | 18 | /** 19 | * 数据库resultSet转map 20 | * 21 | * @param resultSet 22 | * @return 23 | * @throws SQLException 24 | */ 25 | public static List> resultSetToListMap(ResultSet resultSet) throws SQLException { 26 | 27 | List> list = new ArrayList>(resultSet.getRow()); 28 | 29 | ResultSetMetaData metaData = resultSet.getMetaData(); 30 | int columnCount = metaData.getColumnCount(); 31 | while (resultSet.next()) { 32 | 33 | Map map = new HashMap(columnCount); 34 | for (int i = 1; i <= columnCount; i++) { 35 | map.put(StringUtil.underlineToCamel(metaData.getColumnName(i)), resultSet.getObject(i)); 36 | } 37 | list.add(map); 38 | 39 | 40 | } 41 | 42 | return list; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/util/DbTypeUtil.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.util; 2 | 3 | import io.github.tanghuibo.springtakeawaybaseinfo.config.DbType; 4 | 5 | /** 6 | * @description: 数据库类型工具 7 | * @author: tanghuibo aa18984850147@qq.com 8 | * @create: 2019-02-01 01:21 9 | **/ 10 | public class DbTypeUtil { 11 | 12 | /** 13 | * 通过驱动器名称查询数据库类型 14 | * 15 | * @param driverName 16 | * @param connectionClassName 17 | * @return 18 | */ 19 | public static DbType getDbTypeByDriverClassName(String driverName, String connectionClassName) { 20 | DbType[] dbTypes = DbType.values(); 21 | connectionClassName = connectionClassName.toUpperCase(); 22 | for (DbType dbType: dbTypes) { 23 | if(dbType.getDriverList().contains(driverName)) { 24 | return dbType; 25 | } 26 | 27 | if(connectionClassName.contains(dbType.getDesc())) { 28 | return dbType; 29 | } 30 | 31 | } 32 | return null; 33 | } 34 | 35 | DbType getDbTypeByDesc(String desc) { 36 | DbType[] dbTypes = DbType.values(); 37 | for (DbType dbType: dbTypes) { 38 | if(dbType.getDriverList().equals(desc)) { 39 | return dbType; 40 | } 41 | 42 | } 43 | return null; 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/entity/GenerateMybatisConfig.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.entity; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | /** 8 | * @description: 自动生成代码配置 9 | * @author: tanghuibo aa18984850147@qq.com 10 | * @create: 2019-01-30 23:05 11 | **/ 12 | @Data 13 | public class GenerateMybatisConfig { 14 | 15 | /** 16 | * 表格名称 17 | */ 18 | private List tableNames; 19 | 20 | /** 21 | * 用户名 22 | */ 23 | private String url; 24 | 25 | /** 26 | * 密码 27 | */ 28 | private String password; 29 | 30 | /** 31 | * 用户名 32 | */ 33 | private String author; 34 | 35 | /** 36 | * 工程路径 37 | */ 38 | private String projectPath; 39 | 40 | /** 41 | * 数据库驱动 42 | */ 43 | private String jdbcDrive; 44 | 45 | /** 46 | * 数据库用户名 47 | */ 48 | private String userName; 49 | 50 | /** 51 | * 包名前缀 52 | */ 53 | private String packageParentName; 54 | 55 | /** 56 | * 使用lombok 57 | */ 58 | private Boolean entityLombokModel; 59 | 60 | /** 61 | * 是否覆盖文件 62 | */ 63 | private Boolean fileOverride; 64 | 65 | /** 66 | * 表前缀 67 | */ 68 | private String tablePrefix; 69 | 70 | /** 71 | * 字段前缀 72 | */ 73 | private String fieldPrefix; 74 | } 75 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | io.github.tanghuibo 7 | spring-takeaway-boot-ui 8 | ${parent.version} 9 | 10 | 11 | io.github.tanghuibo 12 | spring-takeaway-dependencies 13 | 0.0.2-SNAPSHOT 14 | ../spring-takeaway-dependencies 15 | 16 | 17 | spring-takeaway-boot-ui 18 | spring takeaway ui 19 | 20 | 21 | 22 | 23 | 1.8 24 | UTF-8 25 | ${java.version} 26 | ${java.version} 27 | 28 | 29 | 30 | 31 | org.springframework.boot 32 | spring-boot-starter-web 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | io.github.tanghuibo 8 | spring-takeaway-core 9 | ${parent.version} 10 | 11 | 12 | io.github.tanghuibo 13 | spring-takeaway-dependencies 14 | 0.0.2-SNAPSHOT 15 | ../spring-takeaway-dependencies 16 | 17 | 18 | spring-takeaway-core 19 | spring takeaway core 20 | https://github.com/tanghuibo/spring-takeaway 21 | 22 | 23 | 1.8 24 | UTF-8 25 | ${java.version} 26 | ${java.version} 27 | 28 | 29 | 30 | 31 | org.projectlombok 32 | lombok 33 | provided 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-starter/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | io.github.tanghuibo 8 | spring-takeaway-boot-starter 9 | ${parent.version} 10 | 11 | 12 | io.github.tanghuibo 13 | spring-takeaway-dependencies 14 | 0.0.2-SNAPSHOT 15 | ../spring-takeaway-dependencies 16 | 17 | 18 | spring-takeaway-boot-starter 19 | spring takeaway boot starter 20 | 21 | 22 | 1.8 23 | UTF-8 24 | ${java.version} 25 | ${java.version} 26 | 27 | 28 | 29 | 30 | io.github.tanghuibo 31 | spring-takeaway-baseinfo 32 | ${parent.version} 33 | 34 | 35 | 36 | io.github.tanghuibo 37 | spring-takeaway-boot-ui 38 | ${parent.version} 39 | 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-265a5e86.ea2eaec3.css: -------------------------------------------------------------------------------- 1 | .cm-s-base16-dark.CodeMirror{background:#151515;color:#e0e0e0}.cm-s-base16-dark div.CodeMirror-selected{background:#303030}.cm-s-base16-dark .CodeMirror-line::selection,.cm-s-base16-dark .CodeMirror-line>span::selection,.cm-s-base16-dark .CodeMirror-line>span>span::selection{background:rgba(48,48,48,.99)}.cm-s-base16-dark .CodeMirror-line::-moz-selection,.cm-s-base16-dark .CodeMirror-line>span::-moz-selection,.cm-s-base16-dark .CodeMirror-line>span>span::-moz-selection{background:rgba(48,48,48,.99)}.cm-s-base16-dark .CodeMirror-gutters{background:#151515;border-right:0}.cm-s-base16-dark .CodeMirror-guttermarker{color:#ac4142}.cm-s-base16-dark .CodeMirror-guttermarker-subtle,.cm-s-base16-dark .CodeMirror-linenumber{color:#505050}.cm-s-base16-dark .CodeMirror-cursor{border-left:1px solid #b0b0b0}.cm-s-base16-dark span.cm-comment{color:#8f5536}.cm-s-base16-dark span.cm-atom,.cm-s-base16-dark span.cm-number{color:#aa759f}.cm-s-base16-dark span.cm-attribute,.cm-s-base16-dark span.cm-property{color:#90a959}.cm-s-base16-dark span.cm-keyword{color:#ac4142}.cm-s-base16-dark span.cm-string{color:#f4bf75}.cm-s-base16-dark span.cm-variable{color:#90a959}.cm-s-base16-dark span.cm-variable-2{color:#6a9fb5}.cm-s-base16-dark span.cm-def{color:#d28445}.cm-s-base16-dark span.cm-bracket{color:#e0e0e0}.cm-s-base16-dark span.cm-tag{color:#ac4142}.cm-s-base16-dark span.cm-link{color:#aa759f}.cm-s-base16-dark span.cm-error{background:#ac4142;color:#b0b0b0}.cm-s-base16-dark .CodeMirror-activeline-background{background:#202020}.cm-s-base16-dark .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.json-to-java{margin:20px;height:calc(100% - 100px)}.json-to-java .vue-codemirror{height:100%;border:1px solid #000}.json-to-java .vue-codemirror .CodeMirror{height:100%}.json-to-java .submit-button{margin-top:20px;text-align:center} -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | ### 项目说明 3 | 4 | 此项目基于springboot做周边组件监控和代码自动生成 5 | 6 | > 目前完成功能: 7 | + 获取jvm配置信息 8 | + 获取已加载的jar包 9 | + 获取已加载的class (非bootstrap classload加载) 10 | + spring配置信息 11 | + spring容器中的实例对象 12 | + 数据库基本信息查看 13 | + 通过数据库实体信息生成mybatis plus代码 14 | + 生成接口文档 15 | + 通过json生成java实体类 16 | 17 | ### 启动方式 18 | > 添加pom信息到pom.xml中 19 | ```xml 20 | 21 | io.github.tanghuibo 22 | spring-takeaway-boot-starter 23 | 0.0.2-SNAPSHOT 24 | 25 | 26 | 27 | 28 | oss 29 | https://oss.sonatype.org/content/repositories/snapshots 30 | 31 | true 32 | 33 | 34 | 35 | 36 | ``` 37 | > 启动项目 38 | ---------- 39 | 访问 http://127.0.0.1:{port}/{content-path}/spring-takeaway/index.html即可开始使用
40 | 示例 http://127.0.0.1:8081/spring-takeaway-ui/index.html 41 | 42 | ### 首页展示 43 | 44 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/%E9%A6%96%E9%A1%B5.jpg) 45 | 46 | ### SPRING信息展示 47 | 48 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/spring%E4%BF%A1%E6%81%AF%E9%A1%B5.jpg) 49 | 50 | ### JVM基础信息展示 51 | 52 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/jvm%E4%BF%A1%E6%81%AF%E9%A1%B5.jpg) 53 | 54 | 55 | ### 数据库信息展示 56 | 57 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/%E6%95%B0%E6%8D%AE%E5%BA%93%E9%A1%B5%E9%9D%A2.jpg) 58 | 59 | ### 接口文档信息页展示 60 | 61 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3%E4%BF%A1%E6%81%AF%E9%A1%B5.jpg) 62 | 63 | ### JSON转java实体信息页展示 64 | 65 | ![cmd-markdown-logo](https://raw.githubusercontent.com/tanghuibo/spring-takeaway-ui/master/screenshot/json%E8%BD%ACjava%E4%BF%A1%E6%81%AF%E9%A1%B5.jpg) 66 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/SpringBaseInfoController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | 3 | import io.github.tanghuibo.result.entity.Result; 4 | import io.github.tanghuibo.result.util.ResultTool; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.config.ConstantConfig; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SpringBeanInfo; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.service.SpringBaseInfoService; 8 | import org.springframework.context.annotation.Lazy; 9 | import org.springframework.web.bind.annotation.GetMapping; 10 | import org.springframework.web.bind.annotation.RequestMapping; 11 | import org.springframework.web.bind.annotation.RestController; 12 | import springfox.documentation.annotations.ApiIgnore; 13 | 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | /** 18 | * @description: spring基本信息controller 19 | * @author: tanghuibo aa18984850147@qq.com 20 | * @create: 2019-01-21 22:37 21 | **/ 22 | @RestController 23 | @RequestMapping(ConstantConfig.CONTENT_PATH + "/spring") 24 | @Lazy 25 | @ApiIgnore 26 | public class SpringBaseInfoController { 27 | 28 | SpringBaseInfoService springBaseInfoService; 29 | 30 | public SpringBaseInfoController(@Lazy SpringBaseInfoService springBaseInfoService) { 31 | this.springBaseInfoService = springBaseInfoService; 32 | } 33 | 34 | /** 35 | * 获取容器中bean的信息 36 | * 37 | * @return 38 | */ 39 | @GetMapping("spring-beans") 40 | public Result> getBeans() { 41 | List beans = springBaseInfoService.getSpringBeans(); 42 | return ResultTool.successData(beans); 43 | } 44 | 45 | /** 46 | * 获取spring配置文件信息 47 | * 48 | * @return 49 | */ 50 | @GetMapping("spring-properties") 51 | public Result> getProperties() { 52 | Map map = springBaseInfoService.getProperties(); 53 | return ResultTool.successData(map); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/config/DbType.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.config; 2 | 3 | import com.baomidou.mybatisplus.generator.config.IDbQuery; 4 | import com.baomidou.mybatisplus.generator.config.querys.*; 5 | 6 | import java.util.ArrayList; 7 | import java.util.Arrays; 8 | import java.util.List; 9 | 10 | /** 11 | * @description:数据库类型 12 | * @author: tanghuibo aa18984850147@qq.com 13 | * @create: 2019-01-30 23:07 14 | **/ 15 | public enum DbType { 16 | 17 | /** 18 | * mysql数据量 19 | */ 20 | Mysql(Arrays.asList("com.mysql.jdbc.Driver"), new MySqlQuery(), "MySql"), 21 | /** 22 | * oracle数据库 23 | */ 24 | Oracle(Arrays.asList("oracle.jdbc.OracleDriver"), new OracleQuery(), "Oracle"), 25 | 26 | /** 27 | * db2数据库 28 | */ 29 | DB2(Arrays.asList("com.ibm.db2.jcc.DB2Driver"), new DB2Query(), "DB2"), 30 | 31 | /** 32 | * postgre数据库 33 | */ 34 | PostgreSql(Arrays.asList("org.postgresql.Driver"), new PostgreSqlQuery(), "Postgre"), 35 | 36 | /** 37 | * MariaDB数据库 38 | */ 39 | Mariadb(Arrays.asList("org.mariadb.jdbc.Driver"), new MariadbQuery(), "MariaDB"), 40 | 41 | /** 42 | * sqlserver数据库 43 | */ 44 | SqlServer(Arrays.asList("com.microsoft.sqlserver.jdbc.SQLServerDriver"), new SqlServerQuery(), "SQLServer"); 45 | 46 | /** 47 | * 驱动列表 48 | */ 49 | private final List driverList; 50 | 51 | /** 52 | * 查询适配器 53 | */ 54 | private final IDbQuery iDbQuery; 55 | 56 | /** 57 | * 描述 58 | */ 59 | private final String desc; 60 | 61 | private DbType(List driverList, IDbQuery iDbQuery, String desc) { 62 | this.driverList = driverList; 63 | this.iDbQuery = iDbQuery; 64 | this.desc = desc; 65 | } 66 | 67 | public List getDriverList() { 68 | return driverList; 69 | } 70 | 71 | public IDbQuery getiDbQuery() { 72 | return iDbQuery; 73 | } 74 | 75 | public String getDesc() { 76 | return desc; 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/util/StringUtil.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.util; 2 | 3 | import java.util.regex.Matcher; 4 | import java.util.regex.Pattern; 5 | 6 | /** 7 | * @description: 字符串工具类 8 | * @author: tanghuibo aa18984850147@qq.com 9 | * @create: 2019-01-27 17:25 10 | **/ 11 | public class StringUtil { 12 | 13 | public static final char UNDERLINE = '_'; 14 | 15 | /** 16 | * 驼峰格式字符串转换为下划线格式字符串 17 | * 18 | * @param param 19 | * @return 20 | */ 21 | public static String camelToUnderline(String param) { 22 | if (param == null ) { 23 | return ""; 24 | } 25 | int len = param.length(); 26 | StringBuilder sb = new StringBuilder(len); 27 | for (int i = 0; i < len; i++) { 28 | char c = param.charAt(i); 29 | if (Character.isUpperCase(c)) { 30 | sb.append(UNDERLINE); 31 | sb.append(Character.toLowerCase(c)); 32 | } else { 33 | sb.append(c); 34 | } 35 | } 36 | return sb.toString(); 37 | } 38 | 39 | /** 40 | * 下划线格式字符串转换为驼峰格式字符串 41 | * 42 | * @param param 43 | * @return 44 | */ 45 | public static String underlineToCamel(String param) { 46 | if (param == null) { 47 | return ""; 48 | } 49 | param = param.toLowerCase(); 50 | int len = param.length(); 51 | StringBuilder sb = new StringBuilder(len); 52 | for (int i = 0; i < len; i++) { 53 | char c = param.charAt(i); 54 | if (c == UNDERLINE) { 55 | if (++i < len) { 56 | sb.append(Character.toUpperCase(param.charAt(i))); 57 | } 58 | } else { 59 | sb.append(c); 60 | } 61 | } 62 | return sb.toString(); 63 | } 64 | 65 | /** 66 | * 对象转字符串 67 | * @param objcet 68 | * @return 69 | */ 70 | public static String toString(Object objcet) { 71 | 72 | return objcet == null ? null : objcet.toString(); 73 | 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /spring-takeaway-test-web/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | org.springframework.boot 7 | spring-boot-starter-parent 8 | 2.1.2.RELEASE 9 | 10 | 11 | io.github.tanghuibo 12 | spring-takeaway-test-web 13 | 0.0.1-SNAPSHOT 14 | spring-takeaway-test-web 15 | Demo project for Spring Boot 16 | 17 | 18 | 1.8 19 | UTF-8 20 | 21 | 22 | 23 | 24 | org.springframework.boot 25 | spring-boot-starter-web 26 | 27 | 28 | org.mybatis.spring.boot 29 | mybatis-spring-boot-starter 30 | 1.3.2 31 | 32 | 33 | 34 | mysql 35 | mysql-connector-java 36 | runtime 37 | 38 | 39 | io.github.tanghuibo 40 | spring-takeaway-boot-starter 41 | 0.0.2-SNAPSHOT 42 | 43 | 44 | org.projectlombok 45 | lombok 46 | 1.18.4 47 | compile 48 | 49 | 50 | 51 | 52 | 53 | 54 | org.springframework.boot 55 | spring-boot-maven-plugin 56 | 57 | 58 | 59 | 60 | 61 | 62 | oss 63 | https://oss.sonatype.org/content/repositories/snapshots 64 | 65 | true 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/js/chunk-5e082f56.85cc6d94.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5e082f56"],{"463d":function(e,t,o){"use strict";var a=o("d1ec"),n=o.n(a);n.a},9072:function(e,t,o){"use strict";o.r(t);var a=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"document-swagger"},[o("el-form",{attrs:{model:e.dowmloadApiForm,inline:!0}},[o("el-form-item",{attrs:{label:"语言"}},[o("el-select",{attrs:{placeholder:""},model:{value:e.dowmloadApiForm.language,callback:function(t){e.$set(e.dowmloadApiForm,"language",t)},expression:"dowmloadApiForm.language"}},e._l(e.languages,(function(e){return o("el-option",{key:e.code,attrs:{value:e.code,label:e.name}})})),1)],1),o("el-form-item",{attrs:{label:"文档格式"}},[o("el-select",{attrs:{placeholder:""},model:{value:e.dowmloadApiForm.fileType,callback:function(t){e.$set(e.dowmloadApiForm,"fileType",t)},expression:"dowmloadApiForm.fileType"}},e._l(e.fileTypes,(function(e){return o("el-option",{key:e,attrs:{value:e,label:e}})})),1)],1),o("el-button",{attrs:{type:"primary"},on:{click:e.downloadApi}},[e._v("下载接口文档")])],1),o("iframe",{staticClass:"iframe",attrs:{src:"../swagger-ui.html",width:"100%"}})],1)},n=[],l=(o("96cf"),o("3b8d")),r=o("b775"),i={downloadSpringApi:function(e){return r["a"].post("/swagger-docment/download",e)}},d={data:function(){return{languages:[{code:"ZH",name:"中文"},{code:"EN",name:"English"}],fileTypes:["md","adoc","txt"],dowmloadApiForm:{language:"ZH",fileType:"md",hostUrl:null}}},methods:{downloadApi:function(){var e=Object(l["a"])(regeneratorRuntime.mark((function e(){var t,o,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.dowmloadApiForm.hostUrl=window.location.href.substring(0,window.location.href.indexOf("/spring-takeaway-ui")),e.next=3,i.downloadSpringApi(this.dowmloadApiForm);case 3:t=e.sent,o=window.URL.createObjectURL(new Blob([t])),a=document.createElement("a"),a.style.display="none",a.href=o,a.setAttribute("download","swagger-api.".concat(this.dowmloadApiForm.fileType)),document.body.appendChild(a),a.click();case 11:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}},s=d,c=(o("463d"),o("2877")),u=Object(c["a"])(s,a,n,!1,null,"1d432172",null);t["default"]=u.exports},d1ec:function(e,t,o){}}]); -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/DataBaseInfoController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | 3 | import io.github.tanghuibo.result.entity.Result; 4 | import io.github.tanghuibo.result.util.ResultTool; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.config.ConstantConfig; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SqlFieldInfo; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.TableInfo; 8 | import io.github.tanghuibo.springtakeawaybaseinfo.service.DataBaseInfoService; 9 | import org.springframework.context.annotation.Lazy; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.bind.annotation.RestController; 13 | import springfox.documentation.annotations.ApiIgnore; 14 | 15 | import java.sql.SQLException; 16 | import java.util.List; 17 | 18 | /** 19 | * @description: 数据库基本信息controller 20 | * @author: tanghuibo aa18984850147@qq.com 21 | * @create: 2019-01-21 22:37 22 | **/ 23 | @RestController 24 | @RequestMapping(ConstantConfig.CONTENT_PATH + "/database") 25 | @Lazy 26 | @ApiIgnore 27 | public class DataBaseInfoController { 28 | 29 | DataBaseInfoService dataBaseInfoService; 30 | 31 | public DataBaseInfoController(@Lazy DataBaseInfoService dataBaseInfoService) { 32 | this.dataBaseInfoService = dataBaseInfoService; 33 | } 34 | 35 | /** 36 | * 获取数据库中所有表格信息 37 | * 38 | * @return 39 | */ 40 | @GetMapping("tables") 41 | public Result> getTables() throws SQLException { 42 | List beans = dataBaseInfoService.getTables(); 43 | return ResultTool.successData(beans); 44 | } 45 | 46 | /** 47 | * 获取数据库中表格字段信息 48 | * @param tableName 表格名称 49 | * @return 50 | */ 51 | @GetMapping("fields") 52 | public Result> getFields(String tableName) throws SQLException { 53 | List beans = dataBaseInfoService.getFields(tableName); 54 | return ResultTool.successData(beans); 55 | } 56 | 57 | /** 58 | * 获取数据库支持的数据库类型列表 59 | * 60 | * @return 61 | */ 62 | @GetMapping("driver-list") 63 | public Result> getDbDriverList() throws SQLException { 64 | List dbTypeList = dataBaseInfoService.getDbDriverList(); 65 | return ResultTool.successData(dbTypeList); 66 | } 67 | 68 | } 69 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | io.github.tanghuibo 6 | spring-takeaway-baseinfo 7 | ${parent.version} 8 | spring-takeaway-baseinfo 9 | spring takeaway baseinfo 10 | 11 | 12 | io.github.tanghuibo 13 | spring-takeaway-dependencies 14 | 0.0.2-SNAPSHOT 15 | ../spring-takeaway-dependencies 16 | 17 | 18 | 19 | 20 | 21 | UTF-8 22 | ${java.version} 23 | ${java.version} 24 | 25 | 26 | 27 | 28 | 29 | org.projectlombok 30 | lombok 31 | provided 32 | 33 | 34 | 35 | com.alibaba 36 | fastjson 37 | 38 | 39 | 40 | io.github.tanghuibo 41 | spring-takeaway-core 42 | ${parent.version} 43 | 44 | 45 | 46 | org.springframework.boot 47 | spring-boot-starter-web 48 | 49 | 50 | 51 | 52 | org.freemarker 53 | freemarker 54 | 55 | 56 | 57 | com.baomidou 58 | mybatis-plus-generator 59 | 60 | 61 | 62 | io.springfox 63 | springfox-swagger2 64 | 65 | 66 | io.springfox 67 | springfox-swagger-ui 68 | 69 | 70 | 71 | io.github.swagger2markup 72 | swagger2markup 73 | 74 | 75 | 76 | org.pegdown 77 | pegdown 78 | 79 | 80 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/SystemBaseInfoController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | import io.github.tanghuibo.result.entity.Result; 3 | import io.github.tanghuibo.result.util.ResultTool; 4 | import io.github.tanghuibo.springtakeawaybaseinfo.config.ConstantConfig; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.ClassInfo; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JarInfo; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JvmInfo; 8 | import io.github.tanghuibo.springtakeawaybaseinfo.service.SystemBaseInfoService; 9 | import org.springframework.context.annotation.Lazy; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.RequestMapping; 12 | import org.springframework.web.bind.annotation.RestController; 13 | import springfox.documentation.annotations.ApiIgnore; 14 | 15 | import java.util.List; 16 | import java.util.Map; 17 | 18 | /** 19 | * @description: 系统基本信息controller 20 | * @author: tanghuibo aa18984850147@qq.com 21 | * @create: 2019-01-20 23:35 22 | **/ 23 | @RestController 24 | @RequestMapping(ConstantConfig.CONTENT_PATH + "/jvm") 25 | @Lazy 26 | @ApiIgnore 27 | public class SystemBaseInfoController { 28 | 29 | 30 | SystemBaseInfoService systemBaseInfoService; 31 | 32 | public SystemBaseInfoController(@Lazy SystemBaseInfoService systemBaseInfoService) { 33 | this.systemBaseInfoService = systemBaseInfoService; 34 | 35 | } 36 | 37 | /** 38 | * 获取系统配置信息 39 | * @return 40 | */ 41 | @GetMapping("runtime-info") 42 | public Result getRunTimeInfo() { 43 | JvmInfo jVMInfo = systemBaseInfoService.getRunTimeInfo(); 44 | return ResultTool.successData(jVMInfo); 45 | } 46 | 47 | /** 48 | * 获取系统配置信息 49 | * @return 50 | */ 51 | @GetMapping("jvm-properties") 52 | public Result getProperties() { 53 | Map result = systemBaseInfoService.getProperties(); 54 | return ResultTool.successData(result); 55 | } 56 | 57 | /** 58 | * 获取系统配置信息 59 | * @return 60 | */ 61 | @GetMapping("classloader-class") 62 | public Result getClassByClassLoader() { 63 | List classInfos = systemBaseInfoService.getClassByClassLoader(); 64 | return ResultTool.successData(classInfos); 65 | } 66 | 67 | /** 68 | * 获取系统配置信息 69 | * @return 70 | */ 71 | @GetMapping("jarList") 72 | public Result getJarList() { 73 | List jarInfos = systemBaseInfoService.getJarList(); 74 | return ResultTool.successData(jarInfos); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/GeneratorCodeController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | 3 | import io.github.tanghuibo.result.entity.Result; 4 | import io.github.tanghuibo.result.util.ResultTool; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.config.ConstantConfig; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateJsonToJavaConfig; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateMybatisConfig; 8 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.dto.JavaEntityInfo; 9 | import io.github.tanghuibo.springtakeawaybaseinfo.service.GeneratorCodeService; 10 | import org.springframework.context.annotation.Lazy; 11 | import org.springframework.web.bind.annotation.*; 12 | import springfox.documentation.annotations.ApiIgnore; 13 | import java.util.List; 14 | 15 | /** 16 | * @description: mybatis代码自动生成controller 17 | * @author: tanghuibo aa18984850147@qq.com 18 | * @create: 2019-01-30 23:03 19 | **/ 20 | @RestController 21 | @RequestMapping(ConstantConfig.CONTENT_PATH + "/generator") 22 | @ApiIgnore 23 | public class GeneratorCodeController { 24 | 25 | private GeneratorCodeService generatorCodeService; 26 | 27 | public GeneratorCodeController(@Lazy GeneratorCodeService generatorCodeService) { 28 | this.generatorCodeService = generatorCodeService; 29 | } 30 | 31 | /** 32 | * 获取默认配置信息 33 | * @return 34 | */ 35 | @GetMapping("default-generate-mybatis-config") 36 | public Result getDefaultGenerateMybatisConfig() { 37 | GenerateMybatisConfig generateMybatisConfig = generatorCodeService.getDefaultGenerateMybatisConfig(); 38 | return ResultTool.successData(generateMybatisConfig); 39 | } 40 | 41 | /** 42 | * 获取默认配置信息 43 | * @return 44 | */ 45 | @GetMapping("default-generate-json-to-java-config") 46 | public Result getDefaultGenerateJsonToJavaConfig() { 47 | GenerateJsonToJavaConfig generateJsonToJavaConfig = generatorCodeService.getDefaultGenerateJsonToJavaConfig(); 48 | return ResultTool.successData(generateJsonToJavaConfig); 49 | } 50 | 51 | /** 52 | * 生成mybatis代码 53 | * @param generateMybatisConfig 54 | * @return 55 | */ 56 | @PostMapping("mybatis-code") 57 | public Result generatorMybatisCode(@RequestBody GenerateMybatisConfig generateMybatisConfig) { 58 | generatorCodeService.generatorMybatisCode(generateMybatisConfig); 59 | return ResultTool.success(); 60 | } 61 | 62 | /** 63 | * 生成java代码 64 | * @param javaEntityInfoList 65 | * @return 66 | */ 67 | @PostMapping("generate-json-to-java") 68 | public Result generatoJsonToJavaCode(@RequestBody List javaEntityInfoList) { 69 | generatorCodeService.generatoJsonToJavaCode(javaEntityInfoList); 70 | return ResultTool.success(); 71 | } 72 | 73 | 74 | } 75 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/impl/SpringBaseInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service.impl; 2 | 3 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SpringBeanInfo; 4 | import io.github.tanghuibo.springtakeawaybaseinfo.service.SpringBaseInfoService; 5 | import org.springframework.beans.factory.annotation.Autowired; 6 | import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; 7 | import org.springframework.context.annotation.Lazy; 8 | import org.springframework.core.env.*; 9 | import org.springframework.stereotype.Service; 10 | 11 | import java.util.*; 12 | 13 | /** 14 | * @description: spring基本信息service 15 | * @author: tanghuibo aa18984850147@qq.com 16 | * @create: 2019-01-21 22:39 17 | **/ 18 | @Service("springBaseInfoService") 19 | @Lazy 20 | public class SpringBaseInfoServiceImpl implements SpringBaseInfoService { 21 | 22 | private ConfigurableListableBeanFactory beanFactory; 23 | 24 | private StandardEnvironment environment; 25 | 26 | public SpringBaseInfoServiceImpl(StandardEnvironment standardEnvironment,@Autowired(required = false) ConfigurableListableBeanFactory beanFactory) { 27 | this.environment = standardEnvironment; 28 | this.beanFactory = beanFactory; 29 | } 30 | 31 | @Override 32 | public List getSpringBeans() { 33 | Iterator beanNamesIterator = beanFactory.getBeanNamesIterator(); 34 | List list = new ArrayList<>(50); 35 | while (beanNamesIterator.hasNext()) { 36 | String beanName = beanNamesIterator.next(); 37 | Object data = beanFactory.getBean(beanName); 38 | Class beanClass = data.getClass(); 39 | SpringBeanInfo springBeanInfo = new SpringBeanInfo(); 40 | springBeanInfo.setBeanName(beanName); 41 | springBeanInfo.setClassName(beanClass.getName()); 42 | springBeanInfo.setSimpleClassName(beanClass.getSimpleName()); 43 | list.add(springBeanInfo); 44 | } 45 | return list; 46 | } 47 | 48 | @Override 49 | public Map getProperties() { 50 | Map result = new HashMap<>(32); 51 | MutablePropertySources propertySources = environment.getPropertySources(); 52 | Iterator> iterator = propertySources.iterator(); 53 | 54 | while (iterator.hasNext()) { 55 | PropertySource next = iterator.next(); 56 | Object source = next.getSource(); 57 | if (source instanceof Map) { 58 | Map map = (Map) source; 59 | Set keySet = map.keySet(); 60 | for (String key : keySet) { 61 | Object value = map.get(key); 62 | result.put(key, value.toString()); 63 | } 64 | } 65 | } 66 | Set keys = System.getProperties().stringPropertyNames(); 67 | for (String key: keys) { 68 | result.remove(key); 69 | } 70 | return result; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/controller/SwaggerDocmentController.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.controller; 2 | 3 | import io.github.swagger2markup.GroupBy; 4 | import io.github.swagger2markup.Language; 5 | import io.github.swagger2markup.Swagger2MarkupConfig; 6 | import io.github.swagger2markup.Swagger2MarkupConverter; 7 | import io.github.swagger2markup.builder.Swagger2MarkupConfigBuilder; 8 | import io.github.swagger2markup.markup.builder.MarkupLanguage; 9 | import io.github.tanghuibo.result.entity.Result; 10 | import io.github.tanghuibo.result.util.ResultTool; 11 | import io.github.tanghuibo.springtakeawaybaseinfo.config.ConstantConfig; 12 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.dto.DowmloadSwaggerapiForm; 13 | import org.springframework.context.annotation.Lazy; 14 | import org.springframework.web.bind.annotation.*; 15 | import springfox.documentation.annotations.ApiIgnore; 16 | import springfox.documentation.swagger2.web.Swagger2Controller; 17 | 18 | import javax.servlet.http.HttpServletResponse; 19 | import java.io.IOException; 20 | import java.net.URL; 21 | 22 | /** 23 | * @description: swagger文档controller 24 | * @author: tanghuibo aa18984850147@qq.com 25 | * @create: 2019-02-03 01:50 26 | **/ 27 | @RestController 28 | @RequestMapping(ConstantConfig.CONTENT_PATH + "/swagger-docment") 29 | @Lazy 30 | @ApiIgnore 31 | public class SwaggerDocmentController { 32 | 33 | @PostMapping("download") 34 | public Result dowmloadSwaggerapi(@RequestBody DowmloadSwaggerapiForm dowmloadSwaggerapiForm, HttpServletResponse response) throws IOException { 35 | String fileName = "swagger-api" + "." + dowmloadSwaggerapiForm.getFileType(); 36 | // 输出Ascii到单文件 37 | MarkupLanguage markupLanguage = null; 38 | switch (dowmloadSwaggerapiForm.getFileType()) { 39 | case "md": 40 | markupLanguage = MarkupLanguage.MARKDOWN; 41 | break; 42 | case "adoc": 43 | markupLanguage = MarkupLanguage.ASCIIDOC; 44 | break; 45 | case "txt": 46 | markupLanguage = MarkupLanguage.CONFLUENCE_MARKUP; 47 | break; 48 | default: 49 | fileName = fileName + "md"; 50 | markupLanguage = MarkupLanguage.MARKDOWN; 51 | break; 52 | 53 | } 54 | Language language = "ZH".equals(dowmloadSwaggerapiForm.getLanguage()) ? Language.ZH : Language.EN; 55 | Swagger2MarkupConfig config = new Swagger2MarkupConfigBuilder() 56 | .withMarkupLanguage(markupLanguage) 57 | .withOutputLanguage(language) 58 | .withPathsGroupedBy(GroupBy.TAGS) 59 | .withGeneratedExamples() 60 | .withoutInlineSchema() 61 | .build(); 62 | 63 | String txt = Swagger2MarkupConverter.from(new URL(dowmloadSwaggerapiForm.getHostUrl() + Swagger2Controller.DEFAULT_URL)) 64 | .withConfig(config) 65 | .build() 66 | .toString(); 67 | return ResultTool.successData(txt); 68 | 69 | 70 | } 71 | 72 | 73 | } 74 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-core/src/main/java/io/github/tanghuibo/util/FileUtil.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.util; 2 | 3 | import java.io.File; 4 | import java.util.ArrayList; 5 | import java.util.Arrays; 6 | import java.util.List; 7 | 8 | /** 9 | * @description: 文件工具类 10 | * @author: tanghuibo aa18984850147@qq.com 11 | * @create: 2019-01-31 01:01 12 | **/ 13 | public class FileUtil { 14 | /** 15 | * 工程目录 16 | */ 17 | private static String projectPath; 18 | 19 | public static String getProjectPath() { 20 | if(projectPath == null) { 21 | synchronized (FileUtil.class) { 22 | if (projectPath == null) { 23 | synchronized (FileUtil.class) { 24 | projectPath = getSrcPath(); 25 | } 26 | } 27 | } 28 | 29 | } 30 | return projectPath; 31 | 32 | } 33 | 34 | private static String getSrcPath() { 35 | String userDir = System.getProperty("user.dir"); 36 | try { 37 | String mainJava = System.getProperty("sun.java.command"); 38 | if (mainJava != null && !"".equals(mainJava)) { 39 | int index = mainJava.lastIndexOf("."); 40 | if (index >= 0) { 41 | mainJava = mainJava.substring(index + 1) + ".java"; 42 | mainJava = mainJava.toUpperCase(); 43 | } 44 | 45 | } 46 | File file = new File(userDir); 47 | File searchFile = null; 48 | if (file.isDirectory()) { 49 | File[] fileList = file.listFiles(); 50 | while (fileList.length > 0) { 51 | List newFileList = new ArrayList(); 52 | for (File fl : fileList) { 53 | 54 | if (fl.isDirectory()) { 55 | File[] files = fl.listFiles(); 56 | if (files.length > 0) { 57 | newFileList.addAll(Arrays.asList(files)); 58 | } 59 | 60 | } 61 | if (fl.isFile()) { 62 | if (fl.getName().toUpperCase().equals(mainJava)) { 63 | searchFile = fl; 64 | break; 65 | } 66 | } 67 | } 68 | fileList = newFileList.toArray(new File[newFileList.size()]); 69 | } 70 | } 71 | if (searchFile != null) { 72 | String path = searchFile.getPath(); 73 | 74 | return path.substring(0, path.length() - System.getProperty("sun.java.command").length() - 6); 75 | } 76 | 77 | 78 | } finally { 79 | 80 | } 81 | 82 | return userDir + "\\src\\main\\java"; 83 | 84 | } 85 | 86 | /** 87 | * 创建文件夹,若父类文件夹不存在则创建父类文件夹 88 | * @param fileName 89 | */ 90 | public static void mkDirAndParentDir(String fileName) { 91 | File file = new File(fileName); 92 | if(file.isDirectory()) { 93 | return; 94 | } else { 95 | mkDirAndParentDir(file.getParent()); 96 | file.mkdir(); 97 | } 98 | 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/impl/SystemBaseInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service.impl; 2 | 3 | import com.alibaba.fastjson.JSON; 4 | import com.alibaba.fastjson.JSONObject; 5 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.ClassInfo; 6 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JarInfo; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.JvmInfo; 8 | import io.github.tanghuibo.springtakeawaybaseinfo.service.SystemBaseInfoService; 9 | import io.github.tanghuibo.util.ClassUtil; 10 | import org.springframework.context.annotation.Lazy; 11 | import org.springframework.stereotype.Service; 12 | 13 | import java.lang.management.ManagementFactory; 14 | import java.util.*; 15 | 16 | /** 17 | * @description: 18 | * @author: tanghuibo aa18984850147@qq.com 19 | * @create: 2019-01-20 23:49 20 | **/ 21 | @Service("systemBaseInfoService") 22 | @Lazy 23 | public class SystemBaseInfoServiceImpl implements SystemBaseInfoService { 24 | 25 | /** 26 | * classloader中存放class列表的字段名 27 | */ 28 | public static final String CLASSLOADER_CLASSES = "classes"; 29 | 30 | /** 31 | * cpu内核数 key 32 | */ 33 | private static final String AVAILABLE_PROCESSORS = "availableProcessors"; 34 | 35 | /** 36 | * 空闲内存大小 key 37 | */ 38 | private static final String FREE_PHYSICAL_MEMORY_SIZE = "freePhysicalMemorySize"; 39 | 40 | /** 41 | * cpu使用率 key 42 | */ 43 | private static final String SYSTEM_CPU_LOAD = "systemCpuLoad"; 44 | 45 | /** 46 | * 总内存大小key 47 | */ 48 | private static final String TOTALP_HYSICAL_MEMORYS_IZE = "totalPhysicalMemorySize"; 49 | 50 | /** 51 | * 操作系统名称 52 | */ 53 | private static final String NAME = "name"; 54 | 55 | /** 56 | * class path;用于获取加载的jar包 57 | */ 58 | public static final String JAVA_CLASS_PATH = "java.class.path"; 59 | 60 | /** 61 | * jar包文件结尾 62 | */ 63 | private static final String JAR_TYPE = ".JAR"; 64 | 65 | /** 66 | * 获取基础配置信息 67 | * 68 | * @return 69 | */ 70 | @Override 71 | public Map getProperties() { 72 | Properties properties = System.getProperties(); 73 | return properties; 74 | } 75 | 76 | @Override 77 | public JvmInfo getRunTimeInfo() { 78 | 79 | JvmInfo jvmInfo = new JvmInfo(); 80 | String jsonString = JSON.toJSONString(ManagementFactory.getOperatingSystemMXBean()); 81 | JSONObject jsonObject = JSON.parseObject(jsonString); 82 | jvmInfo.setNumCpus(jsonObject.getInteger(AVAILABLE_PROCESSORS)); 83 | jvmInfo.setMemoryFreeBytes(jsonObject.getLong(FREE_PHYSICAL_MEMORY_SIZE)); 84 | jvmInfo.setCpuUsage(jsonObject.getFloat(SYSTEM_CPU_LOAD)); 85 | jvmInfo.setMemoryTotalBytes(jsonObject.getLong(TOTALP_HYSICAL_MEMORYS_IZE)); 86 | jvmInfo.setOsName(jsonObject.getString(NAME)); 87 | 88 | 89 | return jvmInfo; 90 | 91 | 92 | } 93 | 94 | @Override 95 | public List getClassByClassLoader() { 96 | 97 | List list = new ArrayList<>(); 98 | ClassLoader classLoader = this.getClass().getClassLoader(); 99 | 100 | 101 | while (classLoader != null) { 102 | Vector classes = (Vector) ClassUtil.getPropertyByFiledName(classLoader, ClassLoader.class, CLASSLOADER_CLASSES); 103 | Enumeration elements = classes.elements(); 104 | 105 | String classLoaderName = classLoader.getClass().getSimpleName(); 106 | while (elements.hasMoreElements()) { 107 | Class clazz = elements.nextElement(); 108 | ClassInfo classInfo = new ClassInfo(); 109 | classInfo.setClassLoaderName(classLoaderName); 110 | classInfo.setClassName(clazz.getName()); 111 | classInfo.setSimpleClassName(clazz.getSimpleName()); 112 | list.add(classInfo); 113 | } 114 | 115 | 116 | classLoader = classLoader.getParent(); 117 | 118 | } 119 | 120 | return list; 121 | } 122 | 123 | @Override 124 | public List getJarList() { 125 | List jarInfos = new ArrayList<>(); 126 | String jarPathStrings = System.getProperty(JAVA_CLASS_PATH); 127 | String[] jarPaths = jarPathStrings.split(";"); 128 | for (String jarPath:jarPaths) { 129 | if(jarPath.toUpperCase().endsWith(JAR_TYPE)) { 130 | JarInfo jarInfo = new JarInfo(); 131 | jarInfo.setJarPath(jarPath); 132 | jarInfos.add(jarInfo); 133 | } 134 | 135 | } 136 | return jarInfos; 137 | } 138 | 139 | 140 | } 141 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/js/chunk-16ab22d8.7a275b17.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-16ab22d8"],{"0374":function(t,e,n){"use strict";var r=n("6be8"),a=n.n(r);a.a},"072d":function(t,e,n){"use strict";var r=n("b775");e["a"]={getRuntimeInfo:function(){return r["a"].get("/jvm/runtime-info")},getJvmProperties:function(){return r["a"].get("/jvm/jvm-properties")},getClassLoaderClasses:function(){return r["a"].get("/jvm/classloader-class")},getSpringProperties:function(){return r["a"].get("/spring/spring-properties")},getSpringBeans:function(){return r["a"].get("/spring/spring-beans")},getJars:function(){return r["a"].get("/jvm/jarList")}}},"2cb4":function(t,e,n){},"3b35":function(t,e,n){"use strict";var r=n("2cb4"),a=n.n(r);a.a},"6be8":function(t,e,n){},bb51:function(t,e,n){"use strict";n.r(e);var r=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{staticClass:"home"},[n("div",{staticClass:"home-main"},[n("github-corner",{staticClass:"git_cat",attrs:{url:"https://github.com/tanghuibo/"}}),n("ve-liquidfill",{attrs:{data:t.chartData,settings:t.chartSettings}}),n("div",{staticClass:"baseinfo"},[n("el-form",{attrs:{"label-width":"45vw",size:"mini"}},[n("el-form-item",{attrs:{size:"mini"}},[n("template",{slot:"label"},[n("div",[n("span",{staticStyle:{"margin-right":"28px"}},[t._v("操作系统\n "),n("IconView",{staticClass:"icon",attrs:{icon:"icon-os"}})],1),t._v(":\n ")])]),t._v("\n "+t._s(this.baseInfo.osName)+"\n ")],2),n("el-form-item",{attrs:{size:"mini"}},[n("template",{slot:"label"},[n("div",[n("span",{staticStyle:{"margin-right":"28px"}},[t._v("CPU\n "),n("IconView",{staticClass:"icon",attrs:{icon:"icon-cpu"}})],1),t._v(":\n ")])]),t._v("\n "+t._s(this.baseInfo.numCpus+"核")+"\n ")],2),n("el-form-item",{attrs:{size:"mini"}},[n("template",{slot:"label"},[n("div",[n("span",{staticStyle:{"margin-right":"28px"}},[t._v("内存\n "),n("IconView",{staticClass:"icon",attrs:{icon:"icon-memory"}})],1),t._v(":\n ")])]),t._v("\n "+t._s(this.memoryTotalBytes)+"\n ")],2)],1)],1)],1)])},a=[],i=(n("96cf"),n("3b8d")),s=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("a",{staticClass:"github-corner",attrs:{href:t.url,target:"_blank","aria-label":"View source on Github"}},[n("svg",{staticStyle:{fill:"#40c9c6",color:"#fff"},attrs:{width:"80",height:"80",viewBox:"0 0 250 250","aria-hidden":"true"}},[n("path",{attrs:{d:"M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"}}),n("path",{staticClass:"octo-arm",staticStyle:{"transform-origin":"130px 106px"},attrs:{d:"M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2",fill:"currentColor"}}),n("path",{staticClass:"octo-body",attrs:{d:"M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z",fill:"currentColor"}})])])},o=[],c={name:"GithubCorner",props:{url:{type:String}}},u=c,l=(n("3b35"),n("2877")),m=Object(l["a"])(u,s,o,!1,null,"5e59eec7",null),f=m.exports,p=n("28aa"),g=n("072d"),h=n("d547"),b={name:"home",components:{GithubCorner:f,IconView:p["a"]},data:function(){return this.chartSettings={seriesMap:[{color:["green","red","green"],label:{formatter:function(t){return"".concat(t.seriesName,"\n").concat(parseInt(100*t.data.value),"%")},fontSize:30},center:["40%","50%"],radius:"40%"},{label:{formatter:function(t){return"".concat(t.seriesName,"\n").concat(parseInt(100*t.data.value),"%")},fontSize:30},center:["60%","50%"],radius:"40%"}]},{baseInfo:{numCpus:null,memoryFreeBytes:null,memoryTotalBytes:null,osName:null,cpuUsage:null,memoryUsage:null},timer:null}},beforeDestroy:function(){window.clearTimeout(this.timer)},computed:{memoryTotalBytes:function(){return h["a"].numberChangeHumanSee(this.baseInfo.memoryTotalBytes)+"Byte"},chartData:function(){return{columns:["key","percent"],rows:[{key:"CPU",percent:this.baseInfo.cpuUsage},{key:"内存",percent:this.baseInfo.memoryUsage}]}}},mounted:function(){this.getRuntimeInfo(),this.timer=setInterval(this.getRuntimeInfo,2e3)},methods:{getRuntimeInfo:function(){var t=Object(i["a"])(regeneratorRuntime.mark((function t(){var e;return regeneratorRuntime.wrap((function(t){while(1)switch(t.prev=t.next){case 0:return t.next=2,g["a"].getRuntimeInfo();case 2:e=t.sent,this.baseInfo=e;case 4:case"end":return t.stop()}}),t,this)})));function e(){return t.apply(this,arguments)}return e}()}},d=b,v=(n("0374"),Object(l["a"])(d,r,a,!1,null,"347aab32",null));e["default"]=v.exports},d547:function(t,e,n){"use strict";var r=1024,a=1024*r,i=1024*a;e["a"]={numberChangeHumanSee:function(t){return t>i?(t/i).toFixed(3)+"G":t>a?(t/a).toFixed(3)+"M":t>r?(t/a).toFixed(3)+"K":void 0},isEmpty:function(t){return"undefined"==typeof t||null==t||""==(t+"").trim()},mapToList:function(t){var e=[];for(var n in t)e.push({key:n,value:t[n]});return e}}}}]); -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/css/chunk-vendors.777c5038.css: -------------------------------------------------------------------------------- 1 | .CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:rgba(20,255,20,.5)}.cm-animate-fat-cursor,.cm-fat-cursor-mark{-webkit-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;border:0;background-color:#7e7}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-30px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;-webkit-font-feature-settings:"calt";font-feature-settings:"calt";font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{-webkit-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:rgba(255,255,0,.4)}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none} -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/impl/DataBaseInfoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service.impl; 2 | 3 | import com.baomidou.mybatisplus.generator.config.IDbQuery; 4 | import static com.baomidou.mybatisplus.annotation.DbType.*; 5 | 6 | import io.github.tanghuibo.springtakeawaybaseinfo.util.DbTypeUtil; 7 | import io.github.tanghuibo.springtakeawaybaseinfo.config.DbType; 8 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.SqlFieldInfo; 9 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.vo.TableInfo; 10 | import io.github.tanghuibo.springtakeawaybaseinfo.exception.SpringTakeawayException; 11 | import io.github.tanghuibo.springtakeawaybaseinfo.service.DataBaseInfoService; 12 | import org.springframework.beans.factory.annotation.Autowired; 13 | import org.springframework.beans.factory.annotation.Value; 14 | import org.springframework.context.annotation.Lazy; 15 | import org.springframework.stereotype.Service; 16 | 17 | import javax.sql.DataSource; 18 | import java.sql.*; 19 | import java.util.*; 20 | 21 | /** 22 | * @description:数据库基本信息serviceImpl 23 | * @author: tanghuibo aa18984850147@qq.com 24 | * @create: 2019-01-27 16:24 25 | **/ 26 | @Service("dataBaseInfoService") 27 | @Lazy 28 | public class DataBaseInfoServiceImpl implements DataBaseInfoService { 29 | 30 | @Value("${spring.datasource.driver-class-name:}") 31 | private String driverClassName; 32 | 33 | /** 34 | * 数据库连接池 35 | */ 36 | private DataSource dataSource; 37 | 38 | 39 | 40 | 41 | /** 42 | * 构造器 43 | * @param dataSource 44 | */ 45 | public DataBaseInfoServiceImpl(@Autowired(required = false) DataSource dataSource) { 46 | this.dataSource = dataSource; 47 | 48 | 49 | } 50 | 51 | /** 52 | * 获取所有表格接口 53 | * @return 54 | * @throws SQLException 55 | */ 56 | @Override 57 | public List getTables() throws SQLException { 58 | Connection connection = dataSource.getConnection(); 59 | try { 60 | DbType dbType = DbTypeUtil.getDbTypeByDriverClassName(driverClassName, connection.getClass().getName()); 61 | if(dbType == null) { 62 | throw new SpringTakeawayException("请在配置文件中设置 spring.datasource.driver-class-name"); 63 | } 64 | IDbQuery dbQuery =dbType.getiDbQuery(); 65 | 66 | String tablesSql = dbQuery.tablesSql(); 67 | String schema = connection.getMetaData().getSchemaTerm(); 68 | if (POSTGRE_SQL == dbQuery.dbType()) { 69 | 70 | tablesSql = String.format(tablesSql, schema); 71 | } 72 | 73 | if (ORACLE == dbQuery.dbType()) { 74 | tablesSql = String.format(tablesSql, schema); 75 | } 76 | 77 | PreparedStatement preparedStatement = connection.prepareStatement(tablesSql); 78 | ResultSet results = preparedStatement.executeQuery(); 79 | List tableInfos = new ArrayList<>(); 80 | while (results.next()) { 81 | TableInfo tableInfo = new TableInfo(); 82 | tableInfo.setTableName( results.getString(dbQuery.tableName())); 83 | tableInfo.setComment( results.getString(dbQuery.tableComment())); 84 | tableInfos.add(tableInfo); 85 | 86 | } 87 | return tableInfos; 88 | } finally { 89 | if(connection != null) { 90 | connection.close(); 91 | } 92 | } 93 | } 94 | 95 | @Override 96 | public List getFields(String tableName) throws SQLException { 97 | Connection connection = dataSource.getConnection(); 98 | try { 99 | DbType dbType = DbTypeUtil.getDbTypeByDriverClassName(driverClassName, connection.getClass().getName()); 100 | if(dbType == null) { 101 | throw new SpringTakeawayException("请在配置文件中设置 spring.datasource.driver-class-name"); 102 | } 103 | IDbQuery dbQuery = dbType.getiDbQuery(); 104 | 105 | String tableFieldsSql = dbQuery.tableFieldsSql(); 106 | String schema = connection.getMetaData().getSchemaTerm(); 107 | if (POSTGRE_SQL == dbQuery.dbType()) { 108 | tableFieldsSql = String.format(tableFieldsSql, schema, tableName); 109 | } else if (ORACLE == dbQuery.dbType()) { 110 | tableFieldsSql = String.format(tableFieldsSql.replace("#schema", schema), tableName); 111 | } else { 112 | tableFieldsSql = String.format(tableFieldsSql, tableName); 113 | } 114 | 115 | PreparedStatement preparedStatement = connection.prepareStatement(tableFieldsSql); 116 | ResultSet results = preparedStatement.executeQuery(); 117 | 118 | List sqlFieldInfos = new ArrayList<>(); 119 | while (results.next()) { 120 | SqlFieldInfo sqlFieldInfo = new SqlFieldInfo(); 121 | sqlFieldInfo.setFieldName(results.getString(dbQuery.fieldName())); 122 | sqlFieldInfo.setDataType(results.getString(dbQuery.fieldType())); 123 | sqlFieldInfo.setComment(results.getString(dbQuery.fieldComment())); 124 | sqlFieldInfos.add(sqlFieldInfo); 125 | 126 | } 127 | 128 | 129 | return sqlFieldInfos; 130 | } finally { 131 | if(connection != null) { 132 | connection.close(); 133 | } 134 | } 135 | 136 | } 137 | 138 | @Override 139 | public List getDbDriverList() { 140 | DbType[] dbTypes = DbType.values(); 141 | List result = new ArrayList<>(); 142 | for (DbType dbType:dbTypes) { 143 | result.addAll(dbType.getDriverList()); 144 | } 145 | return result; 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-dependencies/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 4.0.0 6 | 7 | io.github.tanghuibo 8 | spring-takeaway-dependencies 9 | 0.0.2-SNAPSHOT 10 | pom 11 | 12 | 13 | 14 | 1.2.54 15 | 1.18.4 16 | 2.3.28 17 | 3.0.3 18 | 2.9.2 19 | 1.3.3 20 | 1.6.0 21 | 2.1.2.RELEASE 22 | 1.8 23 | UTF-8 24 | ${java.version} 25 | ${java.version} 26 | 27 | 28 | 29 | 30 | 31 | org.projectlombok 32 | lombok 33 | ${lombok.version} 34 | provided 35 | 36 | 37 | 38 | com.alibaba 39 | fastjson 40 | ${fastjson.version} 41 | 42 | 43 | 44 | 45 | 46 | org.springframework.boot 47 | spring-boot-starter-web 48 | ${spring-boot-starter-web.version} 49 | 50 | 51 | 52 | 53 | org.freemarker 54 | freemarker 55 | ${freemarker.version} 56 | 57 | 58 | 59 | com.baomidou 60 | mybatis-plus-generator 61 | ${mybatis-plus-generator.version} 62 | 63 | 64 | 65 | io.springfox 66 | springfox-swagger2 67 | ${springfox-swagger2.version} 68 | 69 | 70 | io.springfox 71 | springfox-swagger-ui 72 | ${springfox-swagger2.version} 73 | 74 | 75 | 76 | io.github.swagger2markup 77 | swagger2markup 78 | ${swagger2markup.version} 79 | 80 | 81 | 82 | org.pegdown 83 | pegdown 84 | ${pegdown.version} 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | release 93 | 94 | 95 | 96 | org.apache.maven.plugins 97 | maven-source-plugin 98 | 2.3 99 | 100 | 101 | attach-sources 102 | 103 | jar-no-fork 104 | 105 | 106 | 107 | 108 | true 109 | 110 | 111 | 112 | org.apache.maven.plugins 113 | maven-gpg-plugin 114 | 1.5 115 | 116 | 117 | install 118 | 119 | sign 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | oss 131 | https://oss.sonatype.org/content/repositories/snapshots/ 132 | 133 | 134 | oss 135 | https://oss.sonatype.org/service/local/staging/deploy/maven2/ 136 | 137 | 138 | 139 | 140 | 141 | 142 | false 143 | 144 | jcenter-releases 145 | jcenter 146 | http://jcenter.bintray.com 147 | 148 | 149 | 150 | 151 | 152 | 153 | org.codehaus.mojo 154 | versions-maven-plugin 155 | 2.3 156 | 157 | false 158 | 159 | 160 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-baseinfo/src/main/java/io/github/tanghuibo/springtakeawaybaseinfo/service/impl/GeneratorCodeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package io.github.tanghuibo.springtakeawaybaseinfo.service.impl; 2 | 3 | import com.baomidou.mybatisplus.generator.AutoGenerator; 4 | import com.baomidou.mybatisplus.generator.config.*; 5 | import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy; 6 | import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine; 7 | import freemarker.template.Configuration; 8 | import freemarker.template.Template; 9 | import freemarker.template.TemplateException; 10 | import io.github.tanghuibo.constant.ConstantCommand; 11 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateJsonToJavaConfig; 12 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.GenerateMybatisConfig; 13 | import io.github.tanghuibo.springtakeawaybaseinfo.entity.dto.JavaEntityInfo; 14 | import io.github.tanghuibo.springtakeawaybaseinfo.exception.SpringTakeawayException; 15 | import io.github.tanghuibo.springtakeawaybaseinfo.service.GeneratorCodeService; 16 | import io.github.tanghuibo.springtakeawaybaseinfo.service.MybatisPlusAutoGeneratorConfig; 17 | import io.github.tanghuibo.util.FileUtil; 18 | import org.springframework.beans.factory.annotation.Qualifier; 19 | import org.springframework.beans.factory.annotation.Value; 20 | import org.springframework.stereotype.Service; 21 | import org.springframework.util.StringUtils; 22 | 23 | import java.io.File; 24 | import java.io.FileWriter; 25 | import java.io.IOException; 26 | import java.io.Writer; 27 | import java.util.List; 28 | import java.util.Map; 29 | import java.util.stream.Collectors; 30 | 31 | /** 32 | * @description: 33 | * @author: tanghuibo aa18984850147@qq.com 34 | * @create: 2019-01-30 23:07 35 | **/ 36 | @Service("generatorCodeService") 37 | public class GeneratorCodeServiceImpl implements GeneratorCodeService { 38 | 39 | @Value("${spring.datasource.password:}") 40 | private String password; 41 | 42 | @Value("${spring.datasource.driver-class-name:}") 43 | private String driverClassName; 44 | 45 | @Value("${spring.datasource.username:}") 46 | private String username; 47 | 48 | @Value("${spring.datasource.url:}") 49 | private String url; 50 | 51 | 52 | 53 | private Map mybatisPlusAutoGeneratorConfigMap; 54 | private Configuration configuration; 55 | 56 | /** 57 | * mybatisPlusAutoGeneratorConfig 58 | * 用于处理AutoGenerator 59 | * 60 | * @see AutoGenerator 61 | */ 62 | private volatile List mybatisPlusAutoGeneratorConfigs; 63 | 64 | public GeneratorCodeServiceImpl(Map mybatisPlusAutoGeneratorConfigMap, 65 | @Qualifier("javaCodeGeneratorConfiguration") Configuration configuration) { 66 | this.mybatisPlusAutoGeneratorConfigMap = mybatisPlusAutoGeneratorConfigMap; 67 | this.configuration = configuration; 68 | } 69 | 70 | @Override 71 | public void generatorMybatisCode(GenerateMybatisConfig generateMybatisConfig) { 72 | AutoGenerator mpg = new AutoGenerator(); 73 | // 全局配置 74 | GlobalConfig gc = new GlobalConfig(); 75 | gc.setFileOverride(generateMybatisConfig.getFileOverride()); 76 | gc.setOutputDir(generateMybatisConfig.getProjectPath()); 77 | gc.setAuthor(generateMybatisConfig.getAuthor()); 78 | gc.setOpen(false); 79 | gc.setBaseColumnList(true); 80 | gc.setBaseResultMap(true); 81 | mpg.setGlobalConfig(gc); 82 | 83 | // 数据源配置 84 | DataSourceConfig dsc = new DataSourceConfig(); 85 | dsc.setUrl(generateMybatisConfig.getUrl()); 86 | dsc.setDriverName(generateMybatisConfig.getJdbcDrive()); 87 | dsc.setUsername(generateMybatisConfig.getUserName()); 88 | dsc.setPassword(generateMybatisConfig.getPassword()); 89 | mpg.setDataSource(dsc); 90 | 91 | // 包配置 92 | PackageConfig pc = new PackageConfig(); 93 | pc.setParent(generateMybatisConfig.getPackageParentName()); 94 | mpg.setPackageInfo(pc); 95 | 96 | TemplateConfig templateConfig = new TemplateConfig(); 97 | mpg.setTemplate(templateConfig); 98 | // 策略配置 99 | StrategyConfig strategy = new StrategyConfig(); 100 | strategy.setNaming(NamingStrategy.underline_to_camel); 101 | strategy.setColumnNaming(NamingStrategy.underline_to_camel); 102 | strategy.setTablePrefix(generateMybatisConfig.getTablePrefix()); 103 | strategy.setFieldPrefix(generateMybatisConfig.getFieldPrefix()); 104 | strategy.setEntityLombokModel(generateMybatisConfig.getEntityLombokModel()); 105 | strategy.setRestControllerStyle(true); 106 | List tableNames = generateMybatisConfig.getTableNames(); 107 | strategy.setInclude(tableNames.toArray(new String[tableNames.size()])); 108 | 109 | mpg.setStrategy(strategy); 110 | mpg.setTemplateEngine(new FreemarkerTemplateEngine()); 111 | List mybatisPlusAutoGeneratorConfigs = getMybatisPlusAutoGeneratorConfigs(); 112 | mybatisPlusAutoGeneratorConfigs.forEach(mybatisPlusAutoGeneratorConfig -> mybatisPlusAutoGeneratorConfig.handleAutoGenerator(mpg)); 113 | mpg.execute(); 114 | } 115 | 116 | @Override 117 | public GenerateMybatisConfig getDefaultGenerateMybatisConfig() { 118 | GenerateMybatisConfig generateMybatisConfig = new GenerateMybatisConfig(); 119 | generateMybatisConfig.setAuthor(System.getProperty(ConstantCommand.USER_NAME)); 120 | generateMybatisConfig.setPassword(password); 121 | generateMybatisConfig.setEntityLombokModel(true); 122 | generateMybatisConfig.setFileOverride(false); 123 | generateMybatisConfig.setTablePrefix(""); 124 | generateMybatisConfig.setFieldPrefix(""); 125 | generateMybatisConfig.setProjectPath(FileUtil.getProjectPath()); 126 | generateMybatisConfig.setPackageParentName(getMainClassPath()); 127 | 128 | 129 | generateMybatisConfig.setUrl(url); 130 | generateMybatisConfig.setJdbcDrive(driverClassName); 131 | generateMybatisConfig.setUserName(username); 132 | 133 | 134 | return generateMybatisConfig; 135 | } 136 | 137 | @Override 138 | public GenerateJsonToJavaConfig getDefaultGenerateJsonToJavaConfig() { 139 | GenerateJsonToJavaConfig generateJsonToJavaConfig = new GenerateJsonToJavaConfig(); 140 | generateJsonToJavaConfig.setEntityLombokModel(true); 141 | 142 | generateJsonToJavaConfig.setPackageParentName(getMainClassPath()); 143 | 144 | generateJsonToJavaConfig.setProjectPath(FileUtil.getProjectPath()); 145 | generateJsonToJavaConfig.setAuthor(System.getProperty(ConstantCommand.USER_NAME)); 146 | 147 | return generateJsonToJavaConfig; 148 | 149 | } 150 | 151 | @Override 152 | public void generatoJsonToJavaCode(List javaEntityInfoList) { 153 | for (JavaEntityInfo javaEntityInfo:javaEntityInfoList) { 154 | generatoJsonToJavaCode(javaEntityInfo); 155 | 156 | } 157 | } 158 | 159 | private void generatoJsonToJavaCode(JavaEntityInfo javaEntityInfo) { 160 | String packageName = javaEntityInfo.getPackageName(); 161 | String dirName = javaEntityInfo.getProjectPath() + File.separatorChar + packageName.replace(".", File.separator); 162 | String fileName = dirName + File.separatorChar + javaEntityInfo.getClassName() + ".java"; 163 | FileUtil.mkDirAndParentDir(dirName); 164 | Template template = null; 165 | try { 166 | template = configuration.getTemplate("entity.java.ftl"); 167 | } catch (IOException e) { 168 | e.printStackTrace(); 169 | throw new SpringTakeawayException("freemarker模板获取失败"); 170 | } 171 | Writer out = null; 172 | try { 173 | out = new FileWriter(fileName); 174 | } catch (IOException e) { 175 | e.printStackTrace(); 176 | throw new SpringTakeawayException("写入文件失败"); 177 | } 178 | try { 179 | template.process(javaEntityInfo, out); 180 | } catch (TemplateException e) { 181 | e.printStackTrace(); 182 | throw new SpringTakeawayException("freemarker模板格式有误"); 183 | } catch (IOException e) { 184 | e.printStackTrace(); 185 | } finally { 186 | if(out != null) { 187 | try { 188 | out.close(); 189 | } catch (IOException e) { 190 | e.printStackTrace(); 191 | } 192 | } 193 | 194 | 195 | } 196 | 197 | } 198 | 199 | private String getMainClassPath() { 200 | String mainPath = System.getProperty(ConstantCommand.MAIN_CLASS_PATH); 201 | if (!StringUtils.isEmpty(mainPath)) { 202 | int index = mainPath.lastIndexOf("."); 203 | if (index > 0) { 204 | return mainPath.substring(0, index); 205 | } 206 | } 207 | return null; 208 | } 209 | 210 | public List getMybatisPlusAutoGeneratorConfigs() { 211 | if (mybatisPlusAutoGeneratorConfigs == null) { 212 | synchronized (MybatisPlusAutoGeneratorConfig.class) { 213 | if (mybatisPlusAutoGeneratorConfigs == null) { 214 | mybatisPlusAutoGeneratorConfigs = mybatisPlusAutoGeneratorConfigMap.values().stream().collect(Collectors.toList()); 215 | } 216 | } 217 | } 218 | return mybatisPlusAutoGeneratorConfigs; 219 | } 220 | 221 | } 222 | -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/js/chunk-4ed5262f.01fab838.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4ed5262f"],{"072d":function(e,t,n){"use strict";var r=n("b775");t["a"]={getRuntimeInfo:function(){return r["a"].get("/jvm/runtime-info")},getJvmProperties:function(){return r["a"].get("/jvm/jvm-properties")},getClassLoaderClasses:function(){return r["a"].get("/jvm/classloader-class")},getSpringProperties:function(){return r["a"].get("/spring/spring-properties")},getSpringBeans:function(){return r["a"].get("/spring/spring-beans")},getJars:function(){return r["a"].get("/jvm/jarList")}}},"0bfb":function(e,t,n){"use strict";var r=n("cb7c");e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"1af6":function(e,t,n){var r=n("63b6");r(r.S,"Array",{isArray:n("9003")})},"20fd":function(e,t,n){"use strict";var r=n("d9f6"),a=n("aebd");e.exports=function(e,t,n){t in e?r.f(e,t,a(0,n)):e[t]=n}},"214f":function(e,t,n){"use strict";n("b0c5");var r=n("2aba"),a=n("32e9"),i=n("79e5"),o=n("be13"),c=n("2b4c"),s=n("520a"),l=c("species"),u=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var p=c(e),d=!i((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),h=d?!i((function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[l]=function(){return n}),n[p](""),!t})):void 0;if(!d||!h||"replace"===e&&!u||"split"===e&&!f){var g=/./[p],v=n(o,p,""[e],(function(e,t,n,r,a){return t.exec===s?d&&!a?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}})),m=v[0],b=v[1];r(String.prototype,e,m),a(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)})}}},"272c":function(e,t,n){},"2f21":function(e,t,n){"use strict";var r=n("79e5");e.exports=function(e,t){return!!e&&r((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},"386d":function(e,t,n){"use strict";var r=n("cb7c"),a=n("83a1"),i=n("5f1b");n("214f")("search",1,(function(e,t,n,o){return[function(n){var r=e(this),a=void 0==n?void 0:n[t];return void 0!==a?a.call(n,r):new RegExp(n)[t](String(r))},function(e){var t=o(n,e,this);if(t.done)return t.value;var c=r(e),s=String(this),l=c.lastIndex;a(l,0)||(c.lastIndex=0);var u=i(c,s);return a(c.lastIndex,l)||(c.lastIndex=l),null===u?-1:u.index}]}))},"520a":function(e,t,n){"use strict";var r=n("0bfb"),a=RegExp.prototype.exec,i=String.prototype.replace,o=a,c="lastIndex",s=function(){var e=/a/,t=/b*/g;return a.call(e,"a"),a.call(t,"a"),0!==e[c]||0!==t[c]}(),l=void 0!==/()??/.exec("")[1],u=s||l;u&&(o=function(e){var t,n,o,u,f=this;return l&&(n=new RegExp("^"+f.source+"$(?!\\s)",r.call(f))),s&&(t=f[c]),o=a.call(f,e),s&&o&&(f[c]=f.global?o.index+o[0].length:t),l&&o&&o.length>1&&i.call(o[0],n,(function(){for(u=1;u1?arguments[1]:void 0,v=void 0!==g,m=0,b=u(p);if(v&&(g=r(g,h>2?arguments[2]:void 0,2)),void 0==b||d==Array&&c(b))for(t=s(p.length),n=new d(t);t>m;m++)l(n,m,v?g(p[m],m):p[m]);else for(f=b.call(p),n=new d;!(a=f.next()).done;m++)l(n,m,v?o(f,g,[a.value,m],!0):a.value);return n.length=m,n}})},"54a1":function(e,t,n){n("6c1c"),n("1654"),e.exports=n("95d5")},"55dd":function(e,t,n){"use strict";var r=n("5ca1"),a=n("d8e8"),i=n("4bf8"),o=n("79e5"),c=[].sort,s=[1,2,3];r(r.P+r.F*(o((function(){s.sort(void 0)}))||!o((function(){s.sort(null)}))||!n("2f21")(c)),"Array",{sort:function(e){return void 0===e?c.call(i(this)):c.call(i(this),a(e))}})},"5f1b":function(e,t,n){"use strict";var r=n("23c6"),a=RegExp.prototype.exec;e.exports=function(e,t){var n=e.exec;if("function"===typeof n){var i=n.call(e,t);if("object"!==typeof i)throw new TypeError("RegExp exec method returned something other than an Object or null");return i}if("RegExp"!==r(e))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(e,t)}},"74fc":function(e,t,n){"use strict";var r=n("272c"),a=n.n(r);a.a},"774e":function(e,t,n){e.exports=n("d2d5")},"83a1":function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e===1/t:e!=e&&t!=t}},"86ac":function(e,t,n){"use strict";n.r(t);var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"spring"},[n("el-tabs",{attrs:{type:"border-card"}},[n("el-tab-pane",{attrs:{label:"Spring配置信息"}},[n("all-sort-and-search-table",{attrs:{columns:e.springPropertyColumns},on:{getData:e.getspringPropertyData}})],1),n("el-tab-pane",{attrs:{label:"Spring Bean列表"}},[n("all-sort-and-search-table",{attrs:{columns:e.springBeanColumns},on:{getData:e.getspringBeanData}})],1)],1)],1)},a=[],i=(n("96cf"),n("3b8d")),o=n("072d"),c=n("978f"),s=n("d547"),l={components:{AllSortAndSearchTable:c["a"]},data:function(){return{springPropertyColumns:[{key:"key",lable:"名称",width:230},{key:"value",lable:"属性"}],springBeanColumns:[{key:"beanName",lable:"名称",width:230},{key:"simpleClassName",lable:"简类名",width:230},{key:"className",lable:"全类名"}]}},methods:{getspringPropertyData:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(t,n){var r,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o["a"].getSpringProperties();case 3:r=e.sent,a=s["a"].mapToList(r),t(a);case 6:return e.prev=6,n(),e.finish(6);case 9:case"end":return e.stop()}}),e,null,[[0,,6,9]])})));function t(t,n){return e.apply(this,arguments)}return t}(),getspringBeanData:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(t,n){var r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,o["a"].getSpringBeans();case 3:r=e.sent,t(r);case 5:return e.prev=5,n(),e.finish(5);case 8:case"end":return e.stop()}}),e,null,[[0,,5,8]])})));function t(t,n){return e.apply(this,arguments)}return t}()}},u=l,f=(n("74fc"),n("2877")),p=Object(f["a"])(u,r,a,!1,null,"85d1889a",null);t["default"]=p.exports},"95d5":function(e,t,n){var r=n("40c3"),a=n("5168")("iterator"),i=n("481b");e.exports=n("584a").isIterable=function(e){var t=Object(e);return void 0!==t[a]||"@@iterator"in t||i.hasOwnProperty(r(t))}},"978f":function(e,t,n){"use strict";var r=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",[n("el-form",{staticStyle:{"margin-top":"20px"},attrs:{inline:!0,model:e.searchForm}},[e._l(e.myColumns,(function(t){return n("el-form-item",{key:t.key,attrs:{label:t.lable}},[t.enSelectAble?n("el-select",{attrs:{clearable:""},model:{value:e.searchForm[t.key],callback:function(n){e.$set(e.searchForm,t.key,n)},expression:"searchForm[column.key]"}},e._l(t.selectList,(function(e){return n("el-option",{key:e,attrs:{label:e,value:e}})})),1):n("el-input",{attrs:{placeholder:t.lable,clearable:""},model:{value:e.searchForm[t.key],callback:function(n){e.$set(e.searchForm,t.key,n)},expression:"searchForm[column.key]"}})],1)})),n("el-form-item",[n("el-button",{attrs:{type:"primary"},on:{click:e.resetSearch}},[e._v("重置查询")]),n("el-button",{attrs:{type:"primary",loading:e.loading},on:{click:e.search}},[e._v("刷新")]),e._t("form",null,{data:e.selectData})],2)],2),n("el-scrollbar",{attrs:{"wrap-class":"collapse-scrollbar-wrapper",native:!1}},[n("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticStyle:{"margin-left":"5px"},attrs:{data:e.pageDataList,stripe:"",border:"","default-sort":{prop:e.columns[0].key,order:"ascending"}},on:{"sort-change":e.sortChange,"selection-change":e.handleSelectionChange}},[e.showSelect?n("el-table-column",{attrs:{type:"selection",width:"55"}}):e._e(),e.showPanel?n("el-table-column",{attrs:{type:"expand"},scopedSlots:e._u([{key:"default",fn:function(t){var n=t.row;return[e._t("table",null,{data:n})]}}],null,!0)}):e._e(),e._l(e.columns,(function(e){return n("el-table-column",{key:e.key,attrs:{prop:e.key,label:e.lable,width:e.width,sortable:"custom"}})}))],2)],1),n("div",{staticStyle:{margin:"20px"}},[n("el-pagination",{attrs:{"current-page":e.currentPage,"page-sizes":[10,20,50,100],"page-size":e.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:e.dataList.length},on:{"update:currentPage":function(t){e.currentPage=t},"update:current-page":function(t){e.currentPage=t},"update:pageSize":function(t){e.pageSize=t},"update:page-size":function(t){e.pageSize=t}}})],1)],1)])},a=[],i=(n("55dd"),n("a745")),o=n.n(i);function c(e){if(o()(e)){for(var t=0,n=new Array(e.length);t=0})))})),g["a"].isEmpty(this.sortKey)||t.sort((function(t,n){var r=-1;return null!=t[e.sortKey]&&(r=t[e.sortKey].localeCompare(n[e.sortKey])),r=e.sortOrderAsc?r:-r,r})),t},pageDataList:function(){var e=Math.min(this.dataList.length,(this.currentPage-1)*this.pageSize),t=Math.min(this.dataList.length,this.currentPage*this.pageSize),n=this.dataList.slice(e,t);return n}},methods:{setData:function(e){this.allDataList=e;var t=this.myColumns.filter((function(e){return e.enSelectAble}));t.forEach((function(t){t.selectList=e.map((function(e){return e[t.key]})).filter((function(e,t,n){return n.indexOf(e)===t}))}))},sortChange:function(e){this.sortKey=e.prop,this.sortOrderAsc="ascending"===e.order},searchOver:function(){this.loading=!1},resetSearch:function(){for(var e in this.searchForm)this.searchForm[e]=null},handleSelectionChange:function(e){this.selectData=e},getSelectData:function(){return h(this.selectData)},search:function(){this.loading=!0,this.resetSearch(),this.$emit("getData",this.setData,this.searchOver)}}},m=v,b=n("2877"),y=Object(b["a"])(m,r,a,!1,null,"40dbf056",null);t["a"]=y.exports},a745:function(e,t,n){e.exports=n("f410")},b0c5:function(e,t,n){"use strict";var r=n("520a");n("5ca1")({target:"RegExp",proto:!0,forced:r!==/./.exec},{exec:r})},c8bb:function(e,t,n){e.exports=n("54a1")},d2d5:function(e,t,n){n("1654"),n("549b"),e.exports=n("584a").Array.from},d547:function(e,t,n){"use strict";var r=1024,a=1024*r,i=1024*a;t["a"]={numberChangeHumanSee:function(e){return e>i?(e/i).toFixed(3)+"G":e>a?(e/a).toFixed(3)+"M":e>r?(e/a).toFixed(3)+"K":void 0},isEmpty:function(e){return"undefined"==typeof e||null==e||""==(e+"").trim()},mapToList:function(e){var t=[];for(var n in e)t.push({key:n,value:e[n]});return t}}},f410:function(e,t,n){n("1af6"),e.exports=n("584a").Array.isArray}}]); -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/js/chunk-18c7c12e.7f1fcc6c.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-18c7c12e"],{"072d":function(e,t,r){"use strict";var n=r("b775");t["a"]={getRuntimeInfo:function(){return n["a"].get("/jvm/runtime-info")},getJvmProperties:function(){return n["a"].get("/jvm/jvm-properties")},getClassLoaderClasses:function(){return n["a"].get("/jvm/classloader-class")},getSpringProperties:function(){return n["a"].get("/spring/spring-properties")},getSpringBeans:function(){return n["a"].get("/spring/spring-beans")},getJars:function(){return n["a"].get("/jvm/jarList")}}},"0bfb":function(e,t,r){"use strict";var n=r("cb7c");e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"1af6":function(e,t,r){var n=r("63b6");n(n.S,"Array",{isArray:r("9003")})},"20fd":function(e,t,r){"use strict";var n=r("d9f6"),a=r("aebd");e.exports=function(e,t,r){t in e?n.f(e,t,a(0,r)):e[t]=r}},"214f":function(e,t,r){"use strict";r("b0c5");var n=r("2aba"),a=r("32e9"),o=r("79e5"),i=r("be13"),s=r("2b4c"),c=r("520a"),l=s("species"),u=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();e.exports=function(e,t,r){var p=s(e),d=!o((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),h=d?!o((function(){var t=!1,r=/a/;return r.exec=function(){return t=!0,null},"split"===e&&(r.constructor={},r.constructor[l]=function(){return r}),r[p](""),!t})):void 0;if(!d||!h||"replace"===e&&!u||"split"===e&&!f){var v=/./[p],g=r(i,p,""[e],(function(e,t,r,n,a){return t.exec===c?d&&!a?{done:!0,value:v.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}})),m=g[0],b=g[1];n(String.prototype,e,m),a(RegExp.prototype,p,2==t?function(e,t){return b.call(e,this,t)}:function(e){return b.call(e,this)})}}},"2f21":function(e,t,r){"use strict";var n=r("79e5");e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},"386d":function(e,t,r){"use strict";var n=r("cb7c"),a=r("83a1"),o=r("5f1b");r("214f")("search",1,(function(e,t,r,i){return[function(r){var n=e(this),a=void 0==r?void 0:r[t];return void 0!==a?a.call(r,n):new RegExp(r)[t](String(n))},function(e){var t=i(r,e,this);if(t.done)return t.value;var s=n(e),c=String(this),l=s.lastIndex;a(l,0)||(s.lastIndex=0);var u=o(s,c);return a(s.lastIndex,l)||(s.lastIndex=l),null===u?-1:u.index}]}))},"41a2":function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"jvm"},[r("el-tabs",{attrs:{type:"border-card"}},[r("el-tab-pane",{attrs:{label:"JVM配置信息"}},[r("all-sort-and-search-table",{attrs:{columns:e.jvmColumns},on:{getData:e.getJvmData}})],1),r("el-tab-pane",{attrs:{label:"Class信息"}},[r("all-sort-and-search-table",{attrs:{columns:e.classColumns},on:{getData:e.getClass}})],1),r("el-tab-pane",{attrs:{label:"jar包信息"}},[r("all-sort-and-search-table",{attrs:{columns:e.jarColumns},on:{getData:e.getJar}})],1)],1)],1)},a=[],o=(r("96cf"),r("3b8d")),i=r("072d"),s=r("978f"),c=r("d547"),l={components:{AllSortAndSearchTable:s["a"]},data:function(){return{activitiName:"jvmProperties",jvmColumns:[{key:"key",lable:"名称",width:230},{key:"value",lable:"属性"}],classColumns:[{key:"simpleClassName",lable:"类名",width:230},{key:"classLoaderName",lable:"类加载器",width:230,enSelectAble:!0},{key:"className",lable:"全类名"}],jarColumns:[{key:"jarName",lable:"名称",width:230},{key:"jarPath",lable:"路径"}]}},methods:{getJvmData:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t,r){var n,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,i["a"].getJvmProperties();case 3:n=e.sent,a=c["a"].mapToList(n),t(a);case 6:return e.prev=6,r(),e.finish(6);case 9:case"end":return e.stop()}}),e,null,[[0,,6,9]])})));function t(t,r){return e.apply(this,arguments)}return t}(),getClass:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,i["a"].getClassLoaderClasses();case 3:n=e.sent,t(n);case 5:return e.prev=5,r(),e.finish(5);case 8:case"end":return e.stop()}}),e,null,[[0,,5,8]])})));function t(t,r){return e.apply(this,arguments)}return t}(),getJar:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,i["a"].getJars();case 3:n=e.sent,t(n);case 5:return e.prev=5,r(),e.finish(5);case 8:case"end":return e.stop()}}),e,null,[[0,,5,8]])})));function t(t,r){return e.apply(this,arguments)}return t}()}},u=l,f=(r("d622"),r("2877")),p=Object(f["a"])(u,n,a,!1,null,"1d462618",null);t["default"]=p.exports},"520a":function(e,t,r){"use strict";var n=r("0bfb"),a=RegExp.prototype.exec,o=String.prototype.replace,i=a,s="lastIndex",c=function(){var e=/a/,t=/b*/g;return a.call(e,"a"),a.call(t,"a"),0!==e[s]||0!==t[s]}(),l=void 0!==/()??/.exec("")[1],u=c||l;u&&(i=function(e){var t,r,i,u,f=this;return l&&(r=new RegExp("^"+f.source+"$(?!\\s)",n.call(f))),c&&(t=f[s]),i=a.call(f,e),c&&i&&(f[s]=f.global?i.index+i[0].length:t),l&&i&&i.length>1&&o.call(i[0],r,(function(){for(u=1;u1?arguments[1]:void 0,g=void 0!==v,m=0,b=u(p);if(g&&(v=n(v,h>2?arguments[2]:void 0,2)),void 0==b||d==Array&&s(b))for(t=c(p.length),r=new d(t);t>m;m++)l(r,m,g?v(p[m],m):p[m]);else for(f=b.call(p),r=new d;!(a=f.next()).done;m++)l(r,m,g?i(f,v,[a.value,m],!0):a.value);return r.length=m,r}})},"54a1":function(e,t,r){r("6c1c"),r("1654"),e.exports=r("95d5")},"55dd":function(e,t,r){"use strict";var n=r("5ca1"),a=r("d8e8"),o=r("4bf8"),i=r("79e5"),s=[].sort,c=[1,2,3];n(n.P+n.F*(i((function(){c.sort(void 0)}))||!i((function(){c.sort(null)}))||!r("2f21")(s)),"Array",{sort:function(e){return void 0===e?s.call(o(this)):s.call(o(this),a(e))}})},"5f1b":function(e,t,r){"use strict";var n=r("23c6"),a=RegExp.prototype.exec;e.exports=function(e,t){var r=e.exec;if("function"===typeof r){var o=r.call(e,t);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==n(e))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(e,t)}},"774e":function(e,t,r){e.exports=r("d2d5")},"83a1":function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e===1/t:e!=e&&t!=t}},"95d5":function(e,t,r){var n=r("40c3"),a=r("5168")("iterator"),o=r("481b");e.exports=r("584a").isIterable=function(e){var t=Object(e);return void 0!==t[a]||"@@iterator"in t||o.hasOwnProperty(n(t))}},"978f":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",[r("el-form",{staticStyle:{"margin-top":"20px"},attrs:{inline:!0,model:e.searchForm}},[e._l(e.myColumns,(function(t){return r("el-form-item",{key:t.key,attrs:{label:t.lable}},[t.enSelectAble?r("el-select",{attrs:{clearable:""},model:{value:e.searchForm[t.key],callback:function(r){e.$set(e.searchForm,t.key,r)},expression:"searchForm[column.key]"}},e._l(t.selectList,(function(e){return r("el-option",{key:e,attrs:{label:e,value:e}})})),1):r("el-input",{attrs:{placeholder:t.lable,clearable:""},model:{value:e.searchForm[t.key],callback:function(r){e.$set(e.searchForm,t.key,r)},expression:"searchForm[column.key]"}})],1)})),r("el-form-item",[r("el-button",{attrs:{type:"primary"},on:{click:e.resetSearch}},[e._v("重置查询")]),r("el-button",{attrs:{type:"primary",loading:e.loading},on:{click:e.search}},[e._v("刷新")]),e._t("form",null,{data:e.selectData})],2)],2),r("el-scrollbar",{attrs:{"wrap-class":"collapse-scrollbar-wrapper",native:!1}},[r("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticStyle:{"margin-left":"5px"},attrs:{data:e.pageDataList,stripe:"",border:"","default-sort":{prop:e.columns[0].key,order:"ascending"}},on:{"sort-change":e.sortChange,"selection-change":e.handleSelectionChange}},[e.showSelect?r("el-table-column",{attrs:{type:"selection",width:"55"}}):e._e(),e.showPanel?r("el-table-column",{attrs:{type:"expand"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[e._t("table",null,{data:r})]}}],null,!0)}):e._e(),e._l(e.columns,(function(e){return r("el-table-column",{key:e.key,attrs:{prop:e.key,label:e.lable,width:e.width,sortable:"custom"}})}))],2)],1),r("div",{staticStyle:{margin:"20px"}},[r("el-pagination",{attrs:{"current-page":e.currentPage,"page-sizes":[10,20,50,100],"page-size":e.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:e.dataList.length},on:{"update:currentPage":function(t){e.currentPage=t},"update:current-page":function(t){e.currentPage=t},"update:pageSize":function(t){e.pageSize=t},"update:page-size":function(t){e.pageSize=t}}})],1)],1)])},a=[],o=(r("55dd"),r("a745")),i=r.n(o);function s(e){if(i()(e)){for(var t=0,r=new Array(e.length);t=0})))})),v["a"].isEmpty(this.sortKey)||t.sort((function(t,r){var n=-1;return null!=t[e.sortKey]&&(n=t[e.sortKey].localeCompare(r[e.sortKey])),n=e.sortOrderAsc?n:-n,n})),t},pageDataList:function(){var e=Math.min(this.dataList.length,(this.currentPage-1)*this.pageSize),t=Math.min(this.dataList.length,this.currentPage*this.pageSize),r=this.dataList.slice(e,t);return r}},methods:{setData:function(e){this.allDataList=e;var t=this.myColumns.filter((function(e){return e.enSelectAble}));t.forEach((function(t){t.selectList=e.map((function(e){return e[t.key]})).filter((function(e,t,r){return r.indexOf(e)===t}))}))},sortChange:function(e){this.sortKey=e.prop,this.sortOrderAsc="ascending"===e.order},searchOver:function(){this.loading=!1},resetSearch:function(){for(var e in this.searchForm)this.searchForm[e]=null},handleSelectionChange:function(e){this.selectData=e},getSelectData:function(){return h(this.selectData)},search:function(){this.loading=!0,this.resetSearch(),this.$emit("getData",this.setData,this.searchOver)}}},m=g,b=r("2877"),y=Object(b["a"])(m,n,a,!1,null,"40dbf056",null);t["a"]=y.exports},a745:function(e,t,r){e.exports=r("f410")},b0c5:function(e,t,r){"use strict";var n=r("520a");r("5ca1")({target:"RegExp",proto:!0,forced:n!==/./.exec},{exec:n})},c8bb:function(e,t,r){e.exports=r("54a1")},d2d5:function(e,t,r){r("1654"),r("549b"),e.exports=r("584a").Array.from},d516:function(e,t,r){},d547:function(e,t,r){"use strict";var n=1024,a=1024*n,o=1024*a;t["a"]={numberChangeHumanSee:function(e){return e>o?(e/o).toFixed(3)+"G":e>a?(e/a).toFixed(3)+"M":e>n?(e/a).toFixed(3)+"K":void 0},isEmpty:function(e){return"undefined"==typeof e||null==e||""==(e+"").trim()},mapToList:function(e){var t=[];for(var r in e)t.push({key:r,value:e[r]});return t}}},d622:function(e,t,r){"use strict";var n=r("d516"),a=r.n(n);a.a},f410:function(e,t,r){r("1af6"),e.exports=r("584a").Array.isArray}}]); -------------------------------------------------------------------------------- /spring-takeaway/spring-takeaway-boot-ui/src/main/resources/META-INF/spring-takeaway-ui/js/chunk-10dd38c8.aa18d112.js: -------------------------------------------------------------------------------- 1 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-10dd38c8"],{"0bfb":function(e,t,r){"use strict";var n=r("cb7c");e.exports=function(){var e=n(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"1af6":function(e,t,r){var n=r("63b6");n(n.S,"Array",{isArray:r("9003")})},"20fd":function(e,t,r){"use strict";var n=r("d9f6"),a=r("aebd");e.exports=function(e,t,r){t in e?n.f(e,t,a(0,r)):e[t]=r}},"214f":function(e,t,r){"use strict";r("b0c5");var n=r("2aba"),a=r("32e9"),o=r("79e5"),i=r("be13"),l=r("2b4c"),s=r("520a"),c=l("species"),u=!o((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2===r.length&&"a"===r[0]&&"b"===r[1]}();e.exports=function(e,t,r){var d=l(e),g=!o((function(){var t={};return t[d]=function(){return 7},7!=""[e](t)})),p=g?!o((function(){var t=!1,r=/a/;return r.exec=function(){return t=!0,null},"split"===e&&(r.constructor={},r.constructor[c]=function(){return r}),r[d](""),!t})):void 0;if(!g||!p||"replace"===e&&!u||"split"===e&&!f){var b=/./[d],h=r(i,d,""[e],(function(e,t,r,n,a){return t.exec===s?g&&!a?{done:!0,value:b.call(t,r,n)}:{done:!0,value:e.call(r,t,n)}:{done:!1}})),m=h[0],v=h[1];n(String.prototype,e,m),a(RegExp.prototype,d,2==t?function(e,t){return v.call(e,this,t)}:function(e){return v.call(e,this)})}}},"2f21":function(e,t,r){"use strict";var n=r("79e5");e.exports=function(e,t){return!!e&&n((function(){t?e.call(null,(function(){}),1):e.call(null)}))}},"386d":function(e,t,r){"use strict";var n=r("cb7c"),a=r("83a1"),o=r("5f1b");r("214f")("search",1,(function(e,t,r,i){return[function(r){var n=e(this),a=void 0==r?void 0:r[t];return void 0!==a?a.call(r,n):new RegExp(r)[t](String(n))},function(e){var t=i(r,e,this);if(t.done)return t.value;var l=n(e),s=String(this),c=l.lastIndex;a(c,0)||(l.lastIndex=0);var u=o(l,s);return a(l.lastIndex,c)||(l.lastIndex=c),null===u?-1:u.index}]}))},"3af9":function(e,t,r){},"520a":function(e,t,r){"use strict";var n=r("0bfb"),a=RegExp.prototype.exec,o=String.prototype.replace,i=a,l="lastIndex",s=function(){var e=/a/,t=/b*/g;return a.call(e,"a"),a.call(t,"a"),0!==e[l]||0!==t[l]}(),c=void 0!==/()??/.exec("")[1],u=s||c;u&&(i=function(e){var t,r,i,u,f=this;return c&&(r=new RegExp("^"+f.source+"$(?!\\s)",n.call(f))),s&&(t=f[l]),i=a.call(f,e),s&&i&&(f[l]=f.global?i.index+i[0].length:t),c&&i&&i.length>1&&o.call(i[0],r,(function(){for(u=1;u1?arguments[1]:void 0,h=void 0!==b,m=0,v=u(d);if(h&&(b=n(b,p>2?arguments[2]:void 0,2)),void 0==v||g==Array&&l(v))for(t=s(d.length),r=new g(t);t>m;m++)c(r,m,h?b(d[m],m):d[m]);else for(f=v.call(d),r=new g;!(a=f.next()).done;m++)c(r,m,h?i(f,b,[a.value,m],!0):a.value);return r.length=m,r}})},"54a1":function(e,t,r){r("6c1c"),r("1654"),e.exports=r("95d5")},"55dd":function(e,t,r){"use strict";var n=r("5ca1"),a=r("d8e8"),o=r("4bf8"),i=r("79e5"),l=[].sort,s=[1,2,3];n(n.P+n.F*(i((function(){s.sort(void 0)}))||!i((function(){s.sort(null)}))||!r("2f21")(l)),"Array",{sort:function(e){return void 0===e?l.call(o(this)):l.call(o(this),a(e))}})},"5cb0":function(e,t,r){"use strict";var n=r("3af9"),a=r.n(n);a.a},"5f1b":function(e,t,r){"use strict";var n=r("23c6"),a=RegExp.prototype.exec;e.exports=function(e,t){var r=e.exec;if("function"===typeof r){var o=r.call(e,t);if("object"!==typeof o)throw new TypeError("RegExp exec method returned something other than an Object or null");return o}if("RegExp"!==n(e))throw new TypeError("RegExp#exec called on incompatible receiver");return a.call(e,t)}},"774e":function(e,t,r){e.exports=r("d2d5")},"83a1":function(e,t){e.exports=Object.is||function(e,t){return e===t?0!==e||1/e===1/t:e!=e&&t!=t}},"95d5":function(e,t,r){var n=r("40c3"),a=r("5168")("iterator"),o=r("481b");e.exports=r("584a").isIterable=function(e){var t=Object(e);return void 0!==t[a]||"@@iterator"in t||o.hasOwnProperty(n(t))}},"978f":function(e,t,r){"use strict";var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",[r("div",[r("el-form",{staticStyle:{"margin-top":"20px"},attrs:{inline:!0,model:e.searchForm}},[e._l(e.myColumns,(function(t){return r("el-form-item",{key:t.key,attrs:{label:t.lable}},[t.enSelectAble?r("el-select",{attrs:{clearable:""},model:{value:e.searchForm[t.key],callback:function(r){e.$set(e.searchForm,t.key,r)},expression:"searchForm[column.key]"}},e._l(t.selectList,(function(e){return r("el-option",{key:e,attrs:{label:e,value:e}})})),1):r("el-input",{attrs:{placeholder:t.lable,clearable:""},model:{value:e.searchForm[t.key],callback:function(r){e.$set(e.searchForm,t.key,r)},expression:"searchForm[column.key]"}})],1)})),r("el-form-item",[r("el-button",{attrs:{type:"primary"},on:{click:e.resetSearch}},[e._v("重置查询")]),r("el-button",{attrs:{type:"primary",loading:e.loading},on:{click:e.search}},[e._v("刷新")]),e._t("form",null,{data:e.selectData})],2)],2),r("el-scrollbar",{attrs:{"wrap-class":"collapse-scrollbar-wrapper",native:!1}},[r("el-table",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}],staticStyle:{"margin-left":"5px"},attrs:{data:e.pageDataList,stripe:"",border:"","default-sort":{prop:e.columns[0].key,order:"ascending"}},on:{"sort-change":e.sortChange,"selection-change":e.handleSelectionChange}},[e.showSelect?r("el-table-column",{attrs:{type:"selection",width:"55"}}):e._e(),e.showPanel?r("el-table-column",{attrs:{type:"expand"},scopedSlots:e._u([{key:"default",fn:function(t){var r=t.row;return[e._t("table",null,{data:r})]}}],null,!0)}):e._e(),e._l(e.columns,(function(e){return r("el-table-column",{key:e.key,attrs:{prop:e.key,label:e.lable,width:e.width,sortable:"custom"}})}))],2)],1),r("div",{staticStyle:{margin:"20px"}},[r("el-pagination",{attrs:{"current-page":e.currentPage,"page-sizes":[10,20,50,100],"page-size":e.pageSize,layout:"total, sizes, prev, pager, next, jumper",total:e.dataList.length},on:{"update:currentPage":function(t){e.currentPage=t},"update:current-page":function(t){e.currentPage=t},"update:pageSize":function(t){e.pageSize=t},"update:page-size":function(t){e.pageSize=t}}})],1)],1)])},a=[],o=(r("55dd"),r("a745")),i=r.n(o);function l(e){if(i()(e)){for(var t=0,r=new Array(e.length);t=0})))})),b["a"].isEmpty(this.sortKey)||t.sort((function(t,r){var n=-1;return null!=t[e.sortKey]&&(n=t[e.sortKey].localeCompare(r[e.sortKey])),n=e.sortOrderAsc?n:-n,n})),t},pageDataList:function(){var e=Math.min(this.dataList.length,(this.currentPage-1)*this.pageSize),t=Math.min(this.dataList.length,this.currentPage*this.pageSize),r=this.dataList.slice(e,t);return r}},methods:{setData:function(e){this.allDataList=e;var t=this.myColumns.filter((function(e){return e.enSelectAble}));t.forEach((function(t){t.selectList=e.map((function(e){return e[t.key]})).filter((function(e,t,r){return r.indexOf(e)===t}))}))},sortChange:function(e){this.sortKey=e.prop,this.sortOrderAsc="ascending"===e.order},searchOver:function(){this.loading=!1},resetSearch:function(){for(var e in this.searchForm)this.searchForm[e]=null},handleSelectionChange:function(e){this.selectData=e},getSelectData:function(){return p(this.selectData)},search:function(){this.loading=!0,this.resetSearch(),this.$emit("getData",this.setData,this.searchOver)}}},m=h,v=r("2877"),y=Object(v["a"])(m,n,a,!1,null,"40dbf056",null);t["a"]=y.exports},a745:function(e,t,r){e.exports=r("f410")},b0c5:function(e,t,r){"use strict";var n=r("520a");r("5ca1")({target:"RegExp",proto:!0,forced:n!==/./.exec},{exec:n})},c8bb:function(e,t,r){e.exports=r("54a1")},d2d5:function(e,t,r){r("1654"),r("549b"),e.exports=r("584a").Array.from},d547:function(e,t,r){"use strict";var n=1024,a=1024*n,o=1024*a;t["a"]={numberChangeHumanSee:function(e){return e>o?(e/o).toFixed(3)+"G":e>a?(e/a).toFixed(3)+"M":e>n?(e/a).toFixed(3)+"K":void 0},isEmpty:function(e){return"undefined"==typeof e||null==e||""==(e+"").trim()},mapToList:function(e){var t=[];for(var r in e)t.push({key:r,value:e[r]});return t}}},f410:function(e,t,r){r("1af6"),e.exports=r("584a").Array.isArray},f9be:function(e,t,r){"use strict";r.r(t);var n=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{staticClass:"database-info"},[r("el-tabs",{attrs:{type:"border-card"}},[r("el-tab-pane",{attrs:{label:"表格信息"}},[r("all-sort-and-search-table",{attrs:{showPanel:"",showSelect:"",columns:e.tableColumns},on:{getData:e.getTableList},scopedSlots:e._u([{key:"table",fn:function(e){var t=e.data;return[r("sql-view",{attrs:{model:t}})]}},{key:"form",fn:function(t){var n=t.data;return[r("el-button",{attrs:{type:"primary",disabled:null==n||0===n.length},on:{click:function(){return e.getGeneratorTable(n)}}},[e._v("生成代码")])]}}])}),r("sql-generator-dialog",{ref:"SqlGeneratorDialog"})],1)],1)],1)},a=[],o=(r("96cf"),r("3b8d")),i=r("fe1c"),l=r("978f"),s=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("div",{directives:[{name:"loading",rawName:"v-loading",value:e.loading,expression:"loading"}]},[r("el-tabs",{attrs:{type:"border-card"}},[r("el-tab-pane",{attrs:{label:"表格信息"}},[e.loadingOver?r("all-sort-and-search-table",{attrs:{columns:e.fieldColumns},on:{getData:e.getFieldList}}):e._e()],1)],1)],1)},c=[],u={components:{AllSortAndSearchTable:l["a"]},name:"SqlView",props:{model:{type:Object}},data:function(){return{filedList:[],loading:!0,loadingOver:!1,fieldColumns:[{key:"fieldName",lable:"名称",width:230},{key:"dataType",lable:"数据类型",width:230,enSelectAble:!0},{key:"comment",lable:"备注"}]}},mounted:function(){this.getFieldInfo()},methods:{getFieldInfo:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.loading=!0,this.loadingOver=!1,e.prev=2,e.next=5,i["a"].getFieldInfo(this.model.tableName);case 5:this.filedList=e.sent;case 6:return e.prev=6,this.loading=!1,this.loadingOver=!0,e.finish(6);case 10:case"end":return e.stop()}}),e,this,[[2,,6,10]])})));function t(){return e.apply(this,arguments)}return t}(),getFieldList:function(e,t){e(this.filedList),t()}}},f=u,d=r("2877"),g=Object(d["a"])(f,s,c,!1,null,"bab5b200",null),p=g.exports,b=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("el-dialog",{attrs:{title:"提示",visible:e.dialogVisible,width:"70%"},on:{"update:visible":function(t){e.dialogVisible=t}}},[r("div",{attrs:{"v-loading":!e.defaultConfigInit}},[r("el-form",{ref:"form",attrs:{model:e.generatorConfig,"label-width":"150px"}},[r("el-form-item",{attrs:{label:"数据库url"}},[r("el-input",{attrs:{type:"textarea"},model:{value:e.generatorConfig.url,callback:function(t){e.$set(e.generatorConfig,"url",t)},expression:"generatorConfig.url"}})],1),r("el-form-item",{attrs:{label:"用户名"}},[r("el-input",{model:{value:e.generatorConfig.userName,callback:function(t){e.$set(e.generatorConfig,"userName",t)},expression:"generatorConfig.userName"}})],1),r("el-form-item",{attrs:{label:"密码"}},[r("el-input",{attrs:{type:"password"},model:{value:e.generatorConfig.password,callback:function(t){e.$set(e.generatorConfig,"password",t)},expression:"generatorConfig.password"}})],1),r("el-form-item",{attrs:{label:"JDBC驱动"}},[r("el-select",{staticStyle:{width:"100%"},attrs:{filterable:"","no-match-text":""},model:{value:e.generatorConfig.jdbcDrive,callback:function(t){e.$set(e.generatorConfig,"jdbcDrive",t)},expression:"generatorConfig.jdbcDrive"}},e._l(e.driverList,(function(e){return r("el-option",{key:e,attrs:{label:e,value:e}})})),1)],1),r("el-form-item",{attrs:{label:"表前缀"}},[r("el-input",{model:{value:e.generatorConfig.tablePrefix,callback:function(t){e.$set(e.generatorConfig,"tablePrefix",t)},expression:"generatorConfig.tablePrefix"}})],1),r("el-form-item",{attrs:{label:"字段前缀"}},[r("el-input",{model:{value:e.generatorConfig.fieldPrefix,callback:function(t){e.$set(e.generatorConfig,"fieldPrefix",t)},expression:"generatorConfig.fieldPrefix"}})],1),r("el-form-item",{attrs:{label:"作者"}},[r("el-input",{model:{value:e.generatorConfig.author,callback:function(t){e.$set(e.generatorConfig,"author",t)},expression:"generatorConfig.author"}})],1),r("el-form-item",{attrs:{label:"工程路径"}},[r("el-input",{attrs:{type:"textarea"},model:{value:e.generatorConfig.projectPath,callback:function(t){e.$set(e.generatorConfig,"projectPath",t)},expression:"generatorConfig.projectPath"}})],1),r("el-form-item",{attrs:{label:"公共包路径"}},[r("el-input",{model:{value:e.generatorConfig.packageParentName,callback:function(t){e.$set(e.generatorConfig,"packageParentName",t)},expression:"generatorConfig.packageParentName"}})],1),r("el-form-item",{attrs:{label:"其它选项"}},[r("el-checkbox",{model:{value:e.generatorConfig.entityLombokModel,callback:function(t){e.$set(e.generatorConfig,"entityLombokModel",t)},expression:"generatorConfig.entityLombokModel"}},[e._v("使用lombok")]),r("el-checkbox",{model:{value:e.generatorConfig.fileOverride,callback:function(t){e.$set(e.generatorConfig,"fileOverride",t)},expression:"generatorConfig.fileOverride"}},[e._v("覆盖已存在的文件")])],1)],1)],1),r("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[r("el-button",{on:{click:function(t){e.dialogVisible=!1}}},[e._v("取 消")]),r("el-button",{attrs:{type:"primary",loading:e.loading},on:{click:e.generatorCode}},[e._v("确 定")])],1)])},h=[],m=(r("8e6e"),r("ac6a"),r("456d"),r("bd86")),v=r("2f62");function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function x(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:0,n=/^[a-zA-Z_$][a-zA-Z0-9_$]*/;if(!n.test(e))throw new Error("".concat(e,"不符合JAVA名称规范"));r>0&&this.addImport("java.util.List");var a=["String","Integer","Double","Object"];a.indexOf(t)<0&&this.addImport(this._packageName+"."+e+"."+t);for(var i=0;i");this._javaFieldList.push({fieldName:e,fieldType:t})}},{key:"packageName",get:function(){return this._packageName}},{key:"className",get:function(){return this._className}},{key:"importList",get:function(){return this._importList}},{key:"javaFieldList",get:function(){return this._javaFieldList}}]),e}(),j=function(){function e(t,r,n){g(this,e),this._javaList=[];var a=new x(r,n);this._javaList.push(a),this.handleObject(t,a)}return y(e,[{key:"handleObject",value:function(e,t){for(var r in e){var n=e[r],a=l(n);if("string"===a)t.addFiled(r,"String");else if("number"===a)n|0===n?t.addFiled(r,"Integer"):t.addFiled(r,"Double");else if("object"===a)if(n instanceof Array){var i=1,o=n;while(null!=o&&o.length>0&&o[0]instanceof Array)i++,o=o[0];if(null==o||0===o.length)t.addFiled(r,"Object",i);else{var s=l(o[0]);if("string"===s)t.addFiled(r,"String",i);else if("number"===s)n|0===n?t.addFiled(r,"Integer",i):t.addFiled(r,"Double",i);else{var c=w(r);t.addFiled(r,w(r),i);var u=new x(t.packageName+"."+r,c);this._javaList.push(u),this.handleObject(o[0],u)}}}else{var f=w(r);t.addFiled(r,w(r));var d=new x(t.packageName+"."+r,f);this._javaList.push(d),this.handleObject(n,d)}}}},{key:"javaList",get:function(){return this._javaList}}]),e}();function C(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function O(e){for(var t=1;t!?|~^@]/,p=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function m(e){var t,r=!1,n=!1;while(null!=(t=e.next())){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function v(e,t,r){return n=e,a=r,t}function g(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=b(r),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return v("number","number");if("."==r&&e.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return v(r);if("="==r&&e.eat(">"))return v("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return v("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),v("number","number");if("/"==r)return e.eat("*")?(t.tokenize=h,h(e,t)):e.eat("/")?(e.skipToEnd(),v("comment","comment")):et(e,t,1)?(m(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),v("regexp","string-2")):(e.eat("="),v("operator","operator",e.current()));if("`"==r)return t.tokenize=k,k(e,t);if("#"==r)return e.skipToEnd(),v("error","error");if("<"==r&&e.match("!--")||"-"==r&&e.match("->"))return e.skipToEnd(),v("comment","comment");if(d.test(r))return">"==r&&t.lexical&&">"==t.lexical.type||(e.eat("=")?"!"!=r&&"="!=r||e.eat("="):/[<>*+\-]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),v("operator","operator",e.current());if(u.test(r)){e.eatWhile(u);var n=e.current();if("."!=t.lastType){if(f.propertyIsEnumerable(n)){var a=f[n];return v(a.type,a.style,n)}if("async"==n&&e.match(/^(\s|\/\*.*?\*\/)*[\[\(\w]/,!1))return v("async","keyword",n)}return v("variable","variable",n)}}function b(e){return function(t,r){var n,a=!1;if(s&&"@"==t.peek()&&t.match(p))return r.tokenize=g,v("jsonld-keyword","meta");while(null!=(n=t.next())){if(n==e&&!a)break;a=!a&&"\\"==n}return a||(r.tokenize=g),v("string","string")}}function h(e,t){var r,n=!1;while(r=e.next()){if("/"==r&&n){t.tokenize=g;break}n="*"==r}return v("comment","comment")}function k(e,t){var r,n=!1;while(null!=(r=e.next())){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=g;break}n=!n&&"\\"==r}return v("quasi","string-2",e.current())}var y="([{}])";function w(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(l){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var s=e.string.charAt(o),c=y.indexOf(s);if(c>=0&&c<3){if(!a){++o;break}if(0==--a){"("==s&&(i=!0);break}}else if(c>=3&&c<6)++a;else if(u.test(s))i=!0;else if(/["'\/`]/.test(s))for(;;--o){if(0==o)return;var f=e.string.charAt(o-1);if(f==s&&"\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}var x={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,"jsonld-keyword":!0};function j(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function C(e,t){for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function O(e,t,r,n,a){var i=e.cc;J.state=e,J.stream=a,J.marked=null,J.cc=i,J.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);while(1){var o=i.length?i.pop():c?R:G;if(o(r,n)){while(i.length&&i[i.length-1].lex)i.pop()();return J.marked?J.marked:"variable"==r&&C(e,n)?"variable-2":t}}}var J={state:null,column:null,marked:null,cc:null};function _(){for(var e=arguments.length-1;e>=0;e--)J.cc.push(arguments[e])}function T(){return _.apply(null,arguments),!0}function M(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function L(e){var t=J.state;if(J.marked="def",t.context)if("var"==t.lexical.info&&t.context&&t.context.block){var n=A(e,t.context);if(null!=n)return void(t.context=n)}else if(!M(e,t.localVars))return void(t.localVars=new E(e,t.localVars));r.globalVars&&!M(e,t.globalVars)&&(t.globalVars=new E(e,t.globalVars))}function A(e,t){if(t){if(t.block){var r=A(e,t.prev);return r?r==t.prev?t:new N(r,t.vars,!0):null}return M(e,t.vars)?t:new N(t.prev,new E(e,t.vars),!1)}return null}function V(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function N(e,t,r){this.prev=e,this.vars=t,this.block=r}function E(e,t){this.name=e,this.next=t}var $=new E("this",new E("arguments",null));function I(){J.state.context=new N(J.state.context,J.state.localVars,!1),J.state.localVars=$}function P(){J.state.context=new N(J.state.context,J.state.localVars,!0),J.state.localVars=null}function z(){J.state.localVars=J.state.context.vars,J.state.context=J.state.context.prev}function F(e,t){var r=function(){var r=J.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new j(n,J.stream.column(),e,null,r.lexical,t)};return r.lex=!0,r}function D(){var e=J.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function S(e){function t(r){return r==e?T():";"==e||"}"==r||")"==r||"]"==r?_():T(t)}return t}function G(e,t){return"var"==e?T(F("vardef",t),Ce,S(";"),D):"keyword a"==e?T(F("form"),Z,G,D):"keyword b"==e?T(F("form"),G,D):"keyword d"==e?J.stream.match(/^\s*$/,!1)?T():T(F("stat"),H,S(";"),D):"debugger"==e?T(S(";")):"{"==e?T(F("}"),P,fe,D,z):";"==e?T():"if"==e?("else"==J.state.lexical.info&&J.state.cc[J.state.cc.length-1]==D&&J.state.cc.pop()(),T(F("form"),Z,G,D,Le)):"function"==e?T(Ee):"for"==e?T(F("form"),Ae,G,D):"class"==e||l&&"interface"==t?(J.marked="keyword",T(F("form","class"==e?e:t),Fe,D)):"variable"==e?l&&"declare"==t?(J.marked="keyword",T(G)):l&&("module"==t||"enum"==t||"type"==t)&&J.stream.match(/^\s*\w/,!1)?(J.marked="keyword","enum"==t?T(Qe):"type"==t?T(Ie,S("operator"),ge,S(";")):T(F("form"),Oe,S("{"),F("}"),fe,D,D)):l&&"namespace"==t?(J.marked="keyword",T(F("form"),R,G,D)):l&&"abstract"==t?(J.marked="keyword",T(G)):T(F("stat"),ae):"switch"==e?T(F("form"),Z,S("{"),F("}","switch"),P,fe,D,D,z):"case"==e?T(R,S(":")):"default"==e?T(S(":")):"catch"==e?T(F("form"),I,q,G,D,z):"export"==e?T(F("stat"),qe,D):"import"==e?T(F("stat"),Ue,D):"async"==e?T(G):"@"==t?T(R,G):_(F("stat"),R,S(";"),D)}function q(e){if("("==e)return T(Pe,S(")"))}function R(e,t){return B(e,t,!1)}function U(e,t){return B(e,t,!0)}function Z(e){return"("!=e?_():T(F(")"),R,S(")"),D)}function B(e,t,r){if(J.state.fatArrowAt==J.stream.start){var n=r?ee:Y;if("("==e)return T(I,F(")"),le(Pe,")"),D,S("=>"),n,z);if("variable"==e)return _(I,Oe,S("=>"),n,z)}var a=r?K:W;return x.hasOwnProperty(e)?T(a):"function"==e?T(Ee,a):"class"==e||l&&"interface"==t?(J.marked="keyword",T(F("form"),ze,D)):"keyword c"==e||"async"==e?T(r?U:R):"("==e?T(F(")"),H,S(")"),D,a):"operator"==e||"spread"==e?T(r?U:R):"["==e?T(F("]"),Ke,D,a):"{"==e?ue(oe,"}",null,a):"quasi"==e?_(Q,a):"new"==e?T(te(r)):"import"==e?T(R):T()}function H(e){return e.match(/[;\}\)\],]/)?_():_(R)}function W(e,t){return","==e?T(R):K(e,t,!1)}function K(e,t,r){var n=0==r?W:K,a=0==r?R:U;return"=>"==e?T(I,r?ee:Y,z):"operator"==e?/\+\+|--/.test(t)||l&&"!"==t?T(n):l&&"<"==t&&J.stream.match(/^([^>]|<.*?>)*>\s*\(/,!1)?T(F(">"),le(ge,">"),D,n):"?"==t?T(R,S(":"),a):T(a):"quasi"==e?_(Q,n):";"!=e?"("==e?ue(U,")","call",n):"."==e?T(ie,n):"["==e?T(F("]"),H,S("]"),D,n):l&&"as"==t?(J.marked="keyword",T(ge,n)):"regexp"==e?(J.state.lastType=J.marked="operator",J.stream.backUp(J.stream.pos-J.stream.start-1),T(a)):void 0:void 0}function Q(e,t){return"quasi"!=e?_():"${"!=t.slice(t.length-2)?T(Q):T(R,X)}function X(e){if("}"==e)return J.marked="string-2",J.state.tokenize=k,T(Q)}function Y(e){return w(J.stream,J.state),_("{"==e?G:R)}function ee(e){return w(J.stream,J.state),_("{"==e?G:U)}function te(e){return function(t){return"."==t?T(e?ne:re):"variable"==t&&l?T(we,e?K:W):_(e?U:R)}}function re(e,t){if("target"==t)return J.marked="keyword",T(W)}function ne(e,t){if("target"==t)return J.marked="keyword",T(K)}function ae(e){return":"==e?T(D,G):_(W,S(";"),D)}function ie(e){if("variable"==e)return J.marked="property",T()}function oe(e,t){return"async"==e?(J.marked="property",T(oe)):"variable"==e||"keyword"==J.style?(J.marked="property","get"==t||"set"==t?T(se):(l&&J.state.fatArrowAt==J.stream.start&&(r=J.stream.match(/^\s*:\s*/,!1))&&(J.state.fatArrowAt=J.stream.pos+r[0].length),T(ce))):"number"==e||"string"==e?(J.marked=s?"property":J.style+" property",T(ce)):"jsonld-keyword"==e?T(ce):l&&V(t)?(J.marked="keyword",T(oe)):"["==e?T(R,de,S("]"),ce):"spread"==e?T(U,ce):"*"==t?(J.marked="keyword",T(oe)):":"==e?_(ce):void 0;var r}function se(e){return"variable"!=e?_(ce):(J.marked="property",T(Ee))}function ce(e){return":"==e?T(U):"("==e?_(Ee):void 0}function le(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=J.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),T((function(r,n){return r==t||n==t?_():_(e)}),n)}return a==t||i==t?T():r&&r.indexOf(";")>-1?_(e):T(S(t))}return function(r,a){return r==t||a==t?T():_(e,n)}}function ue(e,t,r){for(var n=3;n"),ge):void 0}function be(e){if("=>"==e)return T(ge)}function he(e,t){return"variable"==e||"keyword"==J.style?(J.marked="property",T(he)):"?"==t||"number"==e||"string"==e?T(he):":"==e?T(ge):"["==e?T(S("variable"),pe,S("]"),he):"("==e?_($e,he):void 0}function ke(e,t){return"variable"==e&&J.stream.match(/^\s*[?:]/,!1)||"?"==t?T(ke):":"==e?T(ge):"spread"==e?T(ke):_(ge)}function ye(e,t){return"<"==t?T(F(">"),le(ge,">"),D,ye):"|"==t||"."==e||"&"==t?T(ge):"["==e?T(ge,S("]"),ye):"extends"==t||"implements"==t?(J.marked="keyword",T(ge)):"?"==t?T(ge,S(":"),ge):void 0}function we(e,t){if("<"==t)return T(F(">"),le(ge,">"),D,ye)}function xe(){return _(ge,je)}function je(e,t){if("="==t)return T(ge)}function Ce(e,t){return"enum"==t?(J.marked="keyword",T(Qe)):_(Oe,de,Te,Me)}function Oe(e,t){return l&&V(t)?(J.marked="keyword",T(Oe)):"variable"==e?(L(t),T()):"spread"==e?T(Oe):"["==e?ue(_e,"]"):"{"==e?ue(Je,"}"):void 0}function Je(e,t){return"variable"!=e||J.stream.match(/^\s*:/,!1)?("variable"==e&&(J.marked="property"),"spread"==e?T(Oe):"}"==e?_():"["==e?T(R,S("]"),S(":"),Je):T(S(":"),Oe,Te)):(L(t),T(Te))}function _e(){return _(Oe,Te)}function Te(e,t){if("="==t)return T(U)}function Me(e){if(","==e)return T(Ce)}function Le(e,t){if("keyword b"==e&&"else"==t)return T(F("form","else"),G,D)}function Ae(e,t){return"await"==t?T(Ae):"("==e?T(F(")"),Ve,D):void 0}function Ve(e){return"var"==e?T(Ce,Ne):"variable"==e?T(Ne):_(Ne)}function Ne(e,t){return")"==e?T():";"==e?T(Ne):"in"==t||"of"==t?(J.marked="keyword",T(R,Ne)):_(R,Ne)}function Ee(e,t){return"*"==t?(J.marked="keyword",T(Ee)):"variable"==e?(L(t),T(Ee)):"("==e?T(I,F(")"),le(Pe,")"),D,me,G,z):l&&"<"==t?T(F(">"),le(xe,">"),D,Ee):void 0}function $e(e,t){return"*"==t?(J.marked="keyword",T($e)):"variable"==e?(L(t),T($e)):"("==e?T(I,F(")"),le(Pe,")"),D,me,z):l&&"<"==t?T(F(">"),le(xe,">"),D,$e):void 0}function Ie(e,t){return"keyword"==e||"variable"==e?(J.marked="type",T(Ie)):"<"==t?T(F(">"),le(xe,">"),D):void 0}function Pe(e,t){return"@"==t&&T(R,Pe),"spread"==e?T(Pe):l&&V(t)?(J.marked="keyword",T(Pe)):l&&"this"==e?T(de,Te):_(Oe,de,Te)}function ze(e,t){return"variable"==e?Fe(e,t):De(e,t)}function Fe(e,t){if("variable"==e)return L(t),T(De)}function De(e,t){return"<"==t?T(F(">"),le(xe,">"),D,De):"extends"==t||"implements"==t||l&&","==e?("implements"==t&&(J.marked="keyword"),T(l?ge:R,De)):"{"==e?T(F("}"),Se,D):void 0}function Se(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||l&&V(t))&&J.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(J.marked="keyword",T(Se)):"variable"==e||"keyword"==J.style?(J.marked="property",T(l?Ge:Ee,Se)):"number"==e||"string"==e?T(l?Ge:Ee,Se):"["==e?T(R,de,S("]"),l?Ge:Ee,Se):"*"==t?(J.marked="keyword",T(Se)):l&&"("==e?_($e,Se):";"==e||","==e?T(Se):"}"==e?T():"@"==t?T(R,Se):void 0}function Ge(e,t){if("?"==t)return T(Ge);if(":"==e)return T(ge,Te);if("="==t)return T(U);var r=J.state.lexical.prev,n=r&&"interface"==r.info;return _(n?$e:Ee)}function qe(e,t){return"*"==t?(J.marked="keyword",T(We,S(";"))):"default"==t?(J.marked="keyword",T(R,S(";"))):"{"==e?T(le(Re,"}"),We,S(";")):_(G)}function Re(e,t){return"as"==t?(J.marked="keyword",T(S("variable"))):"variable"==e?_(U,Re):void 0}function Ue(e){return"string"==e?T():"("==e?_(R):_(Ze,Be,We)}function Ze(e,t){return"{"==e?ue(Ze,"}"):("variable"==e&&L(t),"*"==t&&(J.marked="keyword"),T(He))}function Be(e){if(","==e)return T(Ze,Be)}function He(e,t){if("as"==t)return J.marked="keyword",T(Ze)}function We(e,t){if("from"==t)return J.marked="keyword",T(R)}function Ke(e){return"]"==e?T():_(le(U,"]"))}function Qe(){return _(F("form"),Oe,S("{"),F("}"),le(Xe,"}"),D,D)}function Xe(){return _(Oe,Te)}function Ye(e,t){return"operator"==e.lastType||","==e.lastType||d.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function et(e,t,r){return t.tokenize==g&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return z.lex=!0,D.lex=!0,{startState:function(e){var t={tokenize:g,lastType:"sof",cc:[],lexical:new j((e||0)-i,0,"block",!1),localVars:r.localVars,context:r.localVars&&new N(null,null,!1),indented:e||0};return r.globalVars&&"object"==typeof r.globalVars&&(t.globalVars=r.globalVars),t},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),w(e,t)),t.tokenize!=h&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",O(t,r,n,a,e))},indent:function(t,n){if(t.tokenize==h)return e.Pass;if(t.tokenize!=g)return 0;var a,s=n&&n.charAt(0),c=t.lexical;if(!/^\s*else\b/.test(n))for(var l=t.cc.length-1;l>=0;--l){var u=t.cc[l];if(u==D)c=c.prev;else if(u!=Le)break}while(("stat"==c.type||"form"==c.type)&&("}"==s||(a=t.cc[t.cc.length-1])&&(a==W||a==K)&&!/^[,\.=+\-*:?[\(]/.test(n)))c=c.prev;o&&")"==c.type&&"stat"==c.prev.type&&(c=c.prev);var f=c.type,d=s==f;return"vardef"==f?c.indented+("operator"==t.lastType||","==t.lastType?c.info.length+1:0):"form"==f&&"{"==s?c.indented:"form"==f?c.indented+i:"stat"==f?c.indented+(Ye(t,n)?o||i:0):"switch"!=c.info||d||0==r.doubleIndentSwitch?c.align?c.column+(d?0:1):c.indented+(d?0:i):c.indented+(/^(?:case|default)\b/.test(n)?i:2*i)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:c?null:"/*",blockCommentEnd:c?null:"*/",blockCommentContinue:c?null:" * ",lineComment:c?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:c?"json":"javascript",jsonldMode:s,jsonMode:c,expressionAllowed:et,skipExpression:function(e){var t=e.cc[e.cc.length-1];t!=R&&t!=U||e.cc.pop()}}})),e.registerHelper("wordChars","javascript",/[\w$]/),e.defineMIME("text/javascript","javascript"),e.defineMIME("text/ecmascript","javascript"),e.defineMIME("application/javascript","javascript"),e.defineMIME("application/x-javascript","javascript"),e.defineMIME("application/ecmascript","javascript"),e.defineMIME("application/json",{name:"javascript",json:!0}),e.defineMIME("application/x-json",{name:"javascript",json:!0}),e.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),e.defineMIME("text/typescript",{name:"javascript",typescript:!0}),e.defineMIME("application/typescript",{name:"javascript",typescript:!0})}))}}]); --------------------------------------------------------------------------------