├── .gitignore ├── LICENSE ├── README.md ├── docs ├── .vuepress │ ├── config.js │ └── public │ │ ├── favicon.ico │ │ └── logo.png ├── README.md ├── SUMMARY.md ├── action │ ├── cache.md │ ├── i18n.md │ ├── jpaauditing.md │ ├── sqlite.md │ └── task.md ├── base │ ├── jdkAndMaven.md │ ├── modules.md │ ├── preface.md │ └── zanshan.jpg ├── config │ ├── application.md │ ├── beetl.md │ ├── ehcache.md │ ├── logback.md │ ├── shiro.md │ └── swagger.md ├── demo.gif ├── donate.md ├── ecosystem │ ├── code-generator.md │ ├── database-doc-generator.md │ └── doc │ │ ├── boy.png │ │ ├── code-generate.png │ │ ├── doc.jpg │ │ ├── generate-result.png │ │ ├── menu-list.png │ │ ├── menu1.png │ │ ├── menu2.png │ │ ├── role.png │ │ ├── summary.jpg │ │ ├── table.jpg │ │ └── word.jpg ├── feature │ ├── dict.md │ ├── fileMgr.md │ ├── img │ │ ├── dict.jpg │ │ ├── guns-admin.jpg │ │ ├── guns-src.jpg │ │ ├── guns-web-js.jpg │ │ ├── guns-web-page.jpg │ │ ├── guns-web.jpg │ │ ├── loginLog.jpg │ │ ├── menu.jpg │ │ ├── menu_vue.jpg │ │ ├── modules.jpg │ │ ├── monitor.jpg │ │ ├── role_vue.jpg │ │ ├── sysConfig.jpg │ │ ├── user_role.jpg │ │ └── user_role_vue.jpg │ ├── log.md │ ├── menu.md │ ├── modules.md │ ├── monitor.md │ ├── permissionMgr.md │ └── sysConfig.md ├── hello_guns │ ├── account.jpg │ ├── add.md │ ├── base.md │ ├── create_table.md │ ├── delete.md │ ├── hello_guns.md │ ├── list.md │ ├── menu.jpg │ ├── menuAndPermission.md │ ├── role.jpg │ └── update.md ├── img │ ├── alipay.jpg │ ├── donate.jpg │ ├── resource │ │ └── menu_1.jpg │ ├── task_add.png │ ├── task_list.png │ ├── task_log.png │ └── wechat.jpg ├── other │ └── faq.md ├── package-lock.json ├── package.json ├── quickstart │ ├── clone.md │ ├── config.md │ ├── index.jpg │ ├── initDb.md │ ├── login.jpg │ ├── quickstart.md │ └── startup.md ├── resource.md └── yarn.lock ├── guns-admin ├── pom.xml └── src │ └── main │ ├── java │ └── cn │ │ └── enilu │ │ └── guns │ │ └── admin │ │ ├── AdminApplication.java │ │ ├── AdminServletInitializer.java │ │ ├── common │ │ └── constant │ │ │ ├── DatasourceEnum.java │ │ │ ├── enums │ │ │ └── Status.java │ │ │ └── state │ │ │ ├── ExpenseState.java │ │ │ ├── IsMenu.java │ │ │ └── MenuOpenStatus.java │ │ ├── config │ │ ├── DefaultFastjsonConfig.java │ │ ├── EhCacheConfig.java │ │ ├── SpringSessionConfig.java │ │ ├── SwaggerConfig.java │ │ ├── UserIDAuditorConfig.java │ │ ├── properties │ │ │ ├── BeetlProperties.java │ │ │ └── GunsProperties.java │ │ └── web │ │ │ ├── BeetlConfig.java │ │ │ ├── ShiroConfig.java │ │ │ └── WebConfig.java │ │ ├── core │ │ ├── CoreFlag.java │ │ ├── aop │ │ │ ├── BaseControllerExceptionHandler.java │ │ │ └── GlobalExceptionHandler.java │ │ ├── base │ │ │ ├── controller │ │ │ │ ├── BaseController.java │ │ │ │ ├── GlobalController.java │ │ │ │ └── GunsErrorView.java │ │ │ └── tips │ │ │ │ ├── ErrorTip.java │ │ │ │ ├── SuccessTip.java │ │ │ │ └── Tip.java │ │ ├── beetl │ │ │ ├── BeetlConfiguration.java │ │ │ └── ShiroExt.java │ │ ├── cache │ │ │ ├── BaseCacheFactory.java │ │ │ ├── CacheKit.java │ │ │ ├── EhcacheFactory.java │ │ │ ├── ICache.java │ │ │ └── ILoader.java │ │ ├── datascope │ │ │ └── DataScope.java │ │ ├── datasource │ │ │ └── DruidProperties.java │ │ ├── intercept │ │ │ ├── SessionInterceptor.java │ │ │ └── SessionTimeoutInterceptor.java │ │ ├── mutidatasource │ │ │ ├── DataSourceContextHolder.java │ │ │ ├── DynamicDataSource.java │ │ │ ├── annotion │ │ │ │ └── DataSource.java │ │ │ ├── aop │ │ │ │ └── MultiSourceExAop.java │ │ │ └── config │ │ │ │ └── MutiDataSourceProperties.java │ │ ├── page │ │ │ ├── PageBT.java │ │ │ └── PageInfoBT.java │ │ ├── qr │ │ │ ├── ImgQrTool.java │ │ │ ├── MatrixToImageConfig.java │ │ │ ├── MatrixToImageWriter.java │ │ │ └── QrImage.java │ │ ├── support │ │ │ ├── BasicType.java │ │ │ ├── BeanKit.java │ │ │ ├── ClassKit.java │ │ │ ├── CollectionKit.java │ │ │ ├── DateTime.java │ │ │ ├── DateTimeKit.java │ │ │ ├── HexKit.java │ │ │ ├── ObjectKit.java │ │ │ ├── PageKit.java │ │ │ └── exception │ │ │ │ └── ToolBoxException.java │ │ ├── util │ │ │ ├── ApiMenuFilter.java │ │ │ ├── FileUtil.java │ │ │ ├── HttpSessionHolder.java │ │ │ ├── KaptchaUtil.java │ │ │ ├── MD5Util.java │ │ │ ├── NumUtil.java │ │ │ ├── PingYinUtil.java │ │ │ ├── RenderUtil.java │ │ │ ├── ResKit.java │ │ │ └── SqlUtil.java │ │ └── xss │ │ │ ├── XssFilter.java │ │ │ └── XssHttpServletRequestWrapper.java │ │ ├── modular │ │ ├── message │ │ │ ├── MessageController.java │ │ │ ├── MessagesenderController.java │ │ │ └── MessagetemplateController.java │ │ └── system │ │ │ ├── controller │ │ │ ├── BlackboardController.java │ │ │ ├── CfgController.java │ │ │ ├── DeptController.java │ │ │ ├── DictController.java │ │ │ ├── KaptchaController.java │ │ │ ├── LogController.java │ │ │ ├── LoginController.java │ │ │ ├── LoginLogController.java │ │ │ ├── MenuController.java │ │ │ ├── NoticeController.java │ │ │ ├── RoleController.java │ │ │ ├── TaskController.java │ │ │ └── UserMgrController.java │ │ │ └── transfer │ │ │ ├── ManagerUser.java │ │ │ ├── ReqAddManager.java │ │ │ └── ReqEditManager.java │ │ └── runner │ │ └── StartJob.java │ ├── resources │ ├── META-INF │ │ └── spring-devtools.properties │ ├── application-dev.properties │ ├── application-prod.properties │ ├── application.properties │ ├── banner.txt │ ├── ehcache.xml │ ├── import.sql │ └── logback.xml │ └── webapp │ ├── WEB-INF │ └── view │ │ ├── 404.html │ │ ├── blackboard.html │ │ ├── common │ │ ├── _container.html │ │ ├── _right.html │ │ ├── _tab.html │ │ ├── _theme.html │ │ └── tags │ │ │ ├── NameCon.tag │ │ │ ├── SelectCon.tag │ │ │ ├── TimeCon.tag │ │ │ ├── avatar.tag │ │ │ ├── button.tag │ │ │ ├── input.tag │ │ │ ├── select.tag │ │ │ ├── table.tag │ │ │ └── textarea.tag │ │ ├── index.html │ │ ├── login.html │ │ ├── message │ │ ├── history │ │ │ ├── message.html │ │ │ └── message_view.html │ │ ├── sender │ │ │ ├── sender.html │ │ │ ├── sender_add.html │ │ │ └── sender_edit.html │ │ └── template │ │ │ ├── template.html │ │ │ ├── template_add.html │ │ │ └── template_edit.html │ │ └── system │ │ ├── cfg │ │ ├── cfg.html │ │ ├── cfg_add.html │ │ └── cfg_edit.html │ │ ├── code │ │ └── code.html │ │ ├── dept │ │ ├── dept.html │ │ ├── dept_add.html │ │ └── dept_edit.html │ │ ├── dict │ │ ├── dict.html │ │ ├── dict_add.html │ │ └── dict_edit.html │ │ ├── log │ │ ├── log.html │ │ └── login_log.html │ │ ├── menu │ │ ├── menu.html │ │ ├── menu_add.html │ │ └── menu_edit.html │ │ ├── notice │ │ ├── notice.html │ │ ├── notice_add.html │ │ └── notice_edit.html │ │ ├── role │ │ ├── role.html │ │ ├── role_add.html │ │ ├── role_assign.html │ │ └── role_edit.html │ │ ├── task │ │ ├── task.html │ │ ├── task_add.html │ │ ├── task_edit.html │ │ └── task_log.html │ │ └── user │ │ ├── user.html │ │ ├── user_add.html │ │ ├── user_chpwd.html │ │ ├── user_edit.html │ │ ├── user_roleassign.html │ │ └── user_view.html │ └── static │ ├── css │ ├── _fstyle.css │ ├── animate.css │ ├── bootstrap-rtl.css │ ├── bootstrap.min.css │ ├── edu-finance.css │ ├── font-awesome.css │ ├── font-awesome.min.css │ ├── login.css │ ├── patterns │ │ ├── header-profile-skin-1.png │ │ ├── header-profile-skin-3.png │ │ ├── header-profile.png │ │ └── shattered.png │ ├── plugins │ │ ├── awesome-bootstrap-checkbox │ │ │ └── awesome-bootstrap-checkbox.css │ │ ├── blueimp │ │ │ ├── css │ │ │ │ ├── blueimp-gallery-indicator.css │ │ │ │ ├── blueimp-gallery-video.css │ │ │ │ ├── blueimp-gallery.css │ │ │ │ ├── blueimp-gallery.min.css │ │ │ │ └── demo.css │ │ │ └── img │ │ │ │ ├── error.png │ │ │ │ ├── error.svg │ │ │ │ ├── loading.gif │ │ │ │ ├── play-pause.png │ │ │ │ ├── play-pause.svg │ │ │ │ ├── video-play.png │ │ │ │ └── video-play.svg │ │ ├── bootstrap-table │ │ │ └── bootstrap-table.min.css │ │ ├── chosen │ │ │ ├── chosen-sprite.png │ │ │ ├── chosen-sprite@2x.png │ │ │ └── chosen.css │ │ ├── clockpicker │ │ │ └── clockpicker.css │ │ ├── codemirror │ │ │ ├── ambiance.css │ │ │ └── codemirror.css │ │ ├── colorpicker │ │ │ ├── css │ │ │ │ └── bootstrap-colorpicker.min.css │ │ │ └── img │ │ │ │ └── bootstrap-colorpicker │ │ │ │ ├── alpha-horizontal.png │ │ │ │ ├── alpha.png │ │ │ │ ├── hue-horizontal.png │ │ │ │ ├── hue.png │ │ │ │ └── saturation.png │ │ ├── cropper │ │ │ └── cropper.min.css │ │ ├── dataTables │ │ │ └── dataTables.bootstrap.css │ │ ├── datapicker │ │ │ └── datepicker3.css │ │ ├── dropzone │ │ │ ├── basic.css │ │ │ └── dropzone.css │ │ ├── duallistbox │ │ │ └── bootstrap-duallistbox.css │ │ ├── footable │ │ │ ├── fonts │ │ │ │ ├── footable.eot │ │ │ │ ├── footable.svg │ │ │ │ ├── footable.ttf │ │ │ │ └── footable.woff │ │ │ └── footable.core.css │ │ ├── fullcalendar │ │ │ ├── fullcalendar.css │ │ │ └── fullcalendar.print.css │ │ ├── iCheck │ │ │ ├── custom.css │ │ │ ├── green.png │ │ │ └── green@2x.png │ │ ├── images │ │ │ ├── sort_asc.png │ │ │ ├── sort_desc.png │ │ │ ├── sprite-skin-flat.png │ │ │ ├── spritemap.png │ │ │ └── spritemap@2x.png │ │ ├── ionRangeSlider │ │ │ ├── ion.rangeSlider.css │ │ │ └── ion.rangeSlider.skinFlat.css │ │ ├── jQueryUI │ │ │ ├── images │ │ │ │ ├── ui-bg_flat_0_aaaaaa_40x100.png │ │ │ │ ├── ui-bg_flat_75_ffffff_40x100.png │ │ │ │ ├── ui-icons_222222_256x240.png │ │ │ │ ├── ui-icons_454545_256x240.png │ │ │ │ └── ui-icons_888888_256x240.png │ │ │ └── jquery-ui-1.10.4.custom.min.css │ │ ├── jasny │ │ │ └── jasny-bootstrap.min.css │ │ ├── jqgrid │ │ │ └── ui.jqgrid.css │ │ ├── jquery-treegrid │ │ │ ├── css │ │ │ │ └── jquery.treegrid.css │ │ │ └── img │ │ │ │ ├── collapse.png │ │ │ │ ├── expand.png │ │ │ │ ├── file.png │ │ │ │ └── folder.png │ │ ├── jsTree │ │ │ ├── 32px.png │ │ │ ├── style.min.css │ │ │ └── throbber.gif │ │ ├── markdown │ │ │ └── bootstrap-markdown.min.css │ │ ├── morris │ │ │ └── morris-0.4.3.min.css │ │ ├── multiselect │ │ │ └── bootstrap-multiselect.css │ │ ├── nouslider │ │ │ └── jquery.nouislider.css │ │ ├── plyr │ │ │ ├── plyr.css │ │ │ └── sprite.svg │ │ ├── simditor │ │ │ └── simditor.css │ │ ├── steps │ │ │ └── jquery.steps.css │ │ ├── summernote │ │ │ ├── summernote-bs3.css │ │ │ └── summernote.css │ │ ├── sweetalert │ │ │ └── sweetalert.css │ │ ├── switchery │ │ │ └── switchery.css │ │ ├── toastr │ │ │ └── toastr.min.css │ │ ├── treeview │ │ │ └── bootstrap-treeview.css │ │ ├── validate │ │ │ └── bootstrapValidator.min.css │ │ ├── webuploader │ │ │ └── webuploader.css │ │ └── ztree │ │ │ ├── demo.css │ │ │ ├── img │ │ │ ├── diy │ │ │ │ ├── 1_close.png │ │ │ │ ├── 1_open.png │ │ │ │ ├── 2.png │ │ │ │ ├── 3.png │ │ │ │ ├── 4.png │ │ │ │ ├── 5.png │ │ │ │ ├── 6.png │ │ │ │ ├── 7.png │ │ │ │ ├── 8.png │ │ │ │ └── 9.png │ │ │ ├── line_conn.gif │ │ │ ├── loading.gif │ │ │ ├── zTreeStandard.gif │ │ │ └── zTreeStandard.png │ │ │ └── zTreeStyle.css │ └── style.css │ ├── favicon.ico │ ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ ├── glyphicons-halflings-regular.woff │ └── glyphicons-halflings-regular.woff2 │ ├── img │ ├── bg.png │ ├── bg │ │ └── bg.jpg │ ├── girl.png │ ├── icons.png │ ├── loading-upload.gif │ ├── locked.png │ ├── login-background.jpg │ └── user.png │ ├── js │ ├── bootstrap.min.js │ ├── common │ │ ├── Feng.js │ │ ├── ajax-object.js │ │ ├── bootstrap-table-object.js │ │ ├── select-list-object.js │ │ ├── tree-table-object.js │ │ ├── web-upload-object.js │ │ └── ztree-object.js │ ├── contabs.js │ ├── content.js │ ├── hplus.js │ ├── jquery-ui-1.10.4.min.js │ ├── jquery-ui.custom.min.js │ ├── jquery.min.js │ ├── jquery.min.map │ ├── plugins │ │ ├── beautifyhtml │ │ │ └── beautifyhtml.js │ │ ├── blueimp │ │ │ └── jquery.blueimp-gallery.min.js │ │ ├── bootstrap-magnify │ │ │ ├── css │ │ │ │ ├── bootstrap-magnify.css │ │ │ │ └── bootstrap-magnify.min.css │ │ │ └── js │ │ │ │ ├── bootstrap-magnify.js │ │ │ │ └── bootstrap-magnify.min.js │ │ ├── bootstrap-table │ │ │ ├── bootstrap-table-mobile.min.js │ │ │ ├── bootstrap-table.min.js │ │ │ └── locale │ │ │ │ ├── bootstrap-table-zh-CN.js │ │ │ │ └── bootstrap-table-zh-CN.min.js │ │ ├── chartJs │ │ │ └── Chart.min.js │ │ ├── chosen │ │ │ └── chosen.jquery.js │ │ ├── clockpicker │ │ │ └── clockpicker.js │ │ ├── codemirror │ │ │ ├── codemirror.js │ │ │ └── mode │ │ │ │ ├── apl │ │ │ │ ├── apl.js │ │ │ │ └── index.html │ │ │ │ ├── asterisk │ │ │ │ ├── asterisk.js │ │ │ │ └── index.html │ │ │ │ ├── clike │ │ │ │ ├── clike.js │ │ │ │ ├── index.html │ │ │ │ └── scala.html │ │ │ │ ├── clojure │ │ │ │ ├── clojure.js │ │ │ │ └── index.html │ │ │ │ ├── cobol │ │ │ │ ├── cobol.js │ │ │ │ └── index.html │ │ │ │ ├── coffeescript │ │ │ │ ├── coffeescript.js │ │ │ │ └── index.html │ │ │ │ ├── commonlisp │ │ │ │ ├── commonlisp.js │ │ │ │ └── index.html │ │ │ │ ├── css │ │ │ │ ├── css.js │ │ │ │ ├── index.html │ │ │ │ ├── less.html │ │ │ │ ├── less_test.js │ │ │ │ ├── scss.html │ │ │ │ ├── scss_test.js │ │ │ │ └── test.js │ │ │ │ ├── cypher │ │ │ │ ├── cypher.js │ │ │ │ └── index.html │ │ │ │ ├── d │ │ │ │ ├── d.js │ │ │ │ └── index.html │ │ │ │ ├── dart │ │ │ │ ├── dart.js │ │ │ │ └── index.html │ │ │ │ ├── diff │ │ │ │ ├── diff.js │ │ │ │ └── index.html │ │ │ │ ├── django │ │ │ │ ├── django.js │ │ │ │ └── index.html │ │ │ │ ├── dockerfile │ │ │ │ ├── dockerfile.js │ │ │ │ └── index.html │ │ │ │ ├── dtd │ │ │ │ ├── dtd.js │ │ │ │ └── index.html │ │ │ │ ├── dylan │ │ │ │ ├── dylan.js │ │ │ │ └── index.html │ │ │ │ ├── ebnf │ │ │ │ ├── ebnf.js │ │ │ │ └── index.html │ │ │ │ ├── ecl │ │ │ │ ├── ecl.js │ │ │ │ └── index.html │ │ │ │ ├── eiffel │ │ │ │ ├── eiffel.js │ │ │ │ └── index.html │ │ │ │ ├── erlang │ │ │ │ ├── erlang.js │ │ │ │ └── index.html │ │ │ │ ├── fortran │ │ │ │ ├── fortran.js │ │ │ │ └── index.html │ │ │ │ ├── gas │ │ │ │ ├── gas.js │ │ │ │ └── index.html │ │ │ │ ├── gfm │ │ │ │ ├── gfm.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ │ ├── gherkin │ │ │ │ ├── gherkin.js │ │ │ │ └── index.html │ │ │ │ ├── go │ │ │ │ ├── go.js │ │ │ │ └── index.html │ │ │ │ ├── groovy │ │ │ │ ├── groovy.js │ │ │ │ └── index.html │ │ │ │ ├── haml │ │ │ │ ├── haml.js │ │ │ │ ├── index.html │ │ │ │ └── test.js │ │ │ │ ├── haskell │ │ │ │ ├── haskell.js │ │ │ │ └── index.html │ │ │ │ ├── haxe │ │ │ │ ├── haxe.js │ │ │ │ └── index.html │ │ │ │ ├── htmlembedded │ │ │ │ ├── htmlembedded.js │ │ │ │ └── index.html │ │ │ │ ├── htmlmixed │ │ │ │ ├── htmlmixed.js │ │ │ │ └── index.html │ │ │ │ ├── http │ │ │ │ ├── http.js │ │ │ │ └── index.html │ │ │ │ ├── idl │ │ │ │ ├── idl.js │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ ├── jade │ │ │ │ ├── index.html │ │ │ │ └── jade.js │ │ │ │ ├── javascript │ │ │ │ ├── index.html │ │ │ │ ├── javascript.js │ │ │ │ ├── json-ld.html │ │ │ │ ├── test.js │ │ │ │ └── typescript.html │ │ │ │ ├── jinja2 │ │ │ │ ├── index.html │ │ │ │ └── jinja2.js │ │ │ │ ├── julia │ │ │ │ ├── index.html │ │ │ │ └── julia.js │ │ │ │ ├── kotlin │ │ │ │ ├── index.html │ │ │ │ └── kotlin.js │ │ │ │ ├── livescript │ │ │ │ ├── index.html │ │ │ │ └── livescript.js │ │ │ │ ├── lua │ │ │ │ ├── index.html │ │ │ │ └── lua.js │ │ │ │ ├── markdown │ │ │ │ ├── index.html │ │ │ │ ├── markdown.js │ │ │ │ └── test.js │ │ │ │ ├── meta.js │ │ │ │ ├── mirc │ │ │ │ ├── index.html │ │ │ │ └── mirc.js │ │ │ │ ├── mllike │ │ │ │ ├── index.html │ │ │ │ └── mllike.js │ │ │ │ ├── modelica │ │ │ │ ├── index.html │ │ │ │ └── modelica.js │ │ │ │ ├── nginx │ │ │ │ ├── index.html │ │ │ │ └── nginx.js │ │ │ │ ├── ntriples │ │ │ │ ├── index.html │ │ │ │ └── ntriples.js │ │ │ │ ├── octave │ │ │ │ ├── index.html │ │ │ │ └── octave.js │ │ │ │ ├── pascal │ │ │ │ ├── index.html │ │ │ │ └── pascal.js │ │ │ │ ├── pegjs │ │ │ │ ├── index.html │ │ │ │ └── pegjs.js │ │ │ │ ├── perl │ │ │ │ ├── index.html │ │ │ │ └── perl.js │ │ │ │ ├── php │ │ │ │ ├── index.html │ │ │ │ ├── php.js │ │ │ │ └── test.js │ │ │ │ ├── pig │ │ │ │ ├── index.html │ │ │ │ └── pig.js │ │ │ │ ├── properties │ │ │ │ ├── index.html │ │ │ │ └── properties.js │ │ │ │ ├── puppet │ │ │ │ ├── index.html │ │ │ │ └── puppet.js │ │ │ │ ├── python │ │ │ │ ├── index.html │ │ │ │ └── python.js │ │ │ │ ├── q │ │ │ │ ├── index.html │ │ │ │ └── q.js │ │ │ │ ├── r │ │ │ │ ├── index.html │ │ │ │ └── r.js │ │ │ │ ├── rpm │ │ │ │ ├── changes │ │ │ │ │ └── index.html │ │ │ │ ├── index.html │ │ │ │ └── rpm.js │ │ │ │ ├── rst │ │ │ │ ├── index.html │ │ │ │ └── rst.js │ │ │ │ ├── ruby │ │ │ │ ├── index.html │ │ │ │ ├── ruby.js │ │ │ │ └── test.js │ │ │ │ ├── rust │ │ │ │ ├── index.html │ │ │ │ └── rust.js │ │ │ │ ├── sass │ │ │ │ ├── index.html │ │ │ │ └── sass.js │ │ │ │ ├── scheme │ │ │ │ ├── index.html │ │ │ │ └── scheme.js │ │ │ │ ├── shell │ │ │ │ ├── index.html │ │ │ │ ├── shell.js │ │ │ │ └── test.js │ │ │ │ ├── sieve │ │ │ │ ├── index.html │ │ │ │ └── sieve.js │ │ │ │ ├── slim │ │ │ │ ├── index.html │ │ │ │ ├── slim.js │ │ │ │ └── test.js │ │ │ │ ├── smalltalk │ │ │ │ ├── index.html │ │ │ │ └── smalltalk.js │ │ │ │ ├── smarty │ │ │ │ ├── index.html │ │ │ │ └── smarty.js │ │ │ │ ├── smartymixed │ │ │ │ ├── index.html │ │ │ │ └── smartymixed.js │ │ │ │ ├── solr │ │ │ │ ├── index.html │ │ │ │ └── solr.js │ │ │ │ ├── soy │ │ │ │ ├── index.html │ │ │ │ └── soy.js │ │ │ │ ├── sparql │ │ │ │ ├── index.html │ │ │ │ └── sparql.js │ │ │ │ ├── spreadsheet │ │ │ │ ├── index.html │ │ │ │ └── spreadsheet.js │ │ │ │ ├── sql │ │ │ │ ├── index.html │ │ │ │ └── sql.js │ │ │ │ ├── stex │ │ │ │ ├── index.html │ │ │ │ ├── stex.js │ │ │ │ └── test.js │ │ │ │ ├── tcl │ │ │ │ ├── index.html │ │ │ │ └── tcl.js │ │ │ │ ├── textile │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── textile.js │ │ │ │ ├── tiddlywiki │ │ │ │ ├── index.html │ │ │ │ ├── tiddlywiki.css │ │ │ │ └── tiddlywiki.js │ │ │ │ ├── tiki │ │ │ │ ├── index.html │ │ │ │ ├── tiki.css │ │ │ │ └── tiki.js │ │ │ │ ├── toml │ │ │ │ ├── index.html │ │ │ │ └── toml.js │ │ │ │ ├── tornado │ │ │ │ ├── index.html │ │ │ │ └── tornado.js │ │ │ │ ├── turtle │ │ │ │ ├── index.html │ │ │ │ └── turtle.js │ │ │ │ ├── vb │ │ │ │ ├── index.html │ │ │ │ └── vb.js │ │ │ │ ├── vbscript │ │ │ │ ├── index.html │ │ │ │ └── vbscript.js │ │ │ │ ├── velocity │ │ │ │ ├── index.html │ │ │ │ └── velocity.js │ │ │ │ ├── verilog │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── verilog.js │ │ │ │ ├── xml │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xml.js │ │ │ │ ├── xquery │ │ │ │ ├── index.html │ │ │ │ ├── test.js │ │ │ │ └── xquery.js │ │ │ │ ├── yaml │ │ │ │ ├── index.html │ │ │ │ └── yaml.js │ │ │ │ └── z80 │ │ │ │ ├── index.html │ │ │ │ └── z80.js │ │ ├── colorpicker │ │ │ └── bootstrap-colorpicker.min.js │ │ ├── cropper │ │ │ └── cropper.min.js │ │ ├── dataTables │ │ │ ├── dataTables.bootstrap.js │ │ │ └── jquery.dataTables.js │ │ ├── datapicker │ │ │ └── bootstrap-datepicker.js │ │ ├── diff_match_patch │ │ │ └── diff_match_patch.js │ │ ├── dropzone │ │ │ └── dropzone.js │ │ ├── duallistbox │ │ │ └── jquery.bootstrap-duallistbox.js │ │ ├── easypiechart │ │ │ └── jquery.easypiechart.js │ │ ├── echarts │ │ │ └── echarts-all.js │ │ ├── fancybox │ │ │ ├── blank.gif │ │ │ ├── fancybox_loading.gif │ │ │ ├── fancybox_loading@2x.gif │ │ │ ├── fancybox_overlay.png │ │ │ ├── fancybox_sprite.png │ │ │ ├── fancybox_sprite@2x.png │ │ │ ├── jquery.fancybox.css │ │ │ └── jquery.fancybox.js │ │ ├── flot │ │ │ ├── curvedLines.js │ │ │ ├── jquery.flot.js │ │ │ ├── jquery.flot.pie.js │ │ │ ├── jquery.flot.resize.js │ │ │ ├── jquery.flot.spline.js │ │ │ ├── jquery.flot.symbol.js │ │ │ └── jquery.flot.tooltip.min.js │ │ ├── footable │ │ │ └── footable.all.min.js │ │ ├── fullcalendar │ │ │ ├── fullcalendar.min.js │ │ │ └── moment.min.js │ │ ├── gritter │ │ │ ├── images │ │ │ │ ├── gritter-light.png │ │ │ │ ├── gritter.png │ │ │ │ └── ie-spacer.gif │ │ │ ├── jquery.gritter.css │ │ │ └── jquery.gritter.min.js │ │ ├── iCheck │ │ │ └── icheck.min.js │ │ ├── ionRangeSlider │ │ │ ├── ion.rangeSlider.min.js │ │ │ └── jasny │ │ │ │ └── jasny-bootstrap.min.js │ │ ├── jasny │ │ │ └── jasny-bootstrap.min.js │ │ ├── jeditable │ │ │ └── jquery.jeditable.js │ │ ├── jqgrid │ │ │ ├── i18n │ │ │ │ └── grid.locale-cn.js │ │ │ └── jquery.jqGrid.min.js │ │ ├── jquery-treegrid │ │ │ ├── extension │ │ │ │ └── jquery.treegrid.extension.js │ │ │ └── js │ │ │ │ ├── jquery.treegrid.bootstrap3.js │ │ │ │ └── jquery.treegrid.min.js │ │ ├── jquery-ui │ │ │ └── jquery-ui.min.js │ │ ├── jsKnob │ │ │ └── jquery.knob.js │ │ ├── jsTree │ │ │ ├── jstree.js │ │ │ └── jstree.min.js │ │ ├── jvectormap │ │ │ ├── jquery-jvectormap-1.2.2.min.js │ │ │ └── jquery-jvectormap-world-mill-en.js │ │ ├── layer │ │ │ ├── extend │ │ │ │ └── layer.ext.js │ │ │ ├── laydate │ │ │ │ ├── laydate.js │ │ │ │ ├── need │ │ │ │ │ └── laydate.css │ │ │ │ └── skins │ │ │ │ │ └── default │ │ │ │ │ ├── icon.png │ │ │ │ │ └── laydate.css │ │ │ ├── layer.min.js │ │ │ ├── layim │ │ │ │ ├── data │ │ │ │ │ ├── chatlog.json │ │ │ │ │ ├── friend.json │ │ │ │ │ ├── group.json │ │ │ │ │ └── groups.json │ │ │ │ ├── layim.css │ │ │ │ ├── layim.js │ │ │ │ └── loading.gif │ │ │ ├── mobile │ │ │ │ ├── layer.js │ │ │ │ └── need │ │ │ │ │ └── layer.css │ │ │ ├── skin │ │ │ │ ├── default │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ ├── icon.png │ │ │ │ │ ├── icon_ext.png │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ ├── textbg.png │ │ │ │ │ ├── xubox_ico0.png │ │ │ │ │ ├── xubox_loading0.gif │ │ │ │ │ ├── xubox_loading1.gif │ │ │ │ │ ├── xubox_loading2.gif │ │ │ │ │ ├── xubox_loading3.gif │ │ │ │ │ └── xubox_title0.png │ │ │ │ ├── layer.css │ │ │ │ ├── layer.ext.css │ │ │ │ └── moon │ │ │ │ │ ├── default.png │ │ │ │ │ └── style.css │ │ │ └── theme │ │ │ │ └── default │ │ │ │ ├── icon-ext.png │ │ │ │ ├── icon.png │ │ │ │ ├── layer.css │ │ │ │ ├── loading-0.gif │ │ │ │ ├── loading-1.gif │ │ │ │ └── loading-2.gif │ │ ├── markdown │ │ │ ├── bootstrap-markdown.js │ │ │ ├── bootstrap-markdown.zh.js │ │ │ ├── markdown.js │ │ │ └── to-markdown.js │ │ ├── metisMenu │ │ │ └── jquery.metisMenu.js │ │ ├── morris │ │ │ ├── morris.js │ │ │ └── raphael-2.1.0.min.js │ │ ├── multiselect │ │ │ └── bootstrap-multiselect.js │ │ ├── nestable │ │ │ └── jquery.nestable.js │ │ ├── nouslider │ │ │ └── jquery.nouislider.min.js │ │ ├── pace │ │ │ └── pace.min.js │ │ ├── peity │ │ │ └── jquery.peity.min.js │ │ ├── plyr │ │ │ └── plyr.js │ │ ├── preetyTextDiff │ │ │ └── jquery.pretty-text-diff.min.js │ │ ├── prettyfile │ │ │ └── bootstrap-prettyfile.js │ │ ├── rickshaw │ │ │ ├── rickshaw.min.js │ │ │ └── vendor │ │ │ │ └── d3.v3.js │ │ ├── simditor │ │ │ ├── hotkeys.js │ │ │ ├── hotkeys.min.js │ │ │ ├── jquery.min.js │ │ │ ├── module.js │ │ │ ├── module.min.js │ │ │ ├── simditor.js │ │ │ ├── simditor.min.js │ │ │ ├── uploader.js │ │ │ └── uploader.min.js │ │ ├── slimscroll │ │ │ └── jquery.slimscroll.min.js │ │ ├── sparkline │ │ │ └── jquery.sparkline.min.js │ │ ├── staps │ │ │ └── jquery.steps.min.js │ │ ├── suggest │ │ │ ├── bootstrap-suggest.min.js │ │ │ └── data.json │ │ ├── summernote │ │ │ ├── summernote-zh-CN.js │ │ │ └── summernote.min.js │ │ ├── sweetalert │ │ │ └── sweetalert.min.js │ │ ├── switchery │ │ │ └── switchery.js │ │ ├── toastr │ │ │ └── toastr.min.js │ │ ├── treeview │ │ │ └── bootstrap-treeview.js │ │ ├── validate │ │ │ ├── additional-methods.min.js │ │ │ ├── bootstrapValidator.min.js │ │ │ └── zh_CN.js │ │ ├── wangEditor │ │ │ └── wangEditor.js │ │ ├── webuploader │ │ │ ├── README.md │ │ │ ├── Uploader.swf │ │ │ ├── webuploader.css │ │ │ ├── webuploader.custom.js │ │ │ ├── webuploader.custom.min.js │ │ │ ├── webuploader.fis.js │ │ │ ├── webuploader.flashonly.js │ │ │ ├── webuploader.flashonly.min.js │ │ │ ├── webuploader.html5only.js │ │ │ ├── webuploader.html5only.min.js │ │ │ ├── webuploader.js │ │ │ ├── webuploader.min.js │ │ │ ├── webuploader.noimage.js │ │ │ ├── webuploader.noimage.min.js │ │ │ ├── webuploader.nolog.js │ │ │ ├── webuploader.nolog.min.js │ │ │ ├── webuploader.withoutimage.js │ │ │ └── webuploader.withoutimage.min.js │ │ └── ztree │ │ │ └── jquery.ztree.all.min.js │ └── welcome.js │ └── modular │ ├── code │ └── gen.js │ ├── message │ ├── history │ │ └── message.js │ ├── sender │ │ ├── sender.js │ │ └── sender_info.js │ └── template │ │ ├── template.js │ │ └── template_info.js │ └── system │ ├── cfg │ ├── cfg.js │ └── cfg_info.js │ ├── code │ └── code.js │ ├── dept │ ├── dept.js │ └── dept_info.js │ ├── dict │ ├── dict.js │ └── dict_info.js │ ├── log │ ├── log.js │ └── login_log.js │ ├── menu │ ├── menu.js │ └── menu_info.js │ ├── notice │ ├── notice.js │ └── notice_info.js │ ├── role │ ├── role.js │ └── role_info.js │ ├── task │ ├── task.js │ ├── task_info.js │ └── task_log.js │ └── user │ ├── user.js │ └── user_info.js ├── guns-dao ├── pom.xml └── src │ ├── main │ └── java │ │ └── cn │ │ └── enilu │ │ └── guns │ │ └── dao │ │ ├── BaseRepository.java │ │ ├── BaseRepositoryFactoryBean.java │ │ ├── BaseRepositoryImpl.java │ │ ├── DaoConfiguration.java │ │ ├── cache │ │ ├── Cache.java │ │ ├── CacheDao.java │ │ ├── ConfigCache.java │ │ ├── DictCache.java │ │ ├── TokenCache.java │ │ ├── impl │ │ │ ├── ConfigCacheImpl.java │ │ │ ├── DictCacheImpl.java │ │ │ └── EhcacheDao.java │ │ └── package-info.java │ │ ├── message │ │ ├── MessageRepository.java │ │ ├── MessagesenderRepository.java │ │ └── MessagetemplateRepository.java │ │ └── system │ │ ├── CfgRepository.java │ │ ├── DeptRepository.java │ │ ├── DictRepository.java │ │ ├── FileInfoRepository.java │ │ ├── LoginLogRepository.java │ │ ├── MenuRepository.java │ │ ├── OperationLogRepository.java │ │ ├── RelationRepository.java │ │ ├── RoleRepository.java │ │ ├── SysNoticeRepository.java │ │ ├── TaskLogRepository.java │ │ ├── TaskRepository.java │ │ └── UserRepository.java │ └── test │ ├── java │ └── cn │ │ └── enilu │ │ └── guns │ │ └── dao │ │ ├── AppConfiguration.java │ │ ├── BaseApplicationStartTest.java │ │ └── system │ │ ├── CfgRepositoryTest.java │ │ └── MenuRepositoryTest.java │ └── resources │ └── application-test.properties ├── guns-entity ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── enilu │ └── guns │ └── bean │ ├── annotion │ └── core │ │ ├── BussinessLog.java │ │ └── Permission.java │ ├── constant │ ├── Const.java │ ├── cache │ │ ├── Cache.java │ │ └── CacheKey.java │ ├── factory │ │ └── PageFactory.java │ ├── package-info.java │ └── state │ │ ├── BizLogType.java │ │ ├── LogSucceed.java │ │ ├── LogType.java │ │ ├── ManagerStatus.java │ │ ├── MenuStatus.java │ │ └── Order.java │ ├── core │ └── ShiroUser.java │ ├── dictmap │ ├── CfgDict.java │ ├── CommonDict.java │ ├── DeleteDict.java │ ├── DeptDict.java │ ├── DictMap.java │ ├── LogDict.java │ ├── MenuDict.java │ ├── NoticeMap.java │ ├── RoleDict.java │ ├── SystemDict.java │ ├── TaskDict.java │ ├── UserDict.java │ └── base │ │ └── AbstractDictMap.java │ ├── dto │ └── UserDto.java │ ├── entity │ ├── BaseEntity.java │ ├── message │ │ ├── Message.java │ │ ├── MessageSender.java │ │ └── MessageTemplate.java │ ├── system │ │ ├── Cfg.java │ │ ├── Dept.java │ │ ├── Dict.java │ │ ├── FileInfo.java │ │ ├── LoginLog.java │ │ ├── Menu.java │ │ ├── Notice.java │ │ ├── OperationLog.java │ │ ├── Relation.java │ │ ├── Role.java │ │ ├── Task.java │ │ ├── TaskLog.java │ │ └── User.java │ └── test │ │ ├── Boy.java │ │ └── Girl.java │ ├── enumeration │ ├── BizExceptionEnum.java │ ├── ConfigKeyEnum.java │ ├── ProjectEnum.java │ ├── RedisQueueName.java │ ├── SerialNumberEnum.java │ ├── TypeEnum.java │ └── cms │ │ ├── BannerTypeEnum.java │ │ └── ChannelEnum.java │ ├── exception │ ├── GunsException.java │ ├── GunsExceptionEnum.java │ ├── InvalidKaptchaException.java │ ├── MailException.java │ ├── ParamException.java │ ├── ServiceExceptionEnum.java │ ├── SlConnectException.java │ ├── SlEvalException.java │ ├── ValidException.java │ ├── XSException.java │ └── XSRuntimeException.java │ └── vo │ ├── DictVo.java │ ├── QuartzJob.java │ ├── SpringContextHolder.java │ ├── front │ ├── Ret.java │ └── Rets.java │ ├── node │ ├── DeptNode.java │ ├── IsMenu.java │ ├── MenuNode.java │ ├── Node.java │ └── ZTreeNode.java │ └── query │ ├── DynamicSpecifications.java │ ├── MutiStrFactory.java │ ├── Page.java │ └── SearchFilter.java ├── guns-generator ├── pom.xml └── src │ └── main │ ├── java │ └── cn │ │ └── enilu │ │ └── flash │ │ └── code │ │ ├── AbstractLoader.java │ │ ├── CodeConfig.java │ │ ├── ColumnDescriptor.java │ │ ├── EntityDescLoader.java │ │ ├── Generator.java │ │ ├── Loader.java │ │ ├── StrKit.java │ │ ├── TableDescLoader.java │ │ ├── TableDescriptor.java │ │ └── Utils.java │ └── resources │ └── code │ ├── code.json │ ├── controller.vm │ ├── repository.vm │ ├── service.vm │ └── view │ ├── add.html.vm │ ├── edit.html.vm │ ├── index.html.vm │ ├── index.js.vm │ └── info.js.vm ├── guns-service ├── pom.xml └── src │ ├── main │ └── java │ │ └── cn │ │ └── enilu │ │ └── guns │ │ ├── aop │ │ ├── LogAop.java │ │ └── PermissionAop.java │ │ ├── factory │ │ ├── DictFieldWarpperFactory.java │ │ └── UserFactory.java │ │ ├── platform │ │ ├── log │ │ │ ├── LogFactory.java │ │ │ ├── LogManager.java │ │ │ └── LogTaskFactory.java │ │ └── package-info.java │ │ ├── service │ │ ├── BaseService.java │ │ ├── CrudService.java │ │ ├── DeleteService.java │ │ ├── InsertService.java │ │ ├── SelectService.java │ │ ├── UpdateService.java │ │ ├── message │ │ │ ├── MessageService.java │ │ │ ├── MessagesenderService.java │ │ │ ├── MessagetemplateService.java │ │ │ ├── email │ │ │ │ ├── DefaultEmailSender.java │ │ │ │ └── EmailSender.java │ │ │ └── sms │ │ │ │ ├── SmsSender.java │ │ │ │ └── tencent │ │ │ │ └── TencentSmsSender.java │ │ ├── system │ │ │ ├── AccountService.java │ │ │ ├── CfgService.java │ │ │ ├── DeptService.java │ │ │ ├── DictService.java │ │ │ ├── FileService.java │ │ │ ├── IConstantFactory.java │ │ │ ├── LogObjectHolder.java │ │ │ ├── LoginLogService.java │ │ │ ├── MenuService.java │ │ │ ├── NoticeService.java │ │ │ ├── OperationLogService.java │ │ │ ├── RoleService.java │ │ │ ├── UserService.java │ │ │ └── impl │ │ │ │ └── ConstantFactory.java │ │ └── task │ │ │ ├── BaseJob.java │ │ │ ├── JobExecuter.java │ │ │ ├── JobService.java │ │ │ ├── NoConurrentBaseJob.java │ │ │ ├── QuartzConfigration.java │ │ │ ├── TaskService.java │ │ │ ├── TaskUtils.java │ │ │ └── job │ │ │ └── HelloJob.java │ │ ├── shiro │ │ ├── ShiroDbRealm.java │ │ ├── ShiroKit.java │ │ ├── check │ │ │ ├── ICheck.java │ │ │ ├── PermissionCheckFactory.java │ │ │ └── PermissionCheckManager.java │ │ └── factory │ │ │ ├── IShiro.java │ │ │ └── ShiroFactroy.java │ │ ├── warpper │ │ ├── BaseControllerWarpper.java │ │ ├── DeptWarpper.java │ │ ├── DictWarpper.java │ │ ├── LogWarpper.java │ │ ├── MenuWarpper.java │ │ ├── NoticeWrapper.java │ │ ├── RoleWarpper.java │ │ └── UserWarpper.java │ │ └── web │ │ ├── listener │ │ ├── CacheListener.java │ │ └── ConfigListener.java │ │ └── package-info.java │ └── test │ ├── java │ └── cn │ │ └── enilu │ │ └── guns │ │ └── service │ │ ├── BaseApplicationStartTest.java │ │ ├── ServiceConfiguration.java │ │ └── system │ │ └── DeptServiceTest.java │ └── resources │ └── application-test.properties ├── guns-utils ├── pom.xml └── src │ └── main │ └── java │ └── cn │ └── enilu │ └── guns │ └── utils │ ├── BasicType.java │ ├── BeanUtil.java │ ├── BirthUtils.java │ ├── CollectionKit.java │ ├── Constants.java │ ├── Convert.java │ ├── CryptUtils.java │ ├── DateTime.java │ ├── DateTimeKit.java │ ├── DateUtil.java │ ├── HexKit.java │ ├── HttpKit.java │ ├── Lists.java │ ├── Log.java │ ├── MD5.java │ ├── Maps.java │ ├── MobileUtil.java │ ├── PageKit.java │ ├── RSAUtil.java │ ├── RandomUtils.java │ ├── StrKit.java │ ├── StringUtils.java │ ├── ToolUtil.java │ ├── WafKit.java │ ├── WafRequestWrapper.java │ ├── XmlHelper.java │ ├── ZipUtils.java │ └── cache │ ├── TimeCacheMap.java │ └── exception │ └── ToolBoxException.java └── pom.xml /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .vuepress 3 | .classpath 4 | .factorypath 5 | ./**/target/* 6 | docs/node_modules 7 | docs/*.log 8 | docs/.vuepress/dist 9 | **/target/* 10 | *.project 11 | *.classpath 12 | *.factorypath 13 | */.settings/* 14 | .settings/* 15 | .vscode/* 16 | .idea/* 17 | guns-admin-vuejs/node_modules/* 18 | guns-admin-vuejs/.idea/* 19 | guns-admin-vuejs/dist/* 20 | log/* 21 | guns-h5/node_modules/* 22 | guns-h5/.idea/* 23 | guns-h5/dist/* 24 | .DS_Store -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 enilu.cn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /docs/.vuepress/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enilu/guns-lite/46eedbca785eb6c95641cc73a7e07d869f8f2246/docs/.vuepress/public/favicon.ico -------------------------------------------------------------------------------- /docs/.vuepress/public/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/enilu/guns-lite/46eedbca785eb6c95641cc73a7e07d869f8f2246/docs/.vuepress/public/logo.png -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | --- 2 | home: true 3 | heroImage: /logo.png 4 | actionText: 快速开始 → 5 | actionLink: /base/preface 6 | footer: MIT Licensed | Copyright © 2018-present enilu 7 | --- 8 | 9 |
基于spring boot快速构建web应用程序
17 |封装完善的后台管理功能,包括用户、部门、权限、日志、字典、等基础功能。
21 |支持mysql、oracle等多数据库平台。
25 |使用spring boot+jpa构建后端服务,使用Beetl+Bootstrap构建页面
29 |基于该系统已经上线了很多大大小小的后管系统,方案成熟,坑少
33 |丰富的案例提供了最佳实践,没有最好的框架,只有最适合的框架
37 |