├── .gitignore ├── LICENSE ├── README.md ├── bin ├── shutdown.sh └── startup.sh ├── deploy.sh ├── ifast.sql ├── pom.xml └── src └── main ├── java └── com │ └── ifast │ ├── Application.java │ ├── api │ ├── config │ │ └── JWTConfigProperties.java │ ├── controller │ │ └── AppUserController.java │ ├── exception │ │ └── IFastApiException.java │ ├── pojo │ │ ├── dto │ │ │ ├── UserLoginDTO.java │ │ │ ├── UserLogoutDTO.java │ │ │ └── UserRegDTO.java │ │ └── vo │ │ │ └── TokenVO.java │ ├── service │ │ ├── AppUserService.java │ │ └── impl │ │ │ └── AppUserServiceImpl.java │ ├── shiro │ │ ├── JWTAuthenticationFilter.java │ │ ├── JWTAuthenticationTokenToken.java │ │ └── JWTAuthorizingRealm.java │ └── util │ │ ├── ApiAssert.java │ │ └── JWTUtil.java │ ├── common │ ├── annotation │ │ └── Log.java │ ├── aspect │ │ ├── DemoModeAspect.java │ │ └── LogAspect.java │ ├── base │ │ ├── BaseController.java │ │ ├── BaseDO.java │ │ ├── BaseDao.java │ │ ├── CoreService.java │ │ └── CoreServiceImpl.java │ ├── component │ │ ├── oss │ │ │ ├── config │ │ │ │ └── OSSConfiguration.java │ │ │ └── support │ │ │ │ ├── FileNameUtils.java │ │ │ │ ├── OSSManager.java │ │ │ │ ├── UploadServer.java │ │ │ │ ├── aliyun │ │ │ │ ├── AliyunOSSProperties.java │ │ │ │ └── AliyunUploadServer.java │ │ │ │ ├── local │ │ │ │ ├── LocalUploadProperties.java │ │ │ │ └── LocalUploadServer.java │ │ │ │ └── qiniu │ │ │ │ ├── QiNiuOSSProperties.java │ │ │ │ └── QiNiuUploadServer.java │ │ └── sms │ │ │ ├── config │ │ │ ├── SmsBasicProperties.java │ │ │ └── SmsConfiguration.java │ │ │ ├── dto │ │ │ ├── SendDTO.java │ │ │ └── VerifyDTO.java │ │ │ └── support │ │ │ ├── CodeGenerator.java │ │ │ ├── DefaultCodeGenerator.java │ │ │ ├── MapSceneRepository.java │ │ │ ├── SceneRepository.java │ │ │ ├── SmsManager.java │ │ │ ├── SmsSender.java │ │ │ ├── SmsVerify.java │ │ │ ├── aliyun │ │ │ ├── AliyunProperties.java │ │ │ └── AliyunSender.java │ │ │ └── zhutong │ │ │ ├── ZhuTongProperties.java │ │ │ └── ZhuTongSender.java │ ├── config │ │ ├── CacheConfiguration.java │ │ ├── Constant.java │ │ ├── DateConverConfiguration.java │ │ ├── DruidDBConfiguration.java │ │ ├── IFastProperties.java │ │ └── MyBatisConfiguration.java │ ├── controller │ │ ├── ConfigController.java │ │ ├── DictController.java │ │ └── LogController.java │ ├── dao │ │ ├── ConfigDao.java │ │ ├── DictDao.java │ │ └── LogDao.java │ ├── domain │ │ ├── ConfigDO.java │ │ ├── DictDO.java │ │ ├── LogDO.java │ │ └── Tree.java │ ├── exception │ │ ├── IFastException.java │ │ ├── MainsiteErrorController.java │ │ └── handler │ │ │ └── ApplicationExceptionHandler.java │ ├── service │ │ ├── ConfigService.java │ │ ├── DictService.java │ │ ├── LogService.java │ │ └── impl │ │ │ ├── ConfigServiceImpl.java │ │ │ ├── DictServiceImpl.java │ │ │ └── LogServiceImpl.java │ ├── shiro │ │ ├── cache │ │ │ ├── SpringCacheManagerWrapper.java │ │ │ └── SpringCacheWrapper.java │ │ ├── config │ │ │ ├── ShiroConfiguration.java │ │ │ └── ShiroProperties.java │ │ ├── controller │ │ │ └── ShiroController.java │ │ ├── realm │ │ │ └── IFastModularRealm.java │ │ └── session │ │ │ └── RedisSessionDAO.java │ ├── tags │ │ ├── IftgDialectEntrance.java │ │ ├── processor │ │ │ └── IftgSelectProcessor.java │ │ ├── util │ │ │ └── IftgUtil.java │ │ └── vo │ │ │ └── ValueVO.java │ ├── type │ │ ├── EnumCommon.java │ │ └── EnumErrorCode.java │ ├── utils │ │ ├── BuildTree.java │ │ ├── CaptchaUtils.java │ │ ├── CodecUtils.java │ │ ├── DateUtils.java │ │ ├── FileType.java │ │ ├── GenUtils.java │ │ ├── HttpContextUtils.java │ │ ├── IPUtils.java │ │ ├── ImageUtils.java │ │ ├── JSONUtils.java │ │ ├── PasswdUtils.java │ │ ├── Result.java │ │ ├── ScheduleJobUtils.java │ │ ├── ShiroUtils.java │ │ ├── ShortUrlUtils.java │ │ ├── SpringContextHolder.java │ │ ├── UUIDUtils.java │ │ └── xss │ │ │ └── JsoupUtil.java │ └── validation │ │ ├── ValidForm.java │ │ ├── ValidFormAspect.java │ │ ├── ValidateUtils.java │ │ └── ValidationResult.java │ ├── demo │ ├── controller │ │ ├── DemoController.java │ │ ├── PoiUtils.java │ │ ├── SmsController.java │ │ └── TestController.java │ ├── dao │ │ └── DemoDao.java │ ├── domain │ │ └── DemoDO.java │ ├── dto │ │ └── TestValidDTO.java │ └── service │ │ ├── DemoService.java │ │ └── impl │ │ └── DemoServiceImpl.java │ ├── generator │ ├── controller │ │ └── GeneratorController.java │ ├── dao │ │ └── GeneratorMapper.java │ ├── domain │ │ ├── ColumnDO.java │ │ └── TableDO.java │ ├── service │ │ ├── GeneratorService.java │ │ └── impl │ │ │ └── GeneratorServiceImpl.java │ └── type │ │ └── EnumGen.java │ ├── job │ ├── config │ │ └── QuartzConfigration.java │ ├── controller │ │ └── JobController.java │ ├── dao │ │ └── TaskDao.java │ ├── domain │ │ ├── ScheduleJobDO.java │ │ └── TaskDO.java │ ├── jobs │ │ └── TestJob.java │ ├── listenner │ │ └── ScheduleJobInitListener.java │ ├── quartz │ │ ├── JobFactory.java │ │ └── QuartzManager.java │ └── service │ │ ├── JobService.java │ │ └── impl │ │ └── JobServiceImpl.java │ ├── oss │ ├── controller │ │ └── FileController.java │ ├── dao │ │ └── FileDao.java │ ├── domain │ │ └── FileDO.java │ └── service │ │ ├── FileService.java │ │ └── impl │ │ └── FileServiceImpl.java │ ├── sys │ ├── config │ │ ├── BDSessionListener.java │ │ ├── Swagger2Configuration.java │ │ ├── SwaggerProperties.java │ │ └── XssConfiguration.java │ ├── controller │ │ ├── AdminController.java │ │ ├── DeptController.java │ │ ├── MenuController.java │ │ ├── RoleController.java │ │ ├── SessionController.java │ │ └── UserController.java │ ├── dao │ │ ├── DeptDao.java │ │ ├── MenuDao.java │ │ ├── RoleDao.java │ │ ├── RoleMenuDao.java │ │ ├── UserDao.java │ │ └── UserRoleDao.java │ ├── domain │ │ ├── DeptDO.java │ │ ├── MenuDO.java │ │ ├── RoleDO.java │ │ ├── RoleMenuDO.java │ │ ├── UserDO.java │ │ ├── UserOnline.java │ │ └── UserRoleDO.java │ ├── filter │ │ ├── XssFilter.java │ │ └── XssHttpServletRequestWrapper.java │ ├── service │ │ ├── DeptService.java │ │ ├── MenuService.java │ │ ├── RoleService.java │ │ ├── SessionService.java │ │ ├── UserService.java │ │ └── impl │ │ │ ├── DeptServiceImpl.java │ │ │ ├── MenuServiceImpl.java │ │ │ ├── RoleServiceImpl.java │ │ │ ├── SessionServiceImpl.java │ │ │ └── UserServiceImpl.java │ ├── shiro │ │ └── SysUserAuthorizingRealm.java │ └── vo │ │ └── UserVO.java │ └── wxmp │ ├── aspect │ └── BoundAppIdAspect.java │ ├── builder │ ├── AbstractBuilder.java │ ├── ImageBuilder.java │ ├── NewsBuilder.java │ └── TextBuilder.java │ ├── controller │ ├── MpArticleImageController.java │ ├── MpArticleNewsController.java │ ├── MpArticleTxtController.java │ ├── MpConfigController.java │ ├── MpFansController.java │ ├── MpMenuController.java │ └── mp │ │ ├── WxMediaController.java │ │ ├── WxMenuController.java │ │ └── WxMsgController.java │ ├── dao │ ├── MpArticleDao.java │ ├── MpConfigDao.java │ ├── MpFansDao.java │ └── MpMenuDao.java │ ├── domain │ ├── MpArticleDO.java │ ├── MpConfigDO.java │ ├── MpFansDO.java │ └── MpMenuDO.java │ ├── handler │ ├── AbstractHandler.java │ ├── KfSessionHandler.java │ ├── LocationHandler.java │ ├── LogHandler.java │ ├── MenuHandler.java │ ├── MsgHandler.java │ ├── NullHandler.java │ ├── ScanHandler.java │ ├── StoreCheckNotifyHandler.java │ ├── SubscribeHandler.java │ └── UnsubscribeHandler.java │ ├── pojo │ ├── dto │ │ └── WxMenuKey.java │ └── type │ │ └── Const.java │ ├── service │ ├── MpArticleService.java │ ├── MpConfigService.java │ ├── MpFansService.java │ ├── MpMenuService.java │ ├── WeixinService.java │ └── impl │ │ ├── MpArticleServiceImpl.java │ │ ├── MpConfigServiceImpl.java │ │ ├── MpFansServiceImpl.java │ │ └── MpMenuServiceImpl.java │ └── util │ └── WxMpConfigHolder.java └── resources ├── application-dev.yml ├── application-prod.yml ├── application.yml ├── config ├── banner.txt ├── ehcache.xml ├── quartz.properties └── quartz.sql ├── docker ├── Dockerfile └── run ├── logback-spring.xml ├── mapper ├── common │ ├── ConfigMapper.xml │ ├── DictMapper.xml │ ├── FileMapper.xml │ ├── LogMapper.xml │ └── TaskMapper.xml ├── demo │ └── DemoDao.xml ├── ifast │ └── DemoBaseMapper.xml ├── sys │ ├── DeptMapper.xml │ ├── MenuMapper.xml │ ├── RoleMapper.xml │ ├── RoleMenuMapper.xml │ ├── UserMapper.xml │ └── UserRoleMapper.xml └── wxmp │ ├── MpArticleMapper.xml │ ├── MpConfigMapper.xml │ ├── MpFansMapper.xml │ └── MpMenuMapper.xml ├── public ├── FontIcoList.html ├── chart │ └── graph_echarts.html ├── diagram-viewer │ ├── images │ │ ├── bg.png │ │ ├── breadcrumbs.png │ │ ├── checker-bg.png │ │ └── deployer │ │ │ ├── blue │ │ │ └── message_catch.png │ │ │ ├── business_rule.png │ │ │ ├── error_catch.png │ │ │ ├── error_throw.png │ │ │ ├── manual.png │ │ │ ├── message_catch.png │ │ │ ├── message_throw.png │ │ │ ├── receive.png │ │ │ ├── script.png │ │ │ ├── send.png │ │ │ ├── service.png │ │ │ ├── signal_catch.png │ │ │ ├── signal_throw.png │ │ │ ├── timer.png │ │ │ └── user.png │ ├── index.html │ ├── js │ │ ├── ActivitiRest.js │ │ ├── ActivityImpl.js │ │ ├── Color.js │ │ ├── LineBreakMeasurer.js │ │ ├── Polyline.js │ │ ├── ProcessDiagramCanvas.js │ │ ├── ProcessDiagramGenerator.js │ │ ├── jquery │ │ │ ├── jquery.asyncqueue.js │ │ │ ├── jquery.js │ │ │ └── jquery.progressbar.js │ │ ├── jstools.js │ │ ├── raphael.2.1.1.js │ │ ├── raphael.js │ │ ├── raphael_uncompressed.js │ │ └── textlayout.js │ └── style.css └── modeler.html ├── static ├── css │ ├── animate.css │ ├── blog │ │ ├── bootstrap.min.css │ │ ├── clean-blog.css │ │ └── clean-blog.min.css │ ├── bootstrap-rtl.css │ ├── bootstrap.min.css │ ├── demo │ │ └── webuploader-demo.css │ ├── font-awesome.css │ ├── font-awesome.min.css │ ├── gg-ifast.css │ ├── layui.css │ ├── layui.mobile.css │ ├── login.css │ ├── login │ │ ├── agree.js │ │ ├── base.css │ │ ├── demo.css │ │ ├── iconfont.css │ │ ├── jquery.js │ │ ├── jquery.min.js │ │ ├── jquery.qrcode.min.js │ │ ├── login-logo.png │ │ ├── login.js │ │ └── reg.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 │ │ ├── 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 │ │ ├── jqTreeGrid │ │ │ └── jquery.treegrid.css │ │ ├── jqgrid │ │ │ └── ui.jqgrid.css │ │ ├── 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 │ │ │ ├── font │ │ │ │ └── summernote.woff │ │ │ ├── summernote-0.8.8.css │ │ │ ├── summernote-bs3.css │ │ │ └── summernote.css │ │ ├── sweetalert │ │ │ └── sweetalert.css │ │ ├── switchery │ │ │ └── switchery.css │ │ ├── toastr │ │ │ └── toastr.min.css │ │ ├── treeview │ │ │ └── bootstrap-treeview.css │ │ ├── webuploader │ │ │ └── webuploader.css │ │ └── zTree │ │ │ ├── awesome.css │ │ │ └── metroStyle │ │ │ ├── img │ │ │ ├── 32px.png │ │ │ ├── line_conn.png │ │ │ ├── loading.gif │ │ │ ├── metro.gif │ │ │ └── metro.png │ │ │ └── metroStyle.css │ └── style.css ├── editor-app │ ├── app-cfg.js │ ├── app.js │ ├── configuration │ │ ├── properties-assignment-controller.js │ │ ├── properties-condition-expression-controller.js │ │ ├── properties-custom-controllers.js │ │ ├── properties-default-controllers.js │ │ ├── properties-event-listeners-controller.js │ │ ├── properties-execution-listeners-controller.js │ │ ├── properties-fields-controller.js │ │ ├── properties-form-properties-controller.js │ │ ├── properties-in-parameters-controller.js │ │ ├── properties-message-definitions-controller.js │ │ ├── properties-message-scope-controller.js │ │ ├── properties-multiinstance-controller.js │ │ ├── properties-out-parameters-controller.js │ │ ├── properties-sequenceflow-order-controller.js │ │ ├── properties-signal-definitions-controller.js │ │ ├── properties-signal-scope-controller.js │ │ ├── properties-task-listeners-controller.js │ │ ├── properties.js │ │ ├── properties │ │ │ ├── assignment-display-template.html │ │ │ ├── assignment-popup.html │ │ │ ├── assignment-write-template.html │ │ │ ├── boolean-property-template.html │ │ │ ├── condition-expression-display-template.html │ │ │ ├── condition-expression-popup.html │ │ │ ├── condition-expression-write-template.html │ │ │ ├── default-value-display-template.html │ │ │ ├── event-listeners-display-template.html │ │ │ ├── event-listeners-popup.html │ │ │ ├── event-listeners-write-template.html │ │ │ ├── execution-listeners-display-template.html │ │ │ ├── execution-listeners-popup.html │ │ │ ├── execution-listeners-write-template.html │ │ │ ├── feedback-popup.html │ │ │ ├── fields-display-template.html │ │ │ ├── fields-popup.html │ │ │ ├── fields-write-template.html │ │ │ ├── form-properties-display-template.html │ │ │ ├── form-properties-popup.html │ │ │ ├── form-properties-write-template.html │ │ │ ├── in-parameters-display-template.html │ │ │ ├── in-parameters-popup.html │ │ │ ├── in-parameters-write-template.html │ │ │ ├── message-definitions-display-template.html │ │ │ ├── message-definitions-popup.html │ │ │ ├── message-definitions-write-template.html │ │ │ ├── message-property-write-template.html │ │ │ ├── multiinstance-property-write-template.html │ │ │ ├── out-parameters-display-template.html │ │ │ ├── out-parameters-popup.html │ │ │ ├── out-parameters-write-template.html │ │ │ ├── sequenceflow-order-display-template.html │ │ │ ├── sequenceflow-order-popup.html │ │ │ ├── sequenceflow-order-write-template.html │ │ │ ├── signal-definitions-display-template.html │ │ │ ├── signal-definitions-popup.html │ │ │ ├── signal-definitions-write-template.html │ │ │ ├── signal-property-write-template.html │ │ │ ├── string-property-write-mode-template.html │ │ │ ├── subprocess-reference-display-template.html │ │ │ ├── subprocess-reference-popup.html │ │ │ ├── subprocess-reference-write-template.html │ │ │ ├── task-listeners-display-template.html │ │ │ ├── task-listeners-popup.html │ │ │ ├── task-listeners-write-template.html │ │ │ ├── text-popup.html │ │ │ └── text-property-write-template.html │ │ ├── toolbar-custom-actions.js │ │ ├── toolbar-default-actions.js │ │ ├── toolbar.js │ │ └── url-config.js │ ├── css │ │ ├── style-common.css │ │ ├── style-editor.css │ │ └── style.css │ ├── editor-config.js │ ├── editor-controller.js │ ├── editor-utils.js │ ├── editor.html │ ├── editor │ │ ├── css │ │ │ └── editor.css │ │ ├── i18n │ │ │ ├── translation_de.js │ │ │ ├── translation_en_us.js │ │ │ ├── translation_signavio_de.js │ │ │ └── translation_signavio_en_us.js │ │ ├── oryx.debug.js │ │ └── oryx.js │ ├── eventbus.js │ ├── fonts │ │ ├── activiti-admin-webfont.eot │ │ ├── activiti-admin-webfont.svg │ │ ├── activiti-admin-webfont.ttf │ │ ├── activiti-admin-webfont.woff │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.svg │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ ├── header-controller.js │ ├── i18n │ │ └── en.json │ ├── images │ │ ├── bpmn-error.png │ │ ├── bpmn-warning.png │ │ ├── datadefinition.png │ │ ├── delete.png │ │ ├── loading.gif │ │ ├── logo-2x.png │ │ ├── logo.png │ │ ├── nw-handle-dark.gif │ │ ├── se-handle-dark.gif │ │ ├── shapemenu_highlight.png │ │ └── wrench.png │ ├── libs │ │ ├── angular-cookies_1.2.13 │ │ │ ├── angular-cookies.min.js │ │ │ └── angular-cookies.min.js.map │ │ ├── angular-dragdrop.min-1.0.3.js │ │ ├── angular-dragdrop_1.0.7 │ │ │ └── angular-dragdrop.min.js │ │ ├── angular-mocks_1.2.13 │ │ │ └── angular-mocks.js │ │ ├── angular-resource_1.2.13 │ │ │ ├── angular-resource.js │ │ │ ├── angular-resource.min.js │ │ │ └── angular-resource.min.js.map │ │ ├── angular-route_1.2.13 │ │ │ ├── angular-route.js │ │ │ ├── angular-route.min.js │ │ │ └── angular-route.min.js.map │ │ ├── angular-sanitize_1.2.13 │ │ │ ├── angular-sanitize.js │ │ │ ├── angular-sanitize.min.js │ │ │ └── angular-sanitize.min.js.map │ │ ├── angular-scroll_0.5.7 │ │ │ └── angular-scroll.min.js │ │ ├── angular-strap_2.0.5 │ │ │ ├── angular-strap.min.js │ │ │ └── angular-strap.tpl.min.js │ │ ├── angular-translate-loader-static-files │ │ │ ├── .bower.json │ │ │ ├── angular-translate-loader-static-files.js │ │ │ └── angular-translate-loader-static-files.min.js │ │ ├── angular-translate-storage-cookie │ │ │ ├── .bower.json │ │ │ ├── angular-translate-storage-cookie.js │ │ │ └── angular-translate-storage-cookie.min.js │ │ ├── angular-translate_2.4.2 │ │ │ ├── angular-translate.js │ │ │ └── angular-translate.min.js │ │ ├── angular_1.2.13 │ │ │ ├── angular-animate.min.js │ │ │ └── angular.min.js │ │ ├── bootstrap-daterangepicker_1.3.7 │ │ │ ├── daterangepicker-bs3.css │ │ │ └── daterangepicker.js │ │ ├── bootstrap_3.1.1 │ │ │ ├── css │ │ │ │ ├── bootstrap-theme.css │ │ │ │ ├── bootstrap-theme.css.map │ │ │ │ ├── bootstrap-theme.min.css │ │ │ │ ├── bootstrap.css │ │ │ │ ├── bootstrap.css.map │ │ │ │ └── bootstrap.min.css │ │ │ ├── fonts │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── js │ │ │ │ ├── bootstrap.js │ │ │ │ └── bootstrap.min.js │ │ ├── es5-shim-15.3.4.5 │ │ │ ├── .bower.json │ │ │ ├── CHANGES │ │ │ ├── CONTRIBUTORS.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── es5-sham.js │ │ │ ├── es5-sham.map │ │ │ ├── es5-sham.min.js │ │ │ ├── es5-shim.js │ │ │ ├── es5-shim.map │ │ │ ├── es5-shim.min.js │ │ │ ├── package.json │ │ │ └── tests │ │ │ │ ├── helpers │ │ │ │ ├── h-kill.js │ │ │ │ ├── h-matchers.js │ │ │ │ └── h.js │ │ │ │ ├── index.html │ │ │ │ ├── index.min.html │ │ │ │ ├── lib │ │ │ │ ├── jasmine-html.js │ │ │ │ ├── jasmine.css │ │ │ │ ├── jasmine.js │ │ │ │ ├── jasmine_favicon.png │ │ │ │ └── json2.js │ │ │ │ └── spec │ │ │ │ ├── s-array.js │ │ │ │ ├── s-date.js │ │ │ │ ├── s-function.js │ │ │ │ ├── s-number.js │ │ │ │ ├── s-object.js │ │ │ │ └── s-string.js │ │ ├── jquery-ui-1.10.3.custom.min.js │ │ ├── jquery.autogrow-textarea.js │ │ ├── jquery_1.11.0 │ │ │ ├── jquery.js │ │ │ ├── jquery.min.js │ │ │ └── jquery.min.map │ │ ├── json3_3.2.6 │ │ │ ├── LICENSE │ │ │ └── lib │ │ │ │ ├── json3.js │ │ │ │ └── json3.min.js │ │ ├── momentjs_2.5.1 │ │ │ └── momentjs.min.js │ │ ├── mousetrap-1.4.5.min.js │ │ ├── ng-grid-2.0.7-min.js │ │ ├── ng-grid-2.0.7.min.css │ │ ├── path_parser.js │ │ ├── prototype-1.5.1.js │ │ └── ui-utils.min-0.0.4.js │ ├── partials │ │ ├── root-stencil-item-template.html │ │ └── stencil-item-template.html │ ├── plugins.xml │ ├── popups │ │ ├── icon-template.html │ │ ├── save-model.html │ │ ├── select-shape.html │ │ └── unsaved-changes.html │ ├── select-shape-controller.js │ ├── stencil-controller.js │ ├── stencilsets │ │ └── bpmn2.0 │ │ │ └── icons │ │ │ ├── activity │ │ │ ├── event.subprocess.collapsed.png │ │ │ ├── event.subprocess.png │ │ │ ├── expanded.subprocess.png │ │ │ ├── list │ │ │ │ ├── type.business.rule.png │ │ │ │ ├── type.camel.png │ │ │ │ ├── type.manual.png │ │ │ │ ├── type.mule.png │ │ │ │ ├── type.receive.png │ │ │ │ ├── type.script.png │ │ │ │ ├── type.send.png │ │ │ │ ├── type.service.png │ │ │ │ ├── type.shell.png │ │ │ │ └── type.user.png │ │ │ ├── subprocess.png │ │ │ └── task.png │ │ │ ├── artifact │ │ │ └── text.annotation.png │ │ │ ├── catching │ │ │ ├── cancel.png │ │ │ ├── compensation.png │ │ │ ├── error.png │ │ │ ├── message.png │ │ │ ├── signal.png │ │ │ └── timer.png │ │ │ ├── connector │ │ │ ├── association.undirected.png │ │ │ ├── association.unidirectional.png │ │ │ ├── messageflow.png │ │ │ └── sequenceflow.png │ │ │ ├── dataobject │ │ │ └── data.store.png │ │ │ ├── diagram.png │ │ │ ├── endevent │ │ │ ├── cancel.png │ │ │ ├── error.png │ │ │ ├── none.png │ │ │ └── terminate.png │ │ │ ├── gateway │ │ │ ├── eventbased.png │ │ │ ├── exclusive.databased.png │ │ │ ├── inclusive.png │ │ │ └── parallel.png │ │ │ ├── startevent │ │ │ ├── error.png │ │ │ ├── message.png │ │ │ ├── none.png │ │ │ ├── signal.png │ │ │ └── timer.png │ │ │ ├── swimlane │ │ │ ├── lane.png │ │ │ └── pool.png │ │ │ └── throwing │ │ │ ├── none.png │ │ │ └── signal.png │ └── toolbar-controller.js ├── 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 │ └── icomoon │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff ├── img │ ├── a1.jpg │ ├── a2.jpg │ ├── a3.jpg │ ├── a4.jpg │ ├── a5.jpg │ ├── a6.jpg │ ├── a7.jpg │ ├── a8.jpg │ ├── a9.jpg │ ├── backg01.jpg │ ├── backg02.jpg │ ├── background-login.jpg │ ├── background_login.jpg │ ├── bg.png │ ├── blog │ │ ├── about-bg.jpg │ │ ├── contact-bg.jpg │ │ ├── home-bg.jpg │ │ ├── post-bg.jpg │ │ ├── post-sample-image.jpg │ │ └── qqbootdo.png │ ├── browser.png │ ├── browser.psd │ ├── court.jpg │ ├── iconfont-logo.png │ ├── icons.png │ ├── index.jpg │ ├── index_4.jpg │ ├── loading-upload.gif │ ├── loading.gif │ ├── locked.png │ ├── login-background.jpg │ ├── login_qq.png │ ├── login_wechat.png │ ├── logo1.png │ ├── logo2.png │ ├── p1.jpg │ ├── p2.jpg │ ├── p3.jpg │ ├── p_big1.jpg │ ├── p_big2.jpg │ ├── p_big3.jpg │ ├── photo_s.jpg │ ├── post-bg.jpg │ ├── profile.jpg │ ├── profile_big.jpg │ ├── profile_small.jpg │ ├── progress.png │ ├── qr_code.png │ ├── sprite-skin-flat.png │ ├── success.png │ ├── user.png │ ├── webuploader.png │ └── wenku_logo.png └── js │ ├── ajax-util.js │ ├── app.js │ ├── appjs │ ├── common │ │ ├── config │ │ │ ├── add.js │ │ │ ├── config.js │ │ │ └── edit.js │ │ ├── dict │ │ │ ├── add.js │ │ │ ├── dict.js │ │ │ └── edit.js │ │ ├── generator │ │ │ ├── edit.js │ │ │ └── list.js │ │ ├── job │ │ │ ├── add.js │ │ │ ├── edit.js │ │ │ └── job.js │ │ └── log │ │ │ └── log.js │ ├── demo │ │ └── demoBase │ │ │ ├── add.js │ │ │ ├── demoBase.js │ │ │ └── edit.js │ ├── ifast │ │ └── demoBase │ │ │ ├── add.js │ │ │ ├── demoBase.js │ │ │ └── edit.js │ ├── sys │ │ ├── dept │ │ │ ├── add.js │ │ │ ├── dept.js │ │ │ └── edit.js │ │ ├── menu │ │ │ ├── add.js │ │ │ ├── edit.js │ │ │ └── menu.js │ │ ├── online │ │ │ └── online.js │ │ ├── role │ │ │ ├── add.js │ │ │ ├── edit.js │ │ │ └── role.js │ │ └── user │ │ │ ├── add.js │ │ │ ├── edit.js │ │ │ ├── gg-bootdo.js │ │ │ ├── personal.js │ │ │ └── user.js │ └── wxmp │ │ ├── mpArticleDemo │ │ ├── add.js │ │ ├── edit.js │ │ └── mpArticle.js │ │ ├── mpArticleImage │ │ ├── add.js │ │ ├── edit.js │ │ └── mpArticle.js │ │ ├── mpArticleNews │ │ ├── add.js │ │ ├── edit.js │ │ └── mpArticle.js │ │ ├── mpArticleTxt │ │ ├── add.js │ │ ├── edit.js │ │ └── mpArticle.js │ │ ├── mpConfig │ │ ├── add.js │ │ ├── edit.js │ │ └── mpConfig.js │ │ ├── mpFans │ │ ├── add.js │ │ ├── edit.js │ │ └── mpFans.js │ │ └── mpMenu │ │ ├── add.js │ │ ├── edit.js │ │ └── mpMenu.js │ ├── bootstrap-paginator.min.js │ ├── bootstrap.min.js │ ├── contabs.js │ ├── content.js │ ├── demo │ ├── bootstrap-table-demo.js │ ├── bootstrap_table_test.json │ ├── bootstrap_table_test2.json │ ├── echarts-demo.js │ ├── flot-demo.js │ ├── form-advanced-demo.js │ ├── form-validate-demo.js │ ├── layer-demo.js │ ├── morris-demo.js │ ├── peity-demo.js │ ├── photos.json │ ├── rickshaw-demo.js │ ├── sparkline-demo.js │ ├── table_base.json │ ├── treeview-demo.js │ └── webuploader-demo.js │ ├── jquery-ui-1.10.4.min.js │ ├── jquery-ui.custom.min.js │ ├── jquery.min.js │ ├── jquery.min.map │ ├── lay │ ├── all-mobile.js │ ├── all.js │ └── modules │ │ ├── carousel.js │ │ ├── code.js │ │ ├── element.js │ │ ├── flow.js │ │ ├── form.js │ │ ├── jquery.js │ │ ├── laydate.js │ │ ├── layedit.js │ │ ├── layer.js │ │ ├── laypage.js │ │ ├── laytpl.js │ │ ├── mobile.js │ │ ├── mobile │ │ ├── layer-mobile.js │ │ ├── layim-mobile-open.js │ │ ├── upload-mobile.js │ │ └── zepto.js │ │ ├── table.js │ │ ├── tree.js │ │ ├── upload.js │ │ └── util.js │ ├── layui.js │ ├── plugins │ ├── beautifyhtml │ │ └── beautifyhtml.js │ ├── blueimp │ │ └── jquery.blueimp-gallery.min.js │ ├── bootstrap-paginator.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 │ ├── clipboard │ │ └── clipboard.min.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 │ ├── distpicker │ │ ├── distpicker.data.min.js │ │ ├── distpicker.js │ │ └── distpicker.min.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 │ ├── jqTreeGrid │ │ ├── jquery.treegrid.bootstrap3.js │ │ ├── jquery.treegrid.css │ │ ├── jquery.treegrid.extension.js │ │ ├── jquery.treegrid.js │ │ ├── jquery.treegrid.min.js │ │ └── tree.table.js │ ├── jqgrid │ │ ├── i18n │ │ │ └── grid.locale-cn.js │ │ └── jquery.jqGrid.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.js │ │ ├── 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-zh-CN.min.js │ │ ├── summernote.js │ │ └── summernote.min.js │ ├── sweetalert │ │ └── sweetalert.min.js │ ├── switchery │ │ └── switchery.js │ ├── toastr │ │ └── toastr.min.js │ ├── treeview │ │ └── bootstrap-treeview.js │ ├── validate │ │ ├── additional-methods.min.js │ │ ├── jquery.validate.extend.js │ │ ├── jquery.validate.min.js │ │ └── messages_zh.min.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 │ │ └── jquery.ztree.core.min.js │ ├── vue.min.js │ └── welcome.js └── templates ├── common ├── config │ ├── add.html │ ├── config.html │ └── edit.html ├── file │ └── file.html ├── generator │ ├── Controller.java.vm │ ├── Dao.java.vm │ ├── Mapper.java.vm │ ├── Mapper.xml.vm │ ├── Service.java.vm │ ├── ServiceImpl.java.vm │ ├── add.html.vm │ ├── add.js.vm │ ├── domain.java.vm │ ├── edit.html │ ├── edit.html.vm │ ├── edit.js.vm │ ├── list.html │ ├── list.html.vm │ ├── list.js.vm │ └── menu.sql.vm ├── job │ ├── add.html │ ├── edit.html │ └── job.html ├── log │ └── log.html └── sysDict │ ├── add.html │ ├── edit.html │ └── sysDict.html ├── demo └── demoBase │ ├── add.html │ ├── demoBase.html │ └── edit.html ├── error ├── 403.html ├── 404.html ├── 500.html └── error.html ├── ifast └── demoBase │ ├── add.html │ ├── demoBase.html │ └── edit.html ├── include.html ├── index_v1.html ├── login.html ├── login2.html ├── main.html ├── sys ├── dept │ ├── add.html │ ├── dept.html │ ├── deptTree.html │ └── edit.html ├── menu │ ├── add.html │ ├── edit.html │ └── menu.html ├── online │ └── online.html ├── role │ ├── add.html │ ├── edit.html │ └── role.html └── user │ ├── add.html │ ├── edit.html │ ├── include.html │ ├── personal.html │ ├── reset_pwd.html │ ├── user.html │ └── userTree.html └── wxmp ├── mpArticleImage ├── add.html ├── edit.html └── mpArticle.html ├── mpArticleNews ├── add.html ├── edit.html └── mpArticle.html ├── mpArticleTxt ├── add.html ├── edit.html └── mpArticle.html ├── mpConfig ├── add.html ├── config.html ├── edit.html └── mpConfig.html ├── mpFans ├── add.html ├── edit.html └── mpFans.html └── mpMenu ├── add.html ├── edit.html ├── mpMenu.html └── mpMenuTree.html /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | .classpath 3 | .project 4 | .factorypath 5 | /.DS_Store 6 | /ifast.iml 7 | 8 | .yml 9 | 10 | .idea 11 | 12 | *.iml -------------------------------------------------------------------------------- /bin/shutdown.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | jarName=$1 4 | if [ -z "${jarName}" ] 5 | then 6 | jarName=ifast-1.0.0.jar 7 | fi 8 | ps -ef | grep ${jarName} | grep -v grep | grep -v deploy | awk '{print $2}' | xargs kill -9 -------------------------------------------------------------------------------- /bin/startup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | jarName=$1 4 | if [ -z "${jarName}" ] 5 | then 6 | jarName=ifast-1.0.0.jar 7 | fi 8 | profile=$2 9 | if [ -z "${profile}" ] 10 | then 11 | profile=dev 12 | fi 13 | 14 | nohup java -jar ../${jarName} --spring.profiles.active=${profile} >/dev/null 2>&1 & -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/config/JWTConfigProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  * 
10 | * 11 | * 2018年4月28日 | Aron 12 | */ 13 | @Component 14 | @ConfigurationProperties(prefix = "ifast.jwt") 15 | @Data 16 | public class JWTConfigProperties { 17 | 18 | private String userPrimaryKey; 19 | 20 | private String expireTokenKeyPrefix; 21 | 22 | /** 23 | * jwt过期时间,默认2小时,单位为毫秒 24 | */ 25 | private Long expireTime = 7200000L; 26 | /** 27 | *
28 |      *   refresh_token过期时间,默认7天,单位为毫秒
29 |      *
30 |      *   常用时间:
31 |      *      1 day:86400000
32 |      *      7 day:604800000
33 |      *      14 day:1209600000
34 |      *      30 day:2592000000
35 |      *  
36 | */ 37 | private Long refreshTokenExpire = 604800000L; 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/exception/IFastApiException.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.exception; 2 | 3 | import com.ifast.common.exception.IFastException; 4 | 5 | /** 6 | *
 7 |  * API异常基类
 8 |  * 
9 | * 10 | * 2018年4月19日 | Aron 11 | */ 12 | public class IFastApiException extends IFastException { 13 | 14 | private static final long serialVersionUID = -4891641110275580161L; 15 | 16 | public IFastApiException() { 17 | super(); 18 | } 19 | 20 | public IFastApiException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 21 | super(message, cause, enableSuppression, writableStackTrace); 22 | } 23 | 24 | public IFastApiException(String message, Throwable cause) { 25 | super(message, cause); 26 | } 27 | 28 | public IFastApiException(String message) { 29 | super(message); 30 | } 31 | 32 | public IFastApiException(Throwable cause) { 33 | super(cause); 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/pojo/dto/UserLoginDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  * 
8 | * 9 | * 2018年4月26日 | Aron 10 | */ 11 | @Data 12 | public class UserLoginDTO { 13 | private String uname; 14 | private String passwd; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/pojo/dto/UserLogoutDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/8/28 11:04 | Aron 10 | */ 11 | @Data 12 | public class UserLogoutDTO { 13 | private String token; 14 | private String refreshToken; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/pojo/dto/UserRegDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.pojo.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2019-05-05 11:40 | Aron 10 | */ 11 | @Data 12 | public class UserRegDTO { 13 | private String mobile; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/pojo/vo/TokenVO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.pojo.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  * 
8 | * 9 | * 2018年4月27日 | Aron 10 | */ 11 | @Data 12 | public class TokenVO { 13 | private String token; 14 | private Long tokenExpire; 15 | private String refleshToken; 16 | private Long refreshTokenExpire; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/service/AppUserService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.service; 2 | 3 | import com.ifast.api.pojo.vo.TokenVO; 4 | import com.ifast.common.base.CoreService; 5 | import com.ifast.sys.domain.UserDO; 6 | import org.apache.shiro.authc.UsernamePasswordToken; 7 | 8 | /** 9 | *
10 |  * 
11 | * 2018年4月27日 | Aron 12 | */ 13 | public interface AppUserService extends CoreService { 14 | /** 申请token */ 15 | TokenVO getToken(UsernamePasswordToken token) ; 16 | /** 刷新token */ 17 | TokenVO refreshToken(String uname, String refreshToken); 18 | /** 检查token是否有效:未超时、未注销*/ 19 | void verifyToken(String token, boolean isRefresh); 20 | /** 注销token */ 21 | void logoutToken(String token, String refreshToken); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/api/shiro/JWTAuthenticationTokenToken.java: -------------------------------------------------------------------------------- 1 | package com.ifast.api.shiro; 2 | 3 | import org.apache.commons.lang3.StringUtils; 4 | import org.apache.shiro.authc.AuthenticationToken; 5 | 6 | /** 7 | *
 8 |  * 
9 | * 10 | * 2018年4月27日 | Aron 11 | */ 12 | public class JWTAuthenticationTokenToken implements AuthenticationToken { 13 | 14 | private static final long serialVersionUID = 5320481558604267958L; 15 | /** 16 | * 密钥 17 | */ 18 | private String token; 19 | 20 | public JWTAuthenticationTokenToken(String token){ 21 | this.token = token; 22 | } 23 | 24 | @Override 25 | public String getPrincipal() { 26 | if(StringUtils.isBlank(token)){ 27 | return ""; 28 | } 29 | return token; 30 | } 31 | 32 | @Override 33 | public String getCredentials() { 34 | return token; 35 | } 36 | } -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/annotation/Log.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.annotation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | *
 7 |  * 系统日志注解
 8 |  * 
9 | * 2018年3月22日 | Aron 10 | */ 11 | @Target(ElementType.METHOD) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Inherited 14 | public @interface Log { 15 | String value() default ""; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/base/BaseDO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.base; 2 | 3 | import com.baomidou.mybatisplus.annotations.TableLogic; 4 | import com.baomidou.mybatisplus.annotations.Version; 5 | import lombok.Data; 6 | 7 | import java.io.Serializable; 8 | import java.util.Date; 9 | 10 | @Data 11 | @SuppressWarnings("serial") 12 | public class BaseDO implements Serializable { 13 | /** 由mybatis-plus.global-config.sql-injector:com.baomidou.mybatisplus.mapper.LogicSqlInjector自动维护 */ 14 | @TableLogic 15 | private boolean deleted; 16 | /** 由MyBatisConfig.optimisticLockerInterceptor自动维护 */ 17 | @Version 18 | private int version; 19 | /** 由MySQL自动维护 */ 20 | private Date createAt; 21 | private Date updateAt; 22 | /** 由LogAspect.logMapper自动维护 */ 23 | private Long createBy; 24 | private Long updateBy; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/base/BaseDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.base; 2 | 3 | import com.baomidou.mybatisplus.mapper.BaseMapper; 4 | 5 | /** 6 | * 7 | *
 8 |  * 
9 | * 2018年2月25日 | Aron 10 | * @param 11 | */ 12 | public interface BaseDao extends BaseMapper { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/oss/support/OSSManager.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.oss.support; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/9/11 11:45 | Aron 10 | */ 11 | @Data 12 | public class OSSManager implements UploadServer { 13 | 14 | private UploadServer uploader; 15 | 16 | public OSSManager() {} 17 | 18 | public OSSManager(UploadServer uploader) { 19 | this.uploader = uploader; 20 | } 21 | 22 | @Override 23 | public String upload(byte[] uploadBytes, String fileName) { 24 | return uploader.upload(uploadBytes, fileName); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/oss/support/UploadServer.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.oss.support; 2 | 3 | /** 4 | *
 5 |  * 上传服务
 6 |  * 
7 | * 2018/9/11 11:46 | Aron 8 | */ 9 | public interface UploadServer { 10 | 11 | String upload(byte[] uploadBytes, String fileName); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/oss/support/aliyun/AliyunOSSProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.oss.support.aliyun; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.stereotype.Component; 5 | 6 | import lombok.Data; 7 | 8 | @Data 9 | @Component 10 | @ConfigurationProperties(prefix = "ifast.oss.aliyun") 11 | public class AliyunOSSProperties { 12 | private String accessKeyId; 13 | private String accessKeySecret; 14 | private String bucketName; 15 | private String endpoint; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/oss/support/local/LocalUploadProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.oss.support.local; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  *
10 |  * 
11 | * 2018/9/11 15:49 | Aron 12 | */ 13 | @Component 14 | @Data 15 | @ConfigurationProperties(prefix = "ifast.oss.local") 16 | public class LocalUploadProperties { 17 | /** 18 | *
19 |      * 本地上传目录,末尾不带分隔符
20 |      * 如:
21 |      *  /data/upload
22 |      *  c:/data/upload
23 |      * 
24 | */ 25 | private String localPath; 26 | 27 | /** 28 | *
29 |      * 根路径访问URL,末尾不带分隔符
30 |      * 如: http://ifast.site/upload
31 |      * 
32 | */ 33 | private String rootURL; 34 | 35 | } 36 | 37 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/oss/support/qiniu/QiNiuOSSProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.oss.support.qiniu; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  * 七牛对象存储配置
10 |  * 
11 | * 12 | * 2018年4月6日 | Aron 13 | */ 14 | @Data 15 | @Component 16 | @ConfigurationProperties(prefix = "ifast.oss.qiniu") 17 | public class QiNiuOSSProperties { 18 | private String accessKey; 19 | private String secretKey; 20 | private String bucket; 21 | private String accessURL; 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/config/SmsBasicProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | *
11 |  *
12 |  * 
13 | * 2018/8/30 19:27 | Aron 14 | */ 15 | @Component 16 | @ConfigurationProperties(prefix = "ifast.sms") 17 | @Data 18 | public class SmsBasicProperties { 19 | 20 | private String cacheKey = "ifast:cache"; 21 | private String cacheKeyPrefix = "sms"; 22 | /** 23 | * 过期时间,单位为秒 24 | */ 25 | private long codeExpireTime = 900; 26 | 27 | /** 28 | * 短信场景值&内容 29 | */ 30 | private Map scenes; 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/dto/SendDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/8/30 21:25 | Aron 10 | */ 11 | @Data 12 | public class SendDTO { 13 | private String scene; 14 | private String mobile; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/dto/VerifyDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.dto; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/8/30 21:25 | Aron 10 | */ 11 | @Data 12 | public class VerifyDTO { 13 | private String mobile; 14 | private String code; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/CodeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | /** 4 | *
 5 |  * 短信验证码生成器
 6 |  * 
7 | * 8 | * 2018/10/10 15:03 | Aron 9 | * 10 | */ 11 | public interface CodeGenerator { 12 | 13 | String getCode(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/DefaultCodeGenerator.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | import java.util.Random; 4 | 5 | /** 6 | *
 7 |  * 短信验证码生成器
 8 |  * 
9 | * 10 | * 2018/10/10 15:03 | Aron 11 | */ 12 | public class DefaultCodeGenerator implements CodeGenerator{ 13 | 14 | @Override 15 | public String getCode() { 16 | return new Random().nextInt(8999) + 1000 + ""; 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/MapSceneRepository.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | import com.ifast.api.exception.IFastApiException; 4 | import com.ifast.common.type.EnumErrorCode; 5 | import lombok.extern.slf4j.Slf4j; 6 | import org.apache.commons.lang3.StringUtils; 7 | 8 | import java.util.Map; 9 | 10 | /** 11 | *
12 |  *
13 |  * 
14 | * 2018/10/10 15:10 | Aron 15 | */ 16 | @Slf4j 17 | public class MapSceneRepository implements SceneRepository{ 18 | 19 | private Map scenes; 20 | 21 | public MapSceneRepository(Map scenes){ 22 | this.scenes = scenes; 23 | } 24 | 25 | @Override 26 | public String getContent(String scene){ 27 | String content = scenes.get(scene); 28 | if(StringUtils.isBlank(content)){ 29 | log.warn("【SMS】 - 根据scene查找content,数据不存在"); 30 | throw new IFastApiException(EnumErrorCode.apiSmsSendFailed.getCodeStr()); 31 | } 32 | return content; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/SceneRepository.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | /** 4 | *
 5 |  *
 6 |  * 
7 | * 2018/10/10 15:10 | Aron 8 | */ 9 | public interface SceneRepository { 10 | 11 | String getContent(String scene); 12 | 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/SmsSender.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | import com.ifast.api.exception.IFastApiException; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/8/30 19:10 | Aron 10 | */ 11 | public interface SmsSender { 12 | 13 | /** 14 | *
15 |      * 根据产品id、手机号码发送短信,发送失败将抛出异常
16 |      * 
17 | * 2018/8/30 19:13 | Aron 18 | * @param mobile 目标手机号码,如果是多个手机号,请英文逗号","分隔 19 | * @param code 验证码,如果不需要则传null 20 | * @param scene 发送的短信内容场景值 21 | */ 22 | void send(String mobile, String code, String scene) throws IFastApiException; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/SmsVerify.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support; 2 | 3 | /** 4 | *
 5 |  *
 6 |  * 
7 | * 2018/8/31 11:48 | Aron 8 | */ 9 | public interface SmsVerify { 10 | 11 | /** 12 | *
13 |      * 校验验证码
14 |      * 
15 | * 2018/8/30 19:14 | Aron 16 | * @param phone 手机号码 17 | * @param code 验证码 18 | */ 19 | void verify(String phone, String code); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/aliyun/AliyunProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support.aliyun; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.Map; 8 | 9 | @Component 10 | @ConfigurationProperties(prefix = "ifast.sms.aliyun") 11 | @Data 12 | public class AliyunProperties { 13 | private String accessKeyId; 14 | private String accessKeySecret; 15 | private Map scenes; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/component/sms/support/zhutong/ZhuTongProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.component.sms.support.zhutong; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | import java.util.Map; 8 | 9 | /** 10 | *
11 |  *
12 |  * 
13 | * 2018/8/30 19:27 | Aron 14 | */ 15 | @Component 16 | @ConfigurationProperties(prefix = "ifast.sms.zt") 17 | @Data 18 | public class ZhuTongProperties { 19 | private String uname; 20 | private String passwd; 21 | private String productId; 22 | private Map scenes; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/config/Constant.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.config; 2 | 3 | /** 4 | *
 5 |  * 
6 | * 2018年4月6日 | Aron 7 | */ 8 | public class Constant { 9 | 10 | /** 11 | *
12 |      * 
13 | * 2018年4月6日 | Aron 14 | */ 15 | public static class Job { 16 | // 停止计划任务 17 | public static String STATUS_RUNNING_STOP = "stop"; 18 | // 开启计划任务 19 | public static String STATUS_RUNNING_START = "start"; 20 | 21 | 22 | } 23 | 24 | /** 25 | *
26 |      * 
27 | * 2018年4月6日 | Aron 28 | */ 29 | public static class Generator { 30 | // 自动去除表前缀 31 | public static String AUTO_REOMVE_PRE = "true"; 32 | 33 | } 34 | 35 | public static class Sys { 36 | // 部门根节点id 37 | public static Long DEPT_ROOT_ID = 0L; 38 | } 39 | 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/config/IFastProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  * 
10 | * 11 | * 2018年4月6日 | Aron 12 | */ 13 | @Component 14 | @ConfigurationProperties(prefix = "ifast") 15 | @Data 16 | public class IFastProperties { 17 | /** 18 | * 项目名,末尾不带 "/" 19 | */ 20 | private String projectName; 21 | /** 22 | * 项目根目录,末尾带 "/" 23 | */ 24 | private String projectRootURL; 25 | 26 | /** 27 | * 演示模式 28 | */ 29 | private boolean demoMode; 30 | /** 31 | * 调试模式 32 | */ 33 | private boolean devMode; 34 | 35 | /** 36 | * 临时目录,用于存放一些临时文件 37 | */ 38 | private String tempDir; 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/dao/ConfigDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.common.domain.ConfigDO; 5 | 6 | /** 7 | * 8 | * 9 | * @author Aron 10 | * @email izenglong@163.com 11 | * @date 2018-04-06 01:05:22 12 | */ 13 | public interface ConfigDao extends BaseDao { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/dao/DictDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.ifast.common.base.BaseDao; 6 | import com.ifast.common.domain.DictDO; 7 | 8 | /** 9 | * 字典表 10 | * 11 | * @author chglee 12 | * @email 1992lcg@163.com 13 | * @date 2017-10-03 15:45:42 14 | */ 15 | public interface DictDao extends BaseDao{ 16 | 17 | List listType(); 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/dao/LogDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.common.domain.LogDO; 5 | 6 | /** 7 | * 系统日志 8 | * 9 | * @author chglee 10 | * @email 1992lcg@163.com 11 | * @date 2017-10-03 15:45:42 12 | */ 13 | public interface LogDao extends BaseDao { 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/domain/ConfigDO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.domain; 2 | 3 | import com.baomidou.mybatisplus.activerecord.Model; 4 | import com.baomidou.mybatisplus.annotations.TableField; 5 | import com.baomidou.mybatisplus.annotations.TableId; 6 | import com.baomidou.mybatisplus.annotations.TableName; 7 | import lombok.Data; 8 | 9 | import java.io.Serializable; 10 | import java.util.Date; 11 | 12 | 13 | /** 14 | * @author Aron 15 | * @email izenglong@163.com 16 | * @date 2018-04-06 01:05:22 17 | */ 18 | @TableName("sys_config") 19 | @Data 20 | public class ConfigDO extends Model implements Serializable { 21 | @TableField(exist = false) 22 | private static final long serialVersionUID = 1L; 23 | 24 | @TableId 25 | private Long id; 26 | private String k; 27 | private String v; 28 | private String remark; 29 | private Date createTime; 30 | private Integer kvType; 31 | 32 | @Override 33 | protected Serializable pkVal() { 34 | return id; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/exception/IFastException.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.exception; 2 | 3 | /** 4 | *
 5 |  * 应用运行时异常,统一抛此类
 6 |  * 
7 | * 8 | * 2018年4月6日 | Aron 9 | */ 10 | public class IFastException extends RuntimeException { 11 | 12 | private static final long serialVersionUID = 6403925731816439878L; 13 | 14 | public IFastException() { 15 | super(); 16 | } 17 | 18 | public IFastException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { 19 | super(message, cause, enableSuppression, writableStackTrace); 20 | } 21 | 22 | public IFastException(String message, Throwable cause) { 23 | super(message, cause); 24 | } 25 | 26 | public IFastException(String message) { 27 | super(message); 28 | } 29 | 30 | public IFastException(Throwable cause) { 31 | super(cause); 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/exception/MainsiteErrorController.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.exception; 2 | 3 | import org.springframework.boot.autoconfigure.web.ErrorController; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.RequestMapping; 6 | 7 | @Controller 8 | public class MainsiteErrorController implements ErrorController { 9 | private static final String ERROR_PATH = "/error"; 10 | 11 | @RequestMapping(value = ERROR_PATH) 12 | public String handleError() { 13 | return "error/404"; 14 | } 15 | 16 | @Override 17 | public String getErrorPath() { 18 | // TODO Auto-generated method stub 19 | return ERROR_PATH; 20 | } 21 | 22 | } -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/service/ConfigService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.service; 2 | 3 | import com.ifast.common.base.CoreService; 4 | import com.ifast.common.domain.ConfigDO; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | /** 10 | *
11 |  * 
12 | * 13 | * 2018年4月6日 | Aron 14 | */ 15 | public interface ConfigService extends CoreService { 16 | ConfigDO getByKey(String k); 17 | 18 | String getValueByKey(String k); 19 | 20 | void updateKV(Map kv); 21 | 22 | List findListByKvType(int kvType); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/service/DictService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.service; 2 | 3 | import java.util.List; 4 | 5 | import com.ifast.common.base.CoreService; 6 | import com.ifast.common.domain.DictDO; 7 | import com.ifast.sys.domain.UserDO; 8 | 9 | /** 10 | *
11 |  * 数据字典
12 |  * 
13 | * 14 | * 2018年1月3日 | Aron 15 | */ 16 | public interface DictService extends CoreService { 17 | 18 | List listType(); 19 | 20 | String getName(String type, String value); 21 | 22 | /** 23 | * 获取爱好列表 24 | * 25 | * @return 26 | * @param userDO 27 | */ 28 | List getHobbyList(UserDO userDO); 29 | 30 | /** 31 | * 获取性别列表 32 | * 33 | * @return 34 | */ 35 | List getSexList(); 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/service/LogService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.service; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.ifast.common.base.CoreService; 6 | import com.ifast.common.domain.LogDO; 7 | 8 | /** 9 | *
10 |  * 
11 | * 2018年3月22日 | Aron 12 | */ 13 | @Service 14 | public interface LogService extends CoreService { 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/service/impl/LogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.ifast.common.base.CoreServiceImpl; 6 | import com.ifast.common.dao.LogDao; 7 | import com.ifast.common.domain.LogDO; 8 | import com.ifast.common.service.LogService; 9 | 10 | /** 11 | *
12 |  * 
13 | * 2018年3月22日 | Aron 14 | */ 15 | @Service 16 | public class LogServiceImpl extends CoreServiceImpl implements LogService { 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/shiro/cache/SpringCacheManagerWrapper.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.shiro.cache; 2 | 3 | import lombok.Setter; 4 | import org.apache.shiro.cache.Cache; 5 | import org.apache.shiro.cache.CacheException; 6 | import org.apache.shiro.cache.CacheManager; 7 | 8 | @SuppressWarnings({"unchecked","rawtypes"}) 9 | public class SpringCacheManagerWrapper implements CacheManager { 10 | 11 | @Setter 12 | private org.springframework.cache.CacheManager cacheManager; 13 | 14 | @Override 15 | public Cache getCache(String name) throws CacheException { 16 | org.springframework.cache.Cache springCache = cacheManager.getCache(name); 17 | return new SpringCacheWrapper(springCache); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/shiro/config/ShiroProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.shiro.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  *
10 |  * 
11 | * 2018/8/27 21:50 | Aron 12 | */ 13 | @Component 14 | @ConfigurationProperties(prefix = "ifast.shiro") 15 | @Data 16 | public class ShiroProperties { 17 | private String sessionKeyPrefix = "ifast:session"; 18 | private String jsessionidKey = "SESSION"; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/shiro/controller/ShiroController.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.shiro.controller; 2 | 3 | import com.ifast.common.type.EnumErrorCode; 4 | import org.springframework.web.bind.annotation.RequestMapping; 5 | import org.springframework.web.bind.annotation.RestController; 6 | 7 | import com.ifast.common.base.BaseController; 8 | import com.ifast.common.utils.Result; 9 | 10 | /** 11 | *
12 |  * 
13 | * 14 | * 2018年5月1日 | Aron 15 | */ 16 | @RestController 17 | @RequestMapping("/shiro") 18 | public class ShiroController extends BaseController { 19 | 20 | @RequestMapping("/405") 21 | public Result http405() { 22 | return Result.build(EnumErrorCode.apiAuthorizationInvalid.getCode(), EnumErrorCode.apiAuthorizationInvalid.getMsg()); 23 | } 24 | 25 | @RequestMapping("/500") 26 | public Result http500() { 27 | return Result.build(EnumErrorCode.unknowFail.getCode(), EnumErrorCode.unknowFail.getMsg()); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/shiro/session/RedisSessionDAO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.shiro.session; 2 | 3 | import org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2018/8/21 16:29 | Aron 10 | */ 11 | public class RedisSessionDAO extends EnterpriseCacheSessionDAO { 12 | 13 | private String activeSessionsCacheName; 14 | 15 | public RedisSessionDAO(String activeSessionsCacheName) { 16 | this.activeSessionsCacheName = activeSessionsCacheName; 17 | } 18 | 19 | @Override 20 | public String getActiveSessionsCacheName() { 21 | return this.activeSessionsCacheName; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/tags/IftgDialectEntrance.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.tags; 2 | 3 | import com.ifast.common.tags.processor.IftgSelectProcessor; 4 | import org.springframework.stereotype.Component; 5 | import org.thymeleaf.processor.IProcessor; 6 | import org.thymeleaf.spring4.dialect.SpringStandardDialect; 7 | 8 | import java.util.HashSet; 9 | import java.util.Set; 10 | 11 | 12 | /** 13 | * 自定注解处理入口 14 | * 15 | * @author: zet 16 | * @date:2018/8/22 17 | */ 18 | @Component 19 | public class IftgDialectEntrance extends SpringStandardDialect { 20 | public String getPrefix() { 21 | return "iftg"; 22 | } 23 | 24 | @Override 25 | public Set getProcessors() { 26 | final Set processors = new HashSet(); 27 | // 注解 28 | processors.add(new IftgSelectProcessor()); 29 | return processors; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/tags/vo/ValueVO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.tags.vo; 2 | 3 | import lombok.Data; 4 | 5 | /** 6 | * 控件数值vo 7 | * 8 | * @author: zet 9 | * @date:2018/8/22 10 | */ 11 | @Data 12 | public class ValueVO { 13 | /** 14 | * value值 15 | */ 16 | private String vlaue; 17 | 18 | /** 19 | * 显示名称 20 | */ 21 | private String name; 22 | 23 | /** 24 | * 是否选中 25 | */ 26 | private Boolean selected; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/type/EnumCommon.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.type; 2 | 3 | /** 4 | *
 5 |  * 通用枚举类
 6 |  * 
 7 |  * @author Aron
 8 |  * @version v1.0
 9 |  * @Date 2019/5/7.
10 |  */
11 | public class EnumCommon {
12 | 
13 |     /**
14 |      * 
15 |      * 用于表示【只有】 是/否 的场景
16 |      * 例如:
17 |      *   deleted 是否删除
18 |      *   status  是否禁用
19 |      *   enable  是否启用
20 |      *   isUse  是否使用中
21 |      *   isHidden 是否隐藏
22 |      * 
23 | */ 24 | public enum YesOrNo{ 25 | YES(1, "是"), 26 | NO(0, "否"); 27 | 28 | private int value; 29 | private String desc; 30 | 31 | public int getValue() { 32 | return value; 33 | } 34 | public String getDesc() { 35 | return desc; 36 | } 37 | 38 | YesOrNo(int value, String desc) { 39 | this.value = value; 40 | this.desc = desc; 41 | } 42 | } 43 | 44 | 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/CaptchaUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | /** 4 | * 5 | * TODO:验证码相关常量 6 | * 7 | * @author ZYL 8 | * @since:2017年9月12日 9 | * @author ZYL 2017年9月12日 10 | * @version 11 | */ 12 | public class CaptchaUtils { 13 | 14 | /** 15 | * TODO:验证码类型 16 | * 17 | * @author EDCwifi-170428 18 | * @since:2017年9月12日 19 | * @author EDCwifi-170428 2017年9月12日 20 | * @version 21 | */ 22 | public static enum Type { 23 | /** 注册 */ 24 | Register, 25 | /** 绑定手机 */ 26 | BinDingPhone, 27 | /** 绑定邮箱 */ 28 | BinDingEmail, 29 | /** 忘记密码 */ 30 | ForgetPswd, 31 | /** 修改手机号码 */ 32 | AlterMobile, 33 | /** 设置支付密码发送验证码 */ 34 | Paypwd, 35 | /** 修改邮箱 */ 36 | AlterEmail; 37 | } 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/CodecUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | import org.apache.commons.codec.binary.Base64; 4 | import org.apache.commons.codec.digest.DigestUtils; 5 | 6 | /** 7 | * 加密工具类 8 | * 9 | * @author Aron 10 | * @date 2017年7月1日 11 | */ 12 | public class CodecUtils extends DigestUtils{ 13 | 14 | public final static Base64 base64 = new Base64(); 15 | 16 | public static String base64Encode(String str){ 17 | return base64.encodeToString(str.getBytes()); 18 | } 19 | 20 | public static String base64Decode(String str){ 21 | return new String(base64.decode(str.getBytes())); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/PasswdUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | import org.apache.shiro.crypto.hash.Sha256Hash; 4 | import org.apache.shiro.crypto.hash.SimpleHash; 5 | 6 | /** 7 | *
 8 |  *
 9 |  * 
10 | * 2019-05-09 09:42 | Aron 11 | */ 12 | public abstract class PasswdUtils { 13 | 14 | public final static String ALGORITHM = Sha256Hash.ALGORITHM_NAME; 15 | 16 | public static String get(String passwd, String salt) { 17 | 18 | return new Sha256Hash(passwd, hash(salt)).toString(); 19 | } 20 | 21 | public static SimpleHash hash(String salt) { 22 | return new SimpleHash(ALGORITHM, salt); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/ScheduleJobUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | import com.ifast.job.domain.ScheduleJobDO; 4 | import com.ifast.job.domain.TaskDO; 5 | 6 | public class ScheduleJobUtils { 7 | public static ScheduleJobDO entityToData(TaskDO scheduleJobEntity) { 8 | ScheduleJobDO scheduleJob = new ScheduleJobDO(); 9 | scheduleJob.setBeanClass(scheduleJobEntity.getBeanClass()); 10 | scheduleJob.setCronExpression(scheduleJobEntity.getCronExpression()); 11 | scheduleJob.setDescription(scheduleJobEntity.getDescription()); 12 | scheduleJob.setIsConcurrent(scheduleJobEntity.getIsConcurrent()); 13 | scheduleJob.setJobName(scheduleJobEntity.getJobName()); 14 | scheduleJob.setJobGroup(scheduleJobEntity.getJobGroup()); 15 | scheduleJob.setJobStatus(scheduleJobEntity.getJobStatus()); 16 | scheduleJob.setMethodName(scheduleJobEntity.getMethodName()); 17 | scheduleJob.setSpringBean(scheduleJobEntity.getSpringBean()); 18 | return scheduleJob; 19 | } 20 | } -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/ShiroUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | import com.ifast.api.service.AppUserService; 4 | import com.ifast.api.util.JWTUtil; 5 | import com.ifast.sys.domain.UserDO; 6 | import org.apache.shiro.SecurityUtils; 7 | import org.apache.shiro.subject.Subject; 8 | 9 | public class ShiroUtils { 10 | 11 | /** 12 | * 兼容jwt和常规开发时获取用户信息 13 | * @return 14 | */ 15 | public static UserDO getSysUser() { 16 | try { 17 | Subject subject = SecurityUtils.getSubject(); 18 | Object principal = subject.getPrincipal(); 19 | if(principal instanceof String){ 20 | String token = (String)principal; 21 | String userId = JWTUtil.getUserId(token); 22 | UserDO userDO = SpringContextHolder.getBean(AppUserService.class).selectById(userId); 23 | return userDO; 24 | }else if(principal instanceof UserDO) { 25 | return (UserDO)principal; 26 | } 27 | }catch (Exception ignore) { } 28 | return null; 29 | } 30 | 31 | public static Long getUserId() { 32 | UserDO sysUser = getSysUser(); 33 | return sysUser == null ? null : sysUser.getId(); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/utils/UUIDUtils.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.utils; 2 | 3 | import java.util.UUID; 4 | 5 | /** 6 | *
 7 |  *
 8 |  * 
9 | * 2019-05-09 16:40 | Aron 10 | */ 11 | public abstract class UUIDUtils { 12 | 13 | public static String get() { 14 | return get(true); 15 | } 16 | 17 | public static String get(boolean isPureStr) { 18 | String sesult = UUID.randomUUID().toString(); 19 | if (isPureStr) { 20 | sesult = sesult.replaceAll("-", ""); 21 | } 22 | return sesult; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/common/validation/ValidForm.java: -------------------------------------------------------------------------------- 1 | package com.ifast.common.validation; 2 | 3 | import java.lang.annotation.*; 4 | 5 | /** 6 | *
 7 |  * 自动表单验注解
 8 |  * 
9 | * 2018/9/4 12:00 | Aron 10 | */ 11 | @Target(ElementType.TYPE) 12 | @Retention(RetentionPolicy.RUNTIME) 13 | @Inherited 14 | public @interface ValidForm { 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/demo/dao/DemoDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.demo.dao; 2 | 3 | import com.ifast.demo.domain.DemoDO; 4 | import com.ifast.common.base.BaseDao; 5 | 6 | /** 7 | * 8 | *
 9 |  * 基础表
10 |  * 
11 | * 2018-07-27 23:38:24 | Aron 12 | */ 13 | public interface DemoDao extends BaseDao { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/demo/domain/DemoDO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.demo.domain; 2 | 3 | 4 | import com.baomidou.mybatisplus.annotations.TableId; 5 | import com.baomidou.mybatisplus.annotations.TableName; 6 | import com.ifast.common.base.BaseDO; 7 | import lombok.Data; 8 | import lombok.EqualsAndHashCode; 9 | 10 | import java.math.BigDecimal; 11 | import java.util.Date; 12 | 13 | 14 | /** 15 | * 16 | *
17 |  * 基础表
18 |  * 
19 | * 2018-08-03 11:56:37 | Aron 20 | */ 21 | @Data 22 | @SuppressWarnings("serial") 23 | @TableName("app_demo_base") 24 | @EqualsAndHashCode(callSuper=true) 25 | public class DemoDO extends BaseDO { 26 | /** 默认ID_WORKER,mybatis-plus.global-config.id-type:2,应用可以自定义 */ 27 | @TableId 28 | private Long id; 29 | 30 | /** 标题 */ 31 | private String title; 32 | 33 | /** 发布时间 */ 34 | private Date publish; 35 | 36 | /** 正文 */ 37 | private String content; 38 | 39 | /** 价格 */ 40 | private BigDecimal price; 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/demo/dto/TestValidDTO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.demo.dto; 2 | 3 | import com.ifast.common.validation.ValidForm; 4 | import lombok.Data; 5 | import org.hibernate.validator.constraints.Length; 6 | import org.hibernate.validator.constraints.Range; 7 | 8 | import javax.validation.constraints.NotNull; 9 | 10 | /** 11 | *
12 |  *
13 |  * 
14 | * 2018/9/4 16:49 | Aron 15 | */ 16 | @ValidForm 17 | @Data 18 | public class TestValidDTO { 19 | 20 | @NotNull 21 | @Length(max = 20, min = 6) 22 | private String name; 23 | 24 | @NotNull 25 | @Range(min = 1, max = 120) 26 | private Integer age; 27 | 28 | @NotNull 29 | @Range(min = 1, max = 3) 30 | private Integer sex; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/demo/service/DemoService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.demo.service; 2 | 3 | import com.ifast.demo.domain.DemoDO; 4 | import com.ifast.common.base.CoreService; 5 | 6 | /** 7 | * 8 | *
 9 |  * 基础表
10 |  * 
11 | * 2018-07-27 23:38:24 | Aron 12 | */ 13 | public interface DemoService extends CoreService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/demo/service/impl/DemoServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ifast.demo.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.ifast.demo.dao.DemoDao; 6 | import com.ifast.demo.domain.DemoDO; 7 | import com.ifast.demo.service.DemoService; 8 | import com.ifast.common.base.CoreServiceImpl; 9 | 10 | /** 11 | * 12 | *
13 |  * 基础表
14 |  * 
15 | * 2018-07-27 23:38:24 | Aron 16 | */ 17 | @Service 18 | public class DemoServiceImpl extends CoreServiceImpl implements DemoService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/generator/service/GeneratorService.java: -------------------------------------------------------------------------------- 1 | /** 2 | * 3 | */ 4 | package com.ifast.generator.service; 5 | 6 | import java.util.List; 7 | import java.util.Map; 8 | 9 | import org.springframework.stereotype.Service; 10 | 11 | /** 12 | * @author 1992lcg@163.com 13 | * @Time 2017年9月6日 14 | * @description 15 | * 16 | */ 17 | @Service 18 | public interface GeneratorService { 19 | List> list(); 20 | 21 | byte[] generatorCode(String[] tableNames); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/generator/type/EnumGen.java: -------------------------------------------------------------------------------- 1 | package com.ifast.generator.type; 2 | 3 | import lombok.Getter; 4 | 5 | /** 6 | *
 7 |  * 
8 | * 9 | * 2018年5月30日 | Aron 10 | */ 11 | public class EnumGen { 12 | 13 | @Getter 14 | public enum KvType { 15 | mapping(4400, "java与db字段映射关系") 16 | , base(4401, "生成注释基本配置"); 17 | 18 | private int value; 19 | private String desc; 20 | 21 | KvType(int value, String desc) { 22 | this.value = value; 23 | this.desc = desc; 24 | } 25 | public static String getMsgByCode(int value) { 26 | KvType[] values = KvType.values(); 27 | for (KvType ec : values) { 28 | if (ec.value == value) { 29 | return ec.desc; 30 | } 31 | } 32 | return ""; 33 | } 34 | } 35 | 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/job/dao/TaskDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.job.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.job.domain.TaskDO; 5 | 6 | /** 7 | * 8 | * @author chglee 9 | * @email 1992lcg@163.com 10 | * @date 2017-10-03 15:45:42 11 | */ 12 | public interface TaskDao extends BaseDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/job/jobs/TestJob.java: -------------------------------------------------------------------------------- 1 | package com.ifast.job.jobs; 2 | 3 | import com.ifast.common.utils.DateUtils; 4 | import org.quartz.Job; 5 | import org.quartz.JobExecutionContext; 6 | import org.springframework.stereotype.Component; 7 | 8 | import java.util.Date; 9 | 10 | /** 11 | *
12 |  * 
13 | * 14 | * 2018年3月22日 | Aron 15 | */ 16 | @Component 17 | public class TestJob implements Job { 18 | 19 | @Override 20 | public void execute(JobExecutionContext context){ 21 | System.err.println("测试任务执 | " + DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN_19) 22 | + " | 定时统计人数:\" + userService.selectCount(null)"); 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/job/listenner/ScheduleJobInitListener.java: -------------------------------------------------------------------------------- 1 | package com.ifast.job.listenner; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.boot.CommandLineRunner; 5 | import org.springframework.core.annotation.Order; 6 | import org.springframework.stereotype.Component; 7 | 8 | import com.ifast.job.quartz.QuartzManager; 9 | import com.ifast.job.service.JobService; 10 | 11 | /** 12 | *
13 |  * 
14 | * 2018年3月23日 | Aron 15 | */ 16 | @Component 17 | @Order(value = 1) 18 | public class ScheduleJobInitListener implements CommandLineRunner { 19 | 20 | @Autowired 21 | JobService scheduleJobService; 22 | 23 | @Autowired 24 | QuartzManager quartzManager; 25 | 26 | @Override 27 | public void run(String... arg0) throws Exception { 28 | try { 29 | scheduleJobService.initSchedule(); 30 | } catch (Exception e) { 31 | e.printStackTrace(); 32 | } 33 | 34 | } 35 | 36 | } -------------------------------------------------------------------------------- /src/main/java/com/ifast/job/quartz/JobFactory.java: -------------------------------------------------------------------------------- 1 | package com.ifast.job.quartz; 2 | 3 | import org.quartz.spi.TriggerFiredBundle; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.beans.factory.config.AutowireCapableBeanFactory; 6 | import org.springframework.scheduling.quartz.AdaptableJobFactory; 7 | import org.springframework.stereotype.Component; 8 | 9 | /** 10 | *
11 |  * 定时任务工厂
12 |  * 
13 | * 2018年3月23日 | Aron 14 | */ 15 | @Component 16 | public class JobFactory extends AdaptableJobFactory { 17 | @Autowired 18 | private AutowireCapableBeanFactory capableBeanFactory; 19 | 20 | @Override 21 | protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception { 22 | // 调用父类的方法 23 | Object jobInstance = super.createJobInstance(bundle); 24 | // 进行注入 25 | capableBeanFactory.autowireBean(jobInstance); 26 | return jobInstance; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/job/service/JobService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.job.service; 2 | 3 | import org.quartz.SchedulerException; 4 | 5 | import com.ifast.common.base.CoreService; 6 | import com.ifast.job.domain.TaskDO; 7 | 8 | 9 | /** 10 | *
11 |  * 定时任务
12 |  * 
13 | * 2018年3月22日 | Aron 14 | */ 15 | public interface JobService extends CoreService { 16 | 17 | void initSchedule() throws SchedulerException; 18 | 19 | void changeStatus(Long jobId, String cmd) throws SchedulerException; 20 | 21 | void updateCron(Long jobId) throws SchedulerException; 22 | 23 | void runNowOnce(Long jobId) throws SchedulerException ; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/oss/dao/FileDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.oss.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.oss.domain.FileDO; 5 | 6 | /** 7 | * 文件上传 8 | * 9 | * @author chglee 10 | * @email 1992lcg@163.com 11 | * @date 2017-10-03 15:45:42 12 | */ 13 | public interface FileDao extends BaseDao { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/oss/service/FileService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.oss.service; 2 | 3 | import com.ifast.common.base.CoreService; 4 | import com.ifast.oss.domain.FileDO; 5 | 6 | /** 7 | *
 8 |  * 文件上传
 9 |  * 
10 | * 2018年4月6日 | Aron 11 | */ 12 | public interface FileService extends CoreService { 13 | 14 | /** 15 | *
16 |      * 上传文件,默认路径为 
17 |      *      http:// + 七牛默认分配的域名 + / + 项目名 + / + 日期 + / + 文件名 + "-" + 时间戳 + "." + 后缀
18 |      *      如:http://p6r7ke2jc.bkt.clouddn.com/ifast/20180406/cat001-123412412431.jpeg
19 |      * 
20 | * 21 | * 2018年4月6日 | Aron 22 | * 23 | * @param uploadBytes 文件字节数组 24 | * @param fileName 简单文件名,带后缀,如:mycat.png 25 | * @return 26 | */ 27 | String upload(byte[] uploadBytes, String fileName); 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/config/BDSessionListener.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.config; 2 | 3 | import org.apache.shiro.session.Session; 4 | import org.apache.shiro.session.SessionListener; 5 | 6 | import java.util.concurrent.atomic.AtomicInteger; 7 | 8 | public class BDSessionListener implements SessionListener { 9 | 10 | private final AtomicInteger sessionCount = new AtomicInteger(0); 11 | 12 | @Override 13 | public void onStart(Session session) { 14 | sessionCount.incrementAndGet(); 15 | } 16 | 17 | @Override 18 | public void onStop(Session session) { 19 | sessionCount.decrementAndGet(); 20 | } 21 | 22 | @Override 23 | public void onExpiration(Session session) { 24 | sessionCount.decrementAndGet(); 25 | 26 | } 27 | 28 | public int getSessionCount() { 29 | return sessionCount.get(); 30 | } 31 | 32 | } 33 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/config/SwaggerProperties.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.config; 2 | 3 | import lombok.Data; 4 | import org.springframework.boot.context.properties.ConfigurationProperties; 5 | import org.springframework.stereotype.Component; 6 | 7 | /** 8 | *
 9 |  *
10 |  * 
11 | * 2018/8/23 16:36 | Aron 12 | */ 13 | @Component 14 | @ConfigurationProperties(prefix = "ifast.swagger") 15 | @Data 16 | public class SwaggerProperties { 17 | private String title; 18 | private String contactName; 19 | private String contactUrl; 20 | private String contactEmail; 21 | private String version; 22 | private String description; 23 | private String basePackage; 24 | private String termsOfServiceUrl; 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/DeptDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.sys.domain.DeptDO; 5 | 6 | /** 7 | *
 8 |  * 部门管理
 9 |  * 
10 | * 2018年3月23日 | Aron 11 | */ 12 | public interface DeptDao extends BaseDao { 13 | 14 | Long[] listParentDept(); 15 | 16 | int getDeptUserNumber(Long deptId); 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/MenuDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import java.util.List; 4 | 5 | import com.ifast.common.base.BaseDao; 6 | import com.ifast.sys.domain.MenuDO; 7 | 8 | /** 9 | *
10 |  * 菜单管理
11 |  * 
12 | * 2018年3月23日 | Aron 13 | */ 14 | public interface MenuDao extends BaseDao { 15 | 16 | List listMenuByUserId(Long id); 17 | 18 | List listUserPerms(Long id); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/RoleDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.sys.domain.RoleDO; 5 | 6 | /** 7 | *
 8 |  * 角色
 9 |  * 
10 | * 2018年3月23日 | Aron 11 | */ 12 | public interface RoleDao extends BaseDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/RoleMenuDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | import com.ifast.common.base.BaseDao; 7 | import com.ifast.sys.domain.RoleMenuDO; 8 | 9 | /** 10 | *
11 |  * 角色与菜单对应关系
12 |  * 
13 | * 2018年3月23日 | Aron 14 | */ 15 | public interface RoleMenuDao extends BaseDao { 16 | 17 | List listMenuIdByRoleId(Serializable roleId); 18 | 19 | int removeByRoleId(Serializable roleId); 20 | 21 | int batchSave(List list); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/UserDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.sys.domain.UserDO; 5 | 6 | /** 7 | *
 8 |  * 
9 | * 2018年3月23日 | Aron 10 | */ 11 | public interface UserDao extends BaseDao { 12 | 13 | Long[] listAllDept(); 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/dao/UserRoleDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.dao; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | import com.ifast.common.base.BaseDao; 7 | import com.ifast.sys.domain.RoleDO; 8 | import com.ifast.sys.domain.UserRoleDO; 9 | 10 | /** 11 | *
12 |  * 用户与角色对应关系
13 |  * 
14 | * 2018年3月23日 | Aron 15 | */ 16 | public interface UserRoleDao extends BaseDao { 17 | 18 | List listRoleId(Serializable userId); 19 | 20 | int removeByUserId(Serializable userId); 21 | 22 | int batchSave(List list); 23 | 24 | int batchRemoveByUserId(Long[] ids); 25 | 26 | List findListByUserId(Serializable id); 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/domain/RoleMenuDO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.domain; 2 | 3 | import java.io.Serializable; 4 | 5 | import com.baomidou.mybatisplus.annotations.TableName; 6 | 7 | /** 8 | *
 9 |  * 
10 | * 2018年3月23日 | Aron 11 | */ 12 | @TableName("sys_role_menu") 13 | public class RoleMenuDO implements Serializable { 14 | private static final long serialVersionUID = 1L; 15 | private Long id; 16 | private Long roleId; 17 | private Long menuId; 18 | 19 | public Long getId() { 20 | return id; 21 | } 22 | public void setId(Long id) { 23 | this.id = id; 24 | } 25 | public Long getRoleId() { 26 | return roleId; 27 | } 28 | public void setRoleId(Long roleId) { 29 | this.roleId = roleId; 30 | } 31 | public Long getMenuId() { 32 | return menuId; 33 | } 34 | public void setMenuId(Long menuId) { 35 | this.menuId = menuId; 36 | } 37 | 38 | @Override 39 | public String toString() { 40 | return "RoleMenuDO{" + 41 | "id=" + id + 42 | ", roleId=" + roleId + 43 | ", menuId=" + menuId + 44 | '}'; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/service/DeptService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.service; 2 | 3 | import com.ifast.common.base.CoreService; 4 | import com.ifast.common.domain.Tree; 5 | import com.ifast.sys.domain.DeptDO; 6 | 7 | /** 8 | *
 9 |  * 部门管理
10 |  * 
11 | * 2018年3月23日 | Aron 12 | */ 13 | public interface DeptService extends CoreService { 14 | 15 | Tree getTree(); 16 | 17 | boolean checkDeptHasUser(Long deptId); 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/service/MenuService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.service; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | 6 | import org.springframework.stereotype.Service; 7 | 8 | import com.ifast.common.base.CoreService; 9 | import com.ifast.common.domain.Tree; 10 | import com.ifast.sys.domain.MenuDO; 11 | 12 | /** 13 | *
14 |  * 
15 | * 2018年3月23日 | Aron 16 | */ 17 | @Service 18 | public interface MenuService extends CoreService { 19 | Tree getSysMenuTree(Long id); 20 | 21 | List> listMenuTree(Long id); 22 | 23 | Tree getTree(); 24 | 25 | Tree getTree(Long id); 26 | 27 | Set listPerms(Long userId); 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/service/RoleService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.service; 2 | 3 | import com.ifast.common.base.CoreService; 4 | import com.ifast.sys.domain.RoleDO; 5 | import org.springframework.stereotype.Service; 6 | 7 | import java.io.Serializable; 8 | import java.util.List; 9 | 10 | /** 11 | *
12 |  * 
13 | * 2018年3月23日 | Aron 14 | */ 15 | @Service 16 | public interface RoleService extends CoreService { 17 | List findAll(); 18 | List findListStatusByUserId(Serializable id); 19 | List findListByUserId(Serializable id); 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/service/SessionService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.service; 2 | 3 | import java.util.Collection; 4 | import java.util.List; 5 | 6 | import org.apache.shiro.session.Session; 7 | import org.springframework.stereotype.Service; 8 | 9 | import com.ifast.sys.domain.UserOnline; 10 | 11 | /** 12 | *
13 |  * 
14 | * 2018年3月23日 | Aron 15 | */ 16 | @Service 17 | public interface SessionService { 18 | List list(String name); 19 | 20 | Collection sessionList(); 21 | 22 | boolean forceLogout(String sessionId); 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/sys/vo/UserVO.java: -------------------------------------------------------------------------------- 1 | package com.ifast.sys.vo; 2 | 3 | import com.ifast.sys.domain.UserDO; 4 | import lombok.Data; 5 | 6 | /** 7 | *
 8 |  * 
9 | * 2018年3月23日 | Aron 10 | */ 11 | @Data 12 | public class UserVO { 13 | /** 14 | * 更新的用户对象 15 | */ 16 | private UserDO userDO = new UserDO(); 17 | /** 18 | * 旧密码 19 | */ 20 | private String pwdOld; 21 | /** 22 | * 新密码 23 | */ 24 | private String pwdNew; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/builder/AbstractBuilder.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.builder; 2 | 3 | import org.slf4j.Logger; 4 | import org.slf4j.LoggerFactory; 5 | 6 | import com.ifast.wxmp.service.WeixinService; 7 | 8 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 9 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 10 | 11 | /** 12 | * 13 | *
14 |  * 
15 | * 16 | * 2018年6月13日 | Aron 17 | */ 18 | public abstract class AbstractBuilder { 19 | protected final Logger logger = LoggerFactory.getLogger(getClass()); 20 | 21 | public abstract WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WeixinService service); 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/builder/ImageBuilder.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.builder; 2 | 3 | import com.ifast.wxmp.service.WeixinService; 4 | 5 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 6 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutImageMessage; 7 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 8 | 9 | /** 10 | * 11 | *
12 |  * 
13 | * 14 | * 2018年6月13日 | Aron 15 | */ 16 | public class ImageBuilder extends AbstractBuilder { 17 | 18 | @Override 19 | public WxMpXmlOutMessage build(String mediaId, WxMpXmlMessage wxMessage, WeixinService service) { 20 | 21 | WxMpXmlOutImageMessage m = WxMpXmlOutMessage.IMAGE().mediaId(mediaId).fromUser(wxMessage.getToUser()) 22 | .toUser(wxMessage.getFromUser()).build(); 23 | 24 | return m; 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/builder/TextBuilder.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.builder; 2 | 3 | import com.ifast.wxmp.service.WeixinService; 4 | 5 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 6 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 7 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutTextMessage; 8 | 9 | /** 10 | * 11 | *
12 |  * 
13 | * 14 | * 2018年6月13日 | Aron 15 | */ 16 | public class TextBuilder extends AbstractBuilder { 17 | 18 | @Override 19 | public WxMpXmlOutMessage build(String content, WxMpXmlMessage wxMessage, WeixinService service) { 20 | WxMpXmlOutTextMessage m = WxMpXmlOutMessage.TEXT().content(content).fromUser(wxMessage.getToUser()) 21 | .toUser(wxMessage.getFromUser()).build(); 22 | return m; 23 | } 24 | 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/dao/MpArticleDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.dao; 2 | 3 | import com.ifast.common.base.BaseDao; 4 | import com.ifast.wxmp.domain.MpArticleDO; 5 | 6 | /** 7 | * 8 | *
 9 |  * 
10 |  * 
11 | * 2018-10-18 21:21:36 | Aron 12 | */ 13 | public interface MpArticleDao extends BaseDao { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/dao/MpConfigDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.dao; 2 | 3 | import com.ifast.wxmp.domain.MpConfigDO; 4 | import com.ifast.common.base.BaseDao; 5 | 6 | /** 7 | *
 8 |  * 微信配置表
 9 |  * 
10 | * 2018-04-11 23:27:06 | Aron 11 | */ 12 | public interface MpConfigDao extends BaseDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/dao/MpFansDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.dao; 2 | 3 | import com.ifast.wxmp.domain.MpFansDO; 4 | import com.ifast.common.base.BaseDao; 5 | 6 | /** 7 | *
 8 |  * 微信粉丝表
 9 |  * 
10 | * 2018-04-11 23:27:06 | Aron 11 | */ 12 | public interface MpFansDao extends BaseDao { 13 | 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/dao/MpMenuDao.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.dao; 2 | 3 | import com.ifast.wxmp.domain.MpMenuDO; 4 | import com.ifast.common.base.BaseDao; 5 | 6 | /** 7 | * 8 | *
 9 |  * 微信菜单表
10 |  * 
11 | * 2018-10-19 15:47:16 | Aron 12 | */ 13 | public interface MpMenuDao extends BaseDao { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/handler/AbstractHandler.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.handler; 2 | 3 | import me.chanjar.weixin.mp.api.WxMpMessageHandler; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | 7 | /** 8 | * 9 | *
10 |  * 
11 | * 12 | * 2018年6月13日 | Aron 13 | */ 14 | public abstract class AbstractHandler implements WxMpMessageHandler { 15 | 16 | protected Logger logger = LoggerFactory.getLogger(getClass()); 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/handler/KfSessionHandler.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.handler; 2 | 3 | import lombok.extern.slf4j.Slf4j; 4 | import me.chanjar.weixin.common.session.WxSessionManager; 5 | import me.chanjar.weixin.mp.api.WxMpService; 6 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 7 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 8 | import org.springframework.stereotype.Component; 9 | 10 | import java.util.Map; 11 | 12 | /** 13 | * 14 | *
15 |  * 
16 | * 17 | * 2018年6月13日 | Aron 18 | */ 19 | @Component 20 | @Slf4j 21 | public class KfSessionHandler extends AbstractHandler { 22 | 23 | @Override 24 | public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, 25 | WxSessionManager sessionManager) { 26 | // TODO 对会话做处理 27 | log.info("对会话做处理"); 28 | return null; 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/handler/NullHandler.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.handler; 2 | 3 | import java.util.Map; 4 | 5 | import org.springframework.stereotype.Component; 6 | 7 | import me.chanjar.weixin.common.session.WxSessionManager; 8 | import me.chanjar.weixin.mp.api.WxMpService; 9 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 10 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 11 | 12 | /** 13 | * 14 | *
15 |  * 
16 | * 17 | * 2018年6月13日 | Aron 18 | */ 19 | @Component 20 | public class NullHandler extends AbstractHandler { 21 | 22 | @Override 23 | public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, 24 | WxSessionManager sessionManager) { 25 | return null; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/handler/ScanHandler.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.handler; 2 | 3 | /** 4 | * 5 | *
 6 |  * 
7 | * 8 | * 2018年6月13日 | Aron 9 | */ 10 | public abstract class ScanHandler extends AbstractHandler { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/handler/StoreCheckNotifyHandler.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.handler; 2 | 3 | import java.util.Map; 4 | 5 | import org.springframework.stereotype.Component; 6 | 7 | import me.chanjar.weixin.common.session.WxSessionManager; 8 | import me.chanjar.weixin.mp.api.WxMpService; 9 | import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; 10 | import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; 11 | 12 | /** 13 | * 14 | *
15 |  * 
16 | * 17 | * 2018年6月13日 | Aron 18 | */ 19 | @Component 20 | public class StoreCheckNotifyHandler extends AbstractHandler { 21 | 22 | @Override 23 | public WxMpXmlOutMessage handle(WxMpXmlMessage wxMessage, Map context, WxMpService wxMpService, 24 | WxSessionManager sessionManager) { 25 | // TODO 处理门店审核事件 26 | return null; 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/pojo/dto/WxMenuKey.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.pojo.dto; 2 | 3 | import org.apache.commons.lang3.builder.ToStringBuilder; 4 | 5 | /** 6 | * 菜单的dto对象 7 | * @author Binary Wang 8 | * 9 | */ 10 | public class WxMenuKey { 11 | private String type; 12 | private String content; 13 | 14 | @Override 15 | public String toString() { 16 | return ToStringBuilder.reflectionToString(this); 17 | } 18 | 19 | public WxMenuKey() { 20 | 21 | } 22 | 23 | public WxMenuKey(String type, String content) { 24 | this.type = type; 25 | this.content = content; 26 | } 27 | 28 | public String getType() { 29 | return this.type; 30 | } 31 | 32 | public void setType(String type) { 33 | this.type = type; 34 | } 35 | 36 | public String getContent() { 37 | return this.content; 38 | } 39 | 40 | public void setContent(String content) { 41 | this.content = content; 42 | } 43 | 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/MpArticleService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service; 2 | 3 | import com.ifast.common.base.CoreService; 4 | import com.ifast.wxmp.domain.MpArticleDO; 5 | 6 | /** 7 | * 8 | *
 9 |  * 
10 |  * 
11 | * 2018-10-18 21:21:36 | Aron 12 | */ 13 | public interface MpArticleService extends CoreService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/MpConfigService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service; 2 | 3 | import com.ifast.wxmp.domain.MpConfigDO; 4 | import com.ifast.common.base.CoreService; 5 | 6 | /** 7 | * 8 | *
 9 |  * 微信配置表
10 |  * 
11 | * 2018-04-11 23:27:06 | Aron 12 | */ 13 | public interface MpConfigService extends CoreService { 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/MpFansService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service; 2 | 3 | import com.ifast.wxmp.domain.MpFansDO; 4 | import com.ifast.common.base.CoreService; 5 | 6 | import java.util.List; 7 | 8 | /** 9 | * 10 | *
11 |  * 微信粉丝表
12 |  * 
13 | * 2018-04-11 23:27:06 | Aron 14 | */ 15 | public interface MpFansService extends CoreService { 16 | 17 | /** 18 | *
19 |      * 根据openid查表是否存在,如果存在则更新fans数据
20 |      * 
21 | * 22 | * 2018年6月13日 | Aron 23 | * 24 | * @param fans 25 | */ 26 | void sync(MpFansDO fans); 27 | void sync(List ids); 28 | 29 | void syncWxMp(String appId); 30 | } 31 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/MpMenuService.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service; 2 | 3 | import com.ifast.common.domain.Tree; 4 | import com.ifast.wxmp.domain.MpMenuDO; 5 | import com.ifast.common.base.CoreService; 6 | 7 | /** 8 | * 9 | *
10 |  * 微信菜单表
11 |  * 
12 | * 2018-10-19 15:47:16 | Aron 13 | */ 14 | public interface MpMenuService extends CoreService { 15 | 16 | Tree getTree(); 17 | 18 | void saveMenu(MpMenuDO mpMenu, String appId); 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/impl/MpArticleServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service.impl; 2 | 3 | import com.ifast.common.base.CoreServiceImpl; 4 | import com.ifast.wxmp.dao.MpArticleDao; 5 | import com.ifast.wxmp.domain.MpArticleDO; 6 | import com.ifast.wxmp.service.MpArticleService; 7 | import org.springframework.stereotype.Service; 8 | 9 | /** 10 | * 11 | *
12 |  * 
13 |  * 
14 | * 2018-10-18 21:21:36 | Aron 15 | */ 16 | @Service 17 | public class MpArticleServiceImpl extends CoreServiceImpl implements MpArticleService { 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/ifast/wxmp/service/impl/MpConfigServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.ifast.wxmp.service.impl; 2 | 3 | import org.springframework.stereotype.Service; 4 | 5 | import com.ifast.wxmp.dao.MpConfigDao; 6 | import com.ifast.wxmp.domain.MpConfigDO; 7 | import com.ifast.wxmp.service.MpConfigService; 8 | import com.ifast.common.base.CoreServiceImpl; 9 | 10 | /** 11 | * 12 | *
13 |  * 微信配置表
14 |  * 
15 | * 2018-04-11 23:27:06 | Aron 16 | */ 17 | @Service 18 | public class MpConfigServiceImpl extends CoreServiceImpl implements MpConfigService { 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/resources/config/banner.txt: -------------------------------------------------------------------------------- 1 | 2 | _____________ _____ 3 | ___(_)__ __/_____ _________ /_ 4 | __ /__ /_ _ __ `/_ ___/ __/ v1.4.0 5 | _ / _ __/ / /_/ /_(__ )/ /_ 6 | /_/ /_/ \__,_/ /____/ \__/ 2018-09-04 7 | 8 | -------------------------------------------------------------------------------- /src/main/resources/config/ehcache.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 15 | 16 | 25 | -------------------------------------------------------------------------------- /src/main/resources/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM java 2 | MAINTAINER "Aron" 3 | ADD ifast-1.0.0.jar app.jar 4 | EXPOSE 8088 5 | CMD java -jar app.jar --spring.profiles.active=prod 6 | -------------------------------------------------------------------------------- /src/main/resources/docker/run: -------------------------------------------------------------------------------- 1 | docker run \ 2 | --rm \ 3 | -d \ 4 | -p 8088:8088 \ 5 | -m 512m \ 6 | 127.0.0.1:5000/com.aron/ifast:1.0.0 -------------------------------------------------------------------------------- /src/main/resources/mapper/common/ConfigMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/common/DictMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /src/main/resources/mapper/common/FileMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/common/LogMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/common/TaskMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/demo/DemoDao.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/ifast/DemoBaseMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/sys/DeptMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 10 | 11 | 14 | -------------------------------------------------------------------------------- /src/main/resources/mapper/sys/MenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 17 | 18 | 25 | -------------------------------------------------------------------------------- /src/main/resources/mapper/sys/RoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/sys/RoleMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | DELETE FROM sys_role_menu WHERE roleId=#{roleId} 13 | 14 | 15 | 16 | INSERT INTO sys_role_menu(roleId, menuId) values 17 | 19 | (#{item.roleId},#{item.menuId}) 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/main/resources/mapper/sys/UserMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /src/main/resources/mapper/wxmp/MpArticleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/wxmp/MpConfigMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/wxmp/MpFansMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/mapper/wxmp/MpMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/bg.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/breadcrumbs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/breadcrumbs.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/checker-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/checker-bg.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/blue/message_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/blue/message_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/business_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/business_rule.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/error_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/error_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/error_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/error_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/manual.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/manual.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/message_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/message_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/message_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/message_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/receive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/receive.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/script.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/script.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/send.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/send.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/service.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/service.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/signal_catch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/signal_catch.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/signal_throw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/signal_throw.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/timer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/timer.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/images/deployer/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/images/deployer/user.png -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/Polyline.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/js/Polyline.js -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/ProcessDiagramGenerator.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/public/diagram-viewer/js/ProcessDiagramGenerator.js -------------------------------------------------------------------------------- /src/main/resources/public/diagram-viewer/js/jstools.js: -------------------------------------------------------------------------------- 1 | if (typeof(console) == "undefined") { 2 | var console = { 3 | info: function(){}, 4 | warn: function(){}, 5 | error: function(){}, 6 | log: function(){}, 7 | time: function(){}, 8 | timeEnd: function(){} 9 | }; 10 | } 11 | 12 | if(!Array.isArray) { 13 | Array.isArray = function (vArg) { 14 | return Object.prototype.toString.call(vArg) === "[object Array]"; 15 | }; 16 | } 17 | 18 | if (!Object.isSVGElement) { 19 | Object.isSVGElement = function(vArg) { 20 | var str = Object.prototype.toString.call(vArg); 21 | return (str.indexOf("[object SVG") == 0); 22 | }; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/resources/static/css/login/login-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/login/login-logo.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/patterns/header-profile-skin-1.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/patterns/header-profile-skin-3.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/patterns/header-profile.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/patterns/shattered.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/blueimp/img/error.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/error.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/blueimp/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/play-pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/blueimp/img/play-pause.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/play-pause.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/video-play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/blueimp/img/video-play.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/blueimp/img/video-play.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/chosen/chosen-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/chosen/chosen-sprite.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/chosen/chosen-sprite@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/chosen/chosen-sprite@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/alpha.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue-horizontal.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/hue.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/colorpicker/img/bootstrap-colorpicker/saturation.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/footable/fonts/footable.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/footable/fonts/footable.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/footable/fonts/footable.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/footable/fonts/footable.ttf -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/footable/fonts/footable.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/footable/fonts/footable.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/fullcalendar/fullcalendar.print.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * FullCalendar v1.6.4 Print Stylesheet 3 | * Docs & License: http://arshaw.com/fullcalendar/ 4 | * (c) 2013 Adam Shaw 5 | */ 6 | 7 | /* 8 | * Include this stylesheet on your page to get a more printer-friendly calendar. 9 | * When including this stylesheet, use the media='print' attribute of the tag. 10 | * Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css. 11 | */ 12 | 13 | 14 | /* Events 15 | -----------------------------------------------------*/ 16 | 17 | .fc-event { 18 | background: #fff !important; 19 | color: #000 !important; 20 | } 21 | 22 | /* for vertical events */ 23 | 24 | .fc-event-bg { 25 | display: none !important; 26 | } 27 | 28 | .fc-event .ui-resizable-handle { 29 | display: none !important; 30 | } 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/iCheck/green.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/iCheck/green@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/images/sort_asc.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/images/sort_desc.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/images/sprite-skin-flat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/images/sprite-skin-flat.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/images/spritemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/images/spritemap.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/images/spritemap@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/images/spritemap@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jQueryUI/images/ui-bg_flat_0_aaaaaa_40x100.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jQueryUI/images/ui-bg_flat_75_ffffff_40x100.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_222222_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_454545_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jQueryUI/images/ui-icons_888888_256x240.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jqTreeGrid/jquery.treegrid.css: -------------------------------------------------------------------------------- 1 | .treegrid-indent {width:16px; height: 16px; display: inline-block; position: relative;} 2 | 3 | .treegrid-expander {width:16px; height: 16px; display: inline-block; position: relative; cursor: pointer;} 4 | 5 | .treegrid-expander-expanded{background-image: url(../img/collapse.png); } 6 | .treegrid-expander-collapsed{background-image: url(../img/expand.png);} 7 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jsTree/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jsTree/32px.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/jsTree/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/jsTree/throbber.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/morris/morris-0.4.3.min.css: -------------------------------------------------------------------------------- 1 | .morris-hover{position:absolute;z-index:1000;}.morris-hover.morris-default-style{border-radius:10px;padding:6px;color:#666;background:rgba(255, 255, 255, 0.8);border:solid 2px rgba(230, 230, 230, 0.8);font-family:sans-serif;font-size:12px;text-align:center;}.morris-hover.morris-default-style .morris-hover-row-label{font-weight:bold;margin:0.25em 0;} 2 | .morris-hover.morris-default-style .morris-hover-point{white-space:nowrap;margin:0.1em 0;} 3 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/summernote/font/summernote.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/summernote/font/summernote.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/switchery/switchery.css: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Main stylesheet for Switchery. 4 | * http://abpetkov.github.io/switchery/ 5 | * 6 | */ 7 | 8 | .switchery { 9 | background-color: #fff; 10 | border: 1px solid #dfdfdf; 11 | border-radius: 20px; 12 | cursor: pointer; 13 | display: inline-block; 14 | height: 30px; 15 | position: relative; 16 | vertical-align: middle; 17 | width: 50px; 18 | 19 | -webkit-box-sizing: content-box; 20 | -moz-box-sizing: content-box; 21 | box-sizing: content-box; 22 | } 23 | 24 | .switchery > small { 25 | background: #fff; 26 | border-radius: 100%; 27 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 28 | height: 30px; 29 | position: absolute; 30 | top: 0; 31 | width: 30px; 32 | } 33 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/webuploader/webuploader.css: -------------------------------------------------------------------------------- 1 | .webuploader-container { 2 | position: relative; 3 | } 4 | .webuploader-element-invisible { 5 | position: absolute !important; 6 | clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 7 | clip: rect(1px,1px,1px,1px); 8 | } 9 | .webuploader-pick { 10 | position: relative; 11 | display: inline-block; 12 | cursor: pointer; 13 | background: #00b7ee; 14 | padding: 10px 15px; 15 | color: #fff; 16 | text-align: center; 17 | border-radius: 3px; 18 | overflow: hidden; 19 | } 20 | .webuploader-pick-hover { 21 | background: #00a2d4; 22 | } 23 | 24 | .webuploader-pick-disable { 25 | opacity: 0.6; 26 | pointer-events:none; 27 | } 28 | 29 | -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/zTree/metroStyle/img/32px.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/zTree/metroStyle/img/32px.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/zTree/metroStyle/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/zTree/metroStyle/img/line_conn.png -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/zTree/metroStyle/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/zTree/metroStyle/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/zTree/metroStyle/img/metro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/zTree/metroStyle/img/metro.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/plugins/zTree/metroStyle/img/metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/izenglong/ifast/3686c54f0f51c6373a0d6f6ac7e4f74672bb8be6/src/main/resources/static/css/plugins/zTree/metroStyle/img/metro.png -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/app-cfg.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 'use strict'; 20 | 21 | var ACTIVITI = ACTIVITI || {}; 22 | 23 | ACTIVITI.CONFIG = { 24 | 'contextRoot' : '/activiti', 25 | }; 26 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties-custom-controllers.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Activiti Modeler component part of the Activiti project 3 | * Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved. 4 | * 5 | * This library is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU Lesser General Public 7 | * License as published by the Free Software Foundation; either 8 | * version 2.1 of the License, or (at your option) any later version. 9 | * 10 | * This library is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * Lesser General Public License for more details. 14 | 15 | * You should have received a copy of the GNU Lesser General Public 16 | * License along with this library; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/assignment-display-template.html: -------------------------------------------------------------------------------- 1 | {{'PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY' | translate:property.value.assignment }} 2 | {{'PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY' | translate:property.value.assignment.candidateUsers}} 3 | {{'PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY' | translate:property.value.assignment.candidateGroups}} 4 | PROPERTY.ASSIGNMENT.EMPTY -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/assignment-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/boolean-property-template.html: -------------------------------------------------------------------------------- 1 | 2 |
3 | 4 |
-------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/condition-expression-display-template.html: -------------------------------------------------------------------------------- 1 | {{property.value|limitTo:20}} 2 | {{'PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY' | translate}} -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/condition-expression-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/default-value-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{property.value|limitTo:20}} 3 | ... 4 | PROPERTY.EMPTY -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/event-listeners-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.EVENTLISTENERS.DISPLAY' | translate:property.value.eventListeners}} 3 | PROPERTY.EVENTLISTENERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/event-listeners-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/execution-listeners-display-template.html: -------------------------------------------------------------------------------- 1 | 2 | {{'PROPERTY.EXECUTIONLISTENERS.DISPLAY' | translate:property.value.executionListeners}} 3 | PROPERTY.EXECUTIONLISTENERS.EMPTY -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/execution-listeners-write-template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/main/resources/static/editor-app/configuration/properties/feedback-popup.html: -------------------------------------------------------------------------------- 1 | 2 |