├── codegen-ui
├── static
│ ├── .gitkeep
│ └── css
│ │ └── default.css
├── src
│ ├── components
│ │ └── .gitkeep
│ ├── assets
│ │ ├── theme
│ │ │ ├── theme-green
│ │ │ │ ├── form-item.css
│ │ │ │ ├── menu-item.css
│ │ │ │ ├── submenu.css
│ │ │ │ ├── tab-pane.css
│ │ │ │ ├── button-group.css
│ │ │ │ ├── checkbox-group.css
│ │ │ │ ├── collapse-item.css
│ │ │ │ ├── dropdown-item.css
│ │ │ │ ├── dropdown-menu.css
│ │ │ │ ├── radio-button.css
│ │ │ │ ├── radio-group.css
│ │ │ │ ├── breadcrumb-item.css
│ │ │ │ ├── menu-item-group.css
│ │ │ │ ├── fonts
│ │ │ │ │ ├── element-icons.ttf
│ │ │ │ │ └── element-icons.woff
│ │ │ │ ├── steps.css
│ │ │ │ ├── option-group.css
│ │ │ │ ├── card.css
│ │ │ │ ├── rate.css
│ │ │ │ ├── spinner.css
│ │ │ │ ├── badge.css
│ │ │ │ ├── carousel-item.css
│ │ │ │ ├── option.css
│ │ │ │ ├── row.css
│ │ │ │ ├── collapse.css
│ │ │ │ ├── breadcrumb.css
│ │ │ │ ├── scrollbar.css
│ │ │ │ ├── alert.css
│ │ │ │ ├── select-dropdown.css
│ │ │ │ ├── loading.css
│ │ │ │ ├── message.css
│ │ │ │ ├── notification.css
│ │ │ │ ├── dialog.css
│ │ │ │ ├── form.css
│ │ │ │ ├── tree.css
│ │ │ │ ├── tag.css
│ │ │ │ ├── carousel.css
│ │ │ │ ├── progress.css
│ │ │ │ ├── switch.css
│ │ │ │ ├── popover.css
│ │ │ │ ├── icon.css
│ │ │ │ ├── step.css
│ │ │ │ ├── tooltip.css
│ │ │ │ ├── checkbox.css
│ │ │ │ └── reset.css
│ │ │ └── theme-darkblue
│ │ │ │ ├── form-item.css
│ │ │ │ ├── menu-item.css
│ │ │ │ ├── radio-group.css
│ │ │ │ ├── submenu.css
│ │ │ │ ├── tab-pane.css
│ │ │ │ ├── breadcrumb-item.css
│ │ │ │ ├── button-group.css
│ │ │ │ ├── checkbox-group.css
│ │ │ │ ├── collapse-item.css
│ │ │ │ ├── dropdown-item.css
│ │ │ │ ├── dropdown-menu.css
│ │ │ │ ├── menu-item-group.css
│ │ │ │ ├── radio-button.css
│ │ │ │ ├── fonts
│ │ │ │ ├── element-icons.ttf
│ │ │ │ └── element-icons.woff
│ │ │ │ ├── steps.css
│ │ │ │ ├── option-group.css
│ │ │ │ ├── card.css
│ │ │ │ ├── rate.css
│ │ │ │ ├── spinner.css
│ │ │ │ ├── badge.css
│ │ │ │ ├── carousel-item.css
│ │ │ │ ├── option.css
│ │ │ │ ├── row.css
│ │ │ │ ├── collapse.css
│ │ │ │ ├── breadcrumb.css
│ │ │ │ ├── scrollbar.css
│ │ │ │ ├── alert.css
│ │ │ │ ├── select-dropdown.css
│ │ │ │ ├── loading.css
│ │ │ │ ├── message.css
│ │ │ │ ├── notification.css
│ │ │ │ ├── dialog.css
│ │ │ │ ├── form.css
│ │ │ │ ├── tree.css
│ │ │ │ ├── tag.css
│ │ │ │ ├── carousel.css
│ │ │ │ ├── progress.css
│ │ │ │ ├── switch.css
│ │ │ │ ├── popover.css
│ │ │ │ ├── icon.css
│ │ │ │ ├── step.css
│ │ │ │ ├── tooltip.css
│ │ │ │ ├── checkbox.css
│ │ │ │ └── reset.css
│ │ ├── bg1.jpg
│ │ ├── logo.png
│ │ ├── logo4.png
│ │ ├── user.png
│ │ └── sw-footer-sprite1.png
│ ├── styles
│ │ └── vars.scss
│ ├── api
│ │ ├── index.js
│ │ └── api.js
│ ├── mock
│ │ ├── index.js
│ │ └── data
│ │ │ └── user.js
│ ├── views
│ │ ├── nav2
│ │ │ └── Page5.vue
│ │ ├── nav3
│ │ │ └── Page6.vue
│ │ ├── Main.vue
│ │ ├── 404.vue
│ │ └── nav1
│ │ │ ├── user.vue
│ │ │ └── FormTest.vue
│ ├── vuex
│ │ ├── getters.js
│ │ ├── actions.js
│ │ └── store.js
│ ├── App.vue
│ ├── main.js
│ ├── routes.js
│ └── common
│ │ └── js
│ │ └── util.js
├── build
│ ├── logo.png
│ ├── vue-loader.conf.js
│ ├── build.js
│ ├── check-versions.js
│ ├── webpack.base.conf.js
│ ├── webpack.v2.conf.js
│ ├── webpack.dev.conf.js
│ ├── webpack.remote.conf.js
│ └── utils.js
├── config
│ ├── prod.env.js
│ ├── dev.env.js
│ ├── remote.env.js
│ └── version.env.js
├── .babelrc
├── .editorconfig
├── .gitignore
├── .postcssrc.js
├── index.html
├── README.md
└── package.json
├── codegen-common
├── src
│ ├── main
│ │ └── java
│ │ │ └── cn
│ │ │ └── springcloud
│ │ │ └── codegen
│ │ │ ├── utils
│ │ │ ├── ProjectConfigHelper.java
│ │ │ └── ProjectConfig.java
│ │ │ └── annotation
│ │ │ ├── CodeGenPlugin.java
│ │ │ └── CodeGenCube.java
│ └── test
│ │ └── java
│ │ └── cn
│ │ └── springcloud
│ │ └── codegen
│ │ └── AppTest.java
└── pom.xml
├── codegen-config
├── src
│ ├── main
│ │ └── java
│ │ │ └── cn
│ │ │ └── springcloud
│ │ │ └── codegen
│ │ │ └── App.java
│ └── test
│ │ └── java
│ │ └── cn
│ │ └── springcloud
│ │ └── codegen
│ │ └── AppTest.java
└── pom.xml
├── codegen-engine
├── src
│ ├── main
│ │ ├── java
│ │ │ └── cn
│ │ │ │ └── springcloud
│ │ │ │ └── codegen
│ │ │ │ └── engine
│ │ │ │ ├── service
│ │ │ │ ├── ExtendService.java
│ │ │ │ ├── ClassService.java
│ │ │ │ ├── OutFileService.java
│ │ │ │ └── TemplateConfigService.java
│ │ │ │ ├── tools
│ │ │ │ ├── CommonTools.java
│ │ │ │ ├── MapTools.java
│ │ │ │ ├── ObjectCopyValueToVoTools.java
│ │ │ │ ├── ClassTools.java
│ │ │ │ ├── JsonTools.java
│ │ │ │ ├── TransforParamTools.java
│ │ │ │ ├── FileTools.java
│ │ │ │ └── ReadXmlFileTools.java
│ │ │ │ ├── generator
│ │ │ │ ├── CodeGenForDataBaseGenerator.java
│ │ │ │ └── CodeGenExtendGenerator.java
│ │ │ │ ├── exception
│ │ │ │ ├── CodeGenFileException.java
│ │ │ │ └── CodeGenException.java
│ │ │ │ ├── entity
│ │ │ │ ├── DependenciesGav.java
│ │ │ │ ├── InputParams.java
│ │ │ │ ├── ConfigParams.java
│ │ │ │ ├── CodeOutType.java
│ │ │ │ ├── BaseInputParams.java
│ │ │ │ └── InputParamsContext.java
│ │ │ │ ├── thread
│ │ │ │ └── CodeGenPool.java
│ │ │ │ ├── config
│ │ │ │ └── FileConfig.java
│ │ │ │ ├── constants
│ │ │ │ └── CodeGenConstants.java
│ │ │ │ └── component
│ │ │ │ └── CodeGenComponent.java
│ │ └── resources
│ │ │ └── log4j.properties
│ └── test
│ │ ├── resources
│ │ └── templates
│ │ │ ├── eureka
│ │ │ ├── resources
│ │ │ │ └── application.properties.ftl
│ │ │ └── java
│ │ │ │ └── EurekaApplication.java.ftl
│ │ │ ├── config
│ │ │ ├── resources
│ │ │ │ └── application.properties.ftl
│ │ │ ├── java
│ │ │ │ └── ConfigApplication.java.ftl
│ │ │ └── pom.xml.ftl
│ │ │ ├── feign
│ │ │ └── java
│ │ │ │ └── UserServiceFeignClient.java.ftl
│ │ │ └── xml_config
│ │ │ ├── feign_component_xml.xml
│ │ │ ├── config_component_xml.xml
│ │ │ └── eureka_component_xml.xml
│ │ └── java
│ │ └── cn
│ │ └── springcloud
│ │ └── codegen
│ │ └── engine
│ │ ├── FeignCodeGenTest.java
│ │ ├── feign
│ │ ├── FeignPomDataGenerator.java
│ │ ├── FeignDataGenerator.java
│ │ └── FeignFileGenerator.java
│ │ ├── EurekaForInputParamsCodeGenConfigTest.java
│ │ └── ConfigForInputParamsCodeGenConfigTest.java
└── pom.xml
├── codegen-web
└── src
│ └── main
│ ├── java
│ └── cn
│ │ └── springcloud
│ │ └── codegen
│ │ ├── SmartCodeGenApplication.java
│ │ └── config
│ │ └── EnableSwaggerConfig.java
│ └── resources
│ ├── application.properties
│ └── logback.xml
├── .gitignore
└── codegen-docs
└── pom.xml
/codegen-ui/static/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/components/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/form-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/menu-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/radio-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/submenu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/tab-pane.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/collapse-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/radio-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/radio-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/button-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/checkbox-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/collapse-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/dropdown-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/dropdown-menu.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/radio-button.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/breadcrumb-item.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/menu-item-group.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/codegen-ui/src/styles/vars.scss:
--------------------------------------------------------------------------------
1 | $color-primary: #20a0ff;//#18c79c
--------------------------------------------------------------------------------
/codegen-ui/src/api/index.js:
--------------------------------------------------------------------------------
1 | import * as api from './api';
2 |
3 | export default api;
--------------------------------------------------------------------------------
/codegen-ui/src/mock/index.js:
--------------------------------------------------------------------------------
1 | import mock from './mock';
2 |
3 | export default mock;
4 |
--------------------------------------------------------------------------------
/codegen-ui/src/views/nav2/Page5.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/codegen-ui/src/views/nav3/Page6.vue:
--------------------------------------------------------------------------------
1 |
2 |
4 |
--------------------------------------------------------------------------------
/codegen-ui/build/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/build/logo.png
--------------------------------------------------------------------------------
/codegen-ui/config/prod.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | module.exports = {
3 | NODE_ENV: '"production"'
4 | }
5 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/bg1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/bg1.jpg
--------------------------------------------------------------------------------
/codegen-ui/src/vuex/getters.js:
--------------------------------------------------------------------------------
1 | //test
2 | export const getCount = state => {
3 | return state.count
4 | }
5 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/logo.png
--------------------------------------------------------------------------------
/codegen-ui/src/assets/logo4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/logo4.png
--------------------------------------------------------------------------------
/codegen-ui/src/assets/user.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/user.png
--------------------------------------------------------------------------------
/codegen-ui/src/assets/sw-footer-sprite1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/sw-footer-sprite1.png
--------------------------------------------------------------------------------
/codegen-ui/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": [
3 | ["env", {
4 | "modules": false
5 | }],
6 | "stage-2"
7 | ],
8 | "plugins": ["transform-runtime"]
9 | }
10 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/theme/theme-green/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/theme/theme-green/fonts/element-icons.woff
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/fonts/element-icons.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/theme/theme-darkblue/fonts/element-icons.ttf
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/fonts/element-icons.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/SpringCloud/codegen/HEAD/codegen-ui/src/assets/theme/theme-darkblue/fonts/element-icons.woff
--------------------------------------------------------------------------------
/codegen-ui/src/vuex/actions.js:
--------------------------------------------------------------------------------
1 | //test
2 | export const increment = ({commit}) => {
3 | commit('INCREMENT')
4 | }
5 | export const decrement = ({commit}) => {
6 | commit('DECREMENT')
7 | }
8 |
--------------------------------------------------------------------------------
/codegen-ui/config/dev.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/codegen-common/src/main/java/cn/springcloud/codegen/utils/ProjectConfigHelper.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.utils;
2 |
3 | /**
4 | * @author xujin
5 | */
6 | public class ProjectConfigHelper {
7 |
8 | }
9 |
--------------------------------------------------------------------------------
/codegen-ui/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | [*]
4 | charset = utf-8
5 | indent_style = space
6 | indent_size = 2
7 | end_of_line = lf
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
--------------------------------------------------------------------------------
/codegen-ui/config/remote.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/codegen-ui/config/version.env.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const merge = require('webpack-merge')
3 | const prodEnv = require('./prod.env')
4 |
5 | module.exports = merge(prodEnv, {
6 | NODE_ENV: '"development"'
7 | })
8 |
--------------------------------------------------------------------------------
/codegen-ui/src/views/Main.vue:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/codegen-common/src/main/java/cn/springcloud/codegen/annotation/CodeGenPlugin.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.annotation;
2 |
3 | /**
4 | * 代码生成器插件
5 | * @author xujin
6 | */
7 | public @interface CodeGenPlugin {
8 | }
9 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-steps.is-horizontal{white-space:nowrap}.el-steps.is-horizontal.is-center{text-align:center}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/steps.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-steps{font-size:0}.el-steps>:last-child .el-step__line{display:none}.el-steps.is-horizontal{white-space:nowrap}.el-steps.is-horizontal.is-center{text-align:center}
--------------------------------------------------------------------------------
/codegen-ui/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | /dist/
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 |
8 | # Editor directories and files
9 | .idea
10 | .vscode
11 | *.suo
12 | *.ntvs*
13 | *.njsproj
14 | *.sln
15 |
--------------------------------------------------------------------------------
/codegen-common/src/main/java/cn/springcloud/codegen/annotation/CodeGenCube.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.annotation;
2 |
3 | /**
4 | * 代码生成器CodeGenCube注解,代码生成器由一个个Cube(立方体组成)
5 | * @author xujin
6 | */
7 | public @interface CodeGenCube {
8 | }
9 |
--------------------------------------------------------------------------------
/codegen-ui/.postcssrc.js:
--------------------------------------------------------------------------------
1 | // https://github.com/michael-ciniawsky/postcss-load-config
2 |
3 | module.exports = {
4 | "plugins": {
5 | // to edit target browsers: use "browserslist" field in package.json
6 | "postcss-import": {},
7 | "autoprefixer": {}
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/codegen-ui/src/views/404.vue:
--------------------------------------------------------------------------------
1 |
2 | 404 page not found
3 |
4 |
5 |
--------------------------------------------------------------------------------
/codegen-config/src/main/java/cn/springcloud/codegen/App.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen;
2 |
3 | /**
4 | * Hello world!
5 | *
6 | */
7 | public class App
8 | {
9 | public static void main( String[] args )
10 | {
11 | System.out.println( "Hello World!" );
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/option-group.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-group{margin:0;padding:0}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select-group__wrap{list-style:none;margin:0;padding:0}.el-select-group__title{padding-left:10px;font-size:12px;color:#999;height:30px;line-height:30px}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/service/ExtendService.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.service;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * @author Vincent.
7 | * @createdOn 2018/01/27 15:24
8 | */
9 | public interface ExtendService {
10 |
11 | Map getExtendData();
12 | }
13 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/tools/CommonTools.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.tools;
2 |
3 | /**
4 | * Created with IntelliJ IDEA.
5 | *
6 | * @author: zzf
7 | * @date: 2018/1/18
8 | * @time: 11:26
9 | * @description : 公共方法存放类
10 | */
11 | public class CommonTools {
12 |
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/eureka/resources/application.properties.ftl:
--------------------------------------------------------------------------------
1 | spring.application.name=${serviceName}
2 | server.port=8761
3 |
4 | eureka.client.register-with-eureka=false
5 | ## 由于注册中心的职责就是维护服务的实例, 它并不需要去检查服务, 所以也设置为false
6 | eureka.client.fetch-registry=false
7 | eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-card{border:1px solid rgb(209, 219, 229);border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid rgb(209, 219, 229);box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/card.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-card{border:1px solid rgb(209, 229, 227);border-radius:4px;background-color:#fff;overflow:hidden;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-card__header{padding:18px 20px;border-bottom:1px solid rgb(209, 229, 227);box-sizing:border-box}.el-card__body{padding:20px}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/generator/CodeGenForDataBaseGenerator.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.generator;
2 |
3 | /**
4 | * Created with IntelliJ IDEA.
5 | *
6 | * @author: zzf
7 | * @date: 2018/1/17
8 | * @time: 18:27
9 | * @description : 数据库的代码生成器
10 | */
11 | public class CodeGenForDataBaseGenerator {
12 |
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/service/ClassService.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.service;
2 |
3 | /**
4 | * Created with IntelliJ IDEA.
5 | *
6 | * @author: zzf
7 | * @date: 2018/1/18
8 | * @time: 11:08
9 | * @description : 类的服务, 主要是完成类的
10 | */
11 | public interface ClassService {
12 |
13 | String getModuleName();
14 |
15 | String getPackageName();
16 | }
17 |
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/config/resources/application.properties.ftl:
--------------------------------------------------------------------------------
1 | spring.application.name=${serviceName}
2 | server.port=8762
3 |
4 | # 换成实际开发地址即可
5 | spring.cloud.config.server.git.uri=https://gitee.com/zhongzunfa/spring-cloud-config.git
6 |
7 | # 下面三个参数根据实际情况配置
8 | # spring.cloud.config.server.git.username=
9 | # spring.cloud.config.server.git.password=
10 | # spring.cloud.config.server.git.search-paths=
11 |
--------------------------------------------------------------------------------
/codegen-engine/src/test/java/cn/springcloud/codegen/engine/FeignCodeGenTest.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine;
2 |
3 | import cn.springcloud.codegen.engine.feign.FeignAssemblyGenerator;
4 |
5 | /**
6 | * @author Vincent.
7 | * @createdOn 2018/01/27 20:57
8 | */
9 | public class FeignCodeGenTest {
10 |
11 | public static void main(String[] args) {
12 | new FeignAssemblyGenerator().execute(null);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/service/OutFileService.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.service;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * Created with IntelliJ IDEA.
7 | *
8 | * @author: zzf
9 | * @date: 2018/1/17
10 | * @time: 16:08
11 | * @description : 输出文件接口
12 | */
13 | public interface OutFileService {
14 |
15 | String getDynamicOutPath();
16 |
17 | String getFileName();
18 |
19 | String getFileType();
20 | }
21 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/service/TemplateConfigService.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.service;
2 |
3 | import java.util.Map;
4 |
5 | /**
6 | * Created with IntelliJ IDEA.
7 | *
8 | * @author: zzf
9 | * @date: 2018/1/17
10 | * @time: 15:58
11 | * @description : 模板配置的接口
12 | */
13 | public interface TemplateConfigService {
14 |
15 | String getTemplateDir();
16 |
17 | String getTemplateName();
18 |
19 | Map getData();
20 | }
21 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:rgb(191, 217, 214);transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/rate.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-rate__icon,.el-rate__item{position:relative;display:inline-block}.el-rate{height:20px;line-height:1}.el-rate__item{font-size:0;vertical-align:middle}.el-rate__icon{font-size:18px;margin-right:6px;color:rgb(191, 203, 217);transition:.3s}.el-rate__decimal,.el-rate__icon .path2{position:absolute;top:0;left:0}.el-rate__icon.hover{-ms-transform:scale(1.15);transform:scale(1.15)}.el-rate__decimal{display:inline-block;overflow:hidden}.el-rate__text{font-size:14px;vertical-align:middle}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/spinner.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-time-spinner{width:100%;white-space:nowrap}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;width:50px;height:50px}.el-spinner-inner .path{stroke:#ececec;stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}100%{stroke-dasharray:90,150;stroke-dashoffset:-124}}
--------------------------------------------------------------------------------
/codegen-web/src/main/java/cn/springcloud/codegen/SmartCodeGenApplication.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen;
2 |
3 |
4 | import org.springframework.boot.autoconfigure.SpringBootApplication;
5 | import org.springframework.boot.builder.SpringApplicationBuilder;
6 |
7 | /**
8 | * 代码生成器主程序入口
9 | * @author xujin
10 | */
11 | @SpringBootApplication
12 | public class SmartCodeGenApplication {
13 | public static void main(String[] args) {
14 | new SpringApplicationBuilder(SmartCodeGenApplication.class).web(true).run(args);
15 | }
16 | }
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/config/java/ConfigApplication.java.ftl:
--------------------------------------------------------------------------------
1 | package ${packageName};
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.config.server.EnableConfigServer;
6 |
7 | @EnableConfigServer
8 | @SpringBootApplication
9 | public class ConfigApplication {
10 | public static void main(String[] args) {
11 | new SpringApplicationBuilder(ConfigApplication.class).web(true).run(args);
12 | }
13 | }
--------------------------------------------------------------------------------
/codegen-ui/src/vuex/store.js:
--------------------------------------------------------------------------------
1 | import Vue from 'vue'
2 | import Vuex from 'vuex'
3 | import * as actions from './actions'
4 | import * as getters from './getters'
5 |
6 | Vue.use(Vuex)
7 |
8 | // 应用初始状态
9 | const state = {
10 | count: 10
11 | }
12 |
13 | // 定义所需的 mutations
14 | const mutations = {
15 | INCREMENT(state) {
16 | state.count++
17 | },
18 | DECREMENT(state) {
19 | state.count--
20 | }
21 | }
22 |
23 | // 创建 store 实例
24 | export default new Vuex.Store({
25 | actions,
26 | getters,
27 | state,
28 | mutations
29 | })
--------------------------------------------------------------------------------
/codegen-web/src/main/resources/application.properties:
--------------------------------------------------------------------------------
1 | # Spring cloud config
2 | spring.application.name=codegen-web
3 | server.port=3333
4 |
5 | # Swagger config
6 | swagger.service.base.package=cn.springcloud.codegen
7 | swagger.service.description=CodeGen
8 | swagger.service.version=1.0.0
9 | swagger.service.license=Apache License 2.0
10 | swagger.service.license.url=http://www.apache.org/licenses/LICENSE-2.0
11 | swagger.service.contact.name=Software_King@qq.com
12 | swagger.service.contact.url=https://github.com/venusteam/codegen
13 | swagger.service.contact.email=Software_King@qq.com
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/badge.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-badge{position:relative;vertical-align:middle;display:inline-block}.el-badge__content{background-color:#ff4949;border-radius:10px;color:#fff;display:inline-block;font-size:12px;height:18px;line-height:18px;padding:0 6px;text-align:center;white-space:nowrap;border:1px solid #fff}.el-badge__content.is-dot{width:8px;height:8px;padding:0;right:0;border-radius:50%}.el-badge__content.is-fixed{top:0;right:10px;position:absolute;-ms-transform:translateY(-50%) translateX(100%);transform:translateY(-50%) translateX(100%)}.el-badge__content.is-fixed.is-dot{right:5px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/carousel-item.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;transition:.4s ease-in-out;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/generator/CodeGenExtendGenerator.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.generator;
2 |
3 | import cn.springcloud.codegen.engine.service.ExtendService;
4 |
5 | import java.util.Map;
6 |
7 | /**
8 | * @author Vincent.
9 | * @createdOn 2018/01/27 15:52
10 | */
11 | public abstract class CodeGenExtendGenerator implements ExtendService {
12 |
13 | @Override
14 | public abstract Map getExtendData();
15 |
16 | /**
17 | * 扩展数据作用文件标识,可用作将改数据作用到指定文件上
18 | * @return
19 | */
20 | public abstract String targetIdentifier();
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/carousel-item.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__item,.el-carousel__mask{position:absolute;height:100%;top:0;left:0}.el-carousel__item{width:100%;display:inline-block;transition:.4s ease-in-out;overflow:hidden;z-index:0}.el-carousel__item.is-active{z-index:2}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:1}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:2}.el-carousel__mask{width:100%;background-color:#fff;opacity:.24;transition:.2s}
--------------------------------------------------------------------------------
/codegen-ui/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | spring-cloud-codegen-ui
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/codegen-ui/build/vue-loader.conf.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const utils = require('./utils')
3 | const config = require('../config')
4 | const isProduction = process.env.NODE_ENV === 'production'
5 | const sourceMapEnabled = isProduction
6 | ? config.build.productionSourceMap
7 | : config.dev.cssSourceMap
8 |
9 | module.exports = {
10 | loaders: utils.cssLoaders({
11 | sourceMap: sourceMapEnabled,
12 | extract: isProduction
13 | }),
14 | cssSourceMap: sourceMapEnabled,
15 | cacheBusting: config.dev.cacheBusting,
16 | transformToRequire: {
17 | video: ['src', 'poster'],
18 | source: 'src',
19 | img: 'src',
20 | image: 'xlink:href'
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/codegen-ui/src/mock/data/user.js:
--------------------------------------------------------------------------------
1 | import Mock from 'mockjs';
2 | const LoginUsers = [
3 | {
4 | id: 1,
5 | username: 'admin',
6 | password: '123456',
7 | avatar: 'https://raw.githubusercontent.com/taylorchen709/markdown-images/master/vueadmin/user.png',
8 | name: 'BINGTEAM'
9 | }
10 | ];
11 |
12 | const Users = [];
13 |
14 | for (let i = 0; i < 86; i++) {
15 | Users.push(Mock.mock({
16 | id: Mock.Random.guid(),
17 | name: Mock.Random.cname(),
18 | addr: Mock.mock('@county(true)'),
19 | 'age|18-60': 1,
20 | birth: Mock.Random.date(),
21 | sex: Mock.Random.integer(0, 1)
22 | }));
23 | }
24 |
25 | export { LoginUsers, Users };
26 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/resources/log4j.properties:
--------------------------------------------------------------------------------
1 | log4j.rootLogger=debug, stdout, R
2 |
3 | log4j.appender.stdout=org.apache.log4j.ConsoleAppender
4 | log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5 |
6 | # Pattern to output the caller's file name and line number.
7 | log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
8 |
9 | log4j.appender.R=org.apache.log4j.RollingFileAppender
10 | log4j.appender.R.File=codegen.log
11 |
12 | log4j.appender.R.MaxFileSize=100KB
13 | # Keep one backup file
14 | log4j.appender.R.MaxBackupIndex=1
15 |
16 | log4j.appender.R.layout=org.apache.log4j.PatternLayout
17 | log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgb(72, 87, 106);height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.hover{background-color:rgb(228, 232, 241)}.el-select-dropdown__item.selected{color:#fff;background-color:#1d8ce0}.el-select-dropdown__item.selected.hover{background-color:rgb(26, 123, 197)}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:rgb(191, 203, 217);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/option.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown__item{font-size:14px;padding:8px 10px;position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:rgb(72, 106, 103);height:36px;line-height:1.5;box-sizing:border-box;cursor:pointer}.el-select-dropdown__item.hover{background-color:rgb(228, 241, 241)}.el-select-dropdown__item.selected{color:#fff;background-color:#18c79c}.el-select-dropdown__item.selected.hover{background-color:rgb(21, 175, 137)}.el-select-dropdown__item span{line-height:1.5!important}.el-select-dropdown__item.is-disabled{color:rgb(191, 217, 214);cursor:not-allowed}.el-select-dropdown__item.is-disabled:hover{background-color:#fff}
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/feign/java/UserServiceFeignClient.java.ftl:
--------------------------------------------------------------------------------
1 | package ${packageName};
2 |
3 | import org.springframework.cloud.netflix.feign.FeignClient;
4 | import org.springframework.web.bind.annotation.PathVariable;
5 | import org.springframework.web.bind.annotation.RequestMapping;
6 | import org.springframework.web.bind.annotation.RequestMethod;
7 |
8 | @FeignClient(name = "user-service")
9 | public interface UserServiceFeignClient {
10 |
11 | @RequestMapping(method = RequestMethod.GET, value = "/api/v2/users/{userId}", headers = {"Content-Type=application/json"})
12 | String getUserName(@PathVariable("userId") final String userId) throws Exception;
13 |
14 | }
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/exception/CodeGenFileException.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.exception;
2 |
3 | import javax.annotation.processing.FilerException;
4 |
5 | /**
6 | * Created with IntelliJ IDEA.
7 | *
8 | * @author: zzf
9 | * @date: 2018/1/17
10 | * @time: 16:17
11 | * @description : 模板文件和生成文件异常
12 | */
13 | public class CodeGenFileException extends Exception {
14 |
15 | private static final long serialVersionUID = 206605161158992130L;
16 |
17 | public CodeGenFileException(String message){
18 | super(message);
19 | }
20 |
21 | public CodeGenFileException(String message, Throwable cause){
22 | super(message, cause);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row{position:relative;box-sizing:border-box}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/row.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-row:after,.el-row:before{display:table;content:""}.el-row:after{clear:both}.el-row{position:relative;box-sizing:border-box}.el-row--flex{display:-ms-flexbox;display:flex}.el-row--flex:after,.el-row--flex:before{display:none}.el-row--flex.is-align-bottom{-ms-flex-align:end;align-items:flex-end}.el-row--flex.is-align-middle{-ms-flex-align:center;align-items:center}.el-row--flex.is-justify-space-around{-ms-flex-pack:distribute;justify-content:space-around}.el-row--flex.is-justify-space-between{-ms-flex-pack:justify;justify-content:space-between}.el-row--flex.is-justify-end{-ms-flex-pack:end;justify-content:flex-end}.el-row--flex.is-justify-center{-ms-flex-pack:center;justify-content:center}
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/eureka/java/EurekaApplication.java.ftl:
--------------------------------------------------------------------------------
1 | package ${packageName};
2 |
3 | import org.springframework.boot.autoconfigure.SpringBootApplication;
4 | import org.springframework.boot.builder.SpringApplicationBuilder;
5 | import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
6 | <#if classImportKey?exists>
7 | <#list classImportKey as model>
8 | import ${model}
9 | #list>
10 | #if>
11 |
12 | @SpringBootApplication
13 | @EnableEurekaServer
14 | <#if classAnnotationKey?exists>
15 | <#list classAnnotationKey as model>
16 | ${model}
17 | #list>
18 | #if>
19 | public class EurekaApplication {
20 | public static void main(String[] args) {
21 | new SpringApplicationBuilder(EurekaApplication.class).web(true).run(args);
22 | }
23 | }
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/collapse.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-collapse{border:1px solid rgb(223, 230, 236);border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:rgb(72, 87, 106);cursor:pointer;border-bottom:1px solid rgb(223, 230, 236);font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:rgb(250, 253, 254);overflow:hidden;box-sizing:border-box;border-bottom:1px solid rgb(223, 230, 236)}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:rgb(31, 45, 61);line-height:1.769230769230769}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/collapse.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-collapse{border:1px solid rgb(223, 236, 234);border-radius:0}.el-collapse-item:last-child{margin-bottom:-1px}.el-collapse-item.is-active>.el-collapse-item__header .el-collapse-item__header__arrow{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-collapse-item__header{height:43px;line-height:43px;padding-left:15px;background-color:#fff;color:rgb(72, 106, 103);cursor:pointer;border-bottom:1px solid rgb(223, 236, 234);font-size:13px}.el-collapse-item__header__arrow{margin-right:8px;transition:transform .3s}.el-collapse-item__wrap{will-change:height;background-color:rgb(250, 254, 253);overflow:hidden;box-sizing:border-box;border-bottom:1px solid rgb(223, 236, 234)}.el-collapse-item__content{padding:10px 15px;font-size:13px;color:rgb(31, 61, 57);line-height:1.769230769230769}
--------------------------------------------------------------------------------
/codegen-ui/src/api/api.js:
--------------------------------------------------------------------------------
1 | import axios from 'axios';
2 |
3 | let base = '';
4 |
5 | export const requestLogin = params => { return axios.post(`${base}/login`, params).then(res => res.data); };
6 |
7 | export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); };
8 |
9 | export const getUserListPage = params => { return axios.get(`${base}/user/listpage`, { params: params }); };
10 |
11 | export const removeUser = params => { return axios.get(`${base}/user/remove`, { params: params }); };
12 |
13 | export const batchRemoveUser = params => { return axios.get(`${base}/user/batchremove`, { params: params }); };
14 |
15 | export const editUser = params => { return axios.get(`${base}/user/edit`, { params: params }); };
16 |
17 | export const addUser = params => { return axios.get(`${base}/user/add`, { params: params }); };
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 8px;color:rgb(191, 203, 217)}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:rgb(151, 168, 190);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:rgb(72, 87, 106)}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#1d8ce0;cursor:pointer}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/breadcrumb.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-breadcrumb{font-size:13px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{display:table;content:""}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{margin:0 8px;color:rgb(191, 217, 214)}.el-breadcrumb__item{float:left}.el-breadcrumb__item:last-child .el-breadcrumb__item__inner,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__item__inner:hover{color:rgb(151, 190, 187);cursor:text}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-breadcrumb__item__inner,.el-breadcrumb__item__inner a{transition:color .15s linear;color:rgb(72, 106, 103)}.el-breadcrumb__item__inner a:hover,.el-breadcrumb__item__inner:hover{color:#18c79c;cursor:pointer}
--------------------------------------------------------------------------------
/codegen-common/src/test/java/cn/springcloud/codegen/AppTest.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen;
2 |
3 | import junit.framework.Test;
4 | import junit.framework.TestCase;
5 | import junit.framework.TestSuite;
6 |
7 | /**
8 | * Unit test for simple App.
9 | */
10 | public class AppTest
11 | extends TestCase
12 | {
13 | /**
14 | * Create the test case
15 | *
16 | * @param testName name of the test case
17 | */
18 | public AppTest( String testName )
19 | {
20 | super( testName );
21 | }
22 |
23 | /**
24 | * @return the suite of tests being tested
25 | */
26 | public static Test suite()
27 | {
28 | return new TestSuite( AppTest.class );
29 | }
30 |
31 | /**
32 | * Rigourous Test :-)
33 | */
34 | public void testApp()
35 | {
36 | assertTrue( true );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/codegen-config/src/test/java/cn/springcloud/codegen/AppTest.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen;
2 |
3 | import junit.framework.Test;
4 | import junit.framework.TestCase;
5 | import junit.framework.TestSuite;
6 |
7 | /**
8 | * Unit test for simple App.
9 | */
10 | public class AppTest
11 | extends TestCase
12 | {
13 | /**
14 | * Create the test case
15 | *
16 | * @param testName name of the test case
17 | */
18 | public AppTest( String testName )
19 | {
20 | super( testName );
21 | }
22 |
23 | /**
24 | * @return the suite of tests being tested
25 | */
26 | public static Test suite()
27 | {
28 | return new TestSuite( AppTest.class );
29 | }
30 |
31 | /**
32 | * Rigourous Test :-)
33 | */
34 | public void testApp()
35 | {
36 | assertTrue( true );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/scrollbar.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/scrollbar.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-scrollbar{overflow:hidden;position:relative}.el-scrollbar:active .el-scrollbar__bar,.el-scrollbar:focus .el-scrollbar__bar,.el-scrollbar:hover .el-scrollbar__bar{opacity:1;transition:opacity 340ms ease-out}.el-scrollbar__wrap{overflow:scroll}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{width:0;height:0}.el-scrollbar__thumb{position:relative;display:block;width:0;height:0;cursor:pointer;border-radius:inherit;background-color:rgba(151,168,190,.3);transition:.3s background-color}.el-scrollbar__thumb:hover{background-color:rgba(151,168,190,.5)}.el-scrollbar__bar{position:absolute;right:2px;bottom:2px;z-index:1;border-radius:4px;opacity:0;transition:opacity 120ms ease-out}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar__bar.is-vertical{width:6px;top:2px}.el-scrollbar__bar.is-vertical>div{width:100%}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/entity/DependenciesGav.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.entity;
2 |
3 | /**
4 | * @author Vincent.
5 | * @createdOn 2018/01/27 17:50
6 | */
7 | public class DependenciesGav {
8 |
9 | private String groupId;
10 |
11 | private String artifactId;
12 |
13 | private String version;
14 |
15 | public String getGroupId() {
16 | return groupId;
17 | }
18 |
19 | public void setGroupId(String groupId) {
20 | this.groupId = groupId;
21 | }
22 |
23 | public String getArtifactId() {
24 | return artifactId;
25 | }
26 |
27 | public void setArtifactId(String artifactId) {
28 | this.artifactId = artifactId;
29 | }
30 |
31 | public String getVersion() {
32 | return version;
33 | }
34 |
35 | public void setVersion(String version) {
36 | this.version = version;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/codegen-engine/src/test/resources/templates/xml_config/feign_component_xml.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | D:\\spring-cloud-codegene-test
6 | java
7 | UserServiceFeignClient
8 | UserServiceFeignClient.java.ftl
9 | templates/feign/java/
10 | feign
11 | cn.springcloud.codegen.component.feign
12 | CodeGenConstants.DEFAULT_ENCODE
13 |
14 |
15 | cn.springcloud.codegen.component.feign
16 |
17 |
18 | CodeOutType.JAVA
19 |
20 |
21 |
--------------------------------------------------------------------------------
/codegen-common/src/main/java/cn/springcloud/codegen/utils/ProjectConfig.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.utils;
2 |
3 | import java.io.*;
4 |
5 |
6 | /**
7 | * @author xujin
8 | */
9 | public class ProjectConfig implements Serializable {
10 |
11 |
12 | /**
13 | * 使用序列化方式深度克隆项目配置模型
14 | * @return
15 | * @throws IOException
16 | * @throws ClassNotFoundException
17 | */
18 | public ProjectConfig deepClone() throws IOException, ClassNotFoundException {
19 | ProjectConfig dc = null;
20 | ByteArrayOutputStream baos = new ByteArrayOutputStream();
21 | ObjectOutputStream oos = new ObjectOutputStream(baos);
22 | oos.writeObject(this);
23 | oos.close();
24 |
25 | ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
26 | ObjectInputStream bis = new ObjectInputStream(bais);
27 | dc = (ProjectConfig)bis.readObject();
28 | return dc;
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/alert.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-alert{width:100%;padding:8px 16px;margin:0;box-sizing:border-box;border-radius:4px;position:relative;background-color:#fff;overflow:hidden;color:#fff;opacity:1;display:table;transition:opacity .2s}.el-alert .el-alert__description{color:#fff;font-size:12px;margin:5px 0 0}.el-alert--success{background-color:#13ce66}.el-alert--info{background-color:#50bfff}.el-alert--warning{background-color:#f7ba2a}.el-alert--error{background-color:#ff4949}.el-alert__content{display:table-cell;padding:0 8px}.el-alert__icon{font-size:16px;width:16px;display:table-cell;color:#fff;vertical-align:middle}.el-alert__icon.is-big{font-size:28px;width:28px}.el-alert__title{font-size:13px;line-height:18px}.el-alert__title.is-bold{font-weight:700}.el-alert__closebtn{font-size:12px;color:#fff;opacity:1;top:12px;right:15px;position:absolute;cursor:pointer}.el-alert__closebtn.is-customed{font-style:normal;font-size:13px;top:9px}.el-alert-fade-enter,.el-alert-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown{position:absolute;z-index:1001;border:1px solid rgb(209, 219, 229);border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#1d8ce0;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:rgb(228, 232, 241)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/select-dropdown.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-select-dropdown{position:absolute;z-index:1001;border:1px solid rgb(209, 229, 227);border-radius:2px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);box-sizing:border-box;margin:5px 0}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected{color:#18c79c;background-color:#fff}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected.hover{background-color:rgb(228, 241, 241)}.el-select-dropdown.is-multiple .el-select-dropdown__item.selected::after{position:absolute;right:10px;font-family:element-icons;content:"\E608";font-size:11px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.el-select-dropdown__empty{padding:10px 0;margin:0;text-align:center;color:#999;font-size:14px}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{list-style:none;padding:6px 0;margin:0;box-sizing:border-box}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/exception/CodeGenException.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.exception;
2 |
3 | /**
4 | * Created with IntelliJ IDEA.
5 | *
6 | * @author: zzf
7 | * @date: 2018/1/17
8 | * @time: 15:50
9 | * @description : 生成异常类
10 | */
11 | public class CodeGenException extends RuntimeException {
12 |
13 | private static final long serialVersionUID = 1776723636365101508L;
14 | private String code;
15 | private String msg;
16 |
17 | public CodeGenException(String message){
18 | super(message);
19 | }
20 |
21 | public CodeGenException(String message, Throwable cause){
22 | super(message, cause);
23 | }
24 |
25 | public CodeGenException(String code, String msg) {
26 | super(msg);
27 | this.code = code;
28 | this.msg = msg;
29 | }
30 |
31 | public String getCode() {
32 | return code;
33 | }
34 |
35 | public String getMsg() {
36 | return msg;
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/codegen-ui/README.md:
--------------------------------------------------------------------------------
1 | # spring-cloud-codegen-ui
2 |
3 | > ui source for codegen
4 |
5 | **demo**: [http://start.springcloud.cn](http://start.springcloud.cn)
6 |
7 | # To start
8 |
9 | This is a project template for [vue-cli](https://github.com/vuejs/vue-cli)
10 |
11 | ``` bash
12 | # install dependencies
13 | npm install
14 | ```
15 |
16 | ### serve with hot reload at localhost:7777
17 | ```shell
18 | # by api: http://127.0.0.1:3333
19 | npm run dev
20 | ```
21 | 配置Hosts:
22 | 127.0.0.1 localhost
23 |
24 | ### serve with hot reload at localhost:8888
25 | ```shell
26 | # by api: http://codegen.smartscity.com/api/v1/swagger-ui.html
27 | npm run remote
28 | ```
29 |
30 | ### serve with hot reload at localhost:9999
31 | ```shell
32 | # by api: http://codegen.smartscity.com/api/v2/swagger-ui.html
33 | #edit v1 to v2
34 | vim src/views/nav1/Form.vue
35 | replaceAll /v1/ to /v2/
36 | npm run v2
37 | ```
38 |
39 |
40 | ### build for production with minification
41 | ```shell
42 | npm run build
43 |
44 | ```
45 |
46 |
--------------------------------------------------------------------------------
/codegen-common/pom.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 | codegen
5 | cn.springcloud.codegen
6 | 1.0.0
7 |
8 | 4.0.0
9 |
10 | codegen-common
11 | jar
12 |
13 | codegen-common
14 | http://maven.apache.org
15 |
16 |
17 | UTF-8
18 |
19 |
20 |
21 |
22 | junit
23 | junit
24 | 3.8.1
25 | test
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/codegen-config/pom.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 | codegen
5 | cn.springcloud.codegen
6 | 1.0.0
7 |
8 | 4.0.0
9 |
10 | codegen-config
11 | jar
12 |
13 | codegen-config
14 | http://maven.apache.org
15 |
16 |
17 | UTF-8
18 |
19 |
20 |
21 |
22 | junit
23 | junit
24 | 3.8.1
25 | test
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Output Directory
2 | bin/
3 | target/
4 | tmp/
5 |
6 | # C pre-compile
7 | *.gch
8 | *.pch
9 |
10 | # C compile
11 | *.a
12 | *.o
13 | *.ko
14 | *.la
15 | *.lo
16 | *.obj
17 | *.elf
18 | *.so
19 | *.so.*
20 | *.dylib
21 | *.exe
22 | *.lib
23 | *.dll
24 | *.out
25 | *.app
26 | *.hex
27 |
28 | # Debug files
29 | *.dSYM/
30 |
31 | # Java
32 | *.class
33 |
34 | # Java Package Files
35 | *.jar
36 | *.war
37 | *.ear
38 |
39 | # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
40 | hs_err_pid*
41 |
42 | # Zip Files
43 | *.rar
44 | *.zip
45 | *.7z
46 | *.tar
47 | *.gz
48 |
49 | # Ant
50 | #build/
51 |
52 | # Compiled Python
53 | __pycache__/
54 | *.py[cod]
55 | *py.class
56 |
57 | # Eclipse
58 | .settings/
59 | .classpath
60 | .project
61 |
62 |
63 | # IntelliJ, based on http://devnet.jetbrains.net/docs/DOC-1186
64 | .idea/
65 | *.iml
66 |
67 | # logs and trace
68 | *.log
69 | *.trace
70 | *.dat
71 |
72 | # vi swap
73 | *.swp
74 |
75 | # Backup Files
76 | *.bak
77 | *.old
78 |
79 | # SVN metadata
80 | .svn/
81 |
82 |
83 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#1d8ce0;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#1d8ce0;stroke-linecap:round}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/loading.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-loading-mask{position:absolute;z-index:10000;background-color:rgba(255,255,255,.9);margin:0;top:0;right:0;bottom:0;left:0;transition:opacity .3s}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:-25px}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{width:50px;height:50px}.el-loading-spinner{top:50%;margin-top:-21px;width:100%;text-align:center;position:absolute}.el-loading-spinner .el-loading-text{color:#18c79c;margin:3px 0;font-size:14px}.el-loading-spinner .circular{width:42px;height:42px;animation:loading-rotate 2s linear infinite}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:#18c79c;stroke-linecap:round}.el-loading-fade-enter,.el-loading-fade-leave-active{opacity:0}@keyframes loading-rotate{100%{transform:rotate(360deg)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}100%{stroke-dasharray:90,150;stroke-dashoffset:-120px}}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px}.el-message__group p{font-size:14px;margin:0 34px 0 0;white-space:nowrap;color:rgb(131, 165, 162);text-align:justify}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:rgb(191, 217, 214);font-size:14px}.el-message__closeBtn:hover{color:rgb(151, 190, 187)}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/message.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-message{box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);min-width:300px;padding:10px 12px;box-sizing:border-box;border-radius:2px;position:fixed;left:50%;top:20px;-ms-transform:translateX(-50%);transform:translateX(-50%);background-color:#fff;transition:opacity .3s,transform .4s;overflow:hidden}.el-message .el-icon-circle-check{color:#13ce66}.el-message .el-icon-circle-cross{color:#ff4949}.el-message .el-icon-information{color:#50bfff}.el-message .el-icon-warning{color:#f7ba2a}.el-message__group{margin-left:38px;position:relative;height:20px;line-height:20px}.el-message__group p{font-size:14px;margin:0 34px 0 0;white-space:nowrap;color:rgb(131, 145, 165);text-align:justify}.el-message__group.is-with-icon{margin-left:0}.el-message__img{width:40px;height:40px;position:absolute;left:0;top:0}.el-message__icon{vertical-align:middle;margin-right:8px}.el-message__closeBtn{top:3px;right:0;position:absolute;cursor:pointer;color:rgb(191, 203, 217);font-size:14px}.el-message__closeBtn:hover{color:rgb(151, 168, 190)}.el-message-fade-enter,.el-message-fade-leave-active{opacity:0;-ms-transform:translate(-50%,-100%);transform:translate(-50%,-100%)}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:rgb(31, 61, 57);margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:rgb(131, 165, 162);text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:rgb(191, 217, 214);font-size:14px}.el-notification__closeBtn:hover{color:rgb(151, 190, 187)}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/notification.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-notification{width:330px;padding:20px;box-sizing:border-box;border-radius:2px;position:fixed;right:16px;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12),0 0 6px rgba(0,0,0,.04);transition:opacity .3s,transform .3s,right .3s,top .4s;overflow:hidden}.el-notification .el-icon-circle-check{color:#13ce66}.el-notification .el-icon-circle-cross{color:#ff4949}.el-notification .el-icon-information{color:#50bfff}.el-notification .el-icon-warning{color:#f7ba2a}.el-notification__group{margin-left:0}.el-notification__group.is-with-icon{margin-left:55px}.el-notification__title{font-weight:400;font-size:16px;color:rgb(31, 45, 61);margin:0}.el-notification__content{font-size:14px;line-height:21px;margin:10px 0 0;color:rgb(131, 145, 165);text-align:justify}.el-notification__icon{width:40px;height:40px;font-size:40px;float:left;position:relative;top:3px}.el-notification__closeBtn{top:20px;right:20px;position:absolute;cursor:pointer;color:rgb(191, 203, 217);font-size:14px}.el-notification__closeBtn:hover{color:rgb(151, 168, 190)}.el-notification-fade-enter{-ms-transform:translateX(100%);transform:translateX(100%);right:0}.el-notification-fade-leave-active{opacity:0}
--------------------------------------------------------------------------------
/codegen-engine/src/test/java/cn/springcloud/codegen/engine/feign/FeignPomDataGenerator.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.feign;
2 |
3 | import cn.springcloud.codegen.engine.constants.CodeGenConstants;
4 | import cn.springcloud.codegen.engine.entity.DependenciesGav;
5 | import cn.springcloud.codegen.engine.generator.CodeGenExtendGenerator;
6 | import cn.springcloud.codegen.engine.service.ExtendService;
7 |
8 | import java.util.HashMap;
9 | import java.util.Map;
10 |
11 | /**
12 | * @author Vincent.
13 | * @createdOn 2018/01/27 21:14
14 | */
15 | public class FeignPomDataGenerator extends CodeGenExtendGenerator {
16 |
17 | @Override
18 | public Map getExtendData() {
19 | Map extendData = new HashMap();
20 | DependenciesGav gavDependencies = new DependenciesGav();
21 | gavDependencies.setArtifactId("spring-cloud-starter-feign");
22 | gavDependencies.setGroupId("org.springframework.cloud");
23 | extendData.put(CodeGenConstants.POM_DEPENDENCY_KEY, gavDependencies);
24 | return extendData;
25 | }
26 |
27 | @Override
28 | public String targetIdentifier() {
29 | return "pom";
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/codegen-ui/build/build.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | require('./check-versions')()
3 |
4 | process.env.NODE_ENV = 'production'
5 |
6 | const ora = require('ora')
7 | const rm = require('rimraf')
8 | const path = require('path')
9 | const chalk = require('chalk')
10 | const webpack = require('webpack')
11 | const config = require('../config')
12 | const webpackConfig = require('./webpack.prod.conf')
13 |
14 | const spinner = ora('building for production...')
15 | spinner.start()
16 |
17 | rm(path.join(config.build.assetsRoot, config.build.assetsSubDirectory), err => {
18 | if (err) throw err
19 | webpack(webpackConfig, (err, stats) => {
20 | spinner.stop()
21 | if (err) throw err
22 | process.stdout.write(stats.toString({
23 | colors: true,
24 | modules: false,
25 | children: false,
26 | chunks: false,
27 | chunkModules: false
28 | }) + '\n\n')
29 |
30 | if (stats.hasErrors()) {
31 | console.log(chalk.red(' Build failed with errors.\n'))
32 | process.exit(1)
33 | }
34 |
35 | console.log(chalk.cyan(' Build complete.\n'))
36 | console.log(chalk.yellow(
37 | ' Tip: built files are meant to be served over an HTTP server.\n' +
38 | ' Opening index.html over file:// won\'t work.\n'
39 | ))
40 | })
41 | })
42 |
--------------------------------------------------------------------------------
/codegen-docs/pom.xml:
--------------------------------------------------------------------------------
1 |
3 |
4 | codegen
5 | cn.springcloud.codegen
6 | 1.0.0
7 |
8 | 4.0.0
9 |
10 | codegen-docs
11 |
12 | Maven
13 | http://maven.apache.org/
14 | 2001
15 |
16 |
17 |
18 | website
19 | scp://webhost.company.com/www/website
20 |
21 |
22 |
23 |
24 | UTF-8
25 |
26 |
27 |
28 |
29 |
30 | maven-site-plugin
31 |
32 | en,fr
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/codegen-ui/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
21 |
22 |
71 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 0}.el-dialog__close{cursor:pointer;color:rgb(191, 217, 214)}.el-dialog__close:hover{color:#18c79c}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:rgb(31, 61, 57)}.el-dialog__body{padding:30px 20px;color:rgb(72, 106, 103);font-size:14px}.el-dialog__headerbtn{float:right}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/dialog.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.v-modal-enter{animation:v-modal-in .2s ease}.v-modal-leave{animation:v-modal-out .2s ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{100%{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:.5;background:#000}.el-dialog{position:absolute;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);background:#fff;border-radius:2px;box-shadow:0 1px 3px rgba(0,0,0,.3);box-sizing:border-box}.el-dialog--tiny{width:30%}.el-dialog--small{width:50%}.el-dialog--large{width:90%}.el-dialog--full{width:100%;top:0;height:100%;overflow:auto}.el-dialog__wrapper{top:0;right:0;bottom:0;left:0;position:fixed;overflow:auto;margin:0}.el-dialog__header{padding:20px 20px 0}.el-dialog__close{cursor:pointer;color:rgb(191, 203, 217)}.el-dialog__close:hover{color:#1d8ce0}.el-dialog__title{line-height:1;font-size:16px;font-weight:700;color:rgb(31, 45, 61)}.el-dialog__body{padding:30px 20px;color:rgb(72, 87, 106);font-size:14px}.el-dialog__headerbtn{float:right}.el-dialog__footer{padding:10px 20px 15px;text-align:right;box-sizing:border-box}.dialog-fade-enter-active{animation:dialog-fade-in .3s}.dialog-fade-leave-active{animation:dialog-fade-out .3s}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}100%{transform:translate3d(0,0,0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translate3d(0,0,0);opacity:1}100%{transform:translate3d(0,-20px,0);opacity:0}}
--------------------------------------------------------------------------------
/codegen-engine/src/test/java/cn/springcloud/codegen/engine/feign/FeignDataGenerator.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.feign;
2 |
3 | import cn.springcloud.codegen.engine.constants.CodeGenConstants;
4 | import cn.springcloud.codegen.engine.entity.DependenciesGav;
5 | import cn.springcloud.codegen.engine.generator.CodeGenExtendGenerator;
6 | import cn.springcloud.codegen.engine.service.ExtendService;
7 |
8 | import java.util.ArrayList;
9 | import java.util.HashMap;
10 | import java.util.List;
11 | import java.util.Map;
12 |
13 | /**
14 | * @author Vincent.
15 | * @createdOn 2018/01/27 16:00
16 | */
17 | public class FeignDataGenerator extends CodeGenExtendGenerator {
18 |
19 | @Override
20 | public Map getExtendData() {
21 | Map extendData = new HashMap();
22 |
23 | List annotation = new ArrayList();
24 | annotation.add("@EnableFeignClients(basePackages = {\"cn.springcloud.codegen.component.feign\"})");
25 | extendData.put(CodeGenConstants.CLASS_ANNOTATION_KEY, annotation);
26 |
27 | List importData = new ArrayList();
28 | importData.add("org.springframework.cloud.netflix.feign.EnableFeignClients;");
29 | extendData.put(CodeGenConstants.CLASS_IMPORT_KEY, importData);
30 | return extendData;
31 | }
32 |
33 | @Override
34 | public String targetIdentifier() {
35 | return "mainClass";
36 | }
37 |
38 | }
39 |
--------------------------------------------------------------------------------
/codegen-ui/build/check-versions.js:
--------------------------------------------------------------------------------
1 | 'use strict'
2 | const chalk = require('chalk')
3 | const semver = require('semver')
4 | const packageConfig = require('../package.json')
5 | const shell = require('shelljs')
6 |
7 | function exec (cmd) {
8 | return require('child_process').execSync(cmd).toString().trim()
9 | }
10 |
11 | const versionRequirements = [
12 | {
13 | name: 'node',
14 | currentVersion: semver.clean(process.version),
15 | versionRequirement: packageConfig.engines.node
16 | }
17 | ]
18 |
19 | if (shell.which('npm')) {
20 | versionRequirements.push({
21 | name: 'npm',
22 | currentVersion: exec('npm --version'),
23 | versionRequirement: packageConfig.engines.npm
24 | })
25 | }
26 |
27 | module.exports = function () {
28 | const warnings = []
29 |
30 | for (let i = 0; i < versionRequirements.length; i++) {
31 | const mod = versionRequirements[i]
32 |
33 | if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) {
34 | warnings.push(mod.name + ': ' +
35 | chalk.red(mod.currentVersion) + ' should be ' +
36 | chalk.green(mod.versionRequirement)
37 | )
38 | }
39 | }
40 |
41 | if (warnings.length) {
42 | console.log('')
43 | console.log(chalk.yellow('To use this template, you must update following to modules:'))
44 | console.log()
45 |
46 | for (let i = 0; i < warnings.length; i++) {
47 | const warning = warnings[i]
48 | console.log(' ' + warning)
49 | }
50 |
51 | console.log()
52 | process.exit(1)
53 | }
54 | }
55 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item:after,.el-form-item__content:after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-form-item .el-form-item__content{margin-left:0!important}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:rgb(72, 87, 106);line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/form.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-form--inline .el-form-item,.el-form--inline .el-form-item__content{display:inline-block;vertical-align:top}.el-form-item:after,.el-form-item__content:after{clear:both}.el-form--label-left .el-form-item__label{text-align:left}.el-form--label-top .el-form-item__label{float:none;display:inline-block;padding:0 0 10px}.el-form--inline .el-form-item{margin-right:10px}.el-form--inline .el-form-item__label{float:none;display:inline-block}.el-form--inline.el-form--label-top .el-form-item__content{display:block}.el-form-item{margin-bottom:22px}.el-form-item:after,.el-form-item:before{display:table;content:""}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-form-item .el-form-item__content{margin-left:0!important}.el-form-item.is-error .el-input-group__append .el-input__inner,.el-form-item.is-error .el-input-group__prepend .el-input__inner,.el-form-item.is-error .el-input__inner{border-color:transparent}.el-form-item.is-error .el-input__inner,.el-form-item.is-error .el-textarea__inner{border-color:#ff4949}.el-form-item.is-required .el-form-item__label:before{content:'*';color:#ff4949;margin-right:4px}.el-form-item__label{text-align:right;vertical-align:middle;float:left;font-size:14px;color:rgb(72, 106, 103);line-height:1;padding:11px 12px 11px 0;box-sizing:border-box}.el-form-item__content{line-height:36px;position:relative;font-size:14px}.el-form-item__content:after,.el-form-item__content:before{display:table;content:""}.el-form-item__error{color:#ff4949;font-size:12px;line-height:1;padding-top:4px;position:absolute;top:100%;left:0}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/entity/InputParams.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.entity;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * Created with IntelliJ IDEA.
7 | *
8 | * @author: zzf
9 | * @date: 2018/1/17
10 | * @time: 19:27
11 | * @description : 子类的输出参数, 模板和输出路径等自定义在任何地方
12 | */
13 | public class InputParams extends BaseInputParams implements Serializable{
14 |
15 | private static final long serialVersionUID = -1377887339408890399L;
16 | private String templateConfigEncode;
17 | private String templateDir;
18 |
19 |
20 | public InputParams(String templateConfigEncode, String dynamicOutPath,
21 | String templateDir, String packageName,String templateName,
22 | String fileName, String fileType, String moduleName) {
23 |
24 | // 父类的构造方法
25 | super(templateName, fileName, fileType, dynamicOutPath, moduleName, packageName);
26 | this.templateConfigEncode = templateConfigEncode;
27 | this.templateDir = templateDir;
28 | }
29 |
30 | public InputParams(){}
31 |
32 | public String getTemplateConfigEncode() {
33 | return templateConfigEncode;
34 | }
35 |
36 | public void setTemplateConfigEncode(String templateConfigEncode) {
37 | this.templateConfigEncode = templateConfigEncode;
38 | }
39 |
40 | public String getTemplateDir() {
41 | return templateDir;
42 | }
43 |
44 | public void setTemplateDir(String templateDir) {
45 | this.templateDir = templateDir;
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tree{cursor:default;background:#fff;border:1px solid rgb(209, 229, 227)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node{white-space:nowrap}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:rgb(228, 241, 241)}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:rgb(151, 190, 187);border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:rgb(151, 190, 187)}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:rgb(237, 251, 247)}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/tree.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tree{cursor:default;background:#fff;border:1px solid rgb(209, 219, 229)}.el-tree__empty-block{position:relative;min-height:60px;text-align:center;width:100%;height:100%}.el-tree__empty-text{position:absolute;left:50%;top:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);color:#5e7382}.el-tree-node{white-space:nowrap}.el-tree-node>.el-tree-node__children{overflow:hidden;background-color:transparent}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree-node__expand-icon,.el-tree-node__label,.el-tree-node__loading-icon{display:inline-block;vertical-align:middle}.el-tree-node__content{line-height:36px;height:36px;cursor:pointer}.el-tree-node__content>.el-checkbox,.el-tree-node__content>.el-tree-node__expand-icon{margin-right:8px}.el-tree-node__content>.el-checkbox{vertical-align:middle}.el-tree-node__content:hover{background:rgb(228, 232, 241)}.el-tree-node__expand-icon{cursor:pointer;width:0;height:0;margin-left:10px;border:6px solid transparent;border-right-width:0;border-left-color:rgb(151, 168, 190);border-left-width:7px;-ms-transform:rotate(0);transform:rotate(0);transition:transform .3s ease-in-out}.el-tree-node__expand-icon:hover{border-left-color:#999}.el-tree-node__expand-icon.expanded{-ms-transform:rotate(90deg);transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{border-color:transparent;cursor:default}.el-tree-node__label{font-size:14px}.el-tree-node__loading-icon{margin-right:4px;font-size:14px;color:rgb(151, 168, 190)}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:rgb(237, 246, 253)}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/entity/ConfigParams.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.entity;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * Created with IntelliJ IDEA.
7 | *
8 | * @author: zzf
9 | * @date: 2018/1/24
10 | * @time: 15:20
11 | * @description : 配置文件的参数参数转化, 全部转字符串, 可以通过fastJson 转化在转化成对应的构造bean即可
12 | */
13 | public class ConfigParams implements Serializable {
14 |
15 | private static final long serialVersionUID = 6380397981444700402L;
16 |
17 | /**
18 | * 初始化需要的参数
19 | */
20 | private String initData;
21 |
22 | /**
23 | * 模板需要的参数
24 | */
25 | private String templateData;
26 |
27 | /**
28 | * 其他的补充参数
29 | */
30 | private String otherData;
31 |
32 | public String getInitData() {
33 | return initData;
34 | }
35 |
36 | public void setInitData(String initData) {
37 | this.initData = initData;
38 | }
39 |
40 | public String getTemplateData() {
41 | return templateData;
42 | }
43 |
44 | public void setTemplateData(String templateData) {
45 | this.templateData = templateData;
46 | }
47 |
48 | public String getOtherData() {
49 | return otherData;
50 | }
51 |
52 | public void setOtherData(String otherData) {
53 | this.otherData = otherData;
54 | }
55 |
56 | @Override
57 | public String toString() {
58 | return "ConfigParams{" +
59 | "initData='" + initData + '\'' +
60 | ", templateData='" + templateData + '\'' +
61 | ", otherData='" + otherData + '\'' +
62 | '}';
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tag{background-color:rgb(131, 145, 165);display:inline-block;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent;white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:rgb(131, 145, 165)}.el-tag--gray{background-color:rgb(228, 232, 241);border-color:rgb(228, 232, 241);color:rgb(72, 87, 106)}.el-tag--gray .el-tag__close:hover{background-color:rgb(72, 87, 106);color:#fff}.el-tag--gray.is-hit{border-color:rgb(72, 87, 106)}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#1d8ce0}.el-tag--primary .el-tag__close:hover{background-color:#1d8ce0;color:#fff}.el-tag--primary.is-hit{border-color:#1d8ce0}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/tag.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-tag{background-color:rgb(131, 165, 162);display:inline-block;padding:0 5px;height:24px;line-height:22px;font-size:12px;color:#fff;border-radius:4px;box-sizing:border-box;border:1px solid transparent;white-space:nowrap}.el-tag .el-icon-close{border-radius:50%;text-align:center;position:relative;cursor:pointer;font-size:12px;-ms-transform:scale(.75,.75);transform:scale(.75,.75);height:18px;width:18px;line-height:18px;vertical-align:middle;top:-1px;right:-2px}.el-tag .el-icon-close:hover{background-color:#fff;color:rgb(131, 165, 162)}.el-tag--gray{background-color:rgb(228, 241, 241);border-color:rgb(228, 241, 241);color:rgb(72, 106, 103)}.el-tag--gray .el-tag__close:hover{background-color:rgb(72, 106, 103);color:#fff}.el-tag--gray.is-hit{border-color:rgb(72, 106, 103)}.el-tag--primary{background-color:rgba(32,160,255,.1);border-color:rgba(32,160,255,.2);color:#18c79c}.el-tag--primary .el-tag__close:hover{background-color:#18c79c;color:#fff}.el-tag--primary.is-hit{border-color:#18c79c}.el-tag--success{background-color:rgba(18,206,102,.1);border-color:rgba(18,206,102,.2);color:#13ce66}.el-tag--success .el-tag__close:hover{background-color:#13ce66;color:#fff}.el-tag--success.is-hit{border-color:#13ce66}.el-tag--warning{background-color:rgba(247,186,41,.1);border-color:rgba(247,186,41,.2);color:#f7ba2a}.el-tag--warning .el-tag__close:hover{background-color:#f7ba2a;color:#fff}.el-tag--warning.is-hit{border-color:#f7ba2a}.el-tag--danger{background-color:rgba(255,73,73,.1);border-color:rgba(255,73,73,.2);color:#ff4949}.el-tag--danger .el-tag__close:hover{background-color:#ff4949;color:#fff}.el-tag--danger.is-hit{border-color:#ff4949}
--------------------------------------------------------------------------------
/codegen-ui/src/main.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Created by liumapp on ${DATE} .
3 | * E-mail:liumapp.com@gmail.com
4 | * home-page:http://www.liumapp.com
5 | */
6 | import babelpolyfill from 'babel-polyfill'
7 | import Vue from 'vue'
8 | import App from './App'
9 | import ElementUI from 'element-ui'
10 | import 'element-ui/lib/theme-default/index.css'
11 | //import './assets/theme/theme-green/index.css'
12 | import VueRouter from 'vue-router'
13 | import store from './vuex/store'
14 | import Vuex from 'vuex'
15 | //import NProgress from 'nprogress'
16 | //import 'nprogress/nprogress.css'
17 | import routes from './routes'
18 | import Mock from './mock'
19 | import vc from 'vue-cookie'
20 |
21 | Mock.bootstrap();
22 | import 'font-awesome/css/font-awesome.min.css'
23 | import N3Components from 'N3-components'
24 | import 'N3-components/dist/index.min.css'
25 |
26 | Vue.use(N3Components)
27 | Vue.use(ElementUI)
28 | Vue.use(VueRouter)
29 | Vue.use(Vuex)
30 |
31 | //NProgress.configure({ showSpinner: false });
32 |
33 | const router = new VueRouter({
34 | routes
35 | })
36 | //
37 | // router.beforeEach((to, from, next) => {
38 | // //NProgress.start();
39 | // if (to.path == '/login') {
40 | // sessionStorage.removeItem('user');
41 | // }
42 | // let user = JSON.parse(sessionStorage.getItem('user'));
43 | // if (!user && to.path != '/login') {
44 | // next({ path: '/login' })
45 | // } else {
46 | // next()
47 | // }
48 | // })
49 |
50 | //router.afterEach(transition => {
51 | //NProgress.done();
52 | //});
53 |
54 | new Vue({
55 | //el: '#app',
56 | //template: '',
57 | router,
58 | store,
59 | //components: { App }
60 | render: h => h(App)
61 | }).$mount('#app')
62 |
63 |
--------------------------------------------------------------------------------
/codegen-ui/static/css/default.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Original highlight.js style (c) Ivan Sagalaev
4 |
5 | */
6 |
7 | .hljs {
8 | display: block;
9 | overflow-x: auto;
10 | padding: 0.5em;
11 | background: #F0F0F0;
12 | }
13 |
14 |
15 | /* Base color: saturation 0; */
16 |
17 | .hljs,
18 | .hljs-subst {
19 | color: #444;
20 | }
21 |
22 | .hljs-comment {
23 | color: #888888;
24 | }
25 |
26 | .hljs-keyword,
27 | .hljs-attribute,
28 | .hljs-selector-tag,
29 | .hljs-meta-keyword,
30 | .hljs-doctag,
31 | .hljs-name {
32 | font-weight: bold;
33 | }
34 |
35 |
36 | /* User color: hue: 0 */
37 |
38 | .hljs-type,
39 | .hljs-string,
40 | .hljs-number,
41 | .hljs-selector-id,
42 | .hljs-selector-class,
43 | .hljs-quote,
44 | .hljs-template-tag,
45 | .hljs-deletion {
46 | color: #880000;
47 | }
48 |
49 | .hljs-title,
50 | .hljs-section {
51 | color: #880000;
52 | font-weight: bold;
53 | }
54 |
55 | .hljs-regexp,
56 | .hljs-symbol,
57 | .hljs-variable,
58 | .hljs-template-variable,
59 | .hljs-link,
60 | .hljs-selector-attr,
61 | .hljs-selector-pseudo {
62 | color: #BC6060;
63 | }
64 |
65 |
66 | /* Language color: hue: 90; */
67 |
68 | .hljs-literal {
69 | color: #78A960;
70 | }
71 |
72 | .hljs-built_in,
73 | .hljs-bullet,
74 | .hljs-code,
75 | .hljs-addition {
76 | color: #397300;
77 | }
78 |
79 |
80 | /* Meta color: hue: 200 */
81 |
82 | .hljs-meta {
83 | color: #1f7199;
84 | }
85 |
86 | .hljs-meta-string {
87 | color: #4d99bf;
88 | }
89 |
90 |
91 | /* Misc effects */
92 |
93 | .hljs-emphasis {
94 | font-style: italic;
95 | }
96 |
97 | .hljs-strong {
98 | font-weight: bold;
99 | }
100 |
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/carousel.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__arrow,.el-carousel__button{outline:0;margin:0;cursor:pointer;transition:.3s}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:rgb(131, 165, 162);opacity:.24}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/carousel.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-carousel__arrow,.el-carousel__button{outline:0;margin:0;cursor:pointer;transition:.3s}.el-carousel{overflow-x:hidden;position:relative}.el-carousel__container{position:relative;height:300px}.el-carousel__arrow{border:none;padding:0;width:36px;height:36px;border-radius:50%;background-color:rgba(31,45,61,.11);color:#fff;position:absolute;top:50%;z-index:10;-ms-transform:translateY(-50%);transform:translateY(-50%);text-align:center;font-size:12px}.el-carousel__arrow:hover{background-color:rgba(31,45,61,.23)}.el-carousel__arrow i{cursor:pointer}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__indicators{position:absolute;list-style:none;bottom:0;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%);margin:0;padding:0;z-index:2}.el-carousel__indicators--outside{bottom:26px;text-align:center;position:static;-ms-transform:none;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:rgb(131, 145, 165);opacity:.24}.el-carousel__indicator{display:inline-block;background-color:transparent;padding:12px 4px;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{display:block;opacity:.48;width:30px;height:2px;background-color:#fff;border:none;padding:0}.carousel-arrow-left-enter,.carousel-arrow-left-leave-active{-ms-transform:translateY(-50%) translateX(-10px);transform:translateY(-50%) translateX(-10px);opacity:0}.carousel-arrow-right-enter,.carousel-arrow-right-leave-active{-ms-transform:translateY(-50%) translateX(10px);transform:translateY(-50%) translateX(10px);opacity:0}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:rgb(72, 87, 106);display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:rgb(228, 232, 241);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#1d8ce0;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/progress.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-progress-bar__inner:after{display:inline-block;content:"";height:100%;vertical-align:middle}.el-progress{position:relative;line-height:1}.el-progress.is-exception .el-progress-bar__inner{background-color:#ff4949}.el-progress.is-exception .el-progress__text{color:#ff4949}.el-progress.is-success .el-progress-bar__inner{background-color:#13ce66}.el-progress.is-success .el-progress__text{color:#13ce66}.el-progress__text{font-size:14px;color:rgb(72, 106, 103);display:inline-block;vertical-align:middle;margin-left:10px;line-height:1}.el-progress__text i{vertical-align:middle;display:block}.el-progress--circle{display:inline-block}.el-progress--circle .el-progress__text{position:absolute;top:50%;left:0;width:100%;text-align:center;margin:0;-ms-transform:translate(0,-50%);transform:translate(0,-50%)}.el-progress--circle .el-progress__text i{vertical-align:middle;display:inline-block}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{padding-right:0;margin-right:0;display:block}.el-progress--text-inside .el-progress-bar{padding-right:0;margin-right:0}.el-progress-bar{padding-right:50px;display:inline-block;vertical-align:middle;width:100%;margin-right:-55px;box-sizing:border-box}.el-progress-bar__outer{height:6px;border-radius:100px;background-color:rgb(228, 241, 241);overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{position:absolute;left:0;top:0;height:100%;background-color:#18c79c;text-align:right;border-radius:100px;line-height:1}.el-progress-bar__innerText{display:inline-block;vertical-align:middle;color:#fff;font-size:12px;margin:0 5px}@keyframes progress{0%{background-position:0 0}100%{background-position:32px 0}}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/thread/CodeGenPool.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.thread;
2 |
3 | import org.slf4j.Logger;
4 | import org.slf4j.LoggerFactory;
5 |
6 | import java.util.concurrent.*;
7 |
8 | /**
9 | * Created with IntelliJ IDEA.
10 | *
11 | * @author: zzf
12 | * @date: 2018/1/18
13 | * @time: 13:27
14 | * @description : 代码生成器的线程池
15 | */
16 | public class CodeGenPool {
17 |
18 | private final Logger logger = LoggerFactory.getLogger(CodeGenPool.class);
19 |
20 | /**
21 | * 线程池的大小默认为, CPU核数 * 2
22 | */
23 | public static int DEFAULT_POOL_SIZE = Runtime.getRuntime().availableProcessors() * 2;
24 | private static CodeGenPool instance = null;
25 | private ExecutorService executors = null;
26 |
27 | private CodeGenPool(){
28 | this.executors = Executors.newFixedThreadPool(DEFAULT_POOL_SIZE);
29 | }
30 |
31 | public static CodeGenPool getInstance(){
32 | if(instance == null){
33 | synchronized (CodeGenPool.class){
34 | if(instance == null){
35 | instance = new CodeGenPool();
36 | }
37 | }
38 | }
39 |
40 | return instance;
41 | }
42 |
43 | /**
44 | * 执行生成任务
45 | * @param callable
46 | * @param
47 | * @return
48 | */
49 | public Future submit(Callable callable){
50 | return this.executors.submit(callable);
51 | }
52 |
53 | /**
54 | * 获取线程池大小
55 | * @return 线程池大小
56 | */
57 | public static int size() {
58 | return DEFAULT_POOL_SIZE;
59 | }
60 |
61 | /**
62 | * 销毁线程池
63 | */
64 | public static void destroy() {
65 | if (instance != null) {
66 | instance.executors.shutdown();
67 | }
68 | }
69 | }
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:rgb(228, 241, 241)!important;background:rgb(228, 241, 241)!important}.el-switch.is-disabled .el-switch__core span{background-color:rgb(250, 254, 253)!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:rgb(250, 254, 253)!important}.el-switch.is-disabled .el-switch__input:checked+.el-switch__core{border-color:rgb(228, 241, 241);background-color:rgb(228, 241, 241)}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-switch__label{transition:.2s;z-index:10;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__input:checked+.el-switch__core{border-color:#18c79c;background-color:#18c79c}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid rgb(191, 217, 214);outline:0;border-radius:12px;box-sizing:border-box;background:rgb(191, 217, 214);transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;z-index:20;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/switch.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-switch{display:inline-block;position:relative;font-size:14px;line-height:22px;height:22px;vertical-align:middle}.el-switch__label,.el-switch__label *{position:absolute;font-size:14px;display:inline-block}.el-switch .label-fade-enter,.el-switch .label-fade-leave-active{opacity:0}.el-switch.is-disabled .el-switch__core{border-color:rgb(228, 232, 241)!important;background:rgb(228, 232, 241)!important}.el-switch.is-disabled .el-switch__core span{background-color:rgb(250, 253, 254)!important}.el-switch.is-disabled .el-switch__core~.el-switch__label *{color:rgb(250, 253, 254)!important}.el-switch.is-disabled .el-switch__input:checked+.el-switch__core{border-color:rgb(228, 232, 241);background-color:rgb(228, 232, 241)}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__core,.el-switch__label{width:46px;height:22px;cursor:pointer}.el-switch__label{transition:.2s;z-index:10;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.el-switch__label *{line-height:1;top:4px;color:#fff}.el-switch__label--left i{left:6px}.el-switch__label--right i{right:6px}.el-switch__input{display:none}.el-switch__input:checked+.el-switch__core{border-color:#1d8ce0;background-color:#1d8ce0}.el-switch__core{margin:0;display:inline-block;position:relative;border:1px solid rgb(191, 203, 217);outline:0;border-radius:12px;box-sizing:border-box;background:rgb(191, 203, 217);transition:border-color .3s,background-color .3s}.el-switch__core .el-switch__button{top:0;left:0;position:absolute;border-radius:100%;transition:transform .3s;width:16px;height:16px;z-index:20;background-color:#fff}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-green/popover.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid rgb(209, 229, 227);padding:10px;z-index:2000;font-size:12px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:rgb(209, 229, 227);border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:rgb(209, 229, 227)}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:rgb(209, 229, 227);border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:rgb(209, 229, 227)}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:rgb(31, 61, 57);font-size:13px;line-height:1;margin-bottom:9px}
--------------------------------------------------------------------------------
/codegen-ui/src/assets/theme/theme-darkblue/popover.css:
--------------------------------------------------------------------------------
1 | @charset "UTF-8";.el-popover{position:absolute;background:#fff;min-width:150px;border-radius:2px;border:1px solid rgb(209, 219, 229);padding:10px;z-index:2000;font-size:12px;box-shadow:0 2px 4px 0 rgba(0,0,0,.12),0 0 6px 0 rgba(0,0,0,.04)}.el-popover .popper__arrow,.el-popover .popper__arrow::after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.el-popover .popper__arrow{border-width:6px}.el-popover .popper__arrow::after{content:" ";border-width:6px}.el-popover[x-placement^=top]{margin-bottom:12px}.el-popover[x-placement^=top] .popper__arrow{bottom:-6px;left:50%;margin-right:3px;border-top-color:rgb(209, 219, 229);border-bottom-width:0}.el-popover[x-placement^=top] .popper__arrow::after{bottom:1px;margin-left:-6px;border-top-color:#fff;border-bottom-width:0}.el-popover[x-placement^=bottom]{margin-top:12px}.el-popover[x-placement^=bottom] .popper__arrow{top:-6px;left:50%;margin-right:3px;border-top-width:0;border-bottom-color:rgb(209, 219, 229)}.el-popover[x-placement^=bottom] .popper__arrow::after{top:1px;margin-left:-6px;border-top-width:0;border-bottom-color:#fff}.el-popover[x-placement^=right]{margin-left:12px}.el-popover[x-placement^=right] .popper__arrow{top:50%;left:-6px;margin-bottom:3px;border-right-color:rgb(209, 219, 229);border-left-width:0}.el-popover[x-placement^=right] .popper__arrow::after{bottom:-6px;left:1px;border-right-color:#fff;border-left-width:0}.el-popover[x-placement^=left]{margin-right:12px}.el-popover[x-placement^=left] .popper__arrow{top:50%;right:-6px;margin-bottom:3px;border-right-width:0;border-left-color:rgb(209, 219, 229)}.el-popover[x-placement^=left] .popper__arrow::after{right:1px;bottom:-6px;margin-left:-6px;border-right-width:0;border-left-color:#fff}.el-popover__title{color:rgb(31, 45, 61);font-size:13px;line-height:1;margin-bottom:9px}
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/config/FileConfig.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.config;
2 |
3 | import cn.springcloud.codegen.engine.exception.CodeGenException;
4 | import cn.springcloud.codegen.engine.exception.CodeGenFileException;
5 |
6 | import java.io.*;
7 | import java.net.URL;
8 | import java.util.Properties;
9 |
10 | /**
11 | * Created with IntelliJ IDEA.
12 | *
13 | * @author: zzf
14 | * @date: 2018/1/18
15 | * @time: 16:04
16 | * @description : 配置文件的解析, 多种文件解析都写在这里
17 | * 例如: properties , xml, json 等文件格式的解析要支持
18 | */
19 | public class FileConfig {
20 |
21 | /**
22 | * 加载properties 资源文件
23 | * @param in 输入流
24 | * @return
25 | */
26 | public static Properties getProperties(InputStream in) {
27 | Properties properties = new Properties();
28 | try {
29 | properties.load(in);
30 | } catch (IOException e) {
31 | throw new CodeGenException("couldn't load properties file '" + in +"'", e);
32 | }
33 | return properties;
34 | }
35 |
36 | /**
37 | * 配置文件路径
38 | * @param configPath
39 | * @return
40 | */
41 | public static Properties getProperties(String configPath){
42 |
43 | try {
44 | File file = new File(configPath);
45 | InputStream in = new FileInputStream(file);
46 | return getProperties(in);
47 | } catch (FileNotFoundException e) {
48 | throw new CodeGenException("couldn't find config file in " + configPath + " " + e);
49 | }
50 | }
51 |
52 | /**
53 | *@paramurl
54 | *@return
55 | *@throwsIOException
56 | */
57 | public static InputStream getStream(URL url) throws IOException{
58 | if(url!=null){
59 | return url.openStream();
60 | }else{
61 | return null;
62 | }
63 | }
64 | }
65 |
--------------------------------------------------------------------------------
/codegen-engine/src/test/java/cn/springcloud/codegen/engine/feign/FeignFileGenerator.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.feign;
2 |
3 | import cn.springcloud.codegen.engine.constants.CodeGenConstants;
4 | import cn.springcloud.codegen.engine.entity.CodeOutType;
5 | import cn.springcloud.codegen.engine.entity.InputParams;
6 | import cn.springcloud.codegen.engine.generator.CodeGenForFileGenerator;
7 | import cn.springcloud.codegen.engine.service.ExtendService;
8 |
9 | import java.util.HashMap;
10 | import java.util.List;
11 | import java.util.Map;
12 |
13 | /**
14 | * @author Vincent.
15 | * @createdOn 2018/01/27 18:55
16 | */
17 | public class FeignFileGenerator extends CodeGenForFileGenerator {
18 |
19 | // 其他的数据
20 | Map otherData = null;
21 |
22 | public FeignFileGenerator(InputParams inputParams, Map templateData, Map otherData) {
23 | super(inputParams, templateData);
24 | this.otherData = otherData;
25 | }
26 |
27 | public FeignFileGenerator(InputParams inputParams, Map templateData, Map otherData, List extendServices) {
28 | super(inputParams, templateData);
29 | // super.setExtendServices(extendServices);
30 | this.otherData = otherData;
31 | }
32 |
33 | /**
34 | * 模板里面需要的参数, 其他的不要在这里添加, 使用templateData 的参数构造方法, 该方法无效
35 | * @return
36 | */
37 | @Override
38 | public Map getTemplateData() {
39 | Map template = new HashMap();
40 | template.put(CodeGenConstants.CLASS_ANNOTATION_KEY,"//test");
41 | return template;
42 | }
43 |
44 | @Override
45 | public CodeOutType isJavaOrResourcesOrOtherCode() {
46 | return otherData.get("isJavaOrResourcesOrOtherCode") != null ? (CodeOutType) otherData.get("isJavaOrResourcesOrOtherCode") : CodeOutType.NONE;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/constants/CodeGenConstants.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.constants;
2 |
3 |
4 | /**
5 | * Created with IntelliJ IDEA.
6 | *
7 | * @author: zzf
8 | * @date: 2018/1/17
9 | * @time: 15:57
10 | * @description : 全局常量
11 | */
12 | public class CodeGenConstants {
13 |
14 | /**
15 | * 默认编码的格式
16 | */
17 | public static final String DEFAULT_ENCODE = "UTF-8";
18 |
19 | /**
20 | * 默认的模板名称
21 | */
22 | public static final String DEFAULT_TEMPLATE_POSTFIX = "ftl";
23 |
24 | /**
25 | * 文件分隔符
26 | */
27 | public static final String POINT_STR = ".";
28 |
29 | /**
30 | * 文件切个类型
31 | */
32 | public static final String FILE_SEPARATOR = "/";
33 |
34 | public static final String CLASS_ANNOTATION_KEY = "classAnnotationKey";
35 |
36 | public static final String CLASS_IMPORT_KEY = "classImportKey";
37 |
38 | public static final String POM_DEPENDENCY_KEY = "pomDependencyKey";
39 |
40 | /**
41 | * 生成目录下的片接
42 | */
43 | public static final String MAIN_JAVA_PATH = "src" + FILE_SEPARATOR + "main" + FILE_SEPARATOR + "java" + FILE_SEPARATOR;
44 | public static final String MAIN_RESOURCE_PATH = "src" + FILE_SEPARATOR + "main" + FILE_SEPARATOR + "resources" + FILE_SEPARATOR;
45 | public static final String TEST_JAVA_PATH = "src" + FILE_SEPARATOR + "test" + FILE_SEPARATOR + "java" + FILE_SEPARATOR;
46 | public static final String TEST_RESOURCES_PATH = "src" + FILE_SEPARATOR + "test" + FILE_SEPARATOR + "resources" + FILE_SEPARATOR;
47 |
48 | /**
49 | * 获取静态的常量属性
50 | * @param field
51 | * @return
52 | */
53 | public static Object getConstValue(String field){
54 | try {
55 | // null 表示的是static的
56 | return CodeGenConstants.class.getField(field).get(null);
57 | } catch (Exception e) {
58 |
59 | }
60 | return null;
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/codegen-engine/src/main/java/cn/springcloud/codegen/engine/tools/MapTools.java:
--------------------------------------------------------------------------------
1 | package cn.springcloud.codegen.engine.tools;
2 |
3 | import java.util.*;
4 |
5 | /**
6 | * @author Vincent.
7 | * @createdOn 2018/01/27 21:33
8 | */
9 | public class MapTools {
10 |
11 | public static Map addMap(Map originMap, Map addendMap) {
12 | if (originMap == null){
13 | originMap = new HashMap();
14 | }
15 | if (addendMap == null){
16 | return originMap;
17 | }
18 | for (Map.Entry entry : addendMap.entrySet()) {
19 | if (originMap.get(entry.getKey()) == null) {
20 | if (entry.getValue() instanceof List) {
21 | originMap.put(entry.getKey(), entry.getValue());
22 | } else {
23 | List