├── src ├── main │ ├── resources │ │ ├── schemas │ │ │ ├── springboot-jpa │ │ │ │ ├── tpl │ │ │ │ │ ├── BeanPK.ftl │ │ │ │ │ ├── Dao.ftl │ │ │ │ │ ├── Bean.ftl │ │ │ │ │ ├── Service.ftl │ │ │ │ │ └── RestController.ftl │ │ │ │ └── build.json │ │ │ └── rxthinking │ │ │ │ ├── tpl │ │ │ │ ├── repository.ftl │ │ │ │ ├── beanBO.ftl │ │ │ │ ├── bean.ftl │ │ │ │ └── service.ftl │ │ │ │ └── build.json │ │ ├── static │ │ │ ├── images │ │ │ │ └── file.png │ │ │ ├── layui │ │ │ │ ├── font │ │ │ │ │ ├── iconfont.eot │ │ │ │ │ ├── iconfont.ttf │ │ │ │ │ ├── iconfont.woff │ │ │ │ │ └── iconfont.woff2 │ │ │ │ ├── images │ │ │ │ │ └── face │ │ │ │ │ │ ├── 0.gif │ │ │ │ │ │ ├── 1.gif │ │ │ │ │ │ ├── 10.gif │ │ │ │ │ │ ├── 11.gif │ │ │ │ │ │ ├── 12.gif │ │ │ │ │ │ ├── 13.gif │ │ │ │ │ │ ├── 14.gif │ │ │ │ │ │ ├── 15.gif │ │ │ │ │ │ ├── 16.gif │ │ │ │ │ │ ├── 17.gif │ │ │ │ │ │ ├── 18.gif │ │ │ │ │ │ ├── 19.gif │ │ │ │ │ │ ├── 2.gif │ │ │ │ │ │ ├── 20.gif │ │ │ │ │ │ ├── 21.gif │ │ │ │ │ │ ├── 22.gif │ │ │ │ │ │ ├── 23.gif │ │ │ │ │ │ ├── 24.gif │ │ │ │ │ │ ├── 25.gif │ │ │ │ │ │ ├── 26.gif │ │ │ │ │ │ ├── 27.gif │ │ │ │ │ │ ├── 28.gif │ │ │ │ │ │ ├── 29.gif │ │ │ │ │ │ ├── 3.gif │ │ │ │ │ │ ├── 30.gif │ │ │ │ │ │ ├── 31.gif │ │ │ │ │ │ ├── 32.gif │ │ │ │ │ │ ├── 33.gif │ │ │ │ │ │ ├── 34.gif │ │ │ │ │ │ ├── 35.gif │ │ │ │ │ │ ├── 36.gif │ │ │ │ │ │ ├── 37.gif │ │ │ │ │ │ ├── 38.gif │ │ │ │ │ │ ├── 39.gif │ │ │ │ │ │ ├── 4.gif │ │ │ │ │ │ ├── 40.gif │ │ │ │ │ │ ├── 41.gif │ │ │ │ │ │ ├── 42.gif │ │ │ │ │ │ ├── 43.gif │ │ │ │ │ │ ├── 44.gif │ │ │ │ │ │ ├── 45.gif │ │ │ │ │ │ ├── 46.gif │ │ │ │ │ │ ├── 47.gif │ │ │ │ │ │ ├── 48.gif │ │ │ │ │ │ ├── 49.gif │ │ │ │ │ │ ├── 5.gif │ │ │ │ │ │ ├── 50.gif │ │ │ │ │ │ ├── 51.gif │ │ │ │ │ │ ├── 52.gif │ │ │ │ │ │ ├── 53.gif │ │ │ │ │ │ ├── 54.gif │ │ │ │ │ │ ├── 55.gif │ │ │ │ │ │ ├── 56.gif │ │ │ │ │ │ ├── 57.gif │ │ │ │ │ │ ├── 58.gif │ │ │ │ │ │ ├── 59.gif │ │ │ │ │ │ ├── 6.gif │ │ │ │ │ │ ├── 60.gif │ │ │ │ │ │ ├── 61.gif │ │ │ │ │ │ ├── 62.gif │ │ │ │ │ │ ├── 63.gif │ │ │ │ │ │ ├── 64.gif │ │ │ │ │ │ ├── 65.gif │ │ │ │ │ │ ├── 66.gif │ │ │ │ │ │ ├── 67.gif │ │ │ │ │ │ ├── 68.gif │ │ │ │ │ │ ├── 69.gif │ │ │ │ │ │ ├── 7.gif │ │ │ │ │ │ ├── 70.gif │ │ │ │ │ │ ├── 71.gif │ │ │ │ │ │ ├── 8.gif │ │ │ │ │ │ └── 9.gif │ │ │ │ ├── css │ │ │ │ │ ├── modules │ │ │ │ │ │ ├── layer │ │ │ │ │ │ │ └── default │ │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ │ │ └── loading-2.gif │ │ │ │ │ │ ├── code.css │ │ │ │ │ │ └── laydate │ │ │ │ │ │ │ └── default │ │ │ │ │ │ │ └── laydate.css │ │ │ │ │ └── layui.mobile.css │ │ │ │ ├── lay │ │ │ │ │ └── modules │ │ │ │ │ │ ├── code.js │ │ │ │ │ │ ├── laytpl.js │ │ │ │ │ │ ├── flow.js │ │ │ │ │ │ ├── rate.js │ │ │ │ │ │ ├── util.js │ │ │ │ │ │ ├── carousel.js │ │ │ │ │ │ ├── laypage.js │ │ │ │ │ │ ├── transfer.js │ │ │ │ │ │ ├── slider.js │ │ │ │ │ │ ├── upload.js │ │ │ │ │ │ ├── element.js │ │ │ │ │ │ └── form.js │ │ │ │ └── layui.js │ │ │ ├── js │ │ │ │ └── dropzone │ │ │ │ │ ├── basic.min.css │ │ │ │ │ ├── basic.css │ │ │ │ │ └── dropzone.min.css │ │ │ └── css │ │ │ │ ├── paste.css │ │ │ │ └── index.css │ │ ├── log4j.properties │ │ ├── application.yml │ │ └── templates │ │ │ ├── pages │ │ │ ├── datagrab │ │ │ │ └── index.ftl │ │ │ ├── connection │ │ │ │ └── form.ftl │ │ │ └── file │ │ │ │ └── index.ftl │ │ │ └── index.ftl │ └── java │ │ └── me │ │ └── qping │ │ └── utils │ │ └── codegen │ │ ├── generator │ │ ├── Condition.java │ │ ├── lang │ │ │ ├── JavaFile.java │ │ │ └── Decorator.java │ │ └── condition │ │ │ └── jpa │ │ │ └── PrimaryKeyCondition.java │ │ ├── bean │ │ ├── datagrab │ │ │ ├── KeyVal.java │ │ │ ├── Row.java │ │ │ ├── Statis.java │ │ │ └── FrontEnd.java │ │ ├── build │ │ │ ├── Copyright.java │ │ │ ├── Column.java │ │ │ ├── Table.java │ │ │ ├── Template.java │ │ │ └── BuildConfig.java │ │ ├── constant │ │ │ └── WorkerType.java │ │ └── h2 │ │ │ ├── TemplateList.java │ │ │ └── DBConnection.java │ │ ├── CodeGenApp.java │ │ ├── dao │ │ └── DBConnectionDao.java │ │ ├── freemarker │ │ ├── DirectiveUtil.java │ │ ├── FreemarkerUtil.java │ │ └── AlignDirective.java │ │ ├── controller │ │ ├── IndexController.java │ │ ├── FileController.java │ │ ├── ConnectionController.java │ │ └── CodeController.java │ │ └── util │ │ ├── SSHUtil.java │ │ ├── GenUtil.java │ │ ├── FileUtil.java │ │ ├── DownloadFileUtil.java │ │ ├── SnowFlakeId.java │ │ └── ZipUtil.java └── test │ └── java │ └── AppTest.java ├── docker ├── k8s-svc.yml ├── Dockerfile ├── docker-build.sh └── k8s-deploy.yml ├── .gitignore ├── README.md └── pom.xml /src/main/resources/schemas/springboot-jpa/tpl/BeanPK.ftl: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main/resources/static/images/file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/images/file.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/font/iconfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/font/iconfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/font/iconfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/0.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/1.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/10.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/10.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/11.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/11.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/12.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/13.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/13.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/14.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/14.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/15.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/15.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/16.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/16.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/17.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/17.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/18.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/18.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/19.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/19.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/2.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/20.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/20.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/21.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/21.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/22.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/22.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/23.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/23.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/24.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/24.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/25.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/25.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/26.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/26.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/27.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/27.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/28.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/29.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/29.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/3.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/30.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/30.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/31.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/31.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/32.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/32.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/33.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/33.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/34.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/34.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/35.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/36.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/36.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/37.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/37.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/38.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/38.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/39.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/39.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/4.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/4.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/40.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/40.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/41.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/41.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/42.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/42.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/43.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/43.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/44.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/44.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/45.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/45.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/46.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/46.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/47.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/47.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/48.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/48.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/49.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/49.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/5.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/5.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/50.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/50.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/51.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/51.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/52.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/52.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/53.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/53.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/54.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/54.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/55.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/55.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/56.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/56.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/57.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/57.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/58.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/58.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/59.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/59.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/6.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/6.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/60.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/60.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/61.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/61.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/62.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/62.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/63.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/63.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/64.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/64.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/65.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/65.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/66.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/66.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/67.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/67.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/68.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/68.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/69.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/69.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/7.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/7.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/70.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/70.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/71.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/71.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/8.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/8.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/images/face/9.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/images/face/9.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/font/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/font/iconfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/css/modules/layer/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/layer/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/qpingcode/CodeGen/HEAD/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/generator/Condition.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.generator; 2 | 3 | import me.qping.utils.codegen.bean.build.BuildConfig; 4 | 5 | public interface Condition { 6 | public boolean judge(BuildConfig config); 7 | } 8 | -------------------------------------------------------------------------------- /docker/k8s-svc.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: codegen 5 | spec: 6 | ports: 7 | - port: 9999 8 | targetPort: 9999 9 | nodePort: 9999 10 | protocol: TCP 11 | type: NodePort 12 | selector: 13 | app: codegen -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM openjdk:8-jre-alpine 2 | ARG DEPENDENCY=target/dependency 3 | COPY ${DEPENDENCY}/BOOT-INF/lib /app/lib 4 | COPY ${DEPENDENCY}/META-INF /app/META-INF 5 | COPY ${DEPENDENCY}/BOOT-INF/classes /app 6 | ENTRYPOINT ["java", "-cp", "app:app/lib/*", "me.qping.utils.codegen.CodeGenApp"] -------------------------------------------------------------------------------- /src/main/resources/log4j.properties: -------------------------------------------------------------------------------- 1 | log4j.rootLogger=info,consoleLog 2 | 3 | # Console output... 4 | log4j.appender.consoleLog=org.apache.log4j.ConsoleAppender 5 | log4j.appender.consoleLog.layout=org.apache.log4j.PatternLayout 6 | log4j.appender.consoleLog.layout.ConversionPattern=[%p]-%-d{HH:mm:ss}-%c{1} - %m%n -------------------------------------------------------------------------------- /docker/docker-build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | cd ../ 3 | mvn clean package -Dmaven.test.skip=true 4 | docker build --no-cache -t dockerdist.bdmd.com/codegen:1.1 -f docker/Dockerfile . 5 | #docker push dockerdist.bdmd.com/codegen:1.1 6 | docker save dockerdist.bdmd.com/codegen:1.1 |gzip > /Users/qping/Documents/Cloud/work/ETL/deploy/latest/codegen.tar.gz -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/datagrab/KeyVal.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.datagrab; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @ClassName KeyVal 7 | * @Description TODO 8 | * @Author qping 9 | * @Date 2021/5/12 21:07 10 | * @Version 1.0 11 | **/ 12 | @Data 13 | public class KeyVal { 14 | String key; 15 | String val; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/build/Copyright.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.build; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * @ClassName Copyright 7 | * @Description 版权信息 8 | * @Author qping 9 | * @Date 2019/8/6 09:27 10 | * @Version 1.0 11 | **/ 12 | @Data 13 | public class Copyright { 14 | String author; 15 | String date; 16 | String version; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/constant/WorkerType.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.constant; 2 | 3 | public enum WorkerType { 4 | 5 | ConnectionId(1), CodeDownloadId(2), ; 6 | 7 | int intValue; 8 | 9 | public int intValue(){ 10 | return intValue; 11 | } 12 | 13 | private WorkerType(int i){ 14 | this.intValue = i; 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/generator/lang/JavaFile.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.generator.lang; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.codegen.bean.build.Template; 5 | 6 | import java.util.Set; 7 | 8 | @Data 9 | public class JavaFile extends Template { 10 | 11 | Set importPackages; 12 | String javaPackage; 13 | String javaName; 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/schemas/springboot-jpa/tpl/Dao.ftl: -------------------------------------------------------------------------------- 1 | package ${template.javaPackage}; 2 | 3 | import ${refs.Bean.javaPackage}.${refs.Bean.javaName}; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | 6 | /** 7 | * @ClassName ${template.javaName} 8 | * @Author ${copyright.author!''} 9 | * @Date ${copyright.date!''} 10 | * @Version ${copyright.version!''} 11 | **/ 12 | public interface ${template.javaName} extends JpaRepository<${refs.Bean.javaName}, Integer> { 13 | 14 | } -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/CodeGenApp.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen; 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication; 4 | import org.springframework.boot.builder.SpringApplicationBuilder; 5 | import org.springframework.context.annotation.ComponentScan; 6 | 7 | @SpringBootApplication 8 | @ComponentScan 9 | public class CodeGenApp { 10 | 11 | public static void main(String[] args) { 12 | new SpringApplicationBuilder(CodeGenApp.class).run(args); 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/resources/schemas/rxthinking/tpl/repository.ftl: -------------------------------------------------------------------------------- 1 | package ${template.javaPackage}; 2 | 3 | import ${refs.bean.javaPackage}.${refs.bean.javaName}; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 6 | 7 | /** 8 | * @ClassName ${template.javaName} 9 | * @Author ${copyright.author!''} 10 | * @Date ${copyright.date!''} 11 | * @Version ${copyright.version!''} 12 | **/ 13 | public interface ${template.javaName} extends JpaRepository<${refs.bean.javaName}, Integer>, JpaSpecificationExecutor<${refs.bean.javaName}> { 14 | 15 | } -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/datagrab/Row.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.datagrab; 2 | 3 | import java.util.Date; 4 | 5 | /** 6 | * @ClassName Row 7 | * @Description TODO 8 | * @Author qping 9 | * @Date 2021/5/13 01:09 10 | * @Version 1.0 11 | **/ 12 | public class Row{ 13 | public String orgId; 14 | public String orgName; 15 | public String tableName ; 16 | public String begin; 17 | public String end; 18 | public String il; 19 | public String ol; 20 | public String batchNo; 21 | public String executeTime; 22 | public Date beginDate; 23 | public Date endDate; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/datagrab/Statis.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.datagrab; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.excel.anno.Excel; 5 | 6 | /** 7 | * @ClassName Statis 8 | * @Description TODO 9 | * @Author qping 10 | * @Date 2021/5/13 01:10 11 | * @Version 1.0 12 | **/ 13 | @Data 14 | public class Statis { 15 | 16 | @Excel(name = "机构id") 17 | int orgId; 18 | 19 | @Excel(name = "机构名") 20 | String orgName; 21 | 22 | @Excel(name = "表名") 23 | String tableName ; 24 | 25 | @Excel(name = "输入") 26 | int il; 27 | 28 | @Excel(name = "输出") 29 | int ol; 30 | 31 | @Excel(name = "天数") 32 | int days; 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/build/Column.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.build; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.database.metadata.bean.ColumnMeta; 5 | import me.qping.utils.database.metadata.bean.PrimaryKeyMeta; 6 | import me.qping.utils.database.metadata.bean.TableMeta; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @ClassName Column 12 | * @Description 字段属性扩展 13 | * @Author qping 14 | * @Date 2019/11/28 17:47 15 | * @Version 1.0 16 | **/ 17 | @Data 18 | public class Column { 19 | String name; 20 | String comment; 21 | String camelCase; 22 | String javaPackage; 23 | String columnDefine; 24 | boolean primaryKey; 25 | String javaType; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/dao/DBConnectionDao.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.dao; 2 | 3 | import me.qping.utils.codegen.bean.h2.DBConnection; 4 | import org.springframework.data.jpa.repository.JpaRepository; 5 | import org.springframework.data.jpa.repository.JpaSpecificationExecutor; 6 | import org.springframework.data.jpa.repository.Query; 7 | 8 | import java.util.List; 9 | import java.util.Optional; 10 | 11 | /** 12 | * @ClassName CategoryRepository 13 | * @Author qping 14 | * @Date 2019-08-07 15 | * @Version 1.0 16 | **/ 17 | public interface DBConnectionDao extends JpaRepository, JpaSpecificationExecutor { 18 | List findAllByOrderByIdDesc(); 19 | } -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/build/Table.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.build; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.database.metadata.bean.ColumnMeta; 5 | import me.qping.utils.database.metadata.bean.PrimaryKeyMeta; 6 | import me.qping.utils.database.metadata.bean.TableMeta; 7 | 8 | import java.util.List; 9 | 10 | /** 11 | * @ClassName Table 12 | * @Description 表属性 13 | * @Author qping 14 | * @Date 2019/11/28 17:47 15 | * @Version 1.0 16 | **/ 17 | @Data 18 | public class Table { 19 | String name; 20 | String nameLower; 21 | String nameWithoutPrefix; 22 | 23 | String camelCase; // 首字母小写的驼峰明明 24 | 25 | String comment; 26 | List columns; 27 | List primaryKeys; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/generator/condition/jpa/PrimaryKeyCondition.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.generator.condition.jpa; 2 | 3 | import me.qping.utils.codegen.bean.build.BuildConfig; 4 | import me.qping.utils.codegen.generator.Condition; 5 | 6 | /** 7 | * @ClassName PrimaryKeyCondition 8 | * @Description 复合主键判断条件 9 | * @Author qping 10 | * @Date 2019/8/5 17:11 11 | * @Version 1.0 12 | **/ 13 | public class PrimaryKeyCondition implements Condition { 14 | @Override 15 | public boolean judge(BuildConfig config) { 16 | try{ 17 | if(config.getTable().getPrimaryKeys().size() > 1){ 18 | return true; 19 | } 20 | }catch (Exception ex){ } 21 | return false; 22 | 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/datagrab/FrontEnd.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.datagrab; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.excel.anno.Excel; 5 | 6 | /** 7 | * @ClassName FrontEnd 8 | * @Description TODO 9 | * @Author qping 10 | * @Date 2021/5/12 11:54 11 | * @Version 1.0 12 | **/ 13 | @Data 14 | public class FrontEnd { 15 | @Excel(name = "医院") 16 | String hospital; 17 | 18 | @Excel(name = "地址") 19 | String ip; 20 | 21 | @Excel(name = "端口") 22 | int port; 23 | 24 | @Excel(name = "用户名") 25 | String username; 26 | 27 | @Excel(name = "用户密码") 28 | String password; 29 | 30 | @Excel(name = "公司") 31 | String company; 32 | 33 | @Excel(name = "etl机构id") 34 | int orgId; 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/resources/static/js/dropzone/basic.min.css: -------------------------------------------------------------------------------- 1 | .dropzone,.dropzone *{box-sizing:border-box}.dropzone{position:relative}.dropzone .dz-preview{position:relative;display:inline-block;width:120px;margin:0.5em}.dropzone .dz-preview .dz-progress{display:block;height:15px;border:1px solid #aaa}.dropzone .dz-preview .dz-progress .dz-upload{display:block;height:100%;width:0;background:green}.dropzone .dz-preview .dz-error-message{color:red;display:none}.dropzone .dz-preview.dz-error .dz-error-message,.dropzone .dz-preview.dz-error .dz-error-mark{display:block}.dropzone .dz-preview.dz-success .dz-success-mark{display:block}.dropzone .dz-preview .dz-error-mark,.dropzone .dz-preview .dz-success-mark{position:absolute;display:none;left:30px;top:30px;width:54px;height:58px;left:50%;margin-left:-27px} 2 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/h2/TemplateList.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.h2; 2 | 3 | 4 | import com.fasterxml.jackson.databind.annotation.JsonSerialize; 5 | import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; 6 | import lombok.Data; 7 | 8 | import javax.persistence.*; 9 | import java.util.Date; 10 | 11 | @Entity 12 | @Data 13 | @Table(name = "TEMPLATE_LIST") 14 | public class TemplateList { 15 | 16 | @Id 17 | @Column(name = "id") 18 | @JsonSerialize(using=ToStringSerializer.class) // fix js中long类型精度丢失的问题 19 | Long id; 20 | 21 | @Basic 22 | @Column(name = "name") 23 | String name; 24 | 25 | @Basic 26 | @Column(name = "create_date") 27 | Date createDate; 28 | 29 | @Basic 30 | @Column(name = "remark") 31 | String remark; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /docker/k8s-deploy.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: codegen 5 | spec: 6 | selector: 7 | matchLabels: 8 | app: codegen 9 | replicas: 1 10 | minReadySeconds: 15 11 | strategy: 12 | type: RollingUpdate 13 | rollingUpdate: 14 | maxUnavailable: 1 15 | maxSurge: 1 16 | template: 17 | metadata: 18 | labels: 19 | app: codegen 20 | spec: 21 | nodeName: master 22 | volumes: 23 | - name: data-dir 24 | hostPath: 25 | path: /data/codegen 26 | containers: 27 | - image: dockerdist.bdmd.com/codegen:1.0 28 | imagePullPolicy: Always 29 | name: codegen 30 | resources: 31 | limits: 32 | memory: 2Gi 33 | requests: 34 | memory: 100Mi 35 | volumeMounts: 36 | - name: data-dir 37 | mountPath: /Users/qping/test 38 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/build/Template.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.build; 2 | 3 | import lombok.Data; 4 | import me.qping.utils.codegen.generator.Condition; 5 | 6 | /** 7 | * @ClassName BaseFile 8 | * @Author qping 9 | * @Date 2019/8/5 09:15 10 | * @Version 1.0 11 | **/ 12 | @Data 13 | public class Template { 14 | 15 | public static final String CONDITION_DEFAULT_PACKAGE = "me.qping.utils.codegen.generator.condition"; 16 | public static final String TEMPLATE_SUFFIX = ".ftl"; 17 | 18 | String fileKey; 19 | String fileName; 20 | 21 | // 二者任选其一 22 | String filePath; 23 | String filePackage; 24 | 25 | String condition; 26 | 27 | 28 | // runtime 29 | boolean generateFileFlag = false; // 是否生成文件 30 | 31 | 32 | public String getFtlName(){ 33 | return fileKey.endsWith(TEMPLATE_SUFFIX) ? fileKey : fileKey + TEMPLATE_SUFFIX; 34 | } 35 | 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/freemarker/DirectiveUtil.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.freemarker; 2 | 3 | import freemarker.template.SimpleNumber; 4 | import freemarker.template.SimpleScalar; 5 | 6 | import java.util.Map; 7 | 8 | /** 9 | * @ClassName DirectiveUtil 10 | * @Description freemark工具类 11 | * @Author qping 12 | * @Date 2019/8/5 20:07 13 | * @Version 1.0 14 | **/ 15 | public class DirectiveUtil { 16 | 17 | public static String getString(Map map, String propName){ 18 | Object prop = map.get(propName); 19 | if(prop == null){ 20 | return null; 21 | } 22 | 23 | SimpleScalar value = (SimpleScalar) prop; 24 | return value.getAsString(); 25 | } 26 | 27 | public static int getInt(Map map, String propName){ 28 | Object prop = map.get(propName); 29 | if(prop == null){ 30 | return 0; 31 | } 32 | 33 | SimpleNumber value = (SimpleNumber) prop; 34 | return value.getAsNumber().intValue(); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.controller; 2 | 3 | 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.ui.Model; 6 | import org.springframework.web.bind.annotation.PathVariable; 7 | import org.springframework.web.bind.annotation.RequestMapping; 8 | import org.springframework.web.bind.annotation.ResponseBody; 9 | 10 | @Controller 11 | public class IndexController { 12 | 13 | String basePath = "/Users/qping/test/upload"; 14 | 15 | @RequestMapping(value = { "", "/", "/index" }) 16 | public String index(){ 17 | return "index"; 18 | } 19 | 20 | @RequestMapping(value = {"/pages/{path}"}) 21 | public String pages(@PathVariable String path) { 22 | return "pages/" + path; 23 | } 24 | 25 | @RequestMapping(value = {"/pages/{moduleName}/{pageName}"}) 26 | public String module(@PathVariable String moduleName, @PathVariable String pageName ) { 27 | return "pages/" + moduleName + "/" + pageName; 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /src/main/resources/static/layui/css/modules/code.css: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.5 MIT License By https://www.layui.com */ 2 | html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | server: 2 | port: 8888 3 | spring: 4 | devtools: 5 | restart: 6 | enabled: true #设置开启热部署 7 | additional-paths: src/main/java #重启目录 8 | exclude: WEB-INF/** 9 | servlet: 10 | multipart: 11 | max-file-size: -1 12 | max-request-size: -1 13 | jpa: 14 | hibernate: 15 | ddl-auto: update 16 | show-sql: true 17 | properties: 18 | hibernate: 19 | format_sql: false 20 | h2: 21 | console: 22 | enabled: true 23 | path: /console 24 | settings: 25 | trace: false 26 | web-allow-others: false 27 | datasource: 28 | driver-class-name: org.h2.Driver 29 | url: jdbc:h2:file:/Users/qping/test/.h2/codegen;AUTO_SERVER=TRUE 30 | username: sa 31 | password: sa 32 | # datasource: 33 | # driver-class-name: com.mysql.cj.jdbc.Driver 34 | # url: jdbc:mysql://192.168.1.201:30306/data_transform?useUnicode=true&characterEncoding=UTF-8&tinyInt1isBit=false 35 | # username: root 36 | # password: rxthinkingmysql 37 | # type: com.alibaba.druid.pool.DruidDataSource 38 | 39 | generate: 40 | output: /Users/qping/test -------------------------------------------------------------------------------- /src/main/resources/static/layui/lay/modules/code.js: -------------------------------------------------------------------------------- 1 | /** layui-v2.5.5 MIT License By https://www.layui.com */ 2 | ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(//g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('
  1. '+o.replace(/[\r\t\n]+/g,"
  2. ")+"
