├── .gitignore ├── src ├── main │ ├── resources │ │ ├── static │ │ │ ├── file │ │ │ │ └── rml.txt │ │ │ ├── favicon.ico │ │ │ ├── img │ │ │ │ ├── bg.png │ │ │ │ ├── user.png │ │ │ │ ├── .DS_Store │ │ │ │ ├── icons.png │ │ │ │ ├── locked.png │ │ │ │ ├── loading.gif │ │ │ │ ├── profile.png │ │ │ │ ├── progress.png │ │ │ │ ├── success.png │ │ │ │ ├── webuploader.png │ │ │ │ ├── loading-upload.gif │ │ │ │ └── login-background.jpg │ │ │ ├── js │ │ │ │ ├── .DS_Store │ │ │ │ └── plugins │ │ │ │ │ └── .DS_Store │ │ │ ├── css │ │ │ │ ├── .DS_Store │ │ │ │ ├── patterns │ │ │ │ │ ├── shattered.png │ │ │ │ │ ├── header-profile.png │ │ │ │ │ ├── header-profile-skin-blue.png │ │ │ │ │ └── header-profile-skin-yellow.png │ │ │ │ ├── fonts │ │ │ │ │ ├── fontawesome-webfont93e3.eot │ │ │ │ │ ├── fontawesome-webfont93e3.ttf │ │ │ │ │ ├── fontawesome-webfontd41d.eot │ │ │ │ │ ├── fontawesome-webfont93e3.woff │ │ │ │ │ ├── fontawesome-webfont93e3.woff2 │ │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ │ ├── glyphicons-halflings-regular.woff2 │ │ │ │ │ └── glyphicons-halflings-regulard41d.eot │ │ │ │ └── login.css │ │ │ ├── fonts │ │ │ │ ├── FontAwesome.otf │ │ │ │ ├── Simple-Line-Icons.woff2 │ │ │ │ ├── fontawesome-webfont.eot │ │ │ │ ├── fontawesome-webfont.ttf │ │ │ │ ├── fontawesome-webfont.woff │ │ │ │ ├── fontawesome-webfont.woff2 │ │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ │ ├── glyphicons-halflings-regular.woff │ │ │ │ └── glyphicons-halflings-regular.woff2 │ │ │ ├── ajax │ │ │ │ └── libs │ │ │ │ │ ├── iCheck │ │ │ │ │ ├── green.png │ │ │ │ │ ├── green@2x.png │ │ │ │ │ ├── green-login.png │ │ │ │ │ └── custom.css │ │ │ │ │ ├── zTree │ │ │ │ │ └── img │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ ├── left_menu.gif │ │ │ │ │ │ ├── left_menu.png │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── layer │ │ │ │ │ ├── layim │ │ │ │ │ │ └── loading.gif │ │ │ │ │ ├── skin │ │ │ │ │ │ ├── default │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ ├── textbg.png │ │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ │ ├── icon_ext.png │ │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ │ ├── loading-2.gif │ │ │ │ │ │ │ ├── xubox_ico0.png │ │ │ │ │ │ │ ├── xubox_loading0.gif │ │ │ │ │ │ │ ├── xubox_loading1.gif │ │ │ │ │ │ │ ├── xubox_loading2.gif │ │ │ │ │ │ │ ├── xubox_loading3.gif │ │ │ │ │ │ │ └── xubox_title0.png │ │ │ │ │ │ └── moon │ │ │ │ │ │ │ └── default.png │ │ │ │ │ ├── theme │ │ │ │ │ │ └── default │ │ │ │ │ │ │ ├── icon.png │ │ │ │ │ │ │ ├── icon-ext.png │ │ │ │ │ │ │ ├── loading-0.gif │ │ │ │ │ │ │ ├── loading-1.gif │ │ │ │ │ │ │ └── loading-2.gif │ │ │ │ │ └── laydate │ │ │ │ │ │ └── skins │ │ │ │ │ │ └── default │ │ │ │ │ │ └── icon.png │ │ │ │ │ ├── bootstrap-table │ │ │ │ │ ├── .DS_Store │ │ │ │ │ ├── locale │ │ │ │ │ │ ├── bootstrap-table-zh-CN.min.js │ │ │ │ │ │ └── bootstrap-table-zh-CN.js │ │ │ │ │ └── extensions │ │ │ │ │ │ └── mobile │ │ │ │ │ │ └── bootstrap-table-mobile.min.js │ │ │ │ │ ├── summernote │ │ │ │ │ ├── font │ │ │ │ │ │ └── summernote.woff │ │ │ │ │ └── summernote-zh-CN.min.js │ │ │ │ │ ├── jquery-ztree │ │ │ │ │ └── 3.5 │ │ │ │ │ │ └── css │ │ │ │ │ │ ├── default │ │ │ │ │ │ └── img │ │ │ │ │ │ │ ├── diy │ │ │ │ │ │ │ ├── 2.png │ │ │ │ │ │ │ ├── 3.png │ │ │ │ │ │ │ ├── 4.png │ │ │ │ │ │ │ ├── 5.png │ │ │ │ │ │ │ ├── 6.png │ │ │ │ │ │ │ ├── 7.png │ │ │ │ │ │ │ ├── 8.png │ │ │ │ │ │ │ ├── 9.png │ │ │ │ │ │ │ ├── 1_open.png │ │ │ │ │ │ │ └── 1_close.png │ │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ │ ├── metro │ │ │ │ │ │ └── img │ │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ │ ├── metro.gif │ │ │ │ │ │ │ ├── metro.png │ │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ │ └── line_conn.png │ │ │ │ │ │ └── simple │ │ │ │ │ │ └── img │ │ │ │ │ │ ├── loading.gif │ │ │ │ │ │ ├── left_menu.gif │ │ │ │ │ │ ├── left_menu.png │ │ │ │ │ │ ├── line_conn.gif │ │ │ │ │ │ ├── zTreeStandard.gif │ │ │ │ │ │ └── zTreeStandard.png │ │ │ │ │ ├── jqTreeGrid │ │ │ │ │ └── jquery.treegrid.css │ │ │ │ │ └── validate │ │ │ │ │ └── messages_zh.min.js │ │ │ └── jetfire │ │ │ │ └── login.js │ │ ├── mybatis │ │ │ ├── mybatis-config.xml │ │ │ ├── system │ │ │ │ ├── UserPostMapper.xml │ │ │ │ ├── UserRoleMapper.xml │ │ │ │ └── RoleMenuMapper.xml │ │ │ ├── monitor │ │ │ │ └── LogininforMapper.xml │ │ │ └── tool │ │ │ │ └── GenMapper.xml │ │ ├── templates │ │ │ ├── error │ │ │ │ ├── 500.html │ │ │ │ ├── 404.html │ │ │ │ └── unauth.html │ │ │ ├── vm │ │ │ │ ├── java │ │ │ │ │ ├── domain.java.vm │ │ │ │ │ ├── Service.java.vm │ │ │ │ │ ├── Mapper.java.vm │ │ │ │ │ └── ServiceImpl.java.vm │ │ │ │ ├── html │ │ │ │ │ ├── add.html.vm │ │ │ │ │ └── edit.html.vm │ │ │ │ └── sql │ │ │ │ │ └── sql.vm │ │ │ ├── main.html │ │ │ ├── system │ │ │ │ └── user │ │ │ │ │ └── resetPwd.html │ │ │ └── monitor │ │ │ │ └── operlog │ │ │ │ └── detail.html │ │ ├── application-druid.yml │ │ ├── i18n │ │ │ └── messages.properties │ │ ├── banner.txt │ │ ├── ehcache │ │ │ └── ehcache-shiro.xml │ │ └── application.yml │ └── java │ │ └── com │ │ └── jetfire │ │ ├── common │ │ ├── exception │ │ │ ├── DemoModeException.java │ │ │ ├── user │ │ │ │ ├── CaptchaException.java │ │ │ │ ├── UserNotExistsException.java │ │ │ │ ├── UserBlockedException.java │ │ │ │ ├── RoleBlockedException.java │ │ │ │ ├── UserPasswordNotMatchException.java │ │ │ │ ├── UserException.java │ │ │ │ ├── UserPasswordRetryLimitExceedException.java │ │ │ │ └── UserPasswordRetryLimitCountException.java │ │ │ ├── job │ │ │ │ └── TaskException.java │ │ │ └── file │ │ │ │ ├── FileNameLengthLimitExceededException.java │ │ │ │ └── InvalidExtensionException.java │ │ ├── utils │ │ │ ├── MessageUtils.java │ │ │ ├── AddressUtils.java │ │ │ ├── IpUtils.java │ │ │ ├── MapDataUtil.java │ │ │ └── security │ │ │ │ └── ShiroUtils.java │ │ ├── constant │ │ │ ├── ScheduleConstants.java │ │ │ ├── Constants.java │ │ │ ├── ShiroConstants.java │ │ │ └── CommonMap.java │ │ └── xss │ │ │ └── XssHttpServletRequestWrapper.java │ │ ├── framework │ │ ├── aspectj │ │ │ └── lang │ │ │ │ ├── constant │ │ │ │ ├── BusinessStatus.java │ │ │ │ ├── OperatorType.java │ │ │ │ └── BusinessType.java │ │ │ │ └── annotation │ │ │ │ ├── Excel.java │ │ │ │ └── Log.java │ │ ├── web │ │ │ ├── service │ │ │ │ ├── ConfigService.java │ │ │ │ ├── PermissionService.java │ │ │ │ └── DictService.java │ │ │ ├── page │ │ │ │ ├── TableSupport.java │ │ │ │ ├── TableDataInfo.java │ │ │ │ └── PageDomain.java │ │ │ ├── domain │ │ │ │ └── AjaxResult.java │ │ │ └── exception │ │ │ │ └── DefaultExceptionHandler.java │ │ ├── config │ │ │ ├── FilterConfig.java │ │ │ ├── I18nConfig.java │ │ │ ├── RuoYiConfig.java │ │ │ ├── ResourcesConfig.java │ │ │ ├── GenConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── ScheduleConfig.java │ │ │ └── KaptchaTextCreator.java │ │ └── shiro │ │ │ ├── web │ │ │ └── filter │ │ │ │ └── sync │ │ │ │ └── SyncOnlineSessionFilter.java │ │ │ └── session │ │ │ └── OnlineSessionFactory.java │ │ ├── project │ │ ├── monitor │ │ │ ├── job │ │ │ │ ├── task │ │ │ │ │ └── RyTask.java │ │ │ │ ├── service │ │ │ │ │ ├── IJobLogService.java │ │ │ │ │ ├── IJobService.java │ │ │ │ │ └── JobLogServiceImpl.java │ │ │ │ ├── mapper │ │ │ │ │ ├── JobLogMapper.java │ │ │ │ │ └── JobMapper.java │ │ │ │ └── util │ │ │ │ │ └── ScheduleRunnable.java │ │ │ ├── druid │ │ │ │ └── DruidController.java │ │ │ ├── logininfor │ │ │ │ ├── mapper │ │ │ │ │ └── LogininforMapper.java │ │ │ │ └── service │ │ │ │ │ ├── ILogininforService.java │ │ │ │ │ └── LogininforServiceImpl.java │ │ │ ├── operlog │ │ │ │ ├── service │ │ │ │ │ ├── IOperLogService.java │ │ │ │ │ └── OperLogServiceImpl.java │ │ │ │ └── mapper │ │ │ │ │ └── OperLogMapper.java │ │ │ └── online │ │ │ │ ├── mapper │ │ │ │ └── UserOnlineMapper.java │ │ │ │ └── service │ │ │ │ └── IUserOnlineService.java │ │ ├── system │ │ │ ├── user │ │ │ │ ├── domain │ │ │ │ │ ├── UserStatus.java │ │ │ │ │ ├── UserPost.java │ │ │ │ │ └── UserRole.java │ │ │ │ ├── mapper │ │ │ │ │ ├── UserRoleMapper.java │ │ │ │ │ └── UserPostMapper.java │ │ │ │ └── controller │ │ │ │ │ ├── IndexController.java │ │ │ │ │ └── LoginController.java │ │ │ ├── role │ │ │ │ ├── domain │ │ │ │ │ └── RoleMenu.java │ │ │ │ ├── mapper │ │ │ │ │ ├── RoleMenuMapper.java │ │ │ │ │ └── RoleMapper.java │ │ │ │ └── service │ │ │ │ │ └── IRoleService.java │ │ │ ├── notice │ │ │ │ ├── mapper │ │ │ │ │ └── NoticeMapper.java │ │ │ │ ├── service │ │ │ │ │ ├── INoticeService.java │ │ │ │ │ └── NoticeServiceImpl.java │ │ │ │ └── domain │ │ │ │ │ └── Notice.java │ │ │ ├── config │ │ │ │ ├── mapper │ │ │ │ │ └── ConfigMapper.java │ │ │ │ ├── service │ │ │ │ │ └── IConfigService.java │ │ │ │ └── domain │ │ │ │ │ └── Config.java │ │ │ ├── post │ │ │ │ ├── mapper │ │ │ │ │ └── PostMapper.java │ │ │ │ └── service │ │ │ │ │ └── IPostService.java │ │ │ ├── dept │ │ │ │ ├── mapper │ │ │ │ │ └── DeptMapper.java │ │ │ │ └── service │ │ │ │ │ └── IDeptService.java │ │ │ ├── dict │ │ │ │ ├── service │ │ │ │ │ ├── IDictTypeService.java │ │ │ │ │ └── IDictDataService.java │ │ │ │ ├── mapper │ │ │ │ │ └── DictTypeMapper.java │ │ │ │ └── domain │ │ │ │ │ └── DictType.java │ │ │ └── menu │ │ │ │ └── mapper │ │ │ │ └── MenuMapper.java │ │ └── tool │ │ │ ├── swagger │ │ │ └── SwaggerController.java │ │ │ ├── build │ │ │ └── BuildController.java │ │ │ └── gen │ │ │ ├── service │ │ │ └── IGenService.java │ │ │ ├── mapper │ │ │ └── GenMapper.java │ │ │ ├── util │ │ │ └── VelocityInitializer.java │ │ │ └── domain │ │ │ └── ColumnInfo.java │ │ ├── JetfireServletInitializer.java │ │ └── JetfireApplication.java └── test │ └── java │ └── com │ └── jetfire │ └── common │ └── utils │ └── AddressUtilsTest.java ├── .gitattributes ├── LICENSE ├── README.md └── jetfire.sh /.gitignore: -------------------------------------------------------------------------------- 1 | jetfire.iml 2 | .idea/ -------------------------------------------------------------------------------- /src/main/resources/static/file/rml.txt: -------------------------------------------------------------------------------- 1 | 下载临时目录 -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | *.js linguist-language=Java 2 | *.css linguist-language=Java 3 | *.html linguist-language=Java 4 | -------------------------------------------------------------------------------- /src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/img/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/bg.png -------------------------------------------------------------------------------- /src/main/resources/static/img/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/user.png -------------------------------------------------------------------------------- /src/main/resources/static/js/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/js/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/css/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/img/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/img/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/icons.png -------------------------------------------------------------------------------- /src/main/resources/static/img/locked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/locked.png -------------------------------------------------------------------------------- /src/main/resources/static/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/img/profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/profile.png -------------------------------------------------------------------------------- /src/main/resources/static/img/progress.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/progress.png -------------------------------------------------------------------------------- /src/main/resources/static/img/success.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/success.png -------------------------------------------------------------------------------- /src/main/resources/static/img/webuploader.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/webuploader.png -------------------------------------------------------------------------------- /src/main/resources/static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /src/main/resources/static/img/loading-upload.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/loading-upload.gif -------------------------------------------------------------------------------- /src/main/resources/static/js/plugins/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/js/plugins/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/img/login-background.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/img/login-background.jpg -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/iCheck/green.png -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/shattered.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/patterns/shattered.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/iCheck/green@2x.png -------------------------------------------------------------------------------- /src/main/resources/static/fonts/Simple-Line-Icons.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/Simple-Line-Icons.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/green-login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/iCheck/green-login.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/patterns/header-profile.png -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /src/main/resources/static/fonts/fontawesome-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/fontawesome-webfont.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/layim/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/layim/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/left_menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/left_menu.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/left_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/left_menu.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/bootstrap-table/.DS_Store -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/moon/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/moon/default.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/zTree/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/fontawesome-webfont93e3.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/fontawesome-webfont93e3.ttf -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfontd41d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/fontawesome-webfontd41d.eot -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/textbg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/textbg.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/theme/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/fontawesome-webfont93e3.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/icon_ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/icon_ext.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/icon-ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/theme/default/icon-ext.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/summernote/font/summernote.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/summernote/font/summernote.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/patterns/header-profile-skin-blue.png -------------------------------------------------------------------------------- /src/main/resources/static/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_ico0.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/theme/default/loading-0.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/theme/default/loading-1.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/theme/default/loading-2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/theme/default/loading-2.gif -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/glyphicons-halflings-regular.woff2 -------------------------------------------------------------------------------- /src/main/resources/static/css/patterns/header-profile-skin-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/patterns/header-profile-skin-yellow.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/laydate/skins/default/icon.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading0.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading1.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading2.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading3.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_loading3.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/layer/skin/default/xubox_title0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/layer/skin/default/xubox_title0.png -------------------------------------------------------------------------------- /src/main/resources/static/css/fonts/glyphicons-halflings-regulard41d.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/css/fonts/glyphicons-halflings-regulard41d.eot -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/2.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/3.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/4.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/5.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/6.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/7.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/8.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/9.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/metro.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/metro/img/line_conn.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/loading.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/loading.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_open.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/left_menu.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/line_conn.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/line_conn.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/diy/1_close.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/simple/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.gif -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jorrellz/Jetfire/HEAD/src/main/resources/static/ajax/libs/jquery-ztree/3.5/css/default/img/zTreeStandard.png -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/DemoModeException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception; 2 | 3 | /** 4 | * 演示模式异常 5 | * 6 | * @author jetfire 7 | */ 8 | public class DemoModeException extends RuntimeException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public DemoModeException() 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/CaptchaException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 验证码错误异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class CaptchaException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public CaptchaException() 13 | { 14 | super("user.jcaptcha.error", null); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserNotExistsException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 用户不存在异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserNotExistsException extends UserException 9 | { 10 | 11 | private static final long serialVersionUID = 1L; 12 | 13 | public UserNotExistsException() 14 | { 15 | super("user.not.exists", null); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserBlockedException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 用户锁定异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserBlockedException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserBlockedException(String reason) 13 | { 14 | super("user.blocked", new Object[] { reason }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/RoleBlockedException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 角色锁定异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class RoleBlockedException extends UserException 9 | { 10 | 11 | private static final long serialVersionUID = 1L; 12 | 13 | public RoleBlockedException(String reason) 14 | { 15 | super("role.blocked", new Object[] { reason }); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/aspectj/lang/constant/BusinessStatus.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.aspectj.lang.constant; 2 | 3 | /** 4 | * 操作状态 5 | * 6 | * @author jetfire 7 | * 8 | */ 9 | public class BusinessStatus 10 | { 11 | /** 其它 */ 12 | public static final String OTHER = "-1"; 13 | 14 | /** 成功 */ 15 | public static final String SUCCESS = "0"; 16 | 17 | /** 失败 */ 18 | public static final String FAIL = "1"; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserPasswordNotMatchException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 用户密码不正确或不符合规范异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserPasswordNotMatchException extends UserException 9 | { 10 | 11 | private static final long serialVersionUID = 1L; 12 | 13 | public UserPasswordNotMatchException() 14 | { 15 | super("user.password.not.match", null); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | import com.jetfire.common.exception.base.BaseException; 4 | 5 | /** 6 | * 用户信息异常类 7 | * 8 | * @author jetfire 9 | */ 10 | public class UserException extends BaseException 11 | { 12 | 13 | private static final long serialVersionUID = 1L; 14 | 15 | public UserException(String code, Object[] args) 16 | { 17 | super("user", code, args, null); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/task/RyTask.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.task; 2 | 3 | import org.springframework.stereotype.Component; 4 | 5 | /** 6 | * 定时任务调度测试 7 | * 8 | * @author jetfire 9 | */ 10 | @Component("ryTask") 11 | public class RyTask 12 | { 13 | 14 | public void ryParams(String params) 15 | { 16 | System.out.println("执行有参方法:" + params); 17 | } 18 | 19 | public void ryNoParams() 20 | { 21 | System.out.println("执行无参方法"); 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserPasswordRetryLimitExceedException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 用户错误最大次数异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserPasswordRetryLimitExceedException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordRetryLimitExceedException(int retryLimitCount) 13 | { 14 | super("user.password.retry.limit.exceed", new Object[] { retryLimitCount }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/aspectj/lang/constant/OperatorType.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.aspectj.lang.constant; 2 | 3 | /** 4 | * 操作人类别 5 | * 6 | * @author jetfire 7 | * 8 | */ 9 | public class OperatorType 10 | { 11 | /** 其它 */ 12 | public static final String OTHER = "0"; 13 | 14 | /** 后台用户 */ 15 | public static final String MANAGE = "1"; 16 | 17 | /** 渠道用户 */ 18 | public static final String CHANNEL = "2"; 19 | 20 | /** 手机端用户 */ 21 | public static final String MOBILE = "3"; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/user/UserPasswordRetryLimitCountException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.user; 2 | 3 | /** 4 | * 用户错误记数异常类 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserPasswordRetryLimitCountException extends UserException 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | public UserPasswordRetryLimitCountException(int retryLimitCount, String password) 13 | { 14 | super("user.password.retry.limit.count", new Object[] { retryLimitCount, password }); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/JetfireServletInitializer.java: -------------------------------------------------------------------------------- 1 | package com.jetfire; 2 | 3 | import org.springframework.boot.builder.SpringApplicationBuilder; 4 | import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 5 | 6 | /** 7 | * web容器中进行部署 8 | * 9 | * @author jetfire 10 | */ 11 | public class JetfireServletInitializer extends SpringBootServletInitializer 12 | { 13 | @Override 14 | protected SpringApplicationBuilder configure(SpringApplicationBuilder application) 15 | { 16 | return application.sources(JetfireApplication.class); 17 | } 18 | 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/domain/UserStatus.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.domain; 2 | 3 | /** 4 | * 用户状态 5 | * 6 | * @author jetfire 7 | * 8 | */ 9 | public enum UserStatus 10 | { 11 | OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除"); 12 | 13 | private final String code; 14 | private final String info; 15 | 16 | UserStatus(String code, String info) 17 | { 18 | this.code = code; 19 | this.info = info; 20 | } 21 | 22 | public String getCode() 23 | { 24 | return code; 25 | } 26 | 27 | public String getInfo() 28 | { 29 | return info; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/utils/MessageUtils.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils; 2 | 3 | import org.springframework.context.MessageSource; 4 | import com.jetfire.common.utils.spring.SpringUtils; 5 | 6 | /** 7 | * 获取i18n资源文件 8 | * 9 | * @author jetfire 10 | */ 11 | public class MessageUtils 12 | { 13 | 14 | /** 15 | * 根据消息键和参数 获取消息 委托给spring messageSource 16 | * 17 | * @param code 消息键 18 | * @param args 参数 19 | * @return 20 | */ 21 | public static String message(String code, Object... args) 22 | { 23 | MessageSource messageSource = SpringUtils.getBean(MessageSource.class); 24 | return messageSource.getMessage(code, args, null); 25 | } 26 | 27 | } 28 | -------------------------------------------------------------------------------- /src/main/resources/mybatis/mybatis-config.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.fn.bootstrapTable.locales["zh-CN"]={formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候……"},formatRecordsPerPage:function(pageNumber){return pageNumber+" 条记录每页"},formatShowingRows:function(pageFrom,pageTo,totalRows){return"第 "+pageFrom+" 到 "+pageTo+" 条,共 "+totalRows+" 条记录。"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatRefresh:function(){return"刷新"},formatToggle:function(){return"切换"},formatColumns:function(){return"列"},formatExport:function(){return"导出数据"},formatClearFilters:function(){return"清空过滤"}};$.extend($.fn.bootstrapTable.defaults,$.fn.bootstrapTable.locales["zh-CN"])})(jQuery); -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/service/ConfigService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.service; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.stereotype.Service; 5 | import com.jetfire.project.system.config.service.IConfigService; 6 | 7 | /** 8 | * RuoYi首创 html调用 thymeleaf 实现参数管理 9 | * 10 | * @author jetfire 11 | */ 12 | @Service("config") 13 | public class ConfigService 14 | { 15 | @Autowired 16 | private IConfigService configService; 17 | 18 | /** 19 | * 根据键名查询参数配置信息 20 | * 21 | * @param configName 参数名称 22 | * @return 参数键值 23 | */ 24 | public String getKey(String configKey) 25 | { 26 | return configService.selectConfigByKey(configKey); 27 | } 28 | 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/swagger/SwaggerController.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.swagger; 2 | 3 | import org.apache.shiro.authz.annotation.RequiresPermissions; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import com.jetfire.framework.web.controller.BaseController; 8 | 9 | /** 10 | * swagger 接口 11 | * 12 | * @author jetfire 13 | */ 14 | @Controller 15 | @RequestMapping("/tool/swagger") 16 | public class SwaggerController extends BaseController 17 | { 18 | @RequiresPermissions("tool:swagger:view") 19 | @GetMapping() 20 | public String index() 21 | { 22 | return redirect("/swagger-ui.html"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/service/PermissionService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.service; 2 | 3 | import org.apache.shiro.SecurityUtils; 4 | import org.springframework.stereotype.Service; 5 | 6 | /** 7 | * RuoYi首创 js调用 thymeleaf 实现按钮权限可见性 8 | * 9 | * @author jetfire 10 | */ 11 | @Service("permission") 12 | public class PermissionService 13 | { 14 | public String hasPermi(String permission) 15 | { 16 | return isPermittedOperator(permission) ? "" : "hidden"; 17 | } 18 | 19 | private boolean isPermittedOperator(String permission) 20 | { 21 | if (SecurityUtils.getSubject().isPermitted(permission)) 22 | { 23 | return true; 24 | } 25 | else 26 | { 27 | return false; 28 | } 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/build/BuildController.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.build; 2 | 3 | import org.apache.shiro.authz.annotation.RequiresPermissions; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import com.jetfire.framework.web.controller.BaseController; 8 | 9 | /** 10 | * build 表单构建 11 | * 12 | * @author jetfire 13 | */ 14 | @Controller 15 | @RequestMapping("/tool/build") 16 | public class BuildController extends BaseController 17 | { 18 | private String prefix = "tool/build"; 19 | 20 | @RequiresPermissions("tool:build:view") 21 | @GetMapping() 22 | public String build() 23 | { 24 | return prefix + "/build"; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/job/TaskException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.job; 2 | 3 | /** 4 | * 计划策略异常 5 | * 6 | * @author jetfire 7 | */ 8 | public class TaskException extends Exception 9 | { 10 | private static final long serialVersionUID = 1L; 11 | 12 | private Code code; 13 | 14 | public TaskException(String msg, Code code) 15 | { 16 | this(msg, code, null); 17 | } 18 | 19 | public TaskException(String msg, Code code, Exception nestedEx) 20 | { 21 | super(msg, nestedEx); 22 | this.code = code; 23 | } 24 | 25 | public Code getCode() 26 | { 27 | return code; 28 | } 29 | 30 | public enum Code 31 | { 32 | TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE 33 | } 34 | 35 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/druid/DruidController.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.druid; 2 | 3 | import org.apache.shiro.authz.annotation.RequiresPermissions; 4 | import org.springframework.stereotype.Controller; 5 | import org.springframework.web.bind.annotation.GetMapping; 6 | import org.springframework.web.bind.annotation.RequestMapping; 7 | import com.jetfire.framework.web.controller.BaseController; 8 | 9 | /** 10 | * druid 监控 11 | * 12 | * @author jetfire 13 | */ 14 | @Controller 15 | @RequestMapping("/monitor/data") 16 | public class DruidController extends BaseController 17 | { 18 | private String prefix = "/monitor/druid"; 19 | 20 | @RequiresPermissions("monitor:data:view") 21 | @GetMapping() 22 | public String index() 23 | { 24 | return redirect(prefix + "/index"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/aspectj/lang/constant/BusinessType.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.aspectj.lang.constant; 2 | 3 | /** 4 | * 业务操作类型 5 | * 6 | * @author jetfire 7 | * 8 | */ 9 | public class BusinessType 10 | { 11 | /** 其它 */ 12 | public static final String OTHER = "0"; 13 | /** 新增 */ 14 | public static final String INSERT = "1"; 15 | /** 修改 */ 16 | public static final String UPDATE = "2"; 17 | /** 删除 */ 18 | public static final String DELETE = "3"; 19 | /** 授权 */ 20 | public static final String GRANT = "4"; 21 | /** 导出 */ 22 | public static final String EXPORT = "5"; 23 | /** 导入 */ 24 | public static final String IMPORT = "6"; 25 | /** 强退 */ 26 | public static final String FORCE = "7"; 27 | /** 生成代码 */ 28 | public static final String GENCODE = "8"; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/JetfireApplication.java: -------------------------------------------------------------------------------- 1 | package com.jetfire; 2 | 3 | import org.mybatis.spring.annotation.MapperScan; 4 | import org.springframework.boot.SpringApplication; 5 | import org.springframework.boot.autoconfigure.SpringBootApplication; 6 | import org.springframework.transaction.annotation.EnableTransactionManagement; 7 | 8 | /** 9 | * 启动程序 10 | * 11 | * @author jetfire 12 | */ 13 | @SpringBootApplication 14 | @EnableTransactionManagement 15 | @MapperScan("com.jetfire.project.*.*.mapper") 16 | public class JetfireApplication 17 | { 18 | public static void main(String[] args) 19 | { 20 | // System.setProperty("spring.devtools.restart.enabled", "false"); 21 | SpringApplication.run(JetfireApplication.class, args); 22 | System.out.println("(♥◠‿◠)ノ゙ Jetfire启动成功 ლ(´ڡ`ლ)゙ "); 23 | 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/gen/service/IGenService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.gen.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.tool.gen.domain.TableInfo; 5 | 6 | /** 7 | * 代码生成 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IGenService 12 | { 13 | /** 14 | * 查询ry数据库表信息 15 | * 16 | * @param tableInfo 表信息 17 | * @return 数据库表列表 18 | */ 19 | public List selectTableList(TableInfo tableInfo); 20 | 21 | /** 22 | * 生成代码 23 | * 24 | * @param tableName 表名称 25 | * @return 数据 26 | */ 27 | public byte[] generatorCode(String tableName); 28 | 29 | /** 30 | * 批量生成代码 31 | * 32 | * @param tableNames 表数组 33 | * @return 数据 34 | */ 35 | public byte[] generatorCode(String[] tableNames); 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/role/domain/RoleMenu.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.role.domain; 2 | 3 | /** 4 | * 角色和菜单关联 sys_role_menu 5 | * 6 | * @author jetfire 7 | */ 8 | public class RoleMenu 9 | { 10 | /** 角色ID */ 11 | private Long roleId; 12 | /** 菜单ID */ 13 | private Long menuId; 14 | 15 | public Long getRoleId() 16 | { 17 | return roleId; 18 | } 19 | 20 | public void setRoleId(Long roleId) 21 | { 22 | this.roleId = roleId; 23 | } 24 | 25 | public Long getMenuId() 26 | { 27 | return menuId; 28 | } 29 | 30 | public void setMenuId(Long menuId) 31 | { 32 | this.menuId = menuId; 33 | } 34 | 35 | @Override 36 | public String toString() 37 | { 38 | return "RoleMenu [roleId=" + roleId + ", menuId=" + menuId + "]"; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/domain/UserPost.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.domain; 2 | 3 | /** 4 | * 用户和岗位关联 sys_user_post 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserPost 9 | { 10 | /** 用户ID */ 11 | private Long userId; 12 | /** 岗位ID */ 13 | private Long postId; 14 | 15 | public Long getUserId() 16 | { 17 | return userId; 18 | } 19 | 20 | public void setUserId(Long userId) 21 | { 22 | this.userId = userId; 23 | } 24 | 25 | public Long getPostId() 26 | { 27 | return postId; 28 | } 29 | 30 | public void setPostId(Long postId) 31 | { 32 | this.postId = postId; 33 | } 34 | 35 | @Override 36 | public String toString() 37 | { 38 | return "UserPost [userId=" + userId + ", postId=" + postId + "]"; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/domain/UserRole.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.domain; 2 | 3 | /** 4 | * 用户和角色关联 sys_user_role 5 | * 6 | * @author jetfire 7 | */ 8 | public class UserRole 9 | { 10 | /** 用户ID */ 11 | private Long userId; 12 | /** 角色ID */ 13 | private Long roleId; 14 | 15 | public Long getUserId() 16 | { 17 | return userId; 18 | } 19 | 20 | public void setUserId(Long userId) 21 | { 22 | this.userId = userId; 23 | } 24 | 25 | public Long getRoleId() 26 | { 27 | return roleId; 28 | } 29 | 30 | public void setRoleId(Long roleId) 31 | { 32 | this.roleId = roleId; 33 | } 34 | 35 | @Override 36 | public String toString() 37 | { 38 | return "UserRole [userId=" + userId + ", roleId=" + roleId + "]"; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/logininfor/mapper/LogininforMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.logininfor.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.logininfor.domain.Logininfor; 5 | 6 | /** 7 | * 系统访问日志情况信息 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface LogininforMapper 12 | { 13 | /** 14 | * 新增系统登录日志 15 | * 16 | * @param logininfor 访问日志对象 17 | */ 18 | public void insertLogininfor(Logininfor logininfor); 19 | 20 | /** 21 | * 查询系统登录日志集合 22 | * 23 | * @param logininfor 访问日志对象 24 | * @return 登录记录集合 25 | */ 26 | public List selectLogininforList(Logininfor logininfor); 27 | 28 | /** 29 | * 批量删除系统登录日志 30 | * 31 | * @param ids 需要删除的数据 32 | * @return 33 | */ 34 | public int deleteLogininforByIds(String[] ids); 35 | } 36 | -------------------------------------------------------------------------------- /src/test/java/com/jetfire/common/utils/AddressUtilsTest.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils; 2 | 3 | import org.junit.After; 4 | import org.junit.Before; 5 | import org.junit.Test; 6 | 7 | /** 8 | * AddressUtils Tester. 9 | * 10 | * @author Leonhardt 11 | * @version 1.0 12 | * @since 07/22/2018 13 | */ 14 | 15 | public class AddressUtilsTest 16 | { 17 | 18 | @Before 19 | public void before() throws Exception 20 | { 21 | } 22 | 23 | @After 24 | public void after() throws Exception 25 | { 26 | } 27 | 28 | /** 29 | * Method: getRealAddressByIP(String ip) 30 | *

31 | */ 32 | @Test 33 | public void testGetRealAddressByIP() throws Exception 34 | { 35 | // TODO: Test goes here... 36 | String ipAddress = AddressUtils.getRealAddressByIP("121.8.250.1"); 37 | System.out.println(ipAddress); 38 | } 39 | 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/logininfor/service/ILogininforService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.logininfor.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.logininfor.domain.Logininfor; 5 | 6 | /** 7 | * 系统访问日志情况信息 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface ILogininforService 12 | { 13 | 14 | /** 15 | * 新增系统登录日志 16 | * 17 | * @param logininfor 访问日志对象 18 | */ 19 | public void insertLogininfor(Logininfor logininfor); 20 | 21 | /** 22 | * 查询系统登录日志集合 23 | * 24 | * @param logininfor 访问日志对象 25 | * @return 登录记录集合 26 | */ 27 | public List selectLogininforList(Logininfor logininfor); 28 | 29 | /** 30 | * 批量删除系统登录日志 31 | * 32 | * @param ids 需要删除的数据 33 | * @return 34 | */ 35 | public int deleteLogininforByIds(String ids); 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/aspectj/lang/annotation/Excel.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.aspectj.lang.annotation; 2 | 3 | import java.lang.annotation.ElementType; 4 | import java.lang.annotation.Retention; 5 | import java.lang.annotation.RetentionPolicy; 6 | import java.lang.annotation.Target; 7 | 8 | /** 9 | * 自定义注解 10 | * 11 | * @author jetfire 12 | */ 13 | @Retention(RetentionPolicy.RUNTIME) 14 | @Target(ElementType.FIELD) 15 | public @interface Excel 16 | { 17 | /** 18 | * 导出到Excel中的名字. 19 | */ 20 | public abstract String name(); 21 | 22 | /** 23 | * 提示信息 24 | */ 25 | public abstract String prompt() default ""; 26 | 27 | /** 28 | * 设置只能选择不能输入的列内容. 29 | */ 30 | public abstract String[] combo() default {}; 31 | 32 | /** 33 | * 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. 34 | */ 35 | public abstract boolean isExport() default true; 36 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/aspectj/lang/annotation/Log.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.aspectj.lang.annotation; 2 | 3 | import java.lang.annotation.Documented; 4 | import java.lang.annotation.ElementType; 5 | import java.lang.annotation.Retention; 6 | import java.lang.annotation.RetentionPolicy; 7 | import java.lang.annotation.Target; 8 | import com.jetfire.framework.aspectj.lang.constant.OperatorType; 9 | 10 | /** 11 | * 自定义操作日志记录注解 12 | * 13 | * @author jetfire 14 | * 15 | */ 16 | @Target({ ElementType.PARAMETER, ElementType.METHOD }) 17 | @Retention(RetentionPolicy.RUNTIME) 18 | @Documented 19 | public @interface Log 20 | { 21 | /** 模块 */ 22 | String title() default ""; 23 | 24 | /** 功能 */ 25 | String action() default ""; 26 | 27 | /** 渠道 */ 28 | String channel() default OperatorType.MANAGE; 29 | 30 | /** 是否保存请求的参数 */ 31 | boolean isSaveRequestData() default true; 32 | 33 | } 34 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/gen/mapper/GenMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.gen.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.tool.gen.domain.ColumnInfo; 5 | import com.jetfire.project.tool.gen.domain.TableInfo; 6 | 7 | /** 8 | * 代码生成 数据层 9 | * 10 | * @author jetfire 11 | */ 12 | public interface GenMapper 13 | { 14 | /** 15 | * 查询ry数据库表信息 16 | * 17 | * @param tableInfo 表信息 18 | * @return 数据库表列表 19 | */ 20 | public List selectTableList(TableInfo tableInfo); 21 | 22 | /** 23 | * 根据表名称查询信息 24 | * 25 | * @param tableName 表名称 26 | * @return 表信息 27 | */ 28 | public TableInfo selectTableByName(String tableName); 29 | 30 | /** 31 | * 根据表名称查询列信息 32 | * 33 | * @param tableName 表名称 34 | * @return 列信息 35 | */ 36 | public List selectTableColumnsByName(String tableName); 37 | } 38 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/500.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Jetfire - 500 7 | 8 | 9 | 10 | 11 | 12 |

13 |

500

14 |

内部服务器错误!

15 | 16 |
17 | 服务器遇到意外事件,不允许完成请求。我们抱歉。您可以返回主页面。 18 | 主页 19 |
20 |
21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/page/TableSupport.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.page; 2 | 3 | import com.jetfire.common.utils.ServletUtils; 4 | import com.jetfire.common.constant.Constants; 5 | 6 | /** 7 | * 表格数据处理 8 | * 9 | * @author jetfire 10 | */ 11 | public class TableSupport 12 | { 13 | /** 14 | * 封装分页对象 15 | */ 16 | public static PageDomain getPageDomain() 17 | { 18 | PageDomain pageDomain = new PageDomain(); 19 | pageDomain.setPageNum(ServletUtils.getParameterToInt(Constants.PAGENUM)); 20 | pageDomain.setPageSize(ServletUtils.getParameterToInt(Constants.PAGESIZE)); 21 | pageDomain.setOrderByColumn(ServletUtils.getParameter(Constants.ORDERBYCOLUMN)); 22 | pageDomain.setIsAsc(ServletUtils.getParameter(Constants.ISASC)); 23 | return pageDomain; 24 | } 25 | 26 | public static PageDomain buildPageRequest() 27 | { 28 | return getPageDomain(); 29 | } 30 | 31 | } 32 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/404.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Jetfire - 404 7 | 8 | 9 | 10 | 11 | 12 |
13 |

404

14 |

找不到网页!

15 |
16 | 对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 17 | 主页 18 |
19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/main/resources/templates/error/unauth.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Jetfire - 403 7 | 8 | 9 | 10 | 11 | 12 |
13 |

403

14 |

您没有访问权限!

15 | 16 |
17 | 对不起,您正在寻找的页面已经找到。尝试检查URL的错误,然后按浏览器上的刷新按钮或尝试在我们的应用程序中找到其他内容。 18 | 主页 19 |
20 |
21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/operlog/service/IOperLogService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.operlog.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.operlog.domain.OperLog; 5 | 6 | /** 7 | * 操作日志 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IOperLogService 12 | { 13 | /** 14 | * 新增操作日志 15 | * 16 | * @param operLog 操作日志对象 17 | */ 18 | public void insertOperlog(OperLog operLog); 19 | 20 | /** 21 | * 查询系统操作日志集合 22 | * 23 | * @param operLog 操作日志对象 24 | * @return 操作日志集合 25 | */ 26 | public List selectOperLogList(OperLog operLog); 27 | 28 | /** 29 | * 批量删除系统操作日志 30 | * 31 | * @param ids 需要删除的数据 32 | * @return 结果 33 | */ 34 | public int deleteOperLogByIds(String ids); 35 | 36 | /** 37 | * 查询操作日志详细 38 | * 39 | * @param operId 操作ID 40 | * @return 操作日志对象 41 | */ 42 | public OperLog selectOperLogById(Long operId); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/operlog/mapper/OperLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.operlog.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.operlog.domain.OperLog; 5 | 6 | /** 7 | * 操作日志 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface OperLogMapper 12 | { 13 | /** 14 | * 新增操作日志 15 | * 16 | * @param operLog 操作日志对象 17 | */ 18 | public void insertOperlog(OperLog operLog); 19 | 20 | /** 21 | * 查询系统操作日志集合 22 | * 23 | * @param operLog 操作日志对象 24 | * @return 操作日志集合 25 | */ 26 | public List selectOperLogList(OperLog operLog); 27 | 28 | /** 29 | * 批量删除系统操作日志 30 | * 31 | * @param ids 需要删除的数据 32 | * @return 结果 33 | */ 34 | public int deleteOperLogByIds(String[] ids); 35 | 36 | /** 37 | * 查询操作日志详细 38 | * 39 | * @param operId 操作ID 40 | * @return 操作日志对象 41 | */ 42 | public OperLog selectOperLogById(Long operId); 43 | } 44 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/domain.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.domain; 2 | 3 | import com.jetfire.framework.web.domain.BaseEntity; 4 | #foreach ($column in $columns) 5 | #if($column.attrType == 'Date') 6 | import java.util.Date; 7 | #break 8 | #end 9 | #end 10 | 11 | /** 12 | * ${tableComment}表 ${tableName} 13 | * 14 | * @author ${author} 15 | * @date ${datetime} 16 | */ 17 | public class ${className} extends BaseEntity 18 | { 19 | private static final long serialVersionUID = 1L; 20 | 21 | #foreach ($column in $columns) 22 | /** $column.columnComment */ 23 | private $column.attrType $column.attrname; 24 | #end 25 | 26 | #foreach ($column in $columns) 27 | /** 28 | * 设置:${column.columnComment} 29 | */ 30 | public void set${column.attrName}($column.attrType $column.attrname) 31 | { 32 | this.$column.attrname = $column.attrname; 33 | } 34 | 35 | /** 36 | * 获取:${column.columnComment} 37 | */ 38 | public $column.attrType get${column.attrName}() 39 | { 40 | return $column.attrname; 41 | } 42 | 43 | #end 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/mapper/UserRoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.user.domain.UserRole; 5 | 6 | /** 7 | * 用户表 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface UserRoleMapper 12 | { 13 | 14 | /** 15 | * 通过用户ID删除用户和角色关联 16 | * 17 | * @param userId 用户ID 18 | * @return 结果 19 | */ 20 | public int deleteUserRoleByUserId(Long userId); 21 | 22 | /** 23 | * 批量删除用户和角色关联 24 | * 25 | * @param ids 需要删除的数据ID 26 | * @return 结果 27 | */ 28 | public int deleteUserRole(Long[] ids); 29 | 30 | /** 31 | * 通过角色ID查询角色使用数量 32 | * 33 | * @param roleId 角色ID 34 | * @return 结果 35 | */ 36 | public int countUserRoleByRoleId(Long roleId); 37 | 38 | /** 39 | * 批量新增用户角色信息 40 | * 41 | * @param userRoleList 用户角色列表 42 | * @return 结果 43 | */ 44 | public int batchUserRole(List userRoleList); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/mapper/UserPostMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.user.domain.UserPost; 5 | 6 | /** 7 | * 用户与岗位 表 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface UserPostMapper 12 | { 13 | 14 | /** 15 | * 通过用户ID删除用户和岗位关联 16 | * 17 | * @param userId 用户ID 18 | * @return 结果 19 | */ 20 | public int deleteUserPostByUserId(Long userId); 21 | 22 | /** 23 | * 通过岗位ID查询岗位使用数量 24 | * 25 | * @param postId 岗位ID 26 | * @return 结果 27 | */ 28 | public int countUserPostById(Long postId); 29 | 30 | /** 31 | * 批量删除用户和岗位关联 32 | * 33 | * @param ids 需要删除的数据ID 34 | * @return 结果 35 | */ 36 | public int deleteUserPost(Long[] ids); 37 | 38 | /** 39 | * 批量新增用户岗位信息 40 | * 41 | * @param userPostList 用户角色列表 42 | * @return 结果 43 | */ 44 | public int batchUserPost(List userPostList); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/role/mapper/RoleMenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.role.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.role.domain.RoleMenu; 5 | 6 | /** 7 | * 角色与菜单关联表 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface RoleMenuMapper 12 | { 13 | 14 | /** 15 | * 通过角色ID删除角色和菜单关联 16 | * 17 | * @param roleId 角色ID 18 | * @return 结果 19 | */ 20 | public int deleteRoleMenuByRoleId(Long roleId); 21 | 22 | /** 23 | * 批量删除角色菜单关联信息 24 | * 25 | * @param ids 需要删除的数据ID 26 | * @return 结果 27 | */ 28 | public int deleteRoleMenu(Long[] ids); 29 | 30 | /** 31 | * 查询菜单使用数量 32 | * 33 | * @param menuId 菜单ID 34 | * @return 结果 35 | */ 36 | public int selectCountRoleMenuByMenuId(Long menuId); 37 | 38 | /** 39 | * 批量新增角色菜单信息 40 | * 41 | * @param roleMenuList 角色菜单列表 42 | * @return 结果 43 | */ 44 | public int batchRoleMenu(List roleMenuList); 45 | 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/gen/util/VelocityInitializer.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.gen.util; 2 | 3 | import java.util.Properties; 4 | import org.apache.velocity.app.Velocity; 5 | 6 | import com.jetfire.common.constant.Constants; 7 | 8 | /** 9 | * VelocityEngine工厂 10 | * 11 | * @author jetfire 12 | */ 13 | public class VelocityInitializer 14 | { 15 | /** 16 | * 初始化vm方法 17 | */ 18 | public static void initVelocity() 19 | { 20 | Properties p = new Properties(); 21 | try 22 | { 23 | // 加载classpath目录下的vm文件 24 | p.setProperty("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); 25 | // 定义字符集 26 | p.setProperty(Velocity.ENCODING_DEFAULT, Constants.UTF8); 27 | p.setProperty(Velocity.OUTPUT_ENCODING, Constants.UTF8); 28 | // 初始化Velocity引擎,指定配置Properties 29 | Velocity.init(p); 30 | } 31 | catch (Exception e) 32 | { 33 | throw new RuntimeException(e); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Jetfire 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/file/FileNameLengthLimitExceededException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.file; 2 | 3 | import org.apache.commons.fileupload.FileUploadException; 4 | 5 | /** 6 | * 文件名超长 误异常类 7 | * 8 | * @author jetfire 9 | */ 10 | public class FileNameLengthLimitExceededException extends FileUploadException 11 | { 12 | 13 | private static final long serialVersionUID = 1L; 14 | private int length; 15 | private int maxLength; 16 | private String filename; 17 | 18 | public FileNameLengthLimitExceededException(String filename, int length, int maxLength) 19 | { 20 | super("file name : [" + filename + "], length : [" + length + "], max length : [" + maxLength + "]"); 21 | this.length = length; 22 | this.maxLength = maxLength; 23 | this.filename = filename; 24 | } 25 | 26 | public String getFilename() 27 | { 28 | return filename; 29 | } 30 | 31 | public int getLength() 32 | { 33 | return length; 34 | } 35 | 36 | public int getMaxLength() 37 | { 38 | return maxLength; 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/notice/mapper/NoticeMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.notice.mapper; 2 | 3 | import com.jetfire.project.system.notice.domain.Notice; 4 | import java.util.List; 5 | 6 | /** 7 | * 公告 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface NoticeMapper 12 | { 13 | /** 14 | * 查询公告信息 15 | * 16 | * @param noticeId 公告ID 17 | * @return 公告信息 18 | */ 19 | public Notice selectNoticeById(Long noticeId); 20 | 21 | /** 22 | * 查询公告列表 23 | * 24 | * @param notice 公告信息 25 | * @return 公告集合 26 | */ 27 | public List selectNoticeList(Notice notice); 28 | 29 | /** 30 | * 新增公告 31 | * 32 | * @param notice 公告信息 33 | * @return 结果 34 | */ 35 | public int insertNotice(Notice notice); 36 | 37 | /** 38 | * 修改公告 39 | * 40 | * @param notice 公告信息 41 | * @return 结果 42 | */ 43 | public int updateNotice(Notice notice); 44 | 45 | /** 46 | * 批量删除公告 47 | * 48 | * @param noticeIds 需要删除的数据ID 49 | * @return 结果 50 | */ 51 | public int deleteNoticeByIds(String[] noticeIds); 52 | 53 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/notice/service/INoticeService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.notice.service; 2 | 3 | import com.jetfire.project.system.notice.domain.Notice; 4 | import java.util.List; 5 | 6 | /** 7 | * 公告 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface INoticeService 12 | { 13 | /** 14 | * 查询公告信息 15 | * 16 | * @param noticeId 公告ID 17 | * @return 公告信息 18 | */ 19 | public Notice selectNoticeById(Long noticeId); 20 | 21 | /** 22 | * 查询公告列表 23 | * 24 | * @param notice 公告信息 25 | * @return 公告集合 26 | */ 27 | public List selectNoticeList(Notice notice); 28 | 29 | /** 30 | * 新增公告 31 | * 32 | * @param notice 公告信息 33 | * @return 结果 34 | */ 35 | public int insertNotice(Notice notice); 36 | 37 | /** 38 | * 修改公告 39 | * 40 | * @param notice 公告信息 41 | * @return 结果 42 | */ 43 | public int updateNotice(Notice notice); 44 | 45 | /** 46 | * 删除公告信息 47 | * 48 | * @param ids 需要删除的数据ID 49 | * @return 结果 50 | */ 51 | public int deleteNoticeByIds(String ids); 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/page/TableDataInfo.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.page; 2 | 3 | import java.io.Serializable; 4 | import java.util.List; 5 | 6 | /** 7 | * 表格分页数据对象 8 | * 9 | * @author jetfire 10 | */ 11 | public class TableDataInfo implements Serializable 12 | { 13 | private static final long serialVersionUID = 1L; 14 | /** 总记录数 */ 15 | private long total; 16 | /** 列表数据 */ 17 | private List rows; 18 | 19 | /** 20 | * 表格数据对象 21 | */ 22 | public TableDataInfo() 23 | { 24 | } 25 | 26 | /** 27 | * 分页 28 | * 29 | * @param list 列表数据 30 | * @param total 总记录数 31 | */ 32 | public TableDataInfo(List list, int total) 33 | { 34 | this.rows = list; 35 | this.total = total; 36 | } 37 | 38 | public long getTotal() 39 | { 40 | return total; 41 | } 42 | 43 | public void setTotal(long total) 44 | { 45 | this.total = total; 46 | } 47 | 48 | public List getRows() 49 | { 50 | return rows; 51 | } 52 | 53 | public void setRows(List rows) 54 | { 55 | this.rows = rows; 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/main/resources/application-druid.yml: -------------------------------------------------------------------------------- 1 | #dubbo配置 2 | spring: 3 | datasource: 4 | type: com.alibaba.druid.pool.DruidDataSource 5 | driverClassName: com.mysql.jdbc.Driver 6 | url: jdbc:mysql://127.0.0.1:3306/jetfire?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false 7 | username: root 8 | password: 123456 9 | # 初始化大小,最小,最大 10 | initialSize: 1 11 | minIdle: 3 12 | maxActive: 20 13 | # 配置获取连接等待超时的时间 14 | maxWait: 60000 15 | # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 16 | timeBetweenEvictionRunsMillis: 60000 17 | # 配置一个连接在池中最小生存的时间,单位是毫秒 18 | minEvictableIdleTimeMillis: 30000 19 | validationQuery: select 'x' 20 | testWhileIdle: true 21 | testOnBorrow: false 22 | testOnReturn: false 23 | # 打开PSCache,并且指定每个连接上PSCache的大小 24 | poolPreparedStatements: true 25 | maxPoolPreparedStatementPerConnectionSize: 20 26 | # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙 27 | filters: stat,wall,slf4j 28 | # 通过connectProperties属性来打开mergeSql功能;慢SQL记录 29 | connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 30 | # 合并多个DruidDataSource的监控数据 31 | #useGlobalDataSourceStat: true -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/service/DictService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import com.jetfire.project.system.dict.domain.DictData; 7 | import com.jetfire.project.system.dict.service.IDictDataService; 8 | 9 | /** 10 | * RuoYi首创 html调用 thymeleaf 实现字典读取 11 | * 12 | * @author jetfire 13 | */ 14 | @Service("dict") 15 | public class DictService 16 | { 17 | @Autowired 18 | private IDictDataService dictDataService; 19 | 20 | /** 21 | * 根据字典类型查询字典数据信息 22 | * 23 | * @param dictType 字典类型 24 | * @return 参数键值 25 | */ 26 | public List getType(String dictType) 27 | { 28 | return dictDataService.selectDictDataByType(dictType); 29 | } 30 | 31 | /** 32 | * 根据字典类型和字典键值查询字典数据信息 33 | * 34 | * @param dictType 字典类型 35 | * @param dictValue 字典键值 36 | * @return 字典标签 37 | */ 38 | public String getLabel(String dictType, String dictValue) 39 | { 40 | return dictDataService.selectDictLabel(dictType, dictValue); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/service/IJobLogService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.job.domain.JobLog; 5 | 6 | /** 7 | * 定时任务调度日志信息信息 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IJobLogService 12 | { 13 | 14 | /** 15 | * 获取quartz调度器日志的计划任务 16 | * 17 | * @param jobLog 调度日志信息 18 | * @return 调度任务日志集合 19 | */ 20 | public List selectJobLogList(JobLog jobLog); 21 | 22 | /** 23 | * 通过调度任务日志ID查询调度信息 24 | * 25 | * @param jobLogId 调度任务日志ID 26 | * @return 调度任务日志对象信息 27 | */ 28 | public JobLog selectJobLogById(Long jobLogId); 29 | 30 | /** 31 | * 新增任务日志 32 | * 33 | * @param jobLog 调度日志信息 34 | */ 35 | public void addJobLog(JobLog jobLog); 36 | 37 | /** 38 | * 批量删除调度日志信息 39 | * 40 | * @param ids 需要删除的数据ID 41 | * @return 结果 42 | */ 43 | public int deleteJobLogByIds(String ids); 44 | 45 | /** 46 | * 删除任务日志 47 | * 48 | * @param jobId 调度日志ID 49 | * @return 结果 50 | */ 51 | public int deleteJobLogById(Long jobId); 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/constant/ScheduleConstants.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.constant; 2 | 3 | /** 4 | * 任务调度通用常量 5 | * 6 | * @author jetfire 7 | */ 8 | public interface ScheduleConstants 9 | { 10 | 11 | public static final String TASK_CLASS_NAME = "__TASK_CLASS_NAME__"; 12 | 13 | public static final String TASK_PROPERTIES = "__TASK_PROPERTIES__"; 14 | 15 | /** 默认 */ 16 | public static final String MISFIRE_DEFAULT = "0"; 17 | 18 | /** 立即触发执行 */ 19 | public static final String MISFIRE_IGNORE_MISFIRES = "1"; 20 | 21 | /** 触发一次执行 */ 22 | public static final String MISFIRE_FIRE_AND_PROCEED = "2"; 23 | 24 | /** 不触发立即执行 */ 25 | public static final String MISFIRE_DO_NOTHING = "3"; 26 | 27 | public enum Status 28 | { 29 | /** 30 | * 正常 31 | */ 32 | NORMAL("0"), 33 | /** 34 | * 暂停 35 | */ 36 | PAUSE("1"); 37 | 38 | private String value; 39 | 40 | private Status(String value) 41 | { 42 | this.value = value; 43 | } 44 | 45 | public String getValue() 46 | { 47 | return value; 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/mapper/JobLogMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.job.domain.JobLog; 5 | 6 | /** 7 | * 调度任务日志信息 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface JobLogMapper 12 | { 13 | 14 | /** 15 | * 获取quartz调度器日志的计划任务 16 | * 17 | * @param jobLog 调度日志信息 18 | * @return 调度任务日志集合 19 | */ 20 | public List selectJobLogList(JobLog jobLog); 21 | 22 | /** 23 | * 通过调度任务日志ID查询调度信息 24 | * 25 | * @param jobLogId 调度任务日志ID 26 | * @return 调度任务日志对象信息 27 | */ 28 | public JobLog selectJobLogById(Long jobLogId); 29 | 30 | /** 31 | * 新增任务日志 32 | * 33 | * @param jobLog 调度日志信息 34 | * @return 结果 35 | */ 36 | public int insertJobLog(JobLog jobLog); 37 | 38 | /** 39 | * 批量删除调度日志信息 40 | * 41 | * @param ids 需要删除的数据ID 42 | * @return 结果 43 | */ 44 | public int deleteJobLogByIds(String[] ids); 45 | 46 | /** 47 | * 删除任务日志 48 | * 49 | * @param jobId 调度日志ID 50 | * @return 结果 51 | */ 52 | public int deleteJobLogById(Long jobId); 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/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 | .treegrid-selected{background: #f5f5f5 !important;} 8 | .treegrid-table{border:0 !important;margin-bottom:0} 9 | .treegrid-table tbody {display:block;height:auto;overflow-y:auto;} 10 | .treegrid-table thead, .treegrid-table tbody tr {display:table;width:100%;table-layout:fixed;} 11 | .treegrid-thead th{line-height:40px;border: 0 !important;background:#f3f3f4 !important;border-radius: 4px;border-left:0px solid #e7eaec !important;border-bottom:2px solid #e7eaec !important;text-align: center;} 12 | .treegrid-thead tr :first-child{border-left:0 !important} 13 | .treegrid-tbody td{border: 0 !important;border-left:0px solid #e7eaec !important;border-bottom:1px solid #e7eaec !important;overflow: hidden; 14 | white-space: nowrap; 15 | text-overflow: ellipsis;} 16 | .treegrid-tbody tr :first-child{border-left:0 !important} -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/utils/AddressUtils.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils; 2 | 3 | import com.alibaba.fastjson.JSONObject; 4 | import com.jetfire.common.utils.http.HttpUtils; 5 | import org.slf4j.Logger; 6 | import org.slf4j.LoggerFactory; 7 | 8 | /** 9 | * 获取地址类 10 | * 11 | * @author jetfire 12 | */ 13 | public class AddressUtils 14 | { 15 | private static final Logger log = LoggerFactory.getLogger(AddressUtils.class); 16 | 17 | public static final String IP_URL = "http://ip.taobao.com/service/getIpInfo.php"; 18 | 19 | public static String getRealAddressByIP(String ip) 20 | { 21 | String address = ""; 22 | try 23 | { 24 | address = HttpUtils.sendPost(IP_URL, "ip=" + ip); 25 | JSONObject json = JSONObject.parseObject(address); 26 | JSONObject object = json.getObject("data", JSONObject.class); 27 | String region = object.getString("region"); 28 | String city = object.getString("city"); 29 | address = region + " " + city; 30 | } 31 | catch (Exception e) 32 | { 33 | log.error("根据IP获取所在位置----------错误消息:" + e.getMessage()); 34 | } 35 | return address; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/xss/XssHttpServletRequestWrapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.xss; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletRequestWrapper; 5 | import org.jsoup.Jsoup; 6 | import org.jsoup.safety.Whitelist; 7 | 8 | /** 9 | * XSS过滤处理 10 | * 11 | * @author jetfire 12 | */ 13 | public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper 14 | { 15 | 16 | /** 17 | * @param request 18 | */ 19 | public XssHttpServletRequestWrapper(HttpServletRequest request) 20 | { 21 | super(request); 22 | } 23 | 24 | @Override 25 | public String[] getParameterValues(String name) 26 | { 27 | String[] values = super.getParameterValues(name); 28 | if (values != null) 29 | { 30 | int length = values.length; 31 | String[] escapseValues = new String[length]; 32 | for (int i = 0; i < length; i++) 33 | { 34 | // 防xss攻击和过滤前后空格 35 | escapseValues[i] = Jsoup.clean(values[i], Whitelist.relaxed()).trim(); 36 | } 37 | return escapseValues; 38 | } 39 | return super.getParameterValues(name); 40 | } 41 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/online/mapper/UserOnlineMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.online.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.online.domain.UserOnline; 5 | 6 | /** 7 | * 在线用户 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface UserOnlineMapper 12 | { 13 | /** 14 | * 通过会话序号查询信息 15 | * 16 | * @param sessionId 会话ID 17 | * @return 在线用户信息 18 | */ 19 | public UserOnline selectOnlineById(String sessionId); 20 | 21 | /** 22 | * 通过会话序号删除信息 23 | * 24 | * @param sessionId 会话ID 25 | * @return 在线用户信息 26 | */ 27 | public int deleteOnlineById(String sessionId); 28 | 29 | /** 30 | * 保存会话信息 31 | * 32 | * @param online 会话信息 33 | * @return 结果 34 | */ 35 | public int saveOnline(UserOnline online); 36 | 37 | /** 38 | * 查询会话集合 39 | * 40 | * @param userOnline 会话参数 41 | * @return 会话集合 42 | */ 43 | public List selectUserOnlineList(UserOnline userOnline); 44 | 45 | /** 46 | * 查询过期会话集合 47 | * 48 | * @param lastAccessTime 过期时间 49 | * @return 会话集合 50 | */ 51 | public List selectOnlineByExpired(String lastAccessTime); 52 | } 53 | -------------------------------------------------------------------------------- /src/main/resources/mybatis/system/UserPostMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | delete from sys_user_post where user_id=#{userId} 14 | 15 | 16 | 19 | 20 | 21 | delete from sys_user_post where user_id in 22 | 23 | #{userId} 24 | 25 | 26 | 27 | 28 | insert into sys_user_post(user_id, post_id) values 29 | 30 | (#{item.userId},#{item.postId}) 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mybatis/system/UserRoleMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | delete from sys_user_role where user_id=#{userId} 14 | 15 | 16 | 19 | 20 | 21 | delete from sys_user_role where user_id in 22 | 23 | #{userId} 24 | 25 | 26 | 27 | 28 | insert into sys_user_role(user_id, role_id) values 29 | 30 | (#{item.userId},#{item.roleId}) 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/resources/mybatis/system/RoleMenuMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | delete from sys_role_menu where role_id=#{roleId} 14 | 15 | 16 | 19 | 20 | 21 | delete from sys_role_menu where role_id in 22 | 23 | #{roleId} 24 | 25 | 26 | 27 | 28 | insert into sys_role_menu(role_id, menu_id) values 29 | 30 | (#{item.roleId},#{item.menuId}) 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/FilterConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import java.util.Map; 4 | import javax.servlet.DispatcherType; 5 | import org.springframework.boot.web.servlet.FilterRegistrationBean; 6 | import org.springframework.context.annotation.Bean; 7 | import org.springframework.context.annotation.Configuration; 8 | import com.google.common.collect.Maps; 9 | import com.jetfire.common.xss.XssFilter; 10 | 11 | /** 12 | * Filter配置 13 | * 14 | * @author jetfire 15 | */ 16 | @Configuration 17 | public class FilterConfig 18 | { 19 | @SuppressWarnings({ "rawtypes", "unchecked" }) 20 | @Bean 21 | public FilterRegistrationBean xssFilterRegistration() 22 | { 23 | FilterRegistrationBean registration = new FilterRegistrationBean(); 24 | registration.setDispatcherTypes(DispatcherType.REQUEST); 25 | registration.setFilter(new XssFilter()); 26 | registration.addUrlPatterns("/*"); 27 | registration.setName("xssFilter"); 28 | registration.setOrder(Integer.MAX_VALUE); 29 | Map initParameters = Maps.newHashMap(); 30 | initParameters.put("excludes", "/system/notice/*"); 31 | registration.setInitParameters(initParameters); 32 | return registration; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/validate/messages_zh.min.js: -------------------------------------------------------------------------------- 1 | /*! jQuery Validation Plugin - v1.13.1 - 10/14/2014 2 | * http://jqueryvalidation.org/ 3 | * Copyright (c) 2014 Jörn Zaefferer; Licensed MIT */ 4 | ! function (a) { 5 | "function" == typeof define && define.amd ? define(["jquery", "jquery.validate.min"], a) : a(jQuery) 6 | }(function (a) { 7 | var icon = " "; 8 | a.extend(a.validator.messages, { 9 | required: icon + "必填", 10 | remote: icon + "请修正此栏位", 11 | email: icon + "请输入有效的电子邮件", 12 | url: icon + "请输入有效的网址", 13 | date: icon + "请输入有效的日期", 14 | dateISO: icon + "请输入有效的日期 (YYYY-MM-DD)", 15 | number: icon + "请输入正确的数字", 16 | digits: icon + "只能输入数字", 17 | creditcard: icon + "请输入有效的信用卡号码", 18 | equalTo: icon + "你的输入不相同", 19 | extension: icon + "请输入有效的后缀", 20 | maxlength: a.validator.format(icon + "最多 {0} 个字"), 21 | minlength: a.validator.format(icon + "最少 {0} 个字"), 22 | rangelength: a.validator.format(icon + "请输入长度为 {0} 至 {1} 之间的字串"), 23 | range: a.validator.format(icon + "请输入 {0} 至 {1} 之间的数值"), 24 | max: a.validator.format(icon + "请输入不大于 {0} 的数值"), 25 | min: a.validator.format(icon + "请输入不小于 {0} 的数值") 26 | }) 27 | }); 28 | -------------------------------------------------------------------------------- /src/main/resources/i18n/messages.properties: -------------------------------------------------------------------------------- 1 | #错误消息 2 | not.null=* 必须填写 3 | user.jcaptcha.error=验证码错误 4 | user.not.exists=用户不存在/密码错误 5 | user.password.not.match=用户不存在/密码错误 6 | user.password.retry.limit.count=密码输入错误{0}次,{1} 7 | user.password.retry.limit.exceed=密码输入错误{0}次,帐户锁定10分钟 8 | user.blocked=用户已封禁,原因:{0} 9 | role.blocked=角色已封禁,原因:{0} 10 | user.logout.success=退出成功 11 | 12 | length.not.valid=长度必须在{min}到{max}个字符之间 13 | 14 | user.username.not.valid=* 2到20个汉字、字母、数字或下划线组成,且必须以非数字开头 15 | user.password.not.valid=* 5-50个字符 16 | 17 | user.email.not.valid=邮箱格式错误 18 | user.mobile.phone.number.not.valid=手机号格式错误 19 | user.login.success=登录成功 20 | user.notfound=请重新登录 21 | user.forcelogout=管理员强制退出,请重新登录 22 | user.unknown.error=未知错误,请重新登录 23 | 24 | #批量插入用户错误信息 25 | user.import.excel.null=Excel数据为空,请按照导入模板填写数据 26 | user.import.excel.data.null=Excel数据为空,只有标题行,请按照导入模板填写数据 27 | user.import.excel.filetype.error=文件不是Excel文件 28 | user.import.excel.file.error=文件名为空,文件为空 29 | user.import.excel.fileinput.error=获取Excel2003流错误 30 | user.import.excel.fileinputx.error=获取Excel2007流错误 31 | ##权限 32 | no.permission=您没有数据的权限,请联系管理员添加权限 [{0}] 33 | no.create.permission=您没有创建数据的权限,请联系管理员添加权限 [{0}] 34 | no.update.permission=您没有修改数据的权限,请联系管理员添加权限 [{0}] 35 | no.delete.permission=您没有删除数据的权限,请联系管理员添加权限 [{0}] 36 | no.view.permission=您没有查看数据的权限,请联系管理员添加权限 [{0}] 37 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/constant/Constants.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.constant; 2 | 3 | /** 4 | * 通用常量信息 5 | * 6 | * @author jetfire 7 | */ 8 | public class Constants 9 | { 10 | /** 11 | * UTF-8 字符集 12 | */ 13 | public static final String UTF8 = "UTF-8"; 14 | 15 | /** 16 | * 通用成功标识 17 | */ 18 | public static final String SUCCESS = "0"; 19 | 20 | /** 21 | * 通用失败标识 22 | */ 23 | public static final String FAIL = "1"; 24 | 25 | /** 26 | * 登录成功 27 | */ 28 | public static final String LOGIN_SUCCESS = "Success"; 29 | 30 | /** 31 | * 注销 32 | */ 33 | public static final String LOGOUT = "Logout"; 34 | 35 | /** 36 | * 登录失败 37 | */ 38 | public static final String LOGIN_FAIL = "Error"; 39 | 40 | /** 41 | * 自动去除表前缀 42 | */ 43 | public static String AUTO_REOMVE_PRE = "true"; 44 | 45 | /** 46 | * 当前记录起始索引 47 | */ 48 | public static String PAGENUM = "pageNum"; 49 | 50 | /** 51 | * 每页显示记录数 52 | */ 53 | public static String PAGESIZE = "pageSize"; 54 | 55 | /** 56 | * 排序列 57 | */ 58 | public static String ORDERBYCOLUMN = "orderByColumn"; 59 | 60 | /** 61 | * 排序的方向 "desc" 或者 "asc". 62 | */ 63 | public static String ISASC = "isAsc"; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/config/mapper/ConfigMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.config.mapper; 2 | 3 | import com.jetfire.project.system.config.domain.Config; 4 | import java.util.List; 5 | 6 | /** 7 | * 参数配置 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface ConfigMapper 12 | { 13 | /** 14 | * 查询参数配置信息 15 | * 16 | * @param configId 参数配置信息 17 | * @return 参数配置信息 18 | */ 19 | public Config selectConfig(Config config); 20 | 21 | /** 22 | * 查询参数配置列表 23 | * 24 | * @param config 参数配置信息 25 | * @return 参数配置集合 26 | */ 27 | public List selectConfigList(Config config); 28 | 29 | /** 30 | * 根据键名查询参数配置信息 31 | * 32 | * @param configKey 参数键名 33 | * @return 参数配置信息 34 | */ 35 | public Config checkConfigKeyUnique(String configKey); 36 | 37 | /** 38 | * 新增参数配置 39 | * 40 | * @param config 参数配置信息 41 | * @return 结果 42 | */ 43 | public int insertConfig(Config config); 44 | 45 | /** 46 | * 修改参数配置 47 | * 48 | * @param config 参数配置信息 49 | * @return 结果 50 | */ 51 | public int updateConfig(Config config); 52 | 53 | /** 54 | * 批量删除参数配置 55 | * 56 | * @param configIds 需要删除的数据ID 57 | * @return 结果 58 | */ 59 | public int deleteConfigByIds(String[] configIds); 60 | 61 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/utils/IpUtils.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | 5 | /** 6 | * 获取IP方法 7 | * 8 | * @author jetfire 9 | */ 10 | public class IpUtils 11 | { 12 | public static String getIpAddr(HttpServletRequest request) 13 | { 14 | if (request == null) 15 | { 16 | return "unknown"; 17 | } 18 | String ip = request.getHeader("x-forwarded-for"); 19 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 20 | { 21 | ip = request.getHeader("Proxy-Client-IP"); 22 | } 23 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 24 | { 25 | ip = request.getHeader("X-Forwarded-For"); 26 | } 27 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 28 | { 29 | ip = request.getHeader("WL-Proxy-Client-IP"); 30 | } 31 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 32 | { 33 | ip = request.getHeader("X-Real-IP"); 34 | } 35 | 36 | if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 37 | { 38 | ip = request.getRemoteAddr(); 39 | } 40 | 41 | return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/locale/bootstrap-table-zh-CN.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 'use strict'; 3 | 4 | $.fn.bootstrapTable.locales['zh-CN'] = { 5 | formatLoadingMessage: function () { 6 | return '正在努力地加载数据中,请稍候……'; 7 | }, 8 | formatRecordsPerPage: function (pageNumber) { 9 | return pageNumber + ' 条记录每页'; 10 | }, 11 | formatShowingRows: function (pageFrom, pageTo, totalRows) { 12 | return '第 ' + pageFrom + ' 到 ' + pageTo + ' 条,共 ' + totalRows + ' 条记录。'; 13 | }, 14 | formatSearch: function () { 15 | return '搜索'; 16 | }, 17 | formatNoMatches: function () { 18 | return '没有找到匹配的记录'; 19 | }, 20 | formatPaginationSwitch: function () { 21 | return '隐藏/显示分页'; 22 | }, 23 | formatRefresh: function () { 24 | return '刷新'; 25 | }, 26 | formatToggle: function () { 27 | return '切换'; 28 | }, 29 | formatColumns: function () { 30 | return '列'; 31 | }, 32 | formatExport: function () { 33 | return '导出数据'; 34 | }, 35 | formatClearFilters: function () { 36 | return '清空过滤'; 37 | } 38 | }; 39 | 40 | $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['zh-CN']); 41 | 42 | })(jQuery); 43 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/Service.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.service; 2 | 3 | import ${package}.domain.${className}; 4 | import java.util.List; 5 | 6 | /** 7 | * ${tableComment} 服务层 8 | * 9 | * @author ${author} 10 | * @date ${datetime} 11 | */ 12 | public interface I${className}Service 13 | { 14 | /** 15 | * 查询${tableComment}信息 16 | * 17 | * @param ${primaryKey.attrname} ${tableComment}ID 18 | * @return ${tableComment}信息 19 | */ 20 | public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname}); 21 | 22 | /** 23 | * 查询${tableComment}列表 24 | * 25 | * @param ${classname} ${tableComment}信息 26 | * @return ${tableComment}集合 27 | */ 28 | public List<${className}> select${className}List(${className} ${classname}); 29 | 30 | /** 31 | * 新增${tableComment} 32 | * 33 | * @param ${classname} ${tableComment}信息 34 | * @return 结果 35 | */ 36 | public int insert${className}(${className} ${classname}); 37 | 38 | /** 39 | * 修改${tableComment} 40 | * 41 | * @param ${classname} ${tableComment}信息 42 | * @return 结果 43 | */ 44 | public int update${className}(${className} ${classname}); 45 | 46 | /** 47 | * 删除${tableComment}信息 48 | * 49 | * @param ids 需要删除的数据ID 50 | * @return 结果 51 | */ 52 | public int delete${className}ByIds(String ids); 53 | 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/constant/ShiroConstants.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.constant; 2 | 3 | /** 4 | * Shiro通用常量 5 | * 6 | * @author jetfire 7 | */ 8 | public interface ShiroConstants 9 | { 10 | /** 11 | * 当前登录的用户 12 | */ 13 | public static final String CURRENT_USER = "currentUser"; 14 | 15 | /** 16 | * 用户名 17 | */ 18 | public static final String CURRENT_USERNAME = "username"; 19 | 20 | /** 21 | * 消息key 22 | */ 23 | public static String MESSAGE = "message"; 24 | 25 | /** 26 | * 错误key 27 | */ 28 | public static String ERROR = "errorMsg"; 29 | 30 | /** 31 | * 编码格式 32 | */ 33 | public static String ENCODING = "UTF-8"; 34 | 35 | /** 36 | * 当前在线会话 37 | */ 38 | public String ONLINE_SESSION = "online_session"; 39 | 40 | /** 41 | * 验证码key 42 | */ 43 | public static final String CURRENT_CAPTCHA = "captcha"; 44 | 45 | /** 46 | * 验证码开关 47 | */ 48 | public static final String CURRENT_EBABLED = "captchaEbabled"; 49 | 50 | /** 51 | * 验证码开关 52 | */ 53 | public static final String CURRENT_TYPE = "captchaType"; 54 | 55 | /** 56 | * 验证码 57 | */ 58 | public static final String CURRENT_VALIDATECODE = "validateCode"; 59 | 60 | /** 61 | * 验证码错误 62 | */ 63 | public static final String CAPTCHA_ERROR = "captchaError"; 64 | 65 | } 66 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## 前世今生 2 | 3 | Jetfire《天火》介绍: 4 | 变形模式:太空穿梭机。G1玩具为VF-1S。SR-71“黑鸟”侦察机 (真人电影版) 5 | 性格:胆大心细,性格温和,秉持坚守和平的信念,重视友谊 6 | 身世:在大战前塞伯坦的“黄金时代”,天火是一位科学家,致力于对于科学研究。 7 | 格言:“在众多科学奥妙中,有如何取得胜利的钥匙。” 8 | 9 | ## 平台简介 10 | 11 | 天火系统基于SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例, 12 | 项目代码简洁,注释丰富,上手容易, 包含许多基础模块(用户管理,角色管理,部门管理,字典管理等10个模块), 13 | 可直接作为一个后台管理系统的脚手架。 14 | 15 | ## 技术选型 16 | 17 | 技术|说明|版本 18 | ---|:--:|---: 19 | Spring Boot|核心框架|2.0.3 20 | Apache Shiro|安全框架|1.4.0 21 | Thymeleaf|模板引擎|2.0.0 22 | MyBatis|持久层框架|3.4.6 23 | Quartz|定时任务|2.3.0 24 | Druid|数据库连接池|1.1.10 25 | Swagger2|接口文档|2.7.0 26 | 27 | 28 | ## 内置功能 29 | 30 | 1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 31 | 2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现。 32 | 3. 岗位管理:配置系统用户所属担任职务。 33 | 4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 34 | 5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 35 | 6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 36 | 7. 参数管理:对系统动态配置常用参数。 37 | 8. 通知公告:系统通知公告信息发布维护。 38 | 9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 39 | 10. 登录日志:系统登录日志记录查询包含登录异常。 40 | 11. 在线用户:当前系统中活跃用户状态监控。 41 | 12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 42 | 13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 43 | 14. 系统接口:根据业务代码自动生成相关的api接口文档。 44 | 15. 在线构建器:拖动表单元素生成相应的HTML代码。 45 | 16. 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 46 | 47 | ## 演示步骤 48 | 49 | - 1.开启MySQL服务 50 | - 2.执行sql/jetfire.sql脚本 51 | - 3.修改application-druid.yml中spring.datasource.url、username、password 52 | - 4.启动JetfireApplication 53 | - 5.登陆界面地址:http://localhost:808 (账号/密码:admin/admin123) 54 | 55 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/mapper/JobMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.job.domain.Job; 5 | 6 | /** 7 | * 调度任务信息 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface JobMapper 12 | { 13 | 14 | /** 15 | * 查询调度任务日志集合 16 | * 17 | * @param job 调度信息 18 | * @return 操作日志集合 19 | */ 20 | public List selectJobList(Job job); 21 | 22 | /** 23 | * 查询所有调度任务 24 | * 25 | * @return 调度任务列表 26 | */ 27 | public List selectJobAll(); 28 | 29 | /** 30 | * 通过调度ID查询调度任务信息 31 | * 32 | * @param jobId 调度ID 33 | * @return 角色对象信息 34 | */ 35 | public Job selectJobById(Long jobId); 36 | 37 | /** 38 | * 通过调度ID删除调度任务信息 39 | * 40 | * @param jobId 调度ID 41 | * @return 结果 42 | */ 43 | public int deleteJobById(Job job); 44 | 45 | /** 46 | * 批量删除调度任务信息 47 | * 48 | * @param ids 需要删除的数据ID 49 | * @return 结果 50 | */ 51 | public int deleteJobLogByIds(Long[] ids); 52 | 53 | /** 54 | * 修改调度任务信息 55 | * 56 | * @param job 调度任务信息 57 | * @return 结果 58 | */ 59 | public int updateJob(Job job); 60 | 61 | /** 62 | * 新增调度任务信息 63 | * 64 | * @param job 调度任务信息 65 | * @return 结果 66 | */ 67 | public int insertJob(Job job); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/post/mapper/PostMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.post.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.post.domain.Post; 5 | 6 | /** 7 | * 岗位信息 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface PostMapper 12 | { 13 | 14 | /** 15 | * 查询岗位数据集合 16 | * 17 | * @param post 岗位信息 18 | * @return 岗位数据集合 19 | */ 20 | public List selectPostList(Post post); 21 | 22 | /** 23 | * 查询所有岗位 24 | * 25 | * @return 岗位列表 26 | */ 27 | public List selectPostAll(); 28 | 29 | /** 30 | * 根据用户ID查询岗位 31 | * 32 | * @param userId 用户ID 33 | * @return 岗位列表 34 | */ 35 | public List selectPostsByUserId(Long userId); 36 | 37 | /** 38 | * 通过岗位ID查询岗位信息 39 | * 40 | * @param postId 岗位ID 41 | * @return 角色对象信息 42 | */ 43 | public Post selectPostById(Long postId); 44 | 45 | /** 46 | * 批量删除岗位信息 47 | * 48 | * @param ids 需要删除的数据ID 49 | * @return 结果 50 | */ 51 | public int deletePostByIds(Long[] ids); 52 | 53 | /** 54 | * 修改岗位信息 55 | * 56 | * @param post 岗位信息 57 | * @return 结果 58 | */ 59 | public int updatePost(Post post); 60 | 61 | /** 62 | * 新增岗位信息 63 | * 64 | * @param post 岗位信息 65 | * @return 结果 66 | */ 67 | public int insertPost(Post post); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/I18nConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import java.util.Locale; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import org.springframework.web.servlet.LocaleResolver; 7 | import org.springframework.web.servlet.config.annotation.InterceptorRegistry; 8 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 9 | import org.springframework.web.servlet.i18n.LocaleChangeInterceptor; 10 | import org.springframework.web.servlet.i18n.SessionLocaleResolver; 11 | 12 | /** 13 | * 资源文件配置加载 14 | * 15 | * @author jetfire 16 | */ 17 | @Configuration 18 | public class I18nConfig implements WebMvcConfigurer 19 | { 20 | 21 | @Bean 22 | public LocaleResolver localeResolver() 23 | { 24 | SessionLocaleResolver slr = new SessionLocaleResolver(); 25 | // 默认语言 26 | slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE); 27 | return slr; 28 | } 29 | 30 | @Bean 31 | public LocaleChangeInterceptor localeChangeInterceptor() 32 | { 33 | LocaleChangeInterceptor lci = new LocaleChangeInterceptor(); 34 | // 参数名 35 | lci.setParamName("lang"); 36 | return lci; 37 | } 38 | 39 | @Override 40 | public void addInterceptors(InterceptorRegistry registry) 41 | { 42 | registry.addInterceptor(localeChangeInterceptor()); 43 | } 44 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/RuoYiConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * 读取项目相关配置 8 | * 9 | * @author jetfire 10 | */ 11 | @Component 12 | @ConfigurationProperties(prefix = "jetfire") 13 | public class RuoYiConfig 14 | { 15 | /** 项目名称 */ 16 | private String name; 17 | /** 版本 */ 18 | private String version; 19 | /** 版权年份 */ 20 | private String copyrightYear; 21 | /** 上传路径 */ 22 | private static String profile; 23 | 24 | public String getName() 25 | { 26 | return name; 27 | } 28 | 29 | public void setName(String name) 30 | { 31 | this.name = name; 32 | } 33 | 34 | public String getVersion() 35 | { 36 | return version; 37 | } 38 | 39 | public void setVersion(String version) 40 | { 41 | this.version = version; 42 | } 43 | 44 | public String getCopyrightYear() 45 | { 46 | return copyrightYear; 47 | } 48 | 49 | public void setCopyrightYear(String copyrightYear) 50 | { 51 | this.copyrightYear = copyrightYear; 52 | } 53 | 54 | public static String getProfile() 55 | { 56 | return profile; 57 | } 58 | 59 | public void setProfile(String profile) 60 | { 61 | RuoYiConfig.profile = profile; 62 | } 63 | 64 | } 65 | -------------------------------------------------------------------------------- /src/main/resources/templates/main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Jetfire介绍 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 |
18 |
Jetfire《天火》介绍: 19 |
变形模式:太空穿梭机。G1玩具为VF-1S。SR-71“黑鸟”侦察机 (真人电影版) 20 |
性格:胆大心细,性格温和,秉持坚守和平的信念,重视友谊 21 |
身世:在大战前塞伯坦的“黄金时代”,天火是一位科学家,致力于对于科学研究。 22 |
格言:“在众多科学奥妙中,有如何取得胜利的钥匙。” 23 |
24 |
25 |
26 |
27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/html/add.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | #foreach($column in $columns) 9 | #if($column.columnName != $primaryKey.columnName) 10 |
11 | 12 |
13 | 14 |
15 |
16 | #end 17 | #end 18 |
19 |
20 | 21 | 22 |
23 |
24 |
25 |
26 |
27 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/shiro/web/filter/sync/SyncOnlineSessionFilter.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.shiro.web.filter.sync; 2 | 3 | import javax.servlet.ServletRequest; 4 | import javax.servlet.ServletResponse; 5 | import org.apache.shiro.web.filter.PathMatchingFilter; 6 | import org.springframework.beans.factory.annotation.Autowired; 7 | 8 | import com.jetfire.common.constant.ShiroConstants; 9 | import com.jetfire.framework.shiro.session.OnlineSessionDAO; 10 | import com.jetfire.project.monitor.online.domain.OnlineSession; 11 | 12 | /** 13 | * 同步Session数据到Db 14 | * 15 | * @author jetfire 16 | */ 17 | public class SyncOnlineSessionFilter extends PathMatchingFilter 18 | { 19 | @Autowired 20 | private OnlineSessionDAO onlineSessionDAO; 21 | 22 | /** 23 | * 同步会话数据到DB 一次请求最多同步一次 防止过多处理 需要放到Shiro过滤器之前 24 | * 25 | * @param request 26 | * @param response 27 | * @return 28 | * @throws Exception 29 | */ 30 | @Override 31 | protected boolean preHandle(ServletRequest request, ServletResponse response) throws Exception 32 | { 33 | OnlineSession session = (OnlineSession) request.getAttribute(ShiroConstants.ONLINE_SESSION); 34 | // 如果session stop了 也不同步 35 | // session停止时间,如果stopTimestamp不为null,则代表已停止 36 | if (session != null && session.getUserId() != null && session.getStopTimestamp() == null) 37 | { 38 | onlineSessionDAO.syncToDb(session); 39 | } 40 | return true; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/ResourcesConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import org.springframework.beans.factory.annotation.Value; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; 6 | import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; 7 | import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; 8 | 9 | /** 10 | * 通用配置 11 | * 12 | * @author jetfire 13 | */ 14 | @Configuration 15 | public class ResourcesConfig implements WebMvcConfigurer 16 | { 17 | /** 18 | * 首页地址 19 | */ 20 | @Value("${shiro.user.indexUrl}") 21 | private String indexUrl; 22 | 23 | /** 24 | * 默认首页的设置,当输入域名是可以自动跳转到默认指定的网页 25 | */ 26 | @Override 27 | public void addViewControllers(ViewControllerRegistry registry) 28 | { 29 | registry.addViewController("/").setViewName("forward:" + indexUrl); 30 | } 31 | 32 | @Override 33 | public void addResourceHandlers(ResourceHandlerRegistry registry) 34 | { 35 | /** 头像上传路径 */ 36 | registry.addResourceHandler("/profile/**").addResourceLocations("file:" + RuoYiConfig.getProfile()); 37 | 38 | /** swagger配置 */ 39 | registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); 40 | registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); 41 | } 42 | } -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/constant/CommonMap.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.constant; 2 | 3 | import java.util.HashMap; 4 | import java.util.Map; 5 | 6 | /** 7 | * 通用Map数据 8 | * 9 | * @author jetfire 10 | */ 11 | public class CommonMap 12 | { 13 | /** 状态编码转换 */ 14 | public static Map javaTypeMap = new HashMap(); 15 | 16 | static 17 | { 18 | initJavaTypeMap(); 19 | } 20 | 21 | /** 22 | * 返回状态映射 23 | */ 24 | public static void initJavaTypeMap() 25 | { 26 | javaTypeMap.put("tinyint", "Integer"); 27 | javaTypeMap.put("smallint", "Integer"); 28 | javaTypeMap.put("mediumint", "Integer"); 29 | javaTypeMap.put("int", "Integer"); 30 | javaTypeMap.put("integer", "integer"); 31 | javaTypeMap.put("bigint", "Long"); 32 | javaTypeMap.put("float", "Float"); 33 | javaTypeMap.put("double", "Double"); 34 | javaTypeMap.put("decimal", "BigDecimal"); 35 | javaTypeMap.put("bit", "Boolean"); 36 | javaTypeMap.put("char", "String"); 37 | javaTypeMap.put("varchar", "String"); 38 | javaTypeMap.put("tinytext", "String"); 39 | javaTypeMap.put("text", "String"); 40 | javaTypeMap.put("mediumtext", "String"); 41 | javaTypeMap.put("longtext", "String"); 42 | javaTypeMap.put("time", "Date"); 43 | javaTypeMap.put("date", "Date"); 44 | javaTypeMap.put("datetime", "Date"); 45 | javaTypeMap.put("timestamp", "Date"); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/config/service/IConfigService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.config.service; 2 | 3 | import com.jetfire.project.system.config.domain.Config; 4 | import java.util.List; 5 | 6 | /** 7 | * 参数配置 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IConfigService 12 | { 13 | 14 | /** 15 | * 查询参数配置信息 16 | * 17 | * @param configId 参数配置ID 18 | * @return 参数配置信息 19 | */ 20 | public Config selectConfigById(Long configId); 21 | 22 | /** 23 | * 根据键名查询参数配置信息 24 | * 25 | * @param configKey 参数键名 26 | * @return 参数键值 27 | */ 28 | public String selectConfigByKey(String configKey); 29 | 30 | /** 31 | * 查询参数配置列表 32 | * 33 | * @param config 参数配置信息 34 | * @return 参数配置集合 35 | */ 36 | public List selectConfigList(Config config); 37 | 38 | /** 39 | * 新增参数配置 40 | * 41 | * @param config 参数配置信息 42 | * @return 结果 43 | */ 44 | public int insertConfig(Config config); 45 | 46 | /** 47 | * 修改参数配置 48 | * 49 | * @param config 参数配置信息 50 | * @return 结果 51 | */ 52 | public int updateConfig(Config config); 53 | 54 | /** 55 | * 批量删除参数配置信息 56 | * 57 | * @param ids 需要删除的数据ID 58 | * @return 结果 59 | */ 60 | public int deleteConfigByIds(String ids); 61 | 62 | /** 63 | * 校验参数键名是否唯一 64 | * 65 | * @param config 参数信息 66 | * @return 结果 67 | */ 68 | public String checkConfigKeyUnique(Config config); 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/page/PageDomain.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.page; 2 | 3 | import com.jetfire.common.utils.StringUtils; 4 | 5 | /** 6 | * 分页数据 7 | * 8 | * @author jetfire 9 | */ 10 | public class PageDomain 11 | { 12 | /** 当前记录起始索引 */ 13 | private Integer pageNum; 14 | /** 每页显示记录数 */ 15 | private Integer pageSize; 16 | /** 排序列 */ 17 | private String orderByColumn; 18 | /** 排序的方向 "desc" 或者 "asc". */ 19 | private String isAsc; 20 | 21 | public String getOrderBy() 22 | { 23 | if (StringUtils.isEmpty(orderByColumn)) 24 | { 25 | return ""; 26 | } 27 | return StringUtils.toUnderScoreCase(orderByColumn) + " " + isAsc; 28 | } 29 | 30 | public Integer getPageNum() 31 | { 32 | return pageNum; 33 | } 34 | 35 | public void setPageNum(Integer pageNum) 36 | { 37 | this.pageNum = pageNum; 38 | } 39 | 40 | public Integer getPageSize() 41 | { 42 | return pageSize; 43 | } 44 | 45 | public void setPageSize(Integer pageSize) 46 | { 47 | this.pageSize = pageSize; 48 | } 49 | 50 | public String getOrderByColumn() 51 | { 52 | return orderByColumn; 53 | } 54 | 55 | public void setOrderByColumn(String orderByColumn) 56 | { 57 | this.orderByColumn = orderByColumn; 58 | } 59 | 60 | public String getIsAsc() 61 | { 62 | return isAsc; 63 | } 64 | 65 | public void setIsAsc(String isAsc) 66 | { 67 | this.isAsc = isAsc; 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/logininfor/service/LogininforServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.logininfor.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import com.jetfire.common.support.Convert; 7 | import com.jetfire.project.monitor.logininfor.domain.Logininfor; 8 | import com.jetfire.project.monitor.logininfor.mapper.LogininforMapper; 9 | 10 | /** 11 | * 系统访问日志情况信息 服务层处理 12 | * 13 | * @author jetfire 14 | */ 15 | @Service 16 | public class LogininforServiceImpl implements ILogininforService 17 | { 18 | 19 | @Autowired 20 | private LogininforMapper logininforMapper; 21 | 22 | /** 23 | * 新增系统登录日志 24 | * 25 | * @param logininfor 访问日志对象 26 | */ 27 | @Override 28 | public void insertLogininfor(Logininfor logininfor) 29 | { 30 | logininforMapper.insertLogininfor(logininfor); 31 | } 32 | 33 | /** 34 | * 查询系统登录日志集合 35 | * 36 | * @param logininfor 访问日志对象 37 | * @return 登录记录集合 38 | */ 39 | @Override 40 | public List selectLogininforList(Logininfor logininfor) 41 | { 42 | return logininforMapper.selectLogininforList(logininfor); 43 | } 44 | 45 | /** 46 | * 批量删除系统登录日志 47 | * 48 | * @param ids 需要删除的数据 49 | * @return 50 | */ 51 | @Override 52 | public int deleteLogininforByIds(String ids) 53 | { 54 | return logininforMapper.deleteLogininforByIds(Convert.toStrArray(ids)); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/online/service/IUserOnlineService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.online.service; 2 | 3 | import java.util.Date; 4 | import java.util.List; 5 | import com.jetfire.project.monitor.online.domain.UserOnline; 6 | 7 | /** 8 | * 在线用户 服务层 9 | * 10 | * @author jetfire 11 | */ 12 | public interface IUserOnlineService 13 | { 14 | /** 15 | * 通过会话序号查询信息 16 | * 17 | * @param sessionId 会话ID 18 | * @return 在线用户信息 19 | */ 20 | public UserOnline selectOnlineById(String sessionId); 21 | 22 | /** 23 | * 通过会话序号删除信息 24 | * 25 | * @param sessionId 会话ID 26 | * @return 在线用户信息 27 | */ 28 | public void deleteOnlineById(String sessionId); 29 | 30 | /** 31 | * 通过会话序号删除信息 32 | * 33 | * @param sessions 会话ID集合 34 | * @return 在线用户信息 35 | */ 36 | public void batchDeleteOnline(List sessions); 37 | 38 | /** 39 | * 保存会话信息 40 | * 41 | * @param online 会话信息 42 | */ 43 | public void saveOnline(UserOnline online); 44 | 45 | /** 46 | * 查询会话集合 47 | * 48 | * @param userOnline 分页参数 49 | * @return 会话集合 50 | */ 51 | public List selectUserOnlineList(UserOnline userOnline); 52 | 53 | /** 54 | * 强退用户 55 | * 56 | * @param sessionId 会话ID 57 | */ 58 | public void forceLogout(String sessionId); 59 | 60 | /** 61 | * 查询会话集合 62 | * 63 | * @param expiredDate 有效期 64 | * @return 会话集合 65 | */ 66 | public List selectOnlineByExpired(Date expiredDate); 67 | } 68 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/post/service/IPostService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.post.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.post.domain.Post; 5 | 6 | /** 7 | * 岗位信息 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IPostService 12 | { 13 | /** 14 | * 查询岗位信息集合 15 | * 16 | * @param post 岗位信息 17 | * @return 岗位信息集合 18 | */ 19 | public List selectPostList(Post post); 20 | 21 | /** 22 | * 查询所有岗位 23 | * 24 | * @return 岗位列表 25 | */ 26 | public List selectPostAll(); 27 | 28 | /** 29 | * 根据用户ID查询岗位 30 | * 31 | * @param userId 用户ID 32 | * @return 岗位列表 33 | */ 34 | public List selectPostsByUserId(Long userId); 35 | 36 | /** 37 | * 通过岗位ID查询岗位信息 38 | * 39 | * @param postId 岗位ID 40 | * @return 角色对象信息 41 | */ 42 | public Post selectPostById(Long postId); 43 | 44 | /** 45 | * 批量删除岗位信息 46 | * 47 | * @param ids 需要删除的数据ID 48 | */ 49 | public int deletePostByIds(String ids) throws Exception; 50 | 51 | /** 52 | * 新增保存岗位信息 53 | * 54 | * @param post 岗位信息 55 | * @return 结果 56 | */ 57 | public int insertPost(Post post); 58 | 59 | /** 60 | * 修改保存岗位信息 61 | * 62 | * @param post 岗位信息 63 | * @return 结果 64 | */ 65 | public int updatePost(Post post); 66 | 67 | /** 68 | * 通过岗位ID查询岗位使用数量 69 | * 70 | * @param postId 岗位ID 71 | * @return 结果 72 | */ 73 | public int countUserPostById(Long postId); 74 | } 75 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/controller/IndexController.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.controller; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Controller; 6 | import org.springframework.ui.ModelMap; 7 | import org.springframework.web.bind.annotation.GetMapping; 8 | import com.jetfire.framework.config.RuoYiConfig; 9 | import com.jetfire.framework.web.controller.BaseController; 10 | import com.jetfire.project.system.menu.domain.Menu; 11 | import com.jetfire.project.system.menu.service.IMenuService; 12 | import com.jetfire.project.system.user.domain.User; 13 | 14 | /** 15 | * 首页 业务处理 16 | * 17 | * @author jetfire 18 | */ 19 | @Controller 20 | public class IndexController extends BaseController 21 | { 22 | @Autowired 23 | private IMenuService menuService; 24 | 25 | @Autowired 26 | private RuoYiConfig ruoYiConfig; 27 | 28 | // 系统首页 29 | @GetMapping("/index") 30 | public String index(ModelMap mmap) 31 | { 32 | // 取身份信息 33 | User user = getUser(); 34 | // 根据用户id取出菜单 35 | List menus = menuService.selectMenusByUserId(user.getUserId()); 36 | mmap.put("menus", menus); 37 | mmap.put("user", user); 38 | mmap.put("copyrightYear", ruoYiConfig.getCopyrightYear()); 39 | return "index"; 40 | } 41 | 42 | // 系统介绍 43 | @GetMapping("/system/main") 44 | public String main(ModelMap mmap) 45 | { 46 | mmap.put("version", ruoYiConfig.getVersion()); 47 | return "main"; 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/util/ScheduleRunnable.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.util; 2 | 3 | import java.lang.reflect.Method; 4 | 5 | import org.springframework.util.ReflectionUtils; 6 | 7 | import com.jetfire.common.utils.StringUtils; 8 | import com.jetfire.common.utils.spring.SpringUtils; 9 | 10 | /** 11 | * 执行定时任务 12 | * 13 | * @author jetfire 14 | * 15 | */ 16 | public class ScheduleRunnable implements Runnable 17 | { 18 | private Object target; 19 | private Method method; 20 | private String params; 21 | 22 | public ScheduleRunnable(String beanName, String methodName, String params) 23 | throws NoSuchMethodException, SecurityException 24 | { 25 | this.target = SpringUtils.getBean(beanName); 26 | this.params = params; 27 | 28 | if (StringUtils.isNotEmpty(params)) 29 | { 30 | this.method = target.getClass().getDeclaredMethod(methodName, String.class); 31 | } 32 | else 33 | { 34 | this.method = target.getClass().getDeclaredMethod(methodName); 35 | } 36 | } 37 | 38 | @Override 39 | public void run() 40 | { 41 | try 42 | { 43 | ReflectionUtils.makeAccessible(method); 44 | if (StringUtils.isNotEmpty(params)) 45 | { 46 | method.invoke(target, params); 47 | } 48 | else 49 | { 50 | method.invoke(target); 51 | } 52 | } 53 | catch (Exception e) 54 | { 55 | e.printStackTrace(); 56 | } 57 | } 58 | 59 | } 60 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/utils/MapDataUtil.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils; 2 | 3 | import java.util.HashMap; 4 | import java.util.Iterator; 5 | import java.util.Map; 6 | import java.util.Map.Entry; 7 | 8 | import javax.servlet.http.HttpServletRequest; 9 | 10 | /** 11 | * Map通用处理方法 12 | * 13 | * @author jetfire 14 | */ 15 | public class MapDataUtil 16 | { 17 | public static Map convertDataMap(HttpServletRequest request) 18 | { 19 | Map properties = request.getParameterMap(); 20 | Map returnMap = new HashMap(); 21 | Iterator entries = properties.entrySet().iterator(); 22 | Map.Entry entry; 23 | String name = ""; 24 | String value = ""; 25 | while (entries.hasNext()) 26 | { 27 | entry = (Entry) entries.next(); 28 | name = (String) entry.getKey(); 29 | Object valueObj = entry.getValue(); 30 | if (null == valueObj) 31 | { 32 | value = ""; 33 | } 34 | else if (valueObj instanceof String[]) 35 | { 36 | String[] values = (String[]) valueObj; 37 | for (int i = 0; i < values.length; i++) 38 | { 39 | value = values[i] + ","; 40 | } 41 | value = value.substring(0, value.length() - 1); 42 | } 43 | else 44 | { 45 | value = valueObj.toString(); 46 | } 47 | returnMap.put(name, value); 48 | } 49 | return returnMap; 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/Mapper.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.mapper; 2 | 3 | import ${package}.domain.${className}; 4 | import java.util.List; 5 | 6 | /** 7 | * ${tableComment} 数据层 8 | * 9 | * @author ${author} 10 | * @date ${datetime} 11 | */ 12 | public interface ${className}Mapper 13 | { 14 | /** 15 | * 查询${tableComment}信息 16 | * 17 | * @param ${primaryKey.attrname} ${tableComment}ID 18 | * @return ${tableComment}信息 19 | */ 20 | public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname}); 21 | 22 | /** 23 | * 查询${tableComment}列表 24 | * 25 | * @param ${classname} ${tableComment}信息 26 | * @return ${tableComment}集合 27 | */ 28 | public List<${className}> select${className}List(${className} ${classname}); 29 | 30 | /** 31 | * 新增${tableComment} 32 | * 33 | * @param ${classname} ${tableComment}信息 34 | * @return 结果 35 | */ 36 | public int insert${className}(${className} ${classname}); 37 | 38 | /** 39 | * 修改${tableComment} 40 | * 41 | * @param ${classname} ${tableComment}信息 42 | * @return 结果 43 | */ 44 | public int update${className}(${className} ${classname}); 45 | 46 | /** 47 | * 删除${tableComment} 48 | * 49 | * @param ${primaryKey.attrname} ${tableComment}ID 50 | * @return 结果 51 | */ 52 | public int delete${className}ById(${primaryKey.attrType} ${primaryKey.attrname}); 53 | 54 | /** 55 | * 批量删除${tableComment} 56 | * 57 | * @param ${primaryKey.attrname}s 需要删除的数据ID 58 | * @return 结果 59 | */ 60 | public int delete${className}ByIds(String[] ${primaryKey.attrname}s); 61 | 62 | } -------------------------------------------------------------------------------- /src/main/resources/banner.txt: -------------------------------------------------------------------------------- 1 | Application Version: ${Jetfire.version} 2 | Spring Boot Version: ${spring-boot.version} 3 | //////////////////////////////////////////////////////////////////// 4 | // _ooOoo_ // 5 | // o8888888o // 6 | // 88" . "88 // 7 | // (| ^_^ |) // 8 | // O\ = /O // 9 | // ____/`---'\____ // 10 | // .' \\| |// `. // 11 | // / \\||| : |||// \ // 12 | // / _||||| -:- |||||- \ // 13 | // | | \\\ - /// | | // 14 | // | \_| ''\---/'' | | // 15 | // \ .-\__ `-` ___/-. / // 16 | // ___`. .' /--.--\ `. . ___ // 17 | // ."" '< `.___\_<|>_/___.' >'"". // 18 | // | | : `- \`.;`\ _ /`;.`/ - ` : | | // 19 | // \ \ `-. \_ __\ /__ _/ .-` / / // 20 | // ========`-.____`-.___\_____/___.-`____.-'======== // 21 | // `=---=' // 22 | // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // 23 | // 佛祖保佑 永不宕机 永无BUG // 24 | //////////////////////////////////////////////////////////////////// -------------------------------------------------------------------------------- /src/main/resources/templates/system/user/resetPwd.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 |
10 | 11 |
12 | 13 |
14 |
15 |
16 | 17 |
18 | 19 |
20 |
21 |
22 |
23 | 24 | 25 |
26 |
27 |
28 |
29 |
30 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/sql/sql.vm: -------------------------------------------------------------------------------- 1 | -- 菜单 SQL 2 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 3 | values('${tableComment}', '3', '1', '/${moduleName}/${classname}', 'C', '0', '${moduleName}:${classname}:view', '#', 'admin', '2018-03-01', 'Jetfire', '2018-03-01', '${tableComment}菜单'); 4 | 5 | -- 按钮父菜单ID 6 | SELECT @parentId := LAST_INSERT_ID(); 7 | 8 | -- 按钮 SQL 9 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 10 | values('${tableComment}查询', @parentId, '1', '#', 'F', '0', '${moduleName}:${classname}:list', '#', 'admin', '2018-03-01', 'Jetfire', '2018-03-01', ''); 11 | 12 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 13 | values('${tableComment}新增', @parentId, '2', '#', 'F', '0', '${moduleName}:${classname}:add', '#', 'admin', '2018-03-01', 'Jetfire', '2018-03-01', ''); 14 | 15 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 16 | values('${tableComment}修改', @parentId, '3', '#', 'F', '0', '${moduleName}:${classname}:edit', '#', 'admin', '2018-03-01', 'Jetfire', '2018-03-01', ''); 17 | 18 | insert into sys_menu (menu_name, parent_id, order_num, url,menu_type, visible, perms, icon, create_by, create_time, update_by, update_time, remark) 19 | values('${tableComment}删除', @parentId, '4', '#', 'F', '0', '${moduleName}:${classname}:remove', '#', 'admin', '2018-03-01', 'Jetfire', '2018-03-01', ''); 20 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dept/mapper/DeptMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dept.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.dept.domain.Dept; 5 | 6 | /** 7 | * 部门管理 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface DeptMapper 12 | { 13 | /** 14 | * 查询部门人数 15 | * 16 | * @param dept 部门信息 17 | * @return 结果 18 | */ 19 | public int selectDeptCount(Dept dept); 20 | 21 | /** 22 | * 查询部门是否存在用户 23 | * 24 | * @param deptId 部门ID 25 | * @return 结果 26 | */ 27 | public int checkDeptExistUser(Long deptId); 28 | 29 | /** 30 | * 查询部门管理数据 31 | * 32 | * @return 部门信息集合 33 | */ 34 | public List selectDeptList(Dept dept); 35 | 36 | /** 37 | * 查询部门所有数据 38 | * 39 | * @return 部门信息集合 40 | */ 41 | public List selectDeptAll(); 42 | 43 | /** 44 | * 删除部门管理信息 45 | * 46 | * @param deptId 部门ID 47 | * @return 结果 48 | */ 49 | public int deleteDeptById(Long deptId); 50 | 51 | /** 52 | * 新增部门信息 53 | * 54 | * @param dept 部门信息 55 | * @return 结果 56 | */ 57 | public int insertDept(Dept dept); 58 | 59 | /** 60 | * 修改部门信息 61 | * 62 | * @param dept 部门信息 63 | * @return 结果 64 | */ 65 | public int updateDept(Dept dept); 66 | 67 | /** 68 | * 根据部门ID查询信息 69 | * 70 | * @param deptId 部门ID 71 | * @return 部门信息 72 | */ 73 | public Dept selectDeptById(Long deptId); 74 | 75 | /** 76 | * 校验部门名称是否唯一 77 | * 78 | * @param deptName 部门名称 79 | * @return 结果 80 | */ 81 | public Dept checkDeptNameUnique(String deptName); 82 | } 83 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dict/service/IDictTypeService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dict.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.dict.domain.DictType; 5 | 6 | /** 7 | * 字典 业务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IDictTypeService 12 | { 13 | /** 14 | * 根据条件分页查询字典类型 15 | * 16 | * @param dictType 字典类型信息 17 | * @return 字典类型集合信息 18 | */ 19 | public List selectDictTypeList(DictType dictType); 20 | 21 | /** 22 | * 根据所有字典类型 23 | * 24 | * @return 字典类型集合信息 25 | */ 26 | public List selectDictTypeAll(); 27 | 28 | /** 29 | * 根据字典类型ID查询信息 30 | * 31 | * @param dictId 字典类型ID 32 | * @return 字典类型 33 | */ 34 | public DictType selectDictTypeById(Long dictId); 35 | 36 | /** 37 | * 通过字典ID删除字典信息 38 | * 39 | * @param dictId 字典ID 40 | * @return 结果 41 | */ 42 | public int deleteDictTypeById(Long dictId); 43 | 44 | /** 45 | * 批量删除字典类型 46 | * 47 | * @param ids 需要删除的数据 48 | * @return 结果 49 | */ 50 | public int deleteDictTypeByIds(String ids) throws Exception; 51 | 52 | /** 53 | * 新增保存字典类型信息 54 | * 55 | * @param dictType 字典类型信息 56 | * @return 结果 57 | */ 58 | public int insertDictType(DictType dictType); 59 | 60 | /** 61 | * 修改保存字典类型信息 62 | * 63 | * @param dictType 字典类型信息 64 | * @return 结果 65 | */ 66 | public int updateDictType(DictType dictType); 67 | 68 | /** 69 | * 校验字典类型称是否唯一 70 | * 71 | * @param dictType 字典类型 72 | * @return 结果 73 | */ 74 | public String checkDictTypeUnique(DictType dictType); 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/notice/domain/Notice.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.notice.domain; 2 | 3 | import com.jetfire.framework.web.domain.BaseEntity; 4 | 5 | /** 6 | * 公告表 sys_notice 7 | * 8 | * @author jetfire 9 | */ 10 | public class Notice extends BaseEntity 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | /** 公告ID */ 15 | private Long noticeId; 16 | /** 公告标题 */ 17 | private String noticeTitle; 18 | /** 公告类型(1通知 2公告) */ 19 | private String noticeType; 20 | /** 公告内容 */ 21 | private String noticeContent; 22 | /** 公告状态(0正常 1关闭) */ 23 | private String status; 24 | 25 | public Long getNoticeId() 26 | { 27 | return noticeId; 28 | } 29 | 30 | public void setNoticeId(Long noticeId) 31 | { 32 | this.noticeId = noticeId; 33 | } 34 | 35 | public void setNoticeTitle(String noticeTitle) 36 | { 37 | this.noticeTitle = noticeTitle; 38 | } 39 | 40 | public String getNoticeTitle() 41 | { 42 | return noticeTitle; 43 | } 44 | 45 | public void setNoticeType(String noticeType) 46 | { 47 | this.noticeType = noticeType; 48 | } 49 | 50 | public String getNoticeType() 51 | { 52 | return noticeType; 53 | } 54 | 55 | public void setNoticeContent(String noticeContent) 56 | { 57 | this.noticeContent = noticeContent; 58 | } 59 | 60 | public String getNoticeContent() 61 | { 62 | return noticeContent; 63 | } 64 | 65 | public void setStatus(String status) 66 | { 67 | this.status = status; 68 | } 69 | 70 | public String getStatus() 71 | { 72 | return status; 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/operlog/service/OperLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.operlog.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import com.jetfire.common.support.Convert; 7 | import com.jetfire.project.monitor.operlog.domain.OperLog; 8 | import com.jetfire.project.monitor.operlog.mapper.OperLogMapper; 9 | 10 | /** 11 | * 操作日志 服务层处理 12 | * 13 | * @author jetfire 14 | */ 15 | @Service 16 | public class OperLogServiceImpl implements IOperLogService 17 | { 18 | @Autowired 19 | private OperLogMapper operLogMapper; 20 | 21 | /** 22 | * 新增操作日志 23 | * 24 | * @param operLog 操作日志对象 25 | */ 26 | @Override 27 | public void insertOperlog(OperLog operLog) 28 | { 29 | operLogMapper.insertOperlog(operLog); 30 | } 31 | 32 | /** 33 | * 查询系统操作日志集合 34 | * 35 | * @param operLog 操作日志对象 36 | * @return 操作日志集合 37 | */ 38 | @Override 39 | public List selectOperLogList(OperLog operLog) 40 | { 41 | return operLogMapper.selectOperLogList(operLog); 42 | } 43 | 44 | /** 45 | * 批量删除系统操作日志 46 | * 47 | * @param ids 需要删除的数据 48 | * @return 49 | */ 50 | @Override 51 | public int deleteOperLogByIds(String ids) 52 | { 53 | return operLogMapper.deleteOperLogByIds(Convert.toStrArray(ids)); 54 | } 55 | 56 | /** 57 | * 查询操作日志详细 58 | * 59 | * @param operId 操作ID 60 | * @return 操作日志对象 61 | */ 62 | @Override 63 | public OperLog selectOperLogById(Long operId) 64 | { 65 | return operLogMapper.selectOperLogById(operId); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/html/edit.html.vm: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 |
7 |
8 | 9 | #foreach($column in $columns) 10 | #if($column.columnName != $primaryKey.columnName) 11 |
12 | 13 |
14 | 15 |
16 |
17 | #end 18 | #end 19 |
20 |
21 | 22 | 23 |
24 |
25 |
26 |
27 |
28 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dict/mapper/DictTypeMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dict.mapper; 2 | 3 | import java.util.List; 4 | import org.apache.ibatis.annotations.Mapper; 5 | import com.jetfire.project.system.dict.domain.DictType; 6 | 7 | /** 8 | * 字典表 数据层 9 | * 10 | * @author jetfire 11 | */ 12 | @Mapper 13 | public interface DictTypeMapper 14 | { 15 | /** 16 | * 根据条件分页查询字典类型 17 | * 18 | * @param dictType 字典类型信息 19 | * @return 字典类型集合信息 20 | */ 21 | public List selectDictTypeList(DictType dictType); 22 | 23 | /** 24 | * 根据所有字典类型 25 | * 26 | * @return 字典类型集合信息 27 | */ 28 | public List selectDictTypeAll(); 29 | 30 | /** 31 | * 根据字典类型ID查询信息 32 | * 33 | * @param dictId 字典类型ID 34 | * @return 字典类型 35 | */ 36 | public DictType selectDictTypeById(Long dictId); 37 | 38 | /** 39 | * 通过字典ID删除字典信息 40 | * 41 | * @param dictId 字典ID 42 | * @return 结果 43 | */ 44 | public int deleteDictTypeById(Long dictId); 45 | 46 | /** 47 | * 批量删除字典类型 48 | * 49 | * @param ids 需要删除的数据 50 | * @return 结果 51 | */ 52 | public int deleteDictTypeByIds(Long[] ids); 53 | 54 | /** 55 | * 新增字典类型信息 56 | * 57 | * @param dictType 字典类型信息 58 | * @return 结果 59 | */ 60 | public int insertDictType(DictType dictType); 61 | 62 | /** 63 | * 修改字典类型信息 64 | * 65 | * @param dictType 字典类型信息 66 | * @return 结果 67 | */ 68 | public int updateDictType(DictType dictType); 69 | 70 | /** 71 | * 校验字典类型称是否唯一 72 | * 73 | * @param dictType 字典类型 74 | * @return 结果 75 | */ 76 | public DictType checkDictTypeUnique(String dictType); 77 | } 78 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/role/mapper/RoleMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.role.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.role.domain.Role; 5 | 6 | /** 7 | * 角色表 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface RoleMapper 12 | { 13 | 14 | /** 15 | * 根据条件分页查询角色数据 16 | * 17 | * @param role 角色信息 18 | * @return 角色数据集合信息 19 | */ 20 | public List selectRoleList(Role role); 21 | 22 | /** 23 | * 根据用户ID查询角色 24 | * 25 | * @param userId 用户ID 26 | * @return 角色列表 27 | */ 28 | public List selectRolesByUserId(Long userId); 29 | 30 | /** 31 | * 查询角色列表 32 | * 33 | * @return 角色列表 34 | */ 35 | public List selectRolesAll(); 36 | 37 | /** 38 | * 通过角色ID查询角色 39 | * 40 | * @param roleId 角色ID 41 | * @return 角色对象信息 42 | */ 43 | public Role selectRoleById(Long roleId); 44 | 45 | /** 46 | * 通过角色ID删除角色 47 | * 48 | * @param roleId 角色ID 49 | * @return 结果 50 | */ 51 | public int deleteRoleById(Long roleId); 52 | 53 | /** 54 | * 批量角色用户信息 55 | * 56 | * @param ids 需要删除的数据ID 57 | * @return 结果 58 | */ 59 | public int deleteRoleByIds(Long[] ids); 60 | 61 | /** 62 | * 修改角色信息 63 | * 64 | * @param role 角色信息 65 | * @return 结果 66 | */ 67 | public int updateRole(Role role); 68 | 69 | /** 70 | * 新增角色信息 71 | * 72 | * @param role 角色信息 73 | * @return 结果 74 | */ 75 | public int insertRole(Role role); 76 | 77 | /** 78 | * 校验角色名称是否唯一 79 | * 80 | * @param roleName 角色名称 81 | * @return 角色信息 82 | */ 83 | public Role checkRoleNameUnique(String roleName); 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dict/domain/DictType.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dict.domain; 2 | 3 | import com.jetfire.framework.aspectj.lang.annotation.Excel; 4 | import com.jetfire.framework.web.domain.BaseEntity; 5 | 6 | /** 7 | * 字典类型对象 sys_dict_type 8 | * 9 | * @author jetfire 10 | */ 11 | public class DictType extends BaseEntity 12 | { 13 | private static final long serialVersionUID = 1L; 14 | 15 | /** 字典主键 */ 16 | @Excel(name = "字典主键") 17 | private Long dictId; 18 | 19 | /** 字典名称 */ 20 | @Excel(name = "字典名称") 21 | private String dictName; 22 | 23 | /** 字典类型 */ 24 | @Excel(name = "字典类型 ") 25 | private String dictType; 26 | 27 | /** 状态(0正常 1停用) */ 28 | @Excel(name = "状态") 29 | private String status; 30 | 31 | public Long getDictId() 32 | { 33 | return dictId; 34 | } 35 | 36 | public void setDictId(Long dictId) 37 | { 38 | this.dictId = dictId; 39 | } 40 | 41 | public String getDictName() 42 | { 43 | return dictName; 44 | } 45 | 46 | public void setDictName(String dictName) 47 | { 48 | this.dictName = dictName; 49 | } 50 | 51 | public String getDictType() 52 | { 53 | return dictType; 54 | } 55 | 56 | public void setDictType(String dictType) 57 | { 58 | this.dictType = dictType; 59 | } 60 | 61 | public String getStatus() 62 | { 63 | return status; 64 | } 65 | 66 | public void setStatus(String status) 67 | { 68 | this.status = status; 69 | } 70 | 71 | @Override 72 | public String toString() 73 | { 74 | return "DictType [dictId=" + dictId + ", dictName=" + dictName + ", dictType=" + dictType + ", status=" + status 75 | + "]"; 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/GenConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import org.springframework.boot.context.properties.ConfigurationProperties; 4 | import org.springframework.stereotype.Component; 5 | 6 | /** 7 | * 读取代码生成相关配置 8 | * 9 | * @author jetfire 10 | */ 11 | @Component 12 | @ConfigurationProperties(prefix = "gen") 13 | public class GenConfig 14 | { 15 | /** 作者 */ 16 | public static String author; 17 | /** 生成包路径 */ 18 | public static String packageName; 19 | /** 自动去除表前缀,默认是true */ 20 | public static String autoRemovePre; 21 | /** 表前缀(类名不会包含表前缀) */ 22 | public static String tablePrefix; 23 | 24 | public static String getAuthor() 25 | { 26 | return author; 27 | } 28 | 29 | public void setAuthor(String author) 30 | { 31 | GenConfig.author = author; 32 | } 33 | 34 | public static String getPackageName() 35 | { 36 | return packageName; 37 | } 38 | 39 | public void setPackageName(String packageName) 40 | { 41 | GenConfig.packageName = packageName; 42 | } 43 | 44 | public static String getAutoRemovePre() 45 | { 46 | return autoRemovePre; 47 | } 48 | 49 | public void setAutoRemovePre(String autoRemovePre) 50 | { 51 | GenConfig.autoRemovePre = autoRemovePre; 52 | } 53 | 54 | public static String getTablePrefix() 55 | { 56 | return tablePrefix; 57 | } 58 | 59 | public void setTablePrefix(String tablePrefix) 60 | { 61 | GenConfig.tablePrefix = tablePrefix; 62 | } 63 | 64 | @Override 65 | public String toString() 66 | { 67 | return "GenConfig [getClass()=" + getClass() + ", hashCode()=" + hashCode() + ", toString()=" + super.toString() 68 | + "]"; 69 | } 70 | 71 | } 72 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dict/service/IDictDataService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dict.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.dict.domain.DictData; 5 | 6 | /** 7 | * 字典 业务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IDictDataService 12 | { 13 | 14 | /** 15 | * 根据条件分页查询字典数据 16 | * 17 | * @param dictData 字典数据信息 18 | * @return 字典数据集合信息 19 | */ 20 | public List selectDictDataList(DictData dictData); 21 | 22 | /** 23 | * 根据字典类型查询字典数据 24 | * 25 | * @param dictType 字典类型 26 | * @return 字典数据集合信息 27 | */ 28 | public List selectDictDataByType(String dictType); 29 | 30 | /** 31 | * 根据字典类型和字典键值查询字典数据信息 32 | * 33 | * @param dictType 字典类型 34 | * @param dictValue 字典键值 35 | * @return 字典标签 36 | */ 37 | public String selectDictLabel(String dictType, String dictValue); 38 | 39 | /** 40 | * 根据字典数据ID查询信息 41 | * 42 | * @param dictCode 字典数据ID 43 | * @return 字典数据 44 | */ 45 | public DictData selectDictDataById(Long dictCode); 46 | 47 | /** 48 | * 通过字典ID删除字典数据信息 49 | * 50 | * @param dictCode 字典数据ID 51 | * @return 结果 52 | */ 53 | public int deleteDictDataById(Long dictCode); 54 | 55 | /** 56 | * 批量删除字典数据 57 | * 58 | * @param ids 需要删除的数据 59 | * @return 结果 60 | */ 61 | public int deleteDictDataByIds(String ids); 62 | 63 | /** 64 | * 新增保存字典数据信息 65 | * 66 | * @param dictData 字典数据信息 67 | * @return 结果 68 | */ 69 | public int insertDictData(DictData dictData); 70 | 71 | /** 72 | * 修改保存字典数据信息 73 | * 74 | * @param dictData 字典数据信息 75 | * @return 结果 76 | */ 77 | public int updateDictData(DictData dictData); 78 | 79 | } 80 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/bootstrap-table/extensions/mobile/bootstrap-table-mobile.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * bootstrap-table - v1.11.0 - 2016-07-02 3 | * https://github.com/wenzhixin/bootstrap-table 4 | * Copyright (c) 2016 zhixin wen 5 | * Licensed MIT License 6 | */ 7 | !function(a){"use strict";var b=function(b,c){b.options.columnsHidden.length>0&&a.each(b.columns,function(d,e){-1!==b.options.columnsHidden.indexOf(e.field)&&e.visible!==c&&b.toggleColumn(a.fn.bootstrapTable.utils.getFieldIndex(b.columns,e.field),c,!0)})},c=function(a){(a.options.height||a.options.showFooter)&&setTimeout(function(){a.resetView.call(a)},1)},d=function(a,b,d){a.options.minHeight?b<=a.options.minWidth&&d<=a.options.minHeight?e(a):b>a.options.minWidth&&d>a.options.minHeight&&f(a):b<=a.options.minWidth?e(a):b>a.options.minWidth&&f(a),c(a)},e=function(a){g(a,!1),b(a,!1)},f=function(a){g(a,!0),b(a,!0)},g=function(a,b){a.options.cardView=b,a.toggleView()},h=function(a,b){var c;return function(){var d=this,e=arguments,f=function(){c=null,a.apply(d,e)};clearTimeout(c),c=setTimeout(f,b)}};a.extend(a.fn.bootstrapTable.defaults,{mobileResponsive:!1,minWidth:562,minHeight:void 0,heightThreshold:100,checkOnInit:!0,columnsHidden:[]});var i=a.fn.bootstrapTable.Constructor,j=i.prototype.init;i.prototype.init=function(){if(j.apply(this,Array.prototype.slice.apply(arguments)),this.options.mobileResponsive&&this.options.minWidth){this.options.minWidth<100&&this.options.resizable&&(console.log("The minWidth when the resizable extension is active should be greater or equal than 100"),this.options.minWidth=100);var b=this,c={width:a(window).width(),height:a(window).height()};if(a(window).on("resize orientationchange",h(function(){var e=a(this).height(),f=a(this).width();(Math.abs(c.height-e)>b.options.heightThreshold||c.width!=f)&&(d(b,f,e),c={width:f,height:e})},200)),this.options.checkOnInit){var e=a(window).height(),f=a(window).width();d(this,f,e),c={width:f,height:e}}}}}(jQuery); -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/service/IJobService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.service; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.monitor.job.domain.Job; 5 | 6 | /** 7 | * 定时任务调度信息信息 服务层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface IJobService 12 | { 13 | 14 | /** 15 | * 获取quartz调度器的计划任务 16 | * 17 | * @param job 调度信息 18 | * @return 调度任务集合 19 | */ 20 | public List selectJobList(Job job); 21 | 22 | /** 23 | * 通过调度任务ID查询调度信息 24 | * 25 | * @param jobId 调度任务ID 26 | * @return 调度任务对象信息 27 | */ 28 | public Job selectJobById(Long jobId); 29 | 30 | /** 31 | * 暂停任务 32 | * 33 | * @param job 调度信息 34 | * @return 结果 35 | */ 36 | public int pauseJob(Job job); 37 | 38 | /** 39 | * 恢复任务 40 | * 41 | * @param job 调度信息 42 | * @return 结果 43 | */ 44 | public int resumeJob(Job job); 45 | 46 | /** 47 | * 删除任务后,所对应的trigger也将被删除 48 | * 49 | * @param job 调度信息 50 | * @return 结果 51 | */ 52 | public int deleteJob(Job job); 53 | 54 | /** 55 | * 批量删除调度信息 56 | * 57 | * @param ids 需要删除的数据ID 58 | * @return 结果 59 | */ 60 | public void deleteJobByIds(String ids); 61 | 62 | /** 63 | * 任务调度状态修改 64 | * 65 | * @param job 调度信息 66 | * @return 结果 67 | */ 68 | public int changeStatus(Job job); 69 | 70 | /** 71 | * 立即运行任务 72 | * 73 | * @param job 调度信息 74 | * @return 结果 75 | */ 76 | public int run(Job job); 77 | 78 | /** 79 | * 新增任务表达式 80 | * 81 | * @param job 调度信息 82 | * @return 结果 83 | */ 84 | public int insertJobCron(Job job); 85 | 86 | /** 87 | * 更新任务的时间表达式 88 | * 89 | * @param job 调度信息 90 | * @return 结果 91 | */ 92 | public int updateJobCron(Job job); 93 | 94 | } 95 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/tool/gen/domain/ColumnInfo.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.tool.gen.domain; 2 | 3 | /** 4 | * ry数据库表列信息 5 | * 6 | * @author jetfire 7 | */ 8 | public class ColumnInfo 9 | { 10 | /** 字段名称 */ 11 | private String columnName; 12 | 13 | /** 字段类型 */ 14 | private String dataType; 15 | 16 | /** 列描述 */ 17 | private String columnComment; 18 | 19 | /** Java属性类型 */ 20 | private String attrType; 21 | 22 | /** Java属性名称(第一个字母大写),如:user_name => UserName */ 23 | private String attrName; 24 | 25 | /** Java属性名称(第一个字母小写),如:user_name => userName */ 26 | private String attrname; 27 | 28 | public String getColumnName() 29 | { 30 | return columnName; 31 | } 32 | 33 | public void setColumnName(String columnName) 34 | { 35 | this.columnName = columnName; 36 | } 37 | 38 | public String getDataType() 39 | { 40 | return dataType; 41 | } 42 | 43 | public void setDataType(String dataType) 44 | { 45 | this.dataType = dataType; 46 | } 47 | 48 | public String getColumnComment() 49 | { 50 | return columnComment; 51 | } 52 | 53 | public void setColumnComment(String columnComment) 54 | { 55 | this.columnComment = columnComment; 56 | } 57 | 58 | public String getAttrName() 59 | { 60 | return attrName; 61 | } 62 | 63 | public void setAttrName(String attrName) 64 | { 65 | this.attrName = attrName; 66 | } 67 | 68 | public String getAttrname() 69 | { 70 | return attrname; 71 | } 72 | 73 | public void setAttrname(String attrname) 74 | { 75 | this.attrname = attrname; 76 | } 77 | 78 | public String getAttrType() 79 | { 80 | return attrType; 81 | } 82 | 83 | public void setAttrType(String attrType) 84 | { 85 | this.attrType = attrType; 86 | } 87 | 88 | } 89 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/dept/service/IDeptService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.dept.service; 2 | 3 | import java.util.List; 4 | import java.util.Map; 5 | 6 | import com.jetfire.project.system.dept.domain.Dept; 7 | 8 | /** 9 | * 部门管理 服务层 10 | * 11 | * @author jetfire 12 | */ 13 | public interface IDeptService 14 | { 15 | /** 16 | * 查询部门管理数据 17 | * 18 | * @return 部门信息集合 19 | */ 20 | public List selectDeptList(Dept dept); 21 | 22 | /** 23 | * 查询部门所有数据 24 | * 25 | * @return 部门信息集合 26 | */ 27 | public List selectDeptAll(); 28 | 29 | /** 30 | * 查询部门管理树 31 | * 32 | * @return 所有部门信息 33 | */ 34 | public List> selectDeptTree(); 35 | 36 | /** 37 | * 查询部门人数 38 | * 39 | * @param parentId 父部门ID 40 | * @return 结果 41 | */ 42 | public int selectDeptCount(Long parentId); 43 | 44 | /** 45 | * 查询部门是否存在用户 46 | * 47 | * @param deptId 部门ID 48 | * @return 结果 true 存在 false 不存在 49 | */ 50 | public boolean checkDeptExistUser(Long deptId); 51 | 52 | /** 53 | * 删除部门管理信息 54 | * 55 | * @param deptId 部门ID 56 | * @return 结果 57 | */ 58 | public int deleteDeptById(Long deptId); 59 | 60 | /** 61 | * 新增保存部门信息 62 | * 63 | * @param dept 部门信息 64 | * @return 结果 65 | */ 66 | public int insertDept(Dept dept); 67 | 68 | /** 69 | * 修改保存部门信息 70 | * 71 | * @param dept 部门信息 72 | * @return 结果 73 | */ 74 | public int updateDept(Dept dept); 75 | 76 | /** 77 | * 根据部门ID查询信息 78 | * 79 | * @param deptId 部门ID 80 | * @return 部门信息 81 | */ 82 | public Dept selectDeptById(Long deptId); 83 | 84 | /** 85 | * 校验部门名称是否唯一 86 | * 87 | * @param dept 部门信息 88 | * @return 结果 89 | */ 90 | public String checkDeptNameUnique(Dept dept); 91 | } 92 | -------------------------------------------------------------------------------- /jetfire.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | AppName=Jetfire.jar 4 | 5 | #JVM参数 6 | JVM_OPTS="-Dname=$AppName -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC" 7 | APP_HOME=`pwd` 8 | LOG_PATH=$APP_HOME/logs/$AppName.log 9 | 10 | if [ "$1" = "" ]; 11 | then 12 | echo -e "\033[0;31m 未输入操作名 \033[0m \033[0;34m {start|stop|restart|status} \033[0m" 13 | exit 1 14 | fi 15 | 16 | if [ "$AppName" = "" ]; 17 | then 18 | echo -e "\033[0;31m 未输入应用名 \033[0m" 19 | exit 1 20 | fi 21 | 22 | function start() 23 | { 24 | PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` 25 | 26 | if [ x"$PID" != x"" ]; then 27 | echo "$AppName is running..." 28 | else 29 | nohup java -jar $JVM_OPTS target/$AppName > /dev/null 2>&1 & 30 | echo "Start $AppName success..." 31 | fi 32 | } 33 | 34 | function stop() 35 | { 36 | echo "Stop $AppName" 37 | 38 | PID="" 39 | query(){ 40 | PID=`ps -ef |grep java|grep $AppName|grep -v grep|awk '{print $2}'` 41 | } 42 | 43 | query 44 | if [ x"$PID" != x"" ]; then 45 | kill -TERM $PID 46 | echo "$AppName (pid:$PID) exiting..." 47 | while [ x"$PID" != x"" ] 48 | do 49 | sleep 1 50 | query 51 | done 52 | echo "$AppName exited." 53 | else 54 | echo "$AppName already stopped." 55 | fi 56 | } 57 | 58 | function restart() 59 | { 60 | stop 61 | sleep 2 62 | start 63 | } 64 | 65 | function status() 66 | { 67 | PID=`ps -ef |grep java|grep $AppName|grep -v grep|wc -l` 68 | if [ $PID != 0 ];then 69 | echo "$AppName is running..." 70 | else 71 | echo "$AppName is not running..." 72 | fi 73 | } 74 | 75 | case $1 in 76 | start) 77 | start;; 78 | stop) 79 | stop;; 80 | restart) 81 | restart;; 82 | status) 83 | status;; 84 | *) 85 | 86 | esac 87 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/config/domain/Config.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.config.domain; 2 | 3 | import com.jetfire.framework.aspectj.lang.annotation.Excel; 4 | import com.jetfire.framework.web.domain.BaseEntity; 5 | 6 | /** 7 | * 参数配置表 sys_config 8 | * 9 | * @author jetfire 10 | */ 11 | public class Config extends BaseEntity 12 | { 13 | private static final long serialVersionUID = 1L; 14 | 15 | /** 参数主键 */ 16 | @Excel(name = "参数主键") 17 | private Long configId; 18 | 19 | /** 参数名称 */ 20 | @Excel(name = "参数名称") 21 | private String configName; 22 | 23 | /** 参数键名 */ 24 | @Excel(name = "参数键名") 25 | private String configKey; 26 | 27 | /** 参数键值 */ 28 | @Excel(name = "参数键值") 29 | private String configValue; 30 | 31 | /** 系统内置(Y是 N否) */ 32 | @Excel(name = "系统内置") 33 | private String configType; 34 | 35 | public Long getConfigId() 36 | { 37 | return configId; 38 | } 39 | 40 | public void setConfigId(Long configId) 41 | { 42 | this.configId = configId; 43 | } 44 | 45 | public String getConfigName() 46 | { 47 | return configName; 48 | } 49 | 50 | public void setConfigName(String configName) 51 | { 52 | this.configName = configName; 53 | } 54 | 55 | public String getConfigKey() 56 | { 57 | return configKey; 58 | } 59 | 60 | public void setConfigKey(String configKey) 61 | { 62 | this.configKey = configKey; 63 | } 64 | 65 | public String getConfigValue() 66 | { 67 | return configValue; 68 | } 69 | 70 | public void setConfigValue(String configValue) 71 | { 72 | this.configValue = configValue; 73 | } 74 | 75 | public String getConfigType() 76 | { 77 | return configType; 78 | } 79 | 80 | public void setConfigType(String configType) 81 | { 82 | this.configType = configType; 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/resources/static/jetfire/login.js: -------------------------------------------------------------------------------- 1 | 2 | $(function() { 3 | validateRule(); 4 | $(".i-checks").iCheck({checkboxClass:"icheckbox_square-green-login"}); 5 | $('.imgcode').click(function() { 6 | var url = ctx + "captcha/captchaImage?type=" + captchaType + "&s=" + Math.random(); 7 | $(".imgcode").attr("src", url); 8 | }); 9 | }); 10 | 11 | $.validator.setDefaults({ 12 | submitHandler: function() { 13 | login(); 14 | } 15 | }); 16 | 17 | function login() { 18 | $.modal.loading($("#btnSubmit").data("loading")); 19 | var username = $("input[name='username']").val().trim(); 20 | var password = $("input[name='password']").val().trim(); 21 | var validateCode = $("input[name='validateCode']").val(); 22 | var rememberMe = $("input[name='rememberme']").is(':checked'); 23 | $.ajax({ 24 | type: "post", 25 | url: ctx + "login", 26 | data: { 27 | "username": username, 28 | "password": password, 29 | "validateCode" : validateCode, 30 | "rememberMe": rememberMe 31 | }, 32 | success: function(r) { 33 | if (r.code == 0) { 34 | location.href = ctx + 'index'; 35 | } else { 36 | $.modal.closeLoading(); 37 | $('.imgcode').click(); 38 | $.modal.msg(r.msg); 39 | } 40 | } 41 | }); 42 | } 43 | 44 | function validateRule() { 45 | var icon = " "; 46 | $("#signupForm").validate({ 47 | rules: { 48 | username: { 49 | required: true 50 | }, 51 | password: { 52 | required: true 53 | } 54 | }, 55 | messages: { 56 | username: { 57 | required: icon + "请输入您的用户名", 58 | }, 59 | password: { 60 | required: icon + "请输入您的密码", 61 | } 62 | } 63 | }) 64 | } 65 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/monitor/job/service/JobLogServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.monitor.job.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import com.jetfire.common.support.Convert; 7 | import com.jetfire.project.monitor.job.domain.JobLog; 8 | import com.jetfire.project.monitor.job.mapper.JobLogMapper; 9 | 10 | /** 11 | * 定时任务调度日志信息 服务层 12 | * 13 | * @author jetfire 14 | */ 15 | @Service 16 | public class JobLogServiceImpl implements IJobLogService 17 | { 18 | 19 | @Autowired 20 | private JobLogMapper jobLogMapper; 21 | 22 | /** 23 | * 获取quartz调度器日志的计划任务 24 | * 25 | * @param jobLog 调度日志信息 26 | * @return 调度任务日志集合 27 | */ 28 | @Override 29 | public List selectJobLogList(JobLog jobLog) 30 | { 31 | return jobLogMapper.selectJobLogList(jobLog); 32 | } 33 | 34 | /** 35 | * 通过调度任务日志ID查询调度信息 36 | * 37 | * @param jobId 调度任务日志ID 38 | * @return 调度任务日志对象信息 39 | */ 40 | @Override 41 | public JobLog selectJobLogById(Long jobLogId) 42 | { 43 | return jobLogMapper.selectJobLogById(jobLogId); 44 | } 45 | 46 | /** 47 | * 新增任务日志 48 | * 49 | * @param jobLog 调度日志信息 50 | */ 51 | @Override 52 | public void addJobLog(JobLog jobLog) 53 | { 54 | jobLogMapper.insertJobLog(jobLog); 55 | } 56 | 57 | /** 58 | * 批量删除调度日志信息 59 | * 60 | * @param ids 需要删除的数据ID 61 | * @return 结果 62 | */ 63 | @Override 64 | public int deleteJobLogByIds(String ids) 65 | { 66 | return jobLogMapper.deleteJobLogByIds(Convert.toStrArray(ids)); 67 | } 68 | 69 | /** 70 | * 删除任务日志 71 | * 72 | * @param jobId 调度日志ID 73 | */ 74 | @Override 75 | public int deleteJobLogById(Long jobId) 76 | { 77 | return jobLogMapper.deleteJobLogById(jobId); 78 | } 79 | 80 | } 81 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/SwaggerConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import org.springframework.beans.factory.annotation.Autowired; 4 | import org.springframework.context.annotation.Bean; 5 | import org.springframework.context.annotation.Configuration; 6 | import springfox.documentation.builders.ApiInfoBuilder; 7 | import springfox.documentation.builders.PathSelectors; 8 | import springfox.documentation.builders.RequestHandlerSelectors; 9 | import springfox.documentation.service.ApiInfo; 10 | import springfox.documentation.service.Contact; 11 | import springfox.documentation.spi.DocumentationType; 12 | import springfox.documentation.spring.web.plugins.Docket; 13 | import springfox.documentation.swagger2.annotations.EnableSwagger2; 14 | 15 | /** 16 | * Swagger2的接口配置 17 | * 18 | * @author jetfire 19 | */ 20 | @Configuration 21 | @EnableSwagger2 22 | public class SwaggerConfig 23 | { 24 | /** 系统基础配置 */ 25 | @Autowired 26 | private RuoYiConfig ruoYiConfig; 27 | 28 | /** 29 | * 创建API 30 | */ 31 | @Bean 32 | public Docket createRestApi() 33 | { 34 | return new Docket(DocumentationType.SWAGGER_2) 35 | // 详细定制 36 | .apiInfo(apiInfo()) 37 | .select() 38 | // 指定当前包路径 39 | .apis(RequestHandlerSelectors.basePackage("com.jetfire.project.tool.swagger")) 40 | // 扫描所有 .apis(RequestHandlerSelectors.any()) 41 | .paths(PathSelectors.any()) 42 | .build(); 43 | } 44 | 45 | /** 46 | * 添加摘要信息 47 | */ 48 | private ApiInfo apiInfo() 49 | { 50 | // 用ApiInfoBuilder进行定制 51 | return new ApiInfoBuilder() 52 | .title("标题:Jetfire管理系统_接口文档") 53 | .description("描述:用于管理集团旗下公司的人员信息,具体包括XXX,XXX模块...") 54 | .contact(new Contact(ruoYiConfig.getName(), null, null)) 55 | .version("版本号:" + ruoYiConfig.getVersion()) 56 | .build(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/domain/AjaxResult.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.domain; 2 | 3 | import java.util.HashMap; 4 | 5 | /** 6 | * 操作消息提醒 7 | * 8 | * @author jetfire 9 | */ 10 | public class AjaxResult extends HashMap 11 | { 12 | private static final long serialVersionUID = 1L; 13 | 14 | /** 15 | * 初始化一个新创建的 Message 对象 16 | */ 17 | public AjaxResult() 18 | { 19 | } 20 | 21 | /** 22 | * 返回错误消息 23 | * 24 | * @return 错误消息 25 | */ 26 | public static AjaxResult error() 27 | { 28 | return error(1, "操作失败"); 29 | } 30 | 31 | /** 32 | * 返回错误消息 33 | * 34 | * @param msg 内容 35 | * @return 错误消息 36 | */ 37 | public static AjaxResult error(String msg) 38 | { 39 | return error(500, msg); 40 | } 41 | 42 | /** 43 | * 返回错误消息 44 | * 45 | * @param code 错误码 46 | * @param msg 内容 47 | * @return 错误消息 48 | */ 49 | public static AjaxResult error(int code, String msg) 50 | { 51 | AjaxResult json = new AjaxResult(); 52 | json.put("code", code); 53 | json.put("msg", msg); 54 | return json; 55 | } 56 | 57 | /** 58 | * 返回成功消息 59 | * 60 | * @param msg 内容 61 | * @return 成功消息 62 | */ 63 | public static AjaxResult success(String msg) 64 | { 65 | AjaxResult json = new AjaxResult(); 66 | json.put("msg", msg); 67 | json.put("code", 0); 68 | return json; 69 | } 70 | 71 | /** 72 | * 返回成功消息 73 | * 74 | * @return 成功消息 75 | */ 76 | public static AjaxResult success() 77 | { 78 | return AjaxResult.success("操作成功"); 79 | } 80 | 81 | /** 82 | * 返回成功消息 83 | * 84 | * @param key 键值 85 | * @param value 内容 86 | * @return 成功消息 87 | */ 88 | @Override 89 | public AjaxResult put(String key, Object value) 90 | { 91 | super.put(key, value); 92 | return this; 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/summernote/summernote-zh-CN.min.js: -------------------------------------------------------------------------------- 1 | /*! Summernote v0.8.8 | (c) 2013- Alan Hong and other contributors | MIT license */ 2 | 3 | !function(a){a.extend(a.summernote.lang,{"zh-CN":{font:{bold:"粗体",italic:"斜体",underline:"下划线",clear:"清除格式",height:"行高",name:"字体",strikethrough:"删除线",subscript:"下标",superscript:"上标",size:"字号"},image:{image:"图片",insert:"插入图片",resizeFull:"缩放至 100%",resizeHalf:"缩放至 50%",resizeQuarter:"缩放至 25%",floatLeft:"靠左浮动",floatRight:"靠右浮动",floatNone:"取消浮动",shapeRounded:"形状: 圆角",shapeCircle:"形状: 圆",shapeThumbnail:"形状: 缩略图",shapeNone:"形状: 无",dragImageHere:"将图片拖拽至此处",selectFromFiles:"从本地上传",maximumFileSize:"文件大小最大值",maximumFileSizeError:"文件大小超出最大值。",url:"图片地址",remove:"移除图片"},video:{video:"视频",videoLink:"视频链接",insert:"插入视频",url:"视频地址",providers:"(优酷, 腾讯, Instagram, DailyMotion, Youtube等)"},link:{link:"链接",insert:"插入链接",unlink:"去除链接",edit:"编辑链接",textToDisplay:"显示文本",url:"链接地址",openInNewWindow:"在新窗口打开"},table:{table:"表格"},hr:{insert:"水平线"},style:{style:"样式",p:"普通",blockquote:"引用",pre:"代码",h1:"标题 1",h2:"标题 2",h3:"标题 3",h4:"标题 4",h5:"标题 5",h6:"标题 6"},lists:{unordered:"无序列表",ordered:"有序列表"},options:{help:"帮助",fullscreen:"全屏",codeview:"源代码"},paragraph:{paragraph:"段落",outdent:"减少缩进",indent:"增加缩进",left:"左对齐",center:"居中对齐",right:"右对齐",justify:"两端对齐"},color:{recent:"最近使用",more:"更多",background:"背景",foreground:"前景",transparent:"透明",setTransparent:"透明",reset:"重置",resetToDefault:"默认"},shortcut:{shortcuts:"快捷键",close:"关闭",textFormatting:"文本格式",action:"动作",paragraphFormatting:"段落格式",documentStyle:"文档样式",extraKeys:"额外按键"},history:{undo:"撤销",redo:"重做"},help:{insertParagraph:"插入段落",undo:"撤销",redo:"重做",tab:"增加缩进",untab:"减少缩进",bold:"粗体",italic:"斜体",underline:"下划线",strikethrough:"删除线",removeFormat:"清除格式",justifyLeft:"左对齐",justifyCenter:"居中对齐",justifyRight:"右对齐",justifyFull:"两端对齐",insertUnorderedList:"无序列表",insertOrderedList:"有序列表",outdent:"减少缩进",indent:"增加缩进",formatPara:"设置选中内容样式为 普通",formatH1:"设置选中内容样式为 标题1",formatH2:"设置选中内容样式为 标题2",formatH3:"设置选中内容样式为 标题3",formatH4:"设置选中内容样式为 标题4",formatH5:"设置选中内容样式为 标题5",formatH6:"设置选中内容样式为 标题6",insertHorizontalRule:"插入水平线","linkDialog.show":"显示链接对话框"}}})}(jQuery); -------------------------------------------------------------------------------- /src/main/resources/static/css/login.css: -------------------------------------------------------------------------------- 1 | html { 2 | height:100% 3 | } 4 | body.signin { 5 | height:auto; 6 | background:url(../img/login-background.jpg) no-repeat center fixed; 7 | -webkit-background-size:cover; 8 | -moz-background-size:cover; 9 | -o-background-size:cover; 10 | background-size:cover; 11 | color:rgba(255,255,255,.95) 12 | } 13 | .signinpanel { 14 | width:750px; 15 | margin:10% auto 0 16 | } 17 | .signinpanel .logopanel { 18 | float:none; 19 | width:auto; 20 | padding:0; 21 | background:0 0 22 | } 23 | .signinpanel .signin-info ul { 24 | list-style:none; 25 | padding:0; 26 | margin:20px 0 27 | } 28 | .signinpanel .form-control { 29 | display:block; 30 | margin-top:15px 31 | } 32 | .signinpanel .uname { 33 | background:#fff url(../img/user.png) no-repeat 95% center; 34 | color:#333 35 | } 36 | .signinpanel .pword { 37 | background:#fff url(../img/locked.png) no-repeat 95% center; 38 | color:#333 39 | } 40 | .signinpanel .code { 41 | background: #fff no-repeat 95% center;color:#333; margin:0 0 15px 0; 42 | } 43 | .signinpanel .btn { 44 | margin-top:15px 45 | } 46 | .signinpanel form { 47 | background:rgba(255,255,255,.2); 48 | border:1px solid rgba(255,255,255,.3); 49 | -moz-box-shadow:0 3px 0 rgba(12,12,12,.03); 50 | -webkit-box-shadow:0 3px 0 rgba(12,12,12,.03); 51 | box-shadow:0 3px 0 rgba(12,12,12,.03); 52 | -moz-border-radius:3px; 53 | -webkit-border-radius:3px; 54 | border-radius:3px; 55 | padding:30px 56 | } 57 | .signup-footer { 58 | border-top:solid 1px rgba(255,255,255,.3); 59 | margin:20px 0; 60 | padding-top:15px 61 | } 62 | @media screen and (max-width:768px) { 63 | .signinpanel,.signuppanel { 64 | margin:0 auto; 65 | width:420px!important; 66 | padding:20px 67 | } 68 | .signinpanel form { 69 | margin-top:20px 70 | } 71 | .signup-footer,.signuppanel .form-control { 72 | margin-bottom:10px 73 | } 74 | .signup-footer .pull-left,.signup-footer .pull-right { 75 | float:none!important; 76 | text-align:center 77 | } 78 | .signinpanel .signin-info ul { 79 | display:none 80 | } 81 | }@media screen and (max-width:320px) { 82 | .signinpanel,.signuppanel { 83 | margin:0 20px; 84 | width:auto 85 | } 86 | } 87 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/notice/service/NoticeServiceImpl.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.notice.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import com.jetfire.common.utils.security.ShiroUtils; 7 | import com.jetfire.project.system.notice.mapper.NoticeMapper; 8 | import com.jetfire.project.system.notice.domain.Notice; 9 | import com.jetfire.common.support.Convert; 10 | 11 | /** 12 | * 公告 服务层实现 13 | * 14 | * @author jetfire 15 | * @date 2018-06-25 16 | */ 17 | @Service 18 | public class NoticeServiceImpl implements INoticeService 19 | { 20 | @Autowired 21 | private NoticeMapper noticeMapper; 22 | 23 | /** 24 | * 查询公告信息 25 | * 26 | * @param noticeId 公告ID 27 | * @return 公告信息 28 | */ 29 | @Override 30 | public Notice selectNoticeById(Long noticeId) 31 | { 32 | return noticeMapper.selectNoticeById(noticeId); 33 | } 34 | 35 | /** 36 | * 查询公告列表 37 | * 38 | * @param notice 公告信息 39 | * @return 公告集合 40 | */ 41 | @Override 42 | public List selectNoticeList(Notice notice) 43 | { 44 | return noticeMapper.selectNoticeList(notice); 45 | } 46 | 47 | /** 48 | * 新增公告 49 | * 50 | * @param notice 公告信息 51 | * @return 结果 52 | */ 53 | @Override 54 | public int insertNotice(Notice notice) 55 | { 56 | notice.setCreateBy(ShiroUtils.getLoginName()); 57 | return noticeMapper.insertNotice(notice); 58 | } 59 | 60 | /** 61 | * 修改公告 62 | * 63 | * @param notice 公告信息 64 | * @return 结果 65 | */ 66 | @Override 67 | public int updateNotice(Notice notice) 68 | { 69 | notice.setUpdateBy(ShiroUtils.getLoginName()); 70 | return noticeMapper.updateNotice(notice); 71 | } 72 | 73 | /** 74 | * 删除公告对象 75 | * 76 | * @param ids 需要删除的数据ID 77 | * @return 结果 78 | */ 79 | @Override 80 | public int deleteNoticeByIds(String ids) 81 | { 82 | return noticeMapper.deleteNoticeByIds(Convert.toStrArray(ids)); 83 | } 84 | 85 | } 86 | -------------------------------------------------------------------------------- /src/main/resources/ehcache/ehcache-shiro.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 14 | 15 | 16 | 17 | 24 | 25 | 26 | 27 | 35 | 36 | 37 | 46 | 47 | 48 | 56 | 57 | 58 | 59 | 67 | 68 | 69 | -------------------------------------------------------------------------------- /src/main/resources/static/ajax/libs/iCheck/custom.css: -------------------------------------------------------------------------------- 1 | /* iCheck plugin Square skin, green 2 | ----------------------------------- */ 3 | .icheckbox_square-green, 4 | .iradio_square-green { 5 | display: inline-block; 6 | *display: inline; 7 | vertical-align: middle; 8 | margin: 0; 9 | padding: 0; 10 | width: 22px; 11 | height: 22px; 12 | background: url(green.png) no-repeat; 13 | border: none; 14 | cursor: pointer; 15 | } 16 | 17 | .icheckbox_square-green-login{ 18 | display: inline-block; 19 | *display: inline; 20 | vertical-align: middle; 21 | margin: 0; 22 | padding: 0; 23 | width: 22px; 24 | height: 22px; 25 | background: url(green-login.png) no-repeat; 26 | border: none; 27 | cursor: pointer; 28 | } 29 | 30 | .icheckbox_square-green,.icheckbox_square-green-login { 31 | background-position: 0 0; 32 | } 33 | .icheckbox_square-green.hover,.icheckbox_square-green-login.hover { 34 | background-position: -24px 0; 35 | } 36 | .icheckbox_square-green.checked,.icheckbox_square-green-login.checked { 37 | background-position: -48px 0; 38 | } 39 | .icheckbox_square-green.disabled,.icheckbox_square-green.disabled-login { 40 | background-position: -72px 0; 41 | cursor: default; 42 | } 43 | .icheckbox_square-green.checked.disabled,.icheckbox_square-green-login.checked.disabled { 44 | background-position: -96px 0; 45 | } 46 | 47 | .iradio_square-green { 48 | background-position: -120px 0; 49 | } 50 | .iradio_square-green.hover { 51 | background-position: -144px 0; 52 | } 53 | .iradio_square-green.checked { 54 | background-position: -168px 0; 55 | } 56 | .iradio_square-green.disabled { 57 | background-position: -192px 0; 58 | cursor: default; 59 | } 60 | .iradio_square-green.checked.disabled { 61 | background-position: -216px 0; 62 | } 63 | 64 | /* HiDPI support */ 65 | @media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { 66 | .icheckbox_square-green,.icheckbox_square-green-login, 67 | .iradio_square-green { 68 | background-image: url(green%402x.png); 69 | -webkit-background-size: 240px 24px; 70 | background-size: 240px 24px; 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/menu/mapper/MenuMapper.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.menu.mapper; 2 | 3 | import java.util.List; 4 | import com.jetfire.project.system.menu.domain.Menu; 5 | 6 | /** 7 | * 菜单表 数据层 8 | * 9 | * @author jetfire 10 | */ 11 | public interface MenuMapper 12 | { 13 | 14 | /** 15 | * 根据用户ID查询菜单 16 | * 17 | * @param userId 用户ID 18 | * @return 菜单列表 19 | */ 20 | public List selectMenusByUserId(Long userId); 21 | 22 | /** 23 | * 根据用户ID查询权限 24 | * 25 | * @param userId 用户ID 26 | * @return 权限列表 27 | */ 28 | public List selectPermsByUserId(Long userId); 29 | 30 | /** 31 | * 根据角色ID查询菜单 32 | * 33 | * @param roleId 角色ID 34 | * @return 菜单列表 35 | */ 36 | public List selectMenuTree(Long roleId); 37 | 38 | /** 39 | * 查询系统菜单列表 40 | * 41 | * @return 菜单列表 42 | */ 43 | public List selectMenuList(Menu menu); 44 | 45 | /** 46 | * 查询系统所有菜单 47 | * 48 | * @return 菜单列表 49 | */ 50 | public List selectMenuAll(); 51 | 52 | /** 53 | * 删除菜单管理信息 54 | * 55 | * @param menuId 菜单ID 56 | * @return 结果 57 | */ 58 | public int deleteMenuById(Long menuId); 59 | 60 | /** 61 | * 根据菜单ID查询信息 62 | * 63 | * @param menuId 菜单ID 64 | * @return 菜单信息 65 | */ 66 | public Menu selectMenuById(Long menuId); 67 | 68 | /** 69 | * 查询菜单数量 70 | * 71 | * @param parentId 菜单父ID 72 | * @return 结果 73 | */ 74 | public int selectCountMenuByParentId(Long parentId); 75 | 76 | /** 77 | * 新增菜单信息 78 | * 79 | * @param menu 菜单信息 80 | * @return 结果 81 | */ 82 | public int insertMenu(Menu menu); 83 | 84 | /** 85 | * 修改菜单信息 86 | * 87 | * @param menu 菜单信息 88 | * @return 结果 89 | */ 90 | public int updateMenu(Menu menu); 91 | 92 | /** 93 | * 校验菜单名称是否唯一 94 | * 95 | * @param menuName 菜单名称 96 | * @return 结果 97 | */ 98 | public Menu checkMenuNameUnique(String menuName); 99 | 100 | } 101 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/web/exception/DefaultExceptionHandler.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.web.exception; 2 | 3 | import org.apache.shiro.authz.AuthorizationException; 4 | import org.slf4j.Logger; 5 | import org.slf4j.LoggerFactory; 6 | import org.springframework.web.HttpRequestMethodNotSupportedException; 7 | import org.springframework.web.bind.annotation.ExceptionHandler; 8 | import org.springframework.web.bind.annotation.RestControllerAdvice; 9 | 10 | import com.jetfire.common.exception.DemoModeException; 11 | import com.jetfire.framework.web.domain.AjaxResult; 12 | 13 | /** 14 | * 自定义异常处理器 15 | * 16 | * @author jetfire 17 | */ 18 | @RestControllerAdvice 19 | public class DefaultExceptionHandler 20 | { 21 | private static final Logger log = LoggerFactory.getLogger(DefaultExceptionHandler.class); 22 | 23 | /** 24 | * 权限校验失败 25 | */ 26 | @ExceptionHandler(AuthorizationException.class) 27 | public AjaxResult handleAuthorizationException(AuthorizationException e) 28 | { 29 | log.error(e.getMessage(), e); 30 | return AjaxResult.error("您没有数据的权限,请联系管理员添加"); 31 | } 32 | 33 | /** 34 | * 请求方式不支持 35 | */ 36 | @ExceptionHandler({ HttpRequestMethodNotSupportedException.class }) 37 | public AjaxResult handleException(HttpRequestMethodNotSupportedException e) 38 | { 39 | log.error(e.getMessage(), e); 40 | return AjaxResult.error("不支持' " + e.getMethod() + "'请求"); 41 | } 42 | 43 | /** 44 | * 拦截未知的运行时异常 45 | */ 46 | @ExceptionHandler(RuntimeException.class) 47 | public AjaxResult notFount(RuntimeException e) 48 | { 49 | log.error("运行时异常:", e); 50 | return AjaxResult.error("运行时异常:" + e.getMessage()); 51 | } 52 | 53 | /** 54 | * 系统异常 55 | */ 56 | @ExceptionHandler(Exception.class) 57 | public AjaxResult handleException(Exception e) 58 | { 59 | log.error(e.getMessage(), e); 60 | return AjaxResult.error("服务器错误,请联系管理员"); 61 | } 62 | 63 | /** 64 | * 演示模式异常 65 | */ 66 | @ExceptionHandler(DemoModeException.class) 67 | public AjaxResult demoModeException(DemoModeException e) 68 | { 69 | return AjaxResult.error("演示模式,不允许操作"); 70 | } 71 | 72 | } 73 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/role/service/IRoleService.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.role.service; 2 | 3 | import java.util.List; 4 | import java.util.Set; 5 | import com.jetfire.project.system.role.domain.Role; 6 | 7 | /** 8 | * 角色业务层 9 | * 10 | * @author jetfire 11 | */ 12 | public interface IRoleService 13 | { 14 | 15 | /** 16 | * 根据条件分页查询角色数据 17 | * 18 | * @param role 角色信息 19 | * @return 角色数据集合信息 20 | */ 21 | public List selectRoleList(Role role); 22 | 23 | /** 24 | * 根据用户ID查询角色 25 | * 26 | * @param userId 用户ID 27 | * @return 权限列表 28 | */ 29 | public Set selectRoleKeys(Long userId); 30 | 31 | /** 32 | * 根据用户ID查询角色 33 | * 34 | * @param userId 用户ID 35 | * @return 角色列表 36 | */ 37 | public List selectRolesByUserId(Long userId); 38 | 39 | /** 40 | * 查询所有角色 41 | * 42 | * @return 角色列表 43 | */ 44 | public List selectRoleAll(); 45 | 46 | /** 47 | * 通过角色ID查询角色 48 | * 49 | * @param roleId 角色ID 50 | * @return 角色对象信息 51 | */ 52 | public Role selectRoleById(Long roleId); 53 | 54 | /** 55 | * 通过角色ID删除角色 56 | * 57 | * @param roleId 角色ID 58 | * @return 结果 59 | */ 60 | public boolean deleteRoleById(Long roleId); 61 | 62 | /** 63 | * 批量删除角色用户信息 64 | * 65 | * @param ids 需要删除的数据ID 66 | */ 67 | public int deleteRoleByIds(String ids) throws Exception; 68 | 69 | /** 70 | * 新增保存角色信息 71 | * 72 | * @param role 角色信息 73 | * @return 结果 74 | */ 75 | public int insertRole(Role role); 76 | 77 | /** 78 | * 修改保存角色信息 79 | * 80 | * @param role 角色信息 81 | * @return 结果 82 | */ 83 | public int updateRole(Role role); 84 | 85 | /** 86 | * 校验角色名称是否唯一 87 | * 88 | * @param role 角色信息 89 | * @return 结果 90 | */ 91 | public String checkRoleNameUnique(Role role); 92 | 93 | /** 94 | * 通过角色ID查询角色使用数量 95 | * 96 | * @param roleId 角色ID 97 | * @return 结果 98 | */ 99 | public int countUserRoleByRoleId(Long roleId); 100 | 101 | } 102 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/ScheduleConfig.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import org.springframework.context.annotation.Bean; 4 | import org.springframework.context.annotation.Configuration; 5 | import org.springframework.scheduling.quartz.SchedulerFactoryBean; 6 | import javax.sql.DataSource; 7 | import java.util.Properties; 8 | 9 | /** 10 | * 定时任务配置 11 | * 12 | * @author jetfire 13 | * 14 | */ 15 | @Configuration 16 | public class ScheduleConfig 17 | { 18 | 19 | @Bean 20 | public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) 21 | { 22 | SchedulerFactoryBean factory = new SchedulerFactoryBean(); 23 | factory.setDataSource(dataSource); 24 | 25 | // quartz参数 26 | Properties prop = new Properties(); 27 | prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler"); 28 | prop.put("org.quartz.scheduler.instanceId", "AUTO"); 29 | // 线程池配置 30 | prop.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool"); 31 | prop.put("org.quartz.threadPool.threadCount", "20"); 32 | prop.put("org.quartz.threadPool.threadPriority", "5"); 33 | // JobStore配置 34 | prop.put("org.quartz.jobStore.class", "org.quartz.impl.jdbcjobstore.JobStoreTX"); 35 | // 集群配置 36 | prop.put("org.quartz.jobStore.isClustered", "true"); 37 | prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000"); 38 | prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1"); 39 | prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true"); 40 | 41 | prop.put("org.quartz.jobStore.misfireThreshold", "12000"); 42 | prop.put("org.quartz.jobStore.tablePrefix", "QRTZ_"); 43 | factory.setQuartzProperties(prop); 44 | 45 | factory.setSchedulerName("RuoyiScheduler"); 46 | // 延时启动 47 | factory.setStartupDelay(1); 48 | factory.setApplicationContextSchedulerContextKey("applicationContextKey"); 49 | // 可选,QuartzScheduler 50 | // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了 51 | factory.setOverwriteExistingJobs(true); 52 | // 设置自动启动,默认为true 53 | factory.setAutoStartup(true); 54 | 55 | return factory; 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/project/system/user/controller/LoginController.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.project.system.user.controller; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import javax.servlet.http.HttpServletResponse; 5 | import org.apache.shiro.SecurityUtils; 6 | import org.apache.shiro.authc.AuthenticationException; 7 | import org.apache.shiro.authc.UsernamePasswordToken; 8 | import org.apache.shiro.subject.Subject; 9 | import org.springframework.stereotype.Controller; 10 | import org.springframework.web.bind.annotation.GetMapping; 11 | import org.springframework.web.bind.annotation.PostMapping; 12 | import org.springframework.web.bind.annotation.ResponseBody; 13 | import com.jetfire.common.utils.ServletUtils; 14 | import com.jetfire.common.utils.StringUtils; 15 | import com.jetfire.framework.web.controller.BaseController; 16 | import com.jetfire.framework.web.domain.AjaxResult; 17 | 18 | /** 19 | * 登录验证 20 | * 21 | * @author jetfire 22 | */ 23 | @Controller 24 | public class LoginController extends BaseController 25 | { 26 | 27 | @GetMapping("/login") 28 | public String login(HttpServletRequest request, HttpServletResponse response) 29 | { 30 | // 如果是Ajax请求,返回Json字符串。 31 | if (ServletUtils.isAjaxRequest((HttpServletRequest) request)) 32 | { 33 | return ServletUtils.renderString(response, "{\"code\":\"1\",\"msg\":\"未登录或登录超时。请重新登录\"}"); 34 | } 35 | 36 | return "login"; 37 | } 38 | 39 | @PostMapping("/login") 40 | @ResponseBody 41 | public AjaxResult ajaxLogin(String username, String password, Boolean rememberMe) 42 | { 43 | UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe); 44 | Subject subject = SecurityUtils.getSubject(); 45 | try 46 | { 47 | subject.login(token); 48 | return success(); 49 | } 50 | catch (AuthenticationException e) 51 | { 52 | String msg = "用户或密码错误"; 53 | if (StringUtils.isNotEmpty(e.getMessage())) 54 | { 55 | msg = e.getMessage(); 56 | } 57 | return error(msg); 58 | } 59 | } 60 | 61 | @GetMapping("/unauth") 62 | public String unauth() 63 | { 64 | return "/error/unauth"; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /src/main/resources/templates/vm/java/ServiceImpl.java.vm: -------------------------------------------------------------------------------- 1 | package ${package}.service; 2 | 3 | import java.util.List; 4 | import org.springframework.beans.factory.annotation.Autowired; 5 | import org.springframework.stereotype.Service; 6 | import ${package}.mapper.${className}Mapper; 7 | import ${package}.domain.${className}; 8 | import ${package}.service.I${className}Service; 9 | import com.jetfire.common.support.Convert; 10 | 11 | /** 12 | * ${tableComment} 服务层实现 13 | * 14 | * @author ${author} 15 | * @date ${datetime} 16 | */ 17 | @Service 18 | public class ${className}ServiceImpl implements I${className}Service 19 | { 20 | @Autowired 21 | private ${className}Mapper ${classname}Mapper; 22 | 23 | /** 24 | * 查询${tableComment}信息 25 | * 26 | * @param ${primaryKey.attrname} ${tableComment}ID 27 | * @return ${tableComment}信息 28 | */ 29 | @Override 30 | public ${className} select${className}ById(${primaryKey.attrType} ${primaryKey.attrname}) 31 | { 32 | return ${classname}Mapper.select${className}ById(${primaryKey.attrname}); 33 | } 34 | 35 | /** 36 | * 查询${tableComment}列表 37 | * 38 | * @param ${classname} ${tableComment}信息 39 | * @return ${tableComment}集合 40 | */ 41 | @Override 42 | public List<${className}> select${className}List(${className} ${classname}) 43 | { 44 | return ${classname}Mapper.select${className}List(${classname}); 45 | } 46 | 47 | /** 48 | * 新增${tableComment} 49 | * 50 | * @param ${classname} ${tableComment}信息 51 | * @return 结果 52 | */ 53 | @Override 54 | public int insert${className}(${className} ${classname}) 55 | { 56 | return ${classname}Mapper.insert${className}(${classname}); 57 | } 58 | 59 | /** 60 | * 修改${tableComment} 61 | * 62 | * @param ${classname} ${tableComment}信息 63 | * @return 结果 64 | */ 65 | @Override 66 | public int update${className}(${className} ${classname}) 67 | { 68 | return ${classname}Mapper.update${className}(${classname}); 69 | } 70 | 71 | /** 72 | * 删除${tableComment}对象 73 | * 74 | * @param ids 需要删除的数据ID 75 | * @return 结果 76 | */ 77 | @Override 78 | public int delete${className}ByIds(String ids) 79 | { 80 | return ${classname}Mapper.delete${className}ByIds(Convert.toStrArray(ids)); 81 | } 82 | 83 | } 84 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/shiro/session/OnlineSessionFactory.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.shiro.session; 2 | 3 | import javax.servlet.http.HttpServletRequest; 4 | import org.apache.shiro.session.Session; 5 | import org.apache.shiro.session.mgt.SessionContext; 6 | import org.apache.shiro.session.mgt.SessionFactory; 7 | import org.apache.shiro.web.session.mgt.WebSessionContext; 8 | import org.springframework.stereotype.Component; 9 | import com.jetfire.common.utils.ServletUtils; 10 | import com.jetfire.common.utils.IpUtils; 11 | import com.jetfire.common.utils.StringUtils; 12 | import com.jetfire.project.monitor.online.domain.OnlineSession; 13 | import com.jetfire.project.monitor.online.domain.UserOnline; 14 | import eu.bitwalker.useragentutils.UserAgent; 15 | 16 | /** 17 | * 自定义sessionFactory会话 18 | * 19 | * @author jetfire 20 | */ 21 | @Component 22 | public class OnlineSessionFactory implements SessionFactory 23 | { 24 | public Session createSession(UserOnline userOnline) 25 | { 26 | OnlineSession onlineSession = userOnline.getSession(); 27 | if (StringUtils.isNotNull(onlineSession) && onlineSession.getId() == null) 28 | { 29 | onlineSession.setId(userOnline.getSessionId()); 30 | } 31 | return userOnline.getSession(); 32 | } 33 | 34 | @Override 35 | public Session createSession(SessionContext initData) 36 | { 37 | OnlineSession session = new OnlineSession(); 38 | if (initData != null && initData instanceof WebSessionContext) 39 | { 40 | WebSessionContext sessionContext = (WebSessionContext) initData; 41 | HttpServletRequest request = (HttpServletRequest) sessionContext.getServletRequest(); 42 | if (request != null) 43 | { 44 | UserAgent userAgent = UserAgent.parseUserAgentString(ServletUtils.getRequest().getHeader("User-Agent")); 45 | // 获取客户端操作系统 46 | String os = userAgent.getOperatingSystem().getName(); 47 | // 获取客户端浏览器 48 | String browser = userAgent.getBrowser().getName(); 49 | session.setHost(IpUtils.getIpAddr(request)); 50 | session.setBrowser(browser); 51 | session.setOs(os); 52 | } 53 | } 54 | return session; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/main/resources/templates/monitor/operlog/detail.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 |
8 |
9 |
10 | 11 |
12 |
13 |
14 |
15 | 16 |
17 |
18 |
19 |
20 | 21 |
22 |
23 |
24 |
25 | 26 |
27 |
28 |
29 |
30 | 31 |
32 |
33 |
34 |
35 | 36 |
37 |
38 |
39 |
40 | 41 |
42 |
43 |
44 |
45 |
46 | 47 |
48 |
49 |
50 |
51 |
52 | 53 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/exception/file/InvalidExtensionException.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.exception.file; 2 | 3 | import java.util.Arrays; 4 | import org.apache.commons.fileupload.FileUploadException; 5 | 6 | /** 7 | * 文件上传 误异常类 8 | * 9 | * @author jetfire 10 | */ 11 | public class InvalidExtensionException extends FileUploadException 12 | { 13 | 14 | private static final long serialVersionUID = 1L; 15 | 16 | private String[] allowedExtension; 17 | private String extension; 18 | private String filename; 19 | 20 | public InvalidExtensionException(String[] allowedExtension, String extension, String filename) 21 | { 22 | super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" 23 | + Arrays.toString(allowedExtension) + "]"); 24 | this.allowedExtension = allowedExtension; 25 | this.extension = extension; 26 | this.filename = filename; 27 | } 28 | 29 | public String[] getAllowedExtension() 30 | { 31 | return allowedExtension; 32 | } 33 | 34 | public String getExtension() 35 | { 36 | return extension; 37 | } 38 | 39 | public String getFilename() 40 | { 41 | return filename; 42 | } 43 | 44 | public static class InvalidImageExtensionException extends InvalidExtensionException 45 | { 46 | private static final long serialVersionUID = 1L; 47 | 48 | public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) 49 | { 50 | super(allowedExtension, extension, filename); 51 | } 52 | } 53 | 54 | public static class InvalidFlashExtensionException extends InvalidExtensionException 55 | { 56 | private static final long serialVersionUID = 1L; 57 | 58 | public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) 59 | { 60 | super(allowedExtension, extension, filename); 61 | } 62 | } 63 | 64 | public static class InvalidMediaExtensionException extends InvalidExtensionException 65 | { 66 | private static final long serialVersionUID = 1L; 67 | 68 | public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) 69 | { 70 | super(allowedExtension, extension, filename); 71 | } 72 | } 73 | 74 | } 75 | -------------------------------------------------------------------------------- /src/main/resources/mybatis/monitor/LogininforMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | insert into sys_logininfor (login_name, status, ipaddr, login_location, browser, os, msg, login_time) 21 | values (#{loginName}, #{status}, #{ipaddr}, #{loginLocation}, #{browser}, #{os}, #{msg}, sysdate()) 22 | 23 | 24 | 44 | 45 | 46 | delete from sys_logininfor where info_id in 47 | 48 | #{infoId} 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/framework/config/KaptchaTextCreator.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.framework.config; 2 | 3 | import java.util.Random; 4 | import com.google.code.kaptcha.text.impl.DefaultTextCreator; 5 | 6 | /** 7 | * 验证码文本生成器 8 | * 9 | * @author jetfire 10 | */ 11 | public class KaptchaTextCreator extends DefaultTextCreator 12 | { 13 | 14 | private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(","); 15 | 16 | @Override 17 | public String getText() 18 | { 19 | Integer result = 0; 20 | Random random = new Random(); 21 | int x = random.nextInt(10); 22 | int y = random.nextInt(10); 23 | StringBuilder suChinese = new StringBuilder(); 24 | int randomoperands = (int) Math.round(Math.random() * 2); 25 | if (randomoperands == 0) 26 | { 27 | result = x * y; 28 | suChinese.append(CNUMBERS[x]); 29 | suChinese.append("*"); 30 | suChinese.append(CNUMBERS[y]); 31 | } 32 | else if (randomoperands == 1) 33 | { 34 | if (!(x == 0) && y % x == 0) 35 | { 36 | result = y / x; 37 | suChinese.append(CNUMBERS[y]); 38 | suChinese.append("/"); 39 | suChinese.append(CNUMBERS[x]); 40 | } 41 | else 42 | { 43 | result = x + y; 44 | suChinese.append(CNUMBERS[x]); 45 | suChinese.append("+"); 46 | suChinese.append(CNUMBERS[y]); 47 | } 48 | } 49 | else if (randomoperands == 2) 50 | { 51 | if (x >= y) 52 | { 53 | result = x - y; 54 | suChinese.append(CNUMBERS[x]); 55 | suChinese.append("-"); 56 | suChinese.append(CNUMBERS[y]); 57 | } 58 | else 59 | { 60 | result = y - x; 61 | suChinese.append(CNUMBERS[y]); 62 | suChinese.append("-"); 63 | suChinese.append(CNUMBERS[x]); 64 | } 65 | } 66 | else 67 | { 68 | result = x + y; 69 | suChinese.append(CNUMBERS[x]); 70 | suChinese.append("+"); 71 | suChinese.append(CNUMBERS[y]); 72 | } 73 | suChinese.append("=?@" + result); 74 | return suChinese.toString(); 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/main/resources/application.yml: -------------------------------------------------------------------------------- 1 | # 项目名称、版本、版权年份 2 | Jetfire: 3 | name: Jetfire 4 | version: 1.0.0 5 | copyrightYear: 2018 6 | profile: D:/profile/ 7 | 8 | #开发环境配置 9 | server: 10 | #端口 11 | port: 808 12 | tomcat: 13 | uri-encoding: utf-8 14 | #日志配置 15 | logging: 16 | level: 17 | com.jetfire: debug 18 | org.springframework: WARN 19 | org.spring.springboot.dao: debug 20 | #用户配置 21 | user: 22 | password: 23 | #密码错误{maxRetryCount}次锁定10分钟 24 | maxRetryCount: 5 25 | #Spring配置 26 | spring: 27 | thymeleaf: 28 | mode: HTML5 29 | encoding: utf-8 30 | #生产环境开启-true 31 | cache: false 32 | messages: 33 | #国际化资源文件路径 34 | basename: i18n/messages 35 | jackson: 36 | time-zone: GMT+8 37 | date-format: yyyy-MM-dd HH:mm:ss 38 | profiles: 39 | active: druid 40 | #文件上传 41 | servlet: 42 | multipart: 43 | max-file-size: 30MB 44 | max-request-size: 30MB 45 | 46 | devtools: 47 | restart: 48 | #禁用devtools模块的热部署功能 49 | enabled: true 50 | # MyBatis 51 | mybatis: 52 | # 搜索指定包别名 53 | typeAliasesPackage: com.jetfire.project 54 | # 配置mapper的扫描,找到所有的mapper.xml映射文件 55 | mapperLocations: classpath:mybatis/**/*Mapper.xml 56 | # 加载全局的配置文件 57 | configLocation: classpath:mybatis/mybatis-config.xml 58 | # PageHelper 59 | pagehelper: 60 | helperDialect: mysql 61 | reasonable: true 62 | supportMethodsArguments: true 63 | params: count=countSql 64 | # Shiro 65 | shiro: 66 | user: 67 | # 登录地址 68 | loginUrl: /login 69 | # 权限认证失败地址 70 | unauthorizedUrl: /unauth 71 | # 首页地址 72 | indexUrl: /index 73 | # 验证码开关 74 | captchaEbabled: true 75 | # 验证码类型 math 数组计算 char 字符 76 | captchaType: char 77 | cookie: 78 | # 设置Cookie的域名 默认空,即当前访问的域名 79 | domain: 80 | # 设置cookie的有效访问路径 81 | path: / 82 | # 设置HttpOnly属性 83 | httpOnly: true 84 | # 设置Cookie的过期时间,天为单位 85 | maxAge: 30 86 | session: 87 | # Session超时时间(默认30分钟) 88 | expireTime: 30 89 | # 同步session到数据库的周期(默认1分钟) 90 | dbSyncPeriod: 1 91 | # 相隔多久检查一次session的有效性,默认就是10分钟 92 | validationInterval: 10 93 | # 代码生成 94 | gen: 95 | # 作者 96 | author: jetfire 97 | # 默认生成包路径 module 需改成自己的模块名称 如 system monitor tool 98 | packageName: com.jetfire.project.module 99 | # 自动去除表前缀,默认是true 100 | autoRemovePre: true 101 | # 表前缀(类名不会包含表前缀) 102 | tablePrefix: sys_ -------------------------------------------------------------------------------- /src/main/resources/mybatis/tool/GenMapper.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | select table_name, table_comment, create_time, update_time from information_schema.tables 22 | 23 | 24 | 40 | 41 | 46 | 47 | 51 | 52 | -------------------------------------------------------------------------------- /src/main/java/com/jetfire/common/utils/security/ShiroUtils.java: -------------------------------------------------------------------------------- 1 | package com.jetfire.common.utils.security; 2 | 3 | import org.apache.shiro.SecurityUtils; 4 | import org.apache.shiro.mgt.RealmSecurityManager; 5 | import org.apache.shiro.session.Session; 6 | import org.apache.shiro.subject.PrincipalCollection; 7 | import org.apache.shiro.subject.SimplePrincipalCollection; 8 | import org.apache.shiro.subject.Subject; 9 | 10 | import com.jetfire.common.utils.bean.BeanUtils; 11 | import com.jetfire.framework.shiro.realm.UserRealm; 12 | import com.jetfire.project.system.user.domain.User; 13 | 14 | /** 15 | * shiro 工具类 16 | * 17 | * @author jetfire 18 | */ 19 | public class ShiroUtils 20 | { 21 | 22 | public static Subject getSubjct() 23 | { 24 | return SecurityUtils.getSubject(); 25 | } 26 | 27 | public static Session getSession() 28 | { 29 | return SecurityUtils.getSubject().getSession(); 30 | } 31 | 32 | public static void logout() 33 | { 34 | getSubjct().logout(); 35 | } 36 | 37 | public static User getUser() 38 | { 39 | User user = new User(); 40 | BeanUtils.copyBeanProp(user, getSubjct().getPrincipal()); 41 | return user; 42 | } 43 | 44 | public static void setUser(User user) 45 | { 46 | Subject subject = getSubjct(); 47 | PrincipalCollection principalCollection = subject.getPrincipals(); 48 | String realmName = principalCollection.getRealmNames().iterator().next(); 49 | PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName); 50 | // 重新加载Principal 51 | subject.runAs(newPrincipalCollection); 52 | } 53 | 54 | public static void clearCachedAuthorizationInfo() 55 | { 56 | RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager(); 57 | UserRealm realm = (UserRealm) rsm.getRealms().iterator().next(); 58 | realm.clearCachedAuthorizationInfo(); 59 | } 60 | 61 | public static Long getUserId() 62 | { 63 | return getUser().getUserId().longValue(); 64 | } 65 | 66 | public static String getLoginName() 67 | { 68 | return getUser().getLoginName(); 69 | } 70 | 71 | public static String getIp() 72 | { 73 | return getSubjct().getSession().getHost(); 74 | } 75 | 76 | public static String getSessionId() 77 | { 78 | return String.valueOf(getSubjct().getSession().getId()); 79 | } 80 | } 81 | --------------------------------------------------------------------------------