"),c.find(">.layui-code-h3")[0]||c.prepend('

'+(c.attr("lay-title")||e.title||"code")+(e.about?'layui.code':"")+"

");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); -------------------------------------------------------------------------------- /src/main/resources/schemas/rxthinking/tpl/beanBO.ftl: -------------------------------------------------------------------------------- 1 | package ${template.javaPackage}; 2 | 3 | import io.swagger.annotations.ApiModel; 4 | import io.swagger.annotations.ApiModelProperty; 5 | import lombok.Data; 6 | import javax.persistence.*; 7 | <#list template.importPackages as package> 8 | <#if package??> 9 | <@align> 10 | import ${package}; 11 | 12 | 13 | 14 | 15 | /** 16 | * @ClassName ${template.javaName!''} 17 | * @Description ${table.comment!''} 18 | * @Author ${copyright.author!''} 19 | * @Date ${copyright.date!''} 20 | * @Version ${copyright.version!''} 21 | **/ 22 | @Data 23 | @ApiModel(value = "${table.comment!'业务对象BO'} - ${table.name!''}") 24 | public class ${template.javaName!''} { 25 | 26 | <#list table.columns as column> 27 | <@align left=4> 28 | @ApiModelProperty(value = "${column.comment!''}") 29 | private ${column.javaType!''} ${column.camelCase!''}; 30 | 31 | 32 | 33 | 34 | @ApiModelProperty(value = "排序方式, 可选列: <#list table.columns as column>${column.camelCase!''}<#if column_has_next>, 可选排序: desc,asc; 示例:id asc") 35 | String orderBy; 36 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/rxthinking/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "params": { 3 | "ignoreTableName": "T_,TB_,V_,VW_,DT_,t_,tb_,v_,vw_,dt_", 4 | "ignoreColumnName": "F_,C_,COL_,f_,c_,col_", 5 | "basePackage": "com.rxthinking.test", 6 | "projectNameEn": "test" 7 | }, 8 | "templates": [ 9 | { 10 | "fileKey" : "beanBO", 11 | "fileName": "${table.camelCase}BO.java", 12 | "filePath": "bean/bo", 13 | "filePackage" : "${params.basePackage}.bean.bo", 14 | "condition": null 15 | }, 16 | { 17 | "fileKey": "bean", 18 | "fileName": "${table.camelCase}.java", 19 | "filePath": "bean", 20 | "filePackage" : "${params.basePackage}.bean", 21 | "condition": null 22 | }, 23 | { 24 | "fileKey": "repository", 25 | "fileName": "${table.camelCase}Repository.java", 26 | "filePath": "repository", 27 | "filePackage" : "${params.basePackage}.repository", 28 | "condition": null 29 | }, 30 | { 31 | "fileKey": "service", 32 | "fileName": "${table.camelCase}Service.java", 33 | "filePath": "service", 34 | "filePackage" : "${params.basePackage}.service", 35 | "condition": null 36 | } 37 | ] 38 | 39 | } 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/main/resources/static/css/paste.css: -------------------------------------------------------------------------------- 1 | .dropzone { 2 | margin-top:30px; 3 | min-height: 200px; 4 | width: 660px; 5 | border: 2px dashed #0087F7; 6 | border-radius: 5px; 7 | background: white; 8 | } 9 | 10 | .dropzone .dz-details{ 11 | padding:26px 5px; 12 | } 13 | 14 | .dropzone .dz-message { 15 | font-weight: 400; 16 | } 17 | .dropzone .dz-message .note { 18 | font-size: 0.8em; 19 | font-weight: 200; 20 | display: block; 21 | margin-top: 1.4rem; 22 | } 23 | 24 | .del-btn{ 25 | margin-left:2px; 26 | margin-top:2px; 27 | height:20px; 28 | width: 64px; 29 | } 30 | 31 | .file-name{ 32 | white-space: nowrap; 33 | width:70px; 34 | overflow: hidden; 35 | text-overflow: ellipsis; 36 | } 37 | 38 | textarea{ 39 | width: 660px; 40 | height: 200px; 41 | } 42 | 43 | .dropzone .dz-preview:hover .dz-image img { 44 | -webkit-transform: scale(1.02, 1.02); 45 | -moz-transform: scale(1.02, 1.02); 46 | -ms-transform: scale(1.02, 1.02); 47 | -o-transform: scale(1.02, 1.02); 48 | transform: scale(1.02, 1.02); 49 | -webkit-filter: none; 50 | filter: none; 51 | } 52 | 53 | .dropzone .dz-preview .dz-image { 54 | border-radius: 0px; 55 | width: 80px; 56 | height: 80px; 57 | } -------------------------------------------------------------------------------- /src/main/resources/static/js/dropzone/basic.css: -------------------------------------------------------------------------------- 1 | /* 2 | * The MIT License 3 | * Copyright (c) 2012 Matias Meno 4 | */ 5 | .dropzone, .dropzone * { 6 | box-sizing: border-box; } 7 | 8 | .dropzone { 9 | position: relative; } 10 | .dropzone .dz-preview { 11 | position: relative; 12 | display: inline-block; 13 | width: 120px; 14 | margin: 0.5em; } 15 | .dropzone .dz-preview .dz-progress { 16 | display: block; 17 | height: 15px; 18 | border: 1px solid #aaa; } 19 | .dropzone .dz-preview .dz-progress .dz-upload { 20 | display: block; 21 | height: 100%; 22 | width: 0; 23 | background: green; } 24 | .dropzone .dz-preview .dz-error-message { 25 | color: red; 26 | display: none; } 27 | .dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark { 28 | display: block; } 29 | .dropzone .dz-preview.dz-success .dz-success-mark { 30 | display: block; } 31 | .dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark { 32 | position: absolute; 33 | display: none; 34 | left: 30px; 35 | top: 30px; 36 | width: 54px; 37 | height: 58px; 38 | left: 50%; 39 | margin-left: -27px; } 40 | -------------------------------------------------------------------------------- /src/main/resources/schemas/springboot-jpa/build.json: -------------------------------------------------------------------------------- 1 | { 2 | "params": { 3 | "ignoreTableName": "T_,TB_,V_,VW_,t_,tb_,v_,vw_", 4 | "ignoreColumnName": "F_,C_,COL_,f_,c_,col_", 5 | "basePackage": "me.qping.utils", 6 | }, 7 | "templates":[ 8 | { 9 | "fileKey": "BeanPK", 10 | "fileName": "${table.camelCase}PK.java", 11 | "filePackage": "${params.basePackage}.bean", 12 | "filePath": "bean", 13 | "condition": "@.jpa.PrimaryKeyCondition" 14 | }, 15 | { 16 | "fileKey": "Bean", 17 | "fileName": "${table.camelCase}.java", 18 | "filePackage": "${params.basePackage}.bean", 19 | "filePath": "bean" 20 | }, 21 | { 22 | "fileKey": "Dao", 23 | "fileName": "${table.camelCase}Dao.java", 24 | "filePackage": "${params.basePackage}.dao", 25 | "filePath": "dao" 26 | }, 27 | { 28 | "fileKey": "Service", 29 | "fileName": "${table.camelCase}Service.java", 30 | "filePackage": "${params.basePackage}.service", 31 | "filePath": "service" 32 | }, 33 | { 34 | "fileKey": "RestController", 35 | "fileName": "${table.camelCase}Controller.java", 36 | "filePackage": "${params.basePackage}.controller", 37 | "filePath": "controller" 38 | } 39 | ] 40 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/springboot-jpa/tpl/Bean.ftl: -------------------------------------------------------------------------------- 1 | package ${template.javaPackage}; 2 | 3 | import lombok.Data; 4 | import javax.persistence.*; 5 | <#list template.importPackages as package> 6 | <#if package??> 7 | <@align> 8 | import ${package}; 9 | 10 | 11 | 12 | 13 | /** 14 | * @ClassName ${template.javaName!''} 15 | * @Description ${table.comment!''} 16 | * @Author ${copyright.author!''} 17 | * @Date ${copyright.date!''} 18 | * @Version ${copyright.version!''} 19 | **/ 20 | @Entity 21 | @Table(name = "${table.name!''}") 22 | @Data 23 | public class ${template.javaName!''} { 24 | 25 | <#list table.columns as column> 26 | <#if column.primaryKey == true> 27 | <@align left=4> 28 | @Id 29 | @Column(name = "${column.name!''}") 30 | private ${column.javaType!''} ${column.camelCase!''}; 31 | 32 | 33 | <#else> 34 | <@align left=4> 35 | @Basic 36 | @Column(name = "${column.name!''}"<#if column.columnDefine??>,columnDefinition = "${column.columnDefine}") 37 | private ${column.javaType!''} ${column.camelCase!''};<#if column.comment??> // ${column.comment} 38 | 39 | 40 | 41 | 42 | 43 | } -------------------------------------------------------------------------------- /src/main/resources/schemas/springboot-jpa/tpl/Service.ftl: -------------------------------------------------------------------------------- 1 | package ${template.javaPackage}; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Service; 5 | import java.util.List; 6 | 7 | import ${refs.Dao.javaPackage}.${refs.Dao.javaName}; 8 | import ${refs.Bean.javaPackage}.${refs.Bean.javaName}; 9 | 10 | /** 11 | * @ClassName ${template.javaName} 12 | * @Author ${copyright.author!''} 13 | * @Date ${copyright.date!''} 14 | * @Version ${copyright.version!''} 15 | **/ 16 | @Service 17 | public class ${template.javaName} { 18 | 19 | @Autowired 20 | ${refs.Dao.javaName} ${refs.Dao.javaName?uncap_first}; 21 | 22 | public ${refs.Bean.javaName} findById(Integer id) { 23 | return ${refs.Dao.javaName?uncap_first}.findById(id).orElse(null); 24 | } 25 | 26 | public List<${refs.Bean.javaName}> findAll() { 27 | return ${refs.Dao.javaName?uncap_first}.findAll(); 28 | } 29 | 30 | public Object save(${refs.Bean.javaName} ${refs.Bean.javaName?uncap_first}) { 31 | return ${refs.Dao.javaName?uncap_first}.save(${refs.Bean.javaName?uncap_first}); 32 | } 33 | 34 | public boolean delete(${refs.Bean.javaName} ${refs.Bean.javaName?uncap_first}) { 35 | ${refs.Dao.javaName?uncap_first}.delete(${refs.Bean.javaName?uncap_first}); 36 | return true; 37 | } 38 | 39 | } -------------------------------------------------------------------------------- /src/main/java/me/qping/utils/codegen/bean/build/BuildConfig.java: -------------------------------------------------------------------------------- 1 | package me.qping.utils.codegen.bean.build; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | import java.util.Map; 7 | 8 | /** 9 | * @ClassName BuildConfig 10 | * @Author qping 11 | * @Date 2019/8/5 09:57 12 | * @Version 1.0 13 | **/ 14 | @Data 15 | public class BuildConfig { 16 | 17 | 18 | public static final String outputPath = "/Users/qping/test/gencode"; 19 | public static final String ftlPath = "/schemas/%s/tpl"; 20 | public static final String buildJsonPath = "/schemas/%s/build.json"; 21 | 22 | // build.json 23 | Map params; 24 | List