Showing preview only (8,365K chars total). Download the full file or copy to clipboard to get everything.
Repository: enilu/material-admin
Branch: master
Commit: 82fa7e8ca363
Files: 757
Total size: 7.6 MB
Directory structure:
gitextract_tobjk67h/
├── .gitignore
├── CHANGELOG.md
├── LICENSE
├── README.md
├── README.zh-CN.md
├── doc/
│ ├── .vuepress/
│ │ └── config.js
│ ├── README.md
│ ├── action/
│ │ ├── cache.md
│ │ ├── jpaauditing.md
│ │ ├── sqlite.md
│ │ └── task.md
│ ├── base/
│ │ ├── jdkAndMaven.md
│ │ ├── modules.md
│ │ └── preface.md
│ ├── config/
│ │ ├── application.md
│ │ ├── beetl.md
│ │ ├── ehcache.md
│ │ ├── logback.md
│ │ ├── shiro.md
│ │ └── swagger.md
│ ├── donate.md
│ ├── ecosystem/
│ │ ├── code-generator.md
│ │ └── database-doc-generator.md
│ ├── feature/
│ │ ├── dict.md
│ │ ├── log.md
│ │ ├── menu.md
│ │ ├── modules.md
│ │ └── monitor.md
│ ├── helloworld/
│ │ ├── add.md
│ │ ├── base.md
│ │ ├── create_table.md
│ │ ├── crud.md
│ │ ├── delete.md
│ │ ├── list.md
│ │ ├── menuAndPermission.md
│ │ └── update.md
│ ├── other/
│ │ └── faq.md
│ ├── package.json
│ ├── quickstart/
│ │ ├── clone.md
│ │ ├── config.md
│ │ ├── initDb.md
│ │ ├── quickstart.md
│ │ └── startup.md
│ ├── resource.md
│ └── 文档完善中
├── material-core/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── enilu/
│ │ └── material/
│ │ ├── aop/
│ │ │ ├── LogAop.java
│ │ │ └── PermissionAop.java
│ │ ├── bean/
│ │ │ ├── constant/
│ │ │ │ ├── Const.java
│ │ │ │ ├── cache/
│ │ │ │ │ ├── Cache.java
│ │ │ │ │ └── CacheKey.java
│ │ │ │ ├── factory/
│ │ │ │ │ └── PageFactory.java
│ │ │ │ ├── package-info.java
│ │ │ │ └── state/
│ │ │ │ ├── BizLogType.java
│ │ │ │ ├── LogSucceed.java
│ │ │ │ ├── LogType.java
│ │ │ │ ├── ManagerStatus.java
│ │ │ │ ├── MenuStatus.java
│ │ │ │ └── Order.java
│ │ │ ├── core/
│ │ │ │ ├── BussinessLog.java
│ │ │ │ ├── Permission.java
│ │ │ │ └── ShiroUser.java
│ │ │ ├── dictmap/
│ │ │ │ ├── CfgDict.java
│ │ │ │ ├── CommonDict.java
│ │ │ │ ├── DeleteDict.java
│ │ │ │ ├── DeptDict.java
│ │ │ │ ├── DictMap.java
│ │ │ │ ├── LogDict.java
│ │ │ │ ├── MenuDict.java
│ │ │ │ ├── NoticeMap.java
│ │ │ │ ├── RoleDict.java
│ │ │ │ ├── SystemDict.java
│ │ │ │ ├── TaskDict.java
│ │ │ │ ├── UserDict.java
│ │ │ │ └── base/
│ │ │ │ └── AbstractDictMap.java
│ │ │ ├── dto/
│ │ │ │ └── UserDto.java
│ │ │ ├── entity/
│ │ │ │ ├── BaseEntity.java
│ │ │ │ ├── message/
│ │ │ │ │ ├── Message.java
│ │ │ │ │ ├── MessageSender.java
│ │ │ │ │ └── MessageTemplate.java
│ │ │ │ ├── system/
│ │ │ │ │ ├── Cfg.java
│ │ │ │ │ ├── Dept.java
│ │ │ │ │ ├── Dict.java
│ │ │ │ │ ├── FileInfo.java
│ │ │ │ │ ├── LoginLog.java
│ │ │ │ │ ├── Menu.java
│ │ │ │ │ ├── Notice.java
│ │ │ │ │ ├── OperationLog.java
│ │ │ │ │ ├── Relation.java
│ │ │ │ │ ├── Role.java
│ │ │ │ │ ├── Task.java
│ │ │ │ │ ├── TaskLog.java
│ │ │ │ │ └── User.java
│ │ │ │ └── test/
│ │ │ │ └── Boy.java
│ │ │ ├── enumeration/
│ │ │ │ ├── BizExceptionEnum.java
│ │ │ │ ├── ConfigKeyEnum.java
│ │ │ │ ├── ProjectEnum.java
│ │ │ │ ├── RedisQueueName.java
│ │ │ │ ├── SerialNumberEnum.java
│ │ │ │ ├── TypeEnum.java
│ │ │ │ └── cms/
│ │ │ │ ├── BannerTypeEnum.java
│ │ │ │ └── ChannelEnum.java
│ │ │ ├── exception/
│ │ │ │ ├── ApplicationException.java
│ │ │ │ ├── ExceptionEnum.java
│ │ │ │ ├── InvalidKaptchaException.java
│ │ │ │ ├── MailException.java
│ │ │ │ ├── ParamException.java
│ │ │ │ ├── ServiceExceptionEnum.java
│ │ │ │ ├── SlConnectException.java
│ │ │ │ ├── SlEvalException.java
│ │ │ │ ├── ValidException.java
│ │ │ │ ├── XSException.java
│ │ │ │ └── XSRuntimeException.java
│ │ │ └── vo/
│ │ │ ├── DictVo.java
│ │ │ ├── QuartzJob.java
│ │ │ ├── SpringContextHolder.java
│ │ │ ├── front/
│ │ │ │ ├── Ret.java
│ │ │ │ └── Rets.java
│ │ │ ├── node/
│ │ │ │ ├── DeptNode.java
│ │ │ │ ├── IsMenu.java
│ │ │ │ ├── MenuNode.java
│ │ │ │ ├── Node.java
│ │ │ │ └── ZTreeNode.java
│ │ │ └── query/
│ │ │ ├── DynamicSpecifications.java
│ │ │ ├── MutiStrFactory.java
│ │ │ ├── Page.java
│ │ │ └── SearchFilter.java
│ │ ├── dao/
│ │ │ ├── BaseRepository.java
│ │ │ ├── BaseRepositoryFactoryBean.java
│ │ │ ├── BaseRepositoryImpl.java
│ │ │ ├── DaoConfiguration.java
│ │ │ ├── cache/
│ │ │ │ ├── BaseCache.java
│ │ │ │ ├── Cache.java
│ │ │ │ ├── CacheDao.java
│ │ │ │ ├── ConfigCache.java
│ │ │ │ ├── DictCache.java
│ │ │ │ ├── TokenCache.java
│ │ │ │ ├── impl/
│ │ │ │ │ ├── ConfigCacheImpl.java
│ │ │ │ │ ├── DictCacheImpl.java
│ │ │ │ │ └── EhcacheDao.java
│ │ │ │ └── package-info.java
│ │ │ ├── message/
│ │ │ │ ├── MessageRepository.java
│ │ │ │ ├── MessagesenderRepository.java
│ │ │ │ └── MessagetemplateRepository.java
│ │ │ └── system/
│ │ │ ├── CfgRepository.java
│ │ │ ├── DeptRepository.java
│ │ │ ├── DictRepository.java
│ │ │ ├── FileInfoRepository.java
│ │ │ ├── LoginLogRepository.java
│ │ │ ├── MenuRepository.java
│ │ │ ├── OperationLogRepository.java
│ │ │ ├── RelationRepository.java
│ │ │ ├── RoleRepository.java
│ │ │ ├── SysNoticeRepository.java
│ │ │ ├── TaskLogRepository.java
│ │ │ ├── TaskRepository.java
│ │ │ └── UserRepository.java
│ │ ├── factory/
│ │ │ ├── DictFieldWarpperFactory.java
│ │ │ └── UserFactory.java
│ │ ├── platform/
│ │ │ └── package-info.java
│ │ ├── service/
│ │ │ ├── BaseService.java
│ │ │ ├── CrudService.java
│ │ │ ├── DeleteService.java
│ │ │ ├── InsertService.java
│ │ │ ├── SelectService.java
│ │ │ ├── UpdateService.java
│ │ │ ├── message/
│ │ │ │ ├── MessageService.java
│ │ │ │ ├── MessagesenderService.java
│ │ │ │ ├── MessagetemplateService.java
│ │ │ │ ├── email/
│ │ │ │ │ ├── DefaultEmailSender.java
│ │ │ │ │ └── EmailSender.java
│ │ │ │ └── sms/
│ │ │ │ ├── SmsSender.java
│ │ │ │ └── tencent/
│ │ │ │ └── TencentSmsSender.java
│ │ │ ├── system/
│ │ │ │ ├── AccountService.java
│ │ │ │ ├── CfgService.java
│ │ │ │ ├── DeptService.java
│ │ │ │ ├── DictService.java
│ │ │ │ ├── FileService.java
│ │ │ │ ├── IConstantFactory.java
│ │ │ │ ├── LogObjectHolder.java
│ │ │ │ ├── LoginLogService.java
│ │ │ │ ├── MenuService.java
│ │ │ │ ├── NoticeService.java
│ │ │ │ ├── OperationLogService.java
│ │ │ │ ├── RoleService.java
│ │ │ │ ├── UserService.java
│ │ │ │ └── impl/
│ │ │ │ └── ConstantFactory.java
│ │ │ └── task/
│ │ │ ├── BaseJob.java
│ │ │ ├── JobExecuter.java
│ │ │ ├── JobService.java
│ │ │ ├── NoConurrentBaseJob.java
│ │ │ ├── QuartzConfigration.java
│ │ │ ├── TaskService.java
│ │ │ ├── TaskUtils.java
│ │ │ └── job/
│ │ │ └── HelloJob.java
│ │ ├── shiro/
│ │ │ ├── ShiroDbRealm.java
│ │ │ ├── ShiroKit.java
│ │ │ ├── check/
│ │ │ │ ├── ICheck.java
│ │ │ │ ├── PermissionCheckFactory.java
│ │ │ │ └── PermissionCheckManager.java
│ │ │ └── factory/
│ │ │ ├── IShiro.java
│ │ │ └── ShiroFactroy.java
│ │ ├── utils/
│ │ │ ├── BasicType.java
│ │ │ ├── BeanUtil.java
│ │ │ ├── BirthUtils.java
│ │ │ ├── CollectionKit.java
│ │ │ ├── Constants.java
│ │ │ ├── Convert.java
│ │ │ ├── CryptUtils.java
│ │ │ ├── DateTime.java
│ │ │ ├── DateTimeKit.java
│ │ │ ├── DateUtil.java
│ │ │ ├── HexKit.java
│ │ │ ├── HttpKit.java
│ │ │ ├── Lists.java
│ │ │ ├── Log.java
│ │ │ ├── MD5.java
│ │ │ ├── Maps.java
│ │ │ ├── MobileUtil.java
│ │ │ ├── PageKit.java
│ │ │ ├── RSAUtil.java
│ │ │ ├── RandomUtils.java
│ │ │ ├── StrKit.java
│ │ │ ├── StringUtils.java
│ │ │ ├── ToolUtil.java
│ │ │ ├── WafKit.java
│ │ │ ├── WafRequestWrapper.java
│ │ │ ├── XmlHelper.java
│ │ │ ├── ZipUtils.java
│ │ │ └── cache/
│ │ │ ├── TimeCacheMap.java
│ │ │ └── exception/
│ │ │ └── ToolBoxException.java
│ │ ├── warpper/
│ │ │ ├── BaseControllerWarpper.java
│ │ │ ├── DeptWarpper.java
│ │ │ ├── DictWarpper.java
│ │ │ ├── LogWarpper.java
│ │ │ ├── MenuWarpper.java
│ │ │ ├── NoticeWrapper.java
│ │ │ ├── RoleWarpper.java
│ │ │ └── UserWarpper.java
│ │ └── web/
│ │ ├── listener/
│ │ │ ├── CacheListener.java
│ │ │ └── ConfigListener.java
│ │ └── package-info.java
│ └── resources/
│ └── code/
│ └── code.json
├── material-generator/
│ ├── README.md
│ ├── README.zh-CN.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── enilu/
│ │ └── flash/
│ │ └── code/
│ │ ├── AbstractLoader.java
│ │ ├── CodeConfig.java
│ │ ├── ColumnDescriptor.java
│ │ ├── EntityDescLoader.java
│ │ ├── Generator.java
│ │ ├── Loader.java
│ │ ├── StrKit.java
│ │ ├── TableDescLoader.java
│ │ ├── TableDescriptor.java
│ │ └── Utils.java
│ └── resources/
│ └── code/
│ ├── code.json
│ ├── controller.vm
│ ├── repository.vm
│ ├── service.vm
│ └── view/
│ ├── add.html.vm
│ ├── edit.html.vm
│ ├── index.html.vm
│ ├── index.js.vm
│ └── info.js.vm
├── material-lab/
│ ├── README.md
│ ├── pom.xml
│ └── src/
│ └── main/
│ └── resources/
│ └── application.properties
├── material-manage/
│ ├── pom.xml
│ └── src/
│ └── main/
│ ├── java/
│ │ └── cn/
│ │ └── enilu/
│ │ └── material/
│ │ └── admin/
│ │ ├── AdminApplication.java
│ │ ├── AdminServletInitializer.java
│ │ ├── common/
│ │ │ └── constant/
│ │ │ ├── enums/
│ │ │ │ └── Status.java
│ │ │ └── state/
│ │ │ ├── ExpenseState.java
│ │ │ ├── IsMenu.java
│ │ │ └── MenuOpenStatus.java
│ │ ├── config/
│ │ │ ├── DefaultFastjsonConfig.java
│ │ │ ├── DruidConfig.java
│ │ │ ├── EhCacheConfig.java
│ │ │ ├── SpringSessionConfig.java
│ │ │ ├── SwaggerConfig.java
│ │ │ ├── UserIDAuditorConfig.java
│ │ │ ├── properties/
│ │ │ │ ├── AppProperties.java
│ │ │ │ └── BeetlProperties.java
│ │ │ └── web/
│ │ │ ├── BeetlConfig.java
│ │ │ └── ShiroConfig.java
│ │ ├── core/
│ │ │ ├── CoreFlag.java
│ │ │ ├── aop/
│ │ │ │ ├── BaseControllerExceptionHandler.java
│ │ │ │ └── GlobalExceptionHandler.java
│ │ │ ├── base/
│ │ │ │ ├── controller/
│ │ │ │ │ ├── BaseController.java
│ │ │ │ │ ├── ErrorView.java
│ │ │ │ │ └── GlobalController.java
│ │ │ │ └── tips/
│ │ │ │ ├── ErrorTip.java
│ │ │ │ ├── SuccessTip.java
│ │ │ │ └── Tip.java
│ │ │ ├── beetl/
│ │ │ │ ├── BeetlConfiguration.java
│ │ │ │ └── ShiroExt.java
│ │ │ ├── cache/
│ │ │ │ ├── BaseCacheFactory.java
│ │ │ │ ├── CacheKit.java
│ │ │ │ ├── EhcacheFactory.java
│ │ │ │ ├── ICache.java
│ │ │ │ └── ILoader.java
│ │ │ ├── datascope/
│ │ │ │ └── DataScope.java
│ │ │ ├── datasource/
│ │ │ │ └── DruidProperties.java
│ │ │ ├── intercept/
│ │ │ │ ├── SessionInterceptor.java
│ │ │ │ └── SessionTimeoutInterceptor.java
│ │ │ ├── page/
│ │ │ │ ├── PageBT.java
│ │ │ │ └── PageInfoBT.java
│ │ │ ├── qr/
│ │ │ │ ├── ImgQrTool.java
│ │ │ │ ├── MatrixToImageConfig.java
│ │ │ │ ├── MatrixToImageWriter.java
│ │ │ │ └── QrImage.java
│ │ │ ├── support/
│ │ │ │ ├── BasicType.java
│ │ │ │ ├── BeanKit.java
│ │ │ │ ├── ClassKit.java
│ │ │ │ ├── CollectionKit.java
│ │ │ │ ├── DateTime.java
│ │ │ │ ├── DateTimeKit.java
│ │ │ │ ├── HexKit.java
│ │ │ │ ├── ObjectKit.java
│ │ │ │ ├── PageKit.java
│ │ │ │ └── exception/
│ │ │ │ └── ToolBoxException.java
│ │ │ ├── util/
│ │ │ │ ├── ApiMenuFilter.java
│ │ │ │ ├── FileUtil.java
│ │ │ │ ├── HttpSessionHolder.java
│ │ │ │ ├── KaptchaUtil.java
│ │ │ │ ├── NumUtil.java
│ │ │ │ ├── PingYinUtil.java
│ │ │ │ ├── RenderUtil.java
│ │ │ │ ├── ResKit.java
│ │ │ │ └── SqlUtil.java
│ │ │ └── xss/
│ │ │ ├── XssFilter.java
│ │ │ └── XssHttpServletRequestWrapper.java
│ │ ├── modular/
│ │ │ ├── lab/
│ │ │ │ ├── controller/
│ │ │ │ │ └── LabController.java
│ │ │ │ └── package-info.java
│ │ │ ├── message/
│ │ │ │ ├── MessageController.java
│ │ │ │ ├── MessagesenderController.java
│ │ │ │ └── MessagetemplateController.java
│ │ │ └── system/
│ │ │ ├── controller/
│ │ │ │ ├── BlackboardController.java
│ │ │ │ ├── CfgController.java
│ │ │ │ ├── DeptController.java
│ │ │ │ ├── DictController.java
│ │ │ │ ├── KaptchaController.java
│ │ │ │ ├── LogController.java
│ │ │ │ ├── LoginController.java
│ │ │ │ ├── LoginLogController.java
│ │ │ │ ├── MenuController.java
│ │ │ │ ├── NoticeController.java
│ │ │ │ ├── RoleController.java
│ │ │ │ ├── TaskController.java
│ │ │ │ └── UserMgrController.java
│ │ │ └── transfer/
│ │ │ ├── ManagerUser.java
│ │ │ ├── ReqAddManager.java
│ │ │ └── ReqEditManager.java
│ │ └── runner/
│ │ └── StartJob.java
│ ├── resources/
│ │ ├── META-INF/
│ │ │ └── spring-devtools.properties
│ │ ├── application-dev.properties
│ │ ├── application-lab.properties
│ │ ├── application-prod.properties
│ │ ├── application.properties
│ │ ├── banner.txt
│ │ ├── ehcache.xml
│ │ ├── import.sql
│ │ └── logback.xml
│ └── webapp/
│ ├── WEB-INF/
│ │ └── view/
│ │ ├── 404.html
│ │ ├── common/
│ │ │ ├── _chat.html
│ │ │ ├── _footer.html
│ │ │ ├── _header.html
│ │ │ ├── _sidebar.html
│ │ │ ├── include.html
│ │ │ ├── layout.html
│ │ │ └── tags/
│ │ │ ├── NameCon.tag
│ │ │ ├── SelectCon.tag
│ │ │ ├── TimeCon.tag
│ │ │ ├── avatar.tag
│ │ │ ├── button.tag
│ │ │ ├── datePicker.tag
│ │ │ ├── input.tag
│ │ │ ├── select.tag
│ │ │ ├── table.tag
│ │ │ └── textarea.tag
│ │ ├── index.html
│ │ ├── lab/
│ │ │ ├── actuator.html
│ │ │ └── gis.html
│ │ ├── login.html
│ │ ├── message/
│ │ │ ├── history/
│ │ │ │ ├── message.html
│ │ │ │ └── message_view.html
│ │ │ ├── sender/
│ │ │ │ ├── sender.html
│ │ │ │ ├── sender_add.html
│ │ │ │ └── sender_edit.html
│ │ │ └── template/
│ │ │ ├── template.html
│ │ │ ├── template_add.html
│ │ │ └── template_edit.html
│ │ └── system/
│ │ ├── cfg/
│ │ │ ├── cfg.html
│ │ │ ├── cfg_add.html
│ │ │ └── cfg_edit.html
│ │ ├── dept/
│ │ │ ├── dept.html
│ │ │ ├── dept_add.html
│ │ │ └── dept_edit.html
│ │ ├── dict/
│ │ │ ├── dict.html
│ │ │ ├── dict_add.html
│ │ │ └── dict_edit.html
│ │ ├── menu/
│ │ │ ├── menu.html
│ │ │ ├── menu_add.html
│ │ │ └── menu_edit.html
│ │ ├── role/
│ │ │ ├── role.html
│ │ │ ├── role_add.html
│ │ │ ├── role_assign.html
│ │ │ └── role_edit.html
│ │ ├── task/
│ │ │ ├── task.html
│ │ │ ├── task_add.html
│ │ │ ├── task_edit.html
│ │ │ └── task_log.html
│ │ └── user/
│ │ ├── user.html
│ │ ├── user_add.html
│ │ ├── user_chpwd.html
│ │ ├── user_edit.html
│ │ ├── user_roleassign.html
│ │ └── user_view.html
│ └── static/
│ ├── css/
│ │ ├── _fstyle.css
│ │ ├── app.css
│ │ ├── app.min.1.css
│ │ ├── app.min.2.css
│ │ ├── font-awesome.css
│ │ ├── material.css
│ │ └── plugins/
│ │ ├── dataTables/
│ │ │ └── dataTables.bootstrap.css
│ │ ├── jquery-treegrid/
│ │ │ └── css/
│ │ │ └── jquery.treegrid.css
│ │ ├── webuploader/
│ │ │ └── webuploader.css
│ │ └── ztree/
│ │ ├── demo.css
│ │ └── zTreeStyle.css
│ ├── fonts/
│ │ └── FontAwesome.otf
│ ├── js/
│ │ ├── charts.js
│ │ ├── common/
│ │ │ ├── Feng.js
│ │ │ ├── ajax-object.js
│ │ │ ├── bootstrap-table-object.js
│ │ │ ├── tree-table-object.js
│ │ │ ├── web-upload-object.js
│ │ │ └── ztree-object.js
│ │ ├── demo.js
│ │ ├── flot-charts/
│ │ │ ├── bar-chart.js
│ │ │ ├── curved-line-chart.js
│ │ │ ├── dynamic-chart.js
│ │ │ ├── line-chart.js
│ │ │ └── pie-chart.js
│ │ ├── functions.js
│ │ ├── hplus.js
│ │ ├── plugins/
│ │ │ ├── bootstrap-table/
│ │ │ │ └── locale/
│ │ │ │ └── bootstrap-table-zh-CN.js
│ │ │ ├── dataTables/
│ │ │ │ ├── dataTables.bootstrap.js
│ │ │ │ └── jquery.dataTables.js
│ │ │ ├── jquery-treegrid/
│ │ │ │ ├── extension/
│ │ │ │ │ └── jquery.treegrid.extension.js
│ │ │ │ └── js/
│ │ │ │ └── jquery.treegrid.bootstrap3.js
│ │ │ ├── layer/
│ │ │ │ ├── extend/
│ │ │ │ │ └── layer.ext.js
│ │ │ │ ├── laydate/
│ │ │ │ │ ├── laydate.js
│ │ │ │ │ ├── need/
│ │ │ │ │ │ └── laydate.css
│ │ │ │ │ └── skins/
│ │ │ │ │ └── default/
│ │ │ │ │ └── laydate.css
│ │ │ │ ├── layim/
│ │ │ │ │ ├── layim.css
│ │ │ │ │ └── layim.js
│ │ │ │ ├── mobile/
│ │ │ │ │ ├── layer.js
│ │ │ │ │ └── need/
│ │ │ │ │ └── layer.css
│ │ │ │ ├── skin/
│ │ │ │ │ ├── layer.css
│ │ │ │ │ └── layer.ext.css
│ │ │ │ └── theme/
│ │ │ │ └── default/
│ │ │ │ └── layer.css
│ │ │ ├── validate/
│ │ │ │ └── zh_CN.js
│ │ │ └── webuploader/
│ │ │ ├── README.md
│ │ │ ├── Uploader.swf
│ │ │ ├── webuploader.css
│ │ │ ├── webuploader.custom.js
│ │ │ ├── webuploader.fis.js
│ │ │ ├── webuploader.flashonly.js
│ │ │ ├── webuploader.html5only.js
│ │ │ ├── webuploader.js
│ │ │ ├── webuploader.noimage.js
│ │ │ ├── webuploader.nolog.js
│ │ │ └── webuploader.withoutimage.js
│ │ └── read-me.txt
│ ├── lab/
│ │ ├── README.md
│ │ └── gis/
│ │ ├── base/
│ │ │ ├── base_leaflet.draw.ext.js
│ │ │ ├── base_map.js
│ │ │ └── base_tilesUtils.js
│ │ ├── index.js
│ │ ├── js/
│ │ │ ├── base/
│ │ │ │ ├── base_leaflet.draw.ext.js
│ │ │ │ ├── base_map.js
│ │ │ │ └── base_tilesUtils.js
│ │ │ ├── jslib/
│ │ │ │ ├── LMapLib.js
│ │ │ │ ├── Leaflet/
│ │ │ │ │ ├── leaflet.css
│ │ │ │ │ ├── leaflet.functionaltilelayer.js
│ │ │ │ │ ├── leaflet.js
│ │ │ │ │ └── leaflet.markercluster.js
│ │ │ │ ├── Leaflet.PolylineDecorator-master/
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── example/
│ │ │ │ │ │ ├── example.html
│ │ │ │ │ │ └── example.js
│ │ │ │ │ ├── leaflet.polylineDecorator.js
│ │ │ │ │ └── src/
│ │ │ │ │ ├── L.LineUtil.PolylineDecorator.js
│ │ │ │ │ ├── L.PolylineDecorator.js
│ │ │ │ │ ├── L.RotatedMarker.js
│ │ │ │ │ └── L.Symbol.js
│ │ │ │ ├── Leaflet.draw/
│ │ │ │ │ ├── leaflet.draw-src.js
│ │ │ │ │ ├── leaflet.draw.css
│ │ │ │ │ └── leaflet.draw.js
│ │ │ │ ├── Leaflet.plugins/
│ │ │ │ │ └── arc.js
│ │ │ │ ├── arc.js-gh-pages/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── arc.js
│ │ │ │ │ ├── bezier.geojson
│ │ │ │ │ ├── bezier.html
│ │ │ │ │ ├── bezier.js
│ │ │ │ │ ├── bezier.py
│ │ │ │ │ ├── example/
│ │ │ │ │ │ ├── csv2arc.js
│ │ │ │ │ │ ├── round.js
│ │ │ │ │ │ ├── routes.csv
│ │ │ │ │ │ └── tracks.geojson
│ │ │ │ │ ├── index.html
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ ├── polymaps.js
│ │ │ │ │ ├── sphericalmercator.js
│ │ │ │ │ └── test.js
│ │ │ │ ├── arcDecorator.js
│ │ │ │ ├── bar.js
│ │ │ │ └── mapColumnChart.js
│ │ │ └── test/
│ │ │ ├── data/
│ │ │ │ └── cirlData.js
│ │ │ └── demo.js
│ │ └── leaflet/
│ │ ├── L.Control.Zoominfo.css
│ │ ├── L.Control.Zoominfo.js
│ │ ├── leaflet.css
│ │ └── leaflet.js
│ ├── less/
│ │ ├── app.less
│ │ └── inc/
│ │ ├── 404.less
│ │ ├── alert.less
│ │ ├── base.less
│ │ ├── bootstrap-master/
│ │ │ ├── alerts.less
│ │ │ ├── badges.less
│ │ │ ├── bootstrap.less
│ │ │ ├── breadcrumbs.less
│ │ │ ├── button-groups.less
│ │ │ ├── buttons.less
│ │ │ ├── carousel.less
│ │ │ ├── close.less
│ │ │ ├── code.less
│ │ │ ├── component-animations.less
│ │ │ ├── dropdowns.less
│ │ │ ├── forms.less
│ │ │ ├── glyphicons.less
│ │ │ ├── grid.less
│ │ │ ├── input-groups.less
│ │ │ ├── jumbotron.less
│ │ │ ├── labels.less
│ │ │ ├── list-group.less
│ │ │ ├── media.less
│ │ │ ├── mixins/
│ │ │ │ ├── alerts.less
│ │ │ │ ├── background-variant.less
│ │ │ │ ├── border-radius.less
│ │ │ │ ├── buttons.less
│ │ │ │ ├── center-block.less
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── forms.less
│ │ │ │ ├── gradients.less
│ │ │ │ ├── grid-framework.less
│ │ │ │ ├── grid.less
│ │ │ │ ├── hide-text.less
│ │ │ │ ├── image.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── list-group.less
│ │ │ │ ├── nav-divider.less
│ │ │ │ ├── nav-vertical-align.less
│ │ │ │ ├── opacity.less
│ │ │ │ ├── pagination.less
│ │ │ │ ├── panels.less
│ │ │ │ ├── progress-bar.less
│ │ │ │ ├── reset-filter.less
│ │ │ │ ├── resize.less
│ │ │ │ ├── responsive-visibility.less
│ │ │ │ ├── size.less
│ │ │ │ ├── tab-focus.less
│ │ │ │ ├── table-row.less
│ │ │ │ ├── text-emphasis.less
│ │ │ │ ├── text-overflow.less
│ │ │ │ └── vendor-prefixes.less
│ │ │ ├── mixins.less
│ │ │ ├── modals.less
│ │ │ ├── navbar.less
│ │ │ ├── navs.less
│ │ │ ├── normalize.less
│ │ │ ├── pager.less
│ │ │ ├── pagination.less
│ │ │ ├── panels.less
│ │ │ ├── popovers.less
│ │ │ ├── print.less
│ │ │ ├── progress-bars.less
│ │ │ ├── responsive-embed.less
│ │ │ ├── responsive-utilities.less
│ │ │ ├── scaffolding.less
│ │ │ ├── tables.less
│ │ │ ├── theme.less
│ │ │ ├── thumbnails.less
│ │ │ ├── tooltip.less
│ │ │ ├── type.less
│ │ │ ├── utilities.less
│ │ │ ├── variables.less
│ │ │ └── wells.less
│ │ ├── bootstrap-overrides.less
│ │ ├── breadcrumb.less
│ │ ├── button.less
│ │ ├── card.less
│ │ ├── chart.less
│ │ ├── chat.less
│ │ ├── contacts.less
│ │ ├── dropdown.less
│ │ ├── font.less
│ │ ├── footer.less
│ │ ├── form.less
│ │ ├── generics.less
│ │ ├── header.less
│ │ ├── ie-warning.less
│ │ ├── invoice.less
│ │ ├── less-plugins/
│ │ │ └── for.less
│ │ ├── list.less
│ │ ├── listview.less
│ │ ├── login.less
│ │ ├── media.less
│ │ ├── messages.less
│ │ ├── misc.less
│ │ ├── mixin.less
│ │ ├── modal.less
│ │ ├── pagination.less
│ │ ├── panel.less
│ │ ├── photos.less
│ │ ├── popover.less
│ │ ├── preloader.less
│ │ ├── pricing-table.less
│ │ ├── print.less
│ │ ├── profile.less
│ │ ├── progress-bar.less
│ │ ├── shadow.less
│ │ ├── sidebar.less
│ │ ├── skin.less
│ │ ├── table.less
│ │ ├── tabs.less
│ │ ├── todo.less
│ │ ├── tooltip.less
│ │ ├── variables.less
│ │ ├── vendor-overrides/
│ │ │ ├── bootgrid.less
│ │ │ ├── bootstrap-datetimepicker.less
│ │ │ ├── bootstrap-select.less
│ │ │ ├── chosen.less
│ │ │ ├── farbtastic.less
│ │ │ ├── fileinput.less
│ │ │ ├── fullcalendar.less
│ │ │ ├── light-gallery.less
│ │ │ ├── malihu-custom-scrollbar.less
│ │ │ ├── mediaelement.less
│ │ │ ├── noUiSlider.less
│ │ │ ├── summernote.less
│ │ │ ├── sweetalert.less
│ │ │ ├── typeahead.less
│ │ │ └── waves.less
│ │ ├── wall.less
│ │ ├── widgets.less
│ │ └── wizard.less
│ ├── modular/
│ │ ├── message/
│ │ │ ├── history/
│ │ │ │ └── message.js
│ │ │ ├── sender/
│ │ │ │ ├── sender.js
│ │ │ │ └── sender_info.js
│ │ │ └── template/
│ │ │ ├── template.js
│ │ │ └── template_info.js
│ │ └── system/
│ │ ├── cfg/
│ │ │ ├── cfg.js
│ │ │ └── cfg_info.js
│ │ ├── dept/
│ │ │ ├── dept.js
│ │ │ └── dept_info.js
│ │ ├── dict/
│ │ │ ├── dict.js
│ │ │ └── dict_info.js
│ │ ├── menu/
│ │ │ ├── menu.js
│ │ │ └── menu_info.js
│ │ ├── role/
│ │ │ ├── role.js
│ │ │ └── role_info.js
│ │ ├── task/
│ │ │ ├── task.js
│ │ │ ├── task_info.js
│ │ │ └── task_log.js
│ │ └── user/
│ │ ├── user.js
│ │ └── user_info.js
│ └── vendors/
│ ├── bootgrid/
│ │ ├── .bower.json
│ │ ├── .npmignore
│ │ ├── jquery.bootgrid.css
│ │ ├── jquery.bootgrid.fa.js
│ │ ├── jquery.bootgrid.js
│ │ └── jquery.bootgrid.updated.js
│ ├── bootstrap-growl/
│ │ └── bootstrap-growl.js
│ ├── bootstrap-wizard/
│ │ └── jquery.bootstrap.wizard.js
│ ├── bower.json
│ ├── bower_components/
│ │ ├── Waves/
│ │ │ └── 0.7.4/
│ │ │ ├── waves.css
│ │ │ └── waves.js
│ │ ├── animate.css/
│ │ │ └── animate.css
│ │ ├── autosize/
│ │ │ └── 3.0.5/
│ │ │ └── autosize.js
│ │ ├── bootstrap/
│ │ │ └── 3.3.6/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ └── bootstrap.css
│ │ │ └── js/
│ │ │ ├── bootstrap.js
│ │ │ └── npm.js
│ │ ├── bootstrap-select/
│ │ │ └── 1.7.2/
│ │ │ ├── css/
│ │ │ │ └── bootstrap-select.css
│ │ │ └── js/
│ │ │ ├── bootstrap-select.js
│ │ │ └── i18n/
│ │ │ ├── defaults-bg_BG.js
│ │ │ ├── defaults-cs_CZ.js
│ │ │ ├── defaults-da_DK.js
│ │ │ ├── defaults-de_DE.js
│ │ │ ├── defaults-en_US.js
│ │ │ ├── defaults-es_CL.js
│ │ │ ├── defaults-eu.js
│ │ │ ├── defaults-fa_IR.js
│ │ │ ├── defaults-fr_FR.js
│ │ │ ├── defaults-hu_HU.js
│ │ │ ├── defaults-it_IT.js
│ │ │ ├── defaults-ko_KR.js
│ │ │ ├── defaults-nl_NL.js
│ │ │ ├── defaults-pl_PL.js
│ │ │ ├── defaults-pt_BR.js
│ │ │ ├── defaults-pt_PT.js
│ │ │ ├── defaults-ro_RO.js
│ │ │ ├── defaults-ru_RU.js
│ │ │ ├── defaults-sk_SK.js
│ │ │ ├── defaults-sl_SI.js
│ │ │ ├── defaults-sv_SE.js
│ │ │ ├── defaults-tr_TR.js
│ │ │ ├── defaults-ua_UA.js
│ │ │ ├── defaults-zh_CN.js
│ │ │ └── defaults-zh_TW.js
│ │ ├── bootstrap-sweetalert/
│ │ │ └── lib/
│ │ │ ├── sweet-alert-animations.less
│ │ │ ├── sweet-alert-combine.less
│ │ │ ├── sweet-alert.css
│ │ │ ├── sweet-alert.js
│ │ │ └── sweet-alert.less
│ │ ├── eonasdan-bootstrap-datetimepicker/
│ │ │ └── 4.7.14/
│ │ │ └── css/
│ │ │ └── bootstrap-datetimepicker.css
│ │ ├── flot/
│ │ │ ├── jquery.flot.js
│ │ │ └── jquery.flot.resize.js
│ │ ├── flot-orderBars/
│ │ │ ├── .bower.json
│ │ │ ├── README.md
│ │ │ └── js/
│ │ │ └── jquery.flot.orderBars.js
│ │ ├── flot.curvedlines/
│ │ │ └── curvedLines.js
│ │ ├── jquery/
│ │ │ └── 2.1.4/
│ │ │ └── jquery.js
│ │ ├── jquery.easy-pie-chart/
│ │ │ └── 2.1.6/
│ │ │ └── jquery.easypiechart.js
│ │ ├── malihu-custom-scrollbar-plugin/
│ │ │ ├── jquery.mCustomScrollbar.css
│ │ │ └── jquery.mCustomScrollbar.js
│ │ ├── material-design-iconic-font/
│ │ │ └── dist/
│ │ │ └── css/
│ │ │ └── material-design-iconic-font.css
│ │ ├── moment/
│ │ │ └── 2.10.6/
│ │ │ └── moment-with-locales.js
│ │ ├── nouislider/
│ │ │ └── distribute/
│ │ │ ├── jquery.nouislider.all.js
│ │ │ └── jquery.nouislider.js
│ │ └── summernote/
│ │ └── dist/
│ │ ├── summernote-bs3.css
│ │ ├── summernote.css
│ │ └── summernote.js
│ ├── farbtastic/
│ │ ├── farbtastic.css
│ │ └── farbtastic.js
│ ├── fileinput/
│ │ ├── fileinput.js
│ │ └── fileinput.less
│ ├── input-mask/
│ │ └── input-mask.js
│ ├── sparklines/
│ │ └── jquery.sparkline.js
│ └── summernote/
│ ├── .bower.json
│ └── dist/
│ ├── summernote-bs3.css
│ ├── summernote-updated.js
│ ├── summernote.css
│ └── summernote.js
└── pom.xml
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
**/target
.idea
*.iml
log
*.log
doc/.vuepress/dist
doc/node_modules
备忘.md
.classpath
.factorypath
.vscode
.settings
.project
.DS_Store
.settings
.project
launch.json
website
================================================
FILE: CHANGELOG.md
================================================
# Change Log
## latest
- Fix 业务日志中如果获取不到字段值对应的中文名称则返回字段名本身,代替之前的null
- Issue IN查询增加使用数组作为参数
- Change 调整按钮样式
- Issue BaseService增加缓存支持
- Issue BaseService添加count方法
- Issue 添加实现性质功能:使用leaflet提供gis服务
- Issue 添加实验性质功能:使用actuator对应用进行监控
- Issue 针对ajax-object.js返回的异常信息统一处理
- Issue 代码生成功能针对列表页面生成根据字段排序功能
- Issue service层封装根据sql和条件查询数据列表功能
## Fixes
- Fix 更新缓存的时候连带更新常量工具类中使用的本地(TimeCacheMap)缓存
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019-present enilu.cn
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
English | [简体中文](./README.zh-CN.md)
## Introduction
[materail-admin](https://github.com/enilu/material-admin) is a Materail Design Admin Framework based on [Spring Boot2](https://spring.io/projects/spring-boot/) and [Bootstrap](https://www.bootcss.com/).
It includes basic functions commonly used in the background of rights management, configuration management, organization, users, scheduled tasks, and message management. Refining a typical business model can help you quickly build an enterprise back-end product system.
- [Online Demo](http://material.enilu.cn)
- Separate versions of the front and rear ends are also provided.[web-flash](http://enilu.github.com/web-flash)
## Preparation
- Download JAVA IDE :Eclipse or Intellij IDEA
- Install the Lombook plugin in the IDE.
- Install JDK1.8 ,MySQL5.5+,Maven
**Welcome to make an issue or pr**
## Features
- Department management
- Account management
- Role management
- Menu management
- Permission managemenet
- Configuration
- Dict managemenet
- Schedule
- log
## Getting started
```
# create dabase in mysql:
CREATE DATABASE IF NOT EXISTS material DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'material'@'%' IDENTIFIED BY 'material123';
GRANT ALL privileges ON material.* TO 'material'@'%';
flush privileges;
# clone the project
git clone https://github.com/enilu/material-admin.git
# enter the project directory
cd material-admin
# build and package
mvn package
# run the project
java -jar target/material.jar
# open the browser and enter:
http://localhost:8085
user/password:admin/admin
```
## Online Demo
[http://material.enilu.cn](http://material.enilu.cn)
## 交流
- Bugs: [Issues](https://github.com/enilu/material-admin/issues/new)
- QQ:752844606
- wechat:myenilu
- Gitter: [Gitter channel](https://gitter.im/springboot-material-admin/community)
## License
[MIT](https://github.com/enilu/material-admin/blob/master/LICENSE)
Copyright (c) 2017-present enilu
================================================
FILE: README.zh-CN.md
================================================
[English](./README.md) | 简体中文
## 简介
[material-admin](https://gitee.com/enilu/material-admin) 是一个通用的基础的后台管理系统,它基于[Spring Boot2](https://spring.io/projects/spring-boot/) 和 [Bootstrap](https://www.bootcss.com/)实现。它使用了当下流行的java 框架Spring Boot和基于Material Design风格的组件构建。内置了权限管理,配置管理,组织机构,用户,定时任务,消息管理等后台常用的基础功能。提炼了典型的业务模型,可以帮助你快速搭建企业级中后台产品系统。
- [在线预览](http://material.enilu.cn)
- [gitee地址](https://gitee.com/enilu/material-admin)
- 另提供前后端分离版本[web-flash](http://enilu.gitee.io/web-flash)
## 准备
你需要下载JAVA IDE :Eclipse或者Intellij IDEA
你需要在开发环境中安装Lombok插件,用以生成java entity的set get方法。
你需要在本地安装JDK1.8 ,MySQL5.5+,Maven
**如有问题请,欢迎 issue 和 pr**
## 技术选型
- 核心框架:spring boot
- 数据库层:spring data jpa
- 安全框架:Shiro
- 数据库连接池:Druid
- 缓存:Ehcache
- 前端:Beetl模版+Bootstrap
## 功能
- 部门管理
- 用户管理
- 角色管理
- 菜单管理
- 权限分配
- 参数管理
- 数据字典
- 定时任务
- 业务日志
- 登录日志
## 开发
- 克隆本项目
- 导入idea或者eclipse,确保开发工具安装了lombok插件,如果不了解该插件,请自行搜索
- 创建数据库:
```sql
CREATE DATABASE IF NOT EXISTS material DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'material'@'%' IDENTIFIED BY 'material@123ABC';
GRANT ALL privileges ON material.* TO 'material'@'%';
flush privileges;
```
- 更改配置文件中相应数据库配置
- material-manage启动的时候会自动创建表并导入src/main/resources/import.sql到数据库中,无需开发手动初始化表结构
- 启动material-manage中的类:cn.enilu.material.admin.AdminApplication
- 访问 http://localhost:8085,
- 登录,用户名密码:admin/admin
## Online Demo
[在线 Demo](http://material.enilu.cn)
## 文档
[https://enilu.gitee.io/material-admin](https://enilu.gitee.io/material-admin)
## 交流
- 关注公众号:嗨客帝国,点击web-flash菜单进群交流。

- 论坛提问
[http://bbs.enilu.cn](http://bbs.enilu.cn)
- Gitter: [Gitter channel](https://gitter.im/springboot-material-admin/community)
## License
[MIT](https://github.com/enilu/material-admin/blob/master/LICENSE)
Copyright (c) 2017-present enilu
================================================
FILE: doc/.vuepress/config.js
================================================
module.exports = {
title: 'Material Admin',
description: '使用Material Admin快速构建web应用程序',
base: '/material-admin/',
head: [
['link', { rel: 'shortcut icon', type: "image/x-icon", href: './favicon.ico' }]
],
evergreen: true,
editLinkText:'在 GitHub 上编辑此页',
port: 8081,
ga: 'UA-71886989-13',
themeConfig: {
repo: 'enilu/material-admin',
docsDir: 'docs',
editLinks: true,
editLinkText: '编辑此页面!',
nav: [
{text: '文档', link: '/'},
{text: '公告', link: 'https://www.oschina.net/p/material-admin'},
// {text: '捐赠',link:'/donate'},
{text: '资源',link:'/resource'},
{text: '周边',
items:[
{text: '代码生成',link:'/ecosystem/code-generator'},
{text: '数据库文档生成',link:'/ecosystem/database-doc-generator'},
]
},
{text: '码云',link:'https://gitee.com/enilu/material-admin'},
],
sidebar: [
{
title: '基本准备',
collapsable: false,
children: [
'/base/jdkAndMaven',
'/base/modules'
]
},
{
title: '10分钟将本项目跑起来',
collapsable: false,
children: [
'/quickstart/quickstart',
'/quickstart/clone',
'/quickstart/initDb',
'/quickstart/config',
'/quickstart/startup'
]
},
{
title: '开发第一个功能',
collapsable: false,
children: [
'/helloworld/crud',
'/helloworld/create_table',
'/helloworld/base',
'/helloworld/list',
'/helloworld/add',
'/helloworld/delete',
'/helloworld/update',
'/helloworld/menuAndPermission'
]
},
{
title: '基本功能介绍',
collapsable: false,
children: [
'/feature/modules',
'/feature/menu',
'/feature/dict',
'/feature/log',
'/feature/monitor'
]
},{
title: '进阶',
collapsable: false,
children: [
'/action/sqlite',
'/action/cache',
'/action/task',
'/action/jpaauditing.md'
]
},{
title: '其他',
collapsable: false,
children:[
'/other/faq'
]
}
]
}
}
================================================
FILE: doc/README.md
================================================
---
home: true
heroImage: /logo.png
actionText: 快速开始 →
actionLink: /base/preface
footer: MIT Licensed | Copyright © 2018-present enilu
---
<div style="text-align: center">
<Bit/>
</div>
<div class="features">
<div class="feature">
<h2>简单快捷</h2>
<p>基于spring boot快速构建web应用程序,开发,部署,维护方便快捷。</p>
</div>
<div class="feature">
<h2>功能完善</h2>
<p>封装完善的后台管理功能,包括用户、部门、权限、日志、字典、等基础功能。</p>
</div>
<div class="feature">
<h2>现代化界面</h2>
<p>使用Bootstrap和Material Design风格的前端框架做展示,拥有良好的使用体验。</p>
</div>
<div class="feature">
<h2>最新技术栈</h2>
<p>使用spring boot+jpa构建后端服务,使用Beetl+Bootstrap构建页面。</p>
</div>
<div class="feature">
<h2>成熟方案</h2>
<p>基于该系统已经上线了很多大大小小的后管系统,方案成熟,坑少。</p>
</div>
<div class="feature">
<h2>文档完善</h2>
<p>完善的文档和使用手册,帮助初级用户也可以快速构建自己的系统。</p>
</div>
</div>
================================================
FILE: doc/action/cache.md
================================================
# 缓存的应用
对缓存的应用几乎成了系统的标配,material-admin中也有对缓存的应用。
本章节介绍系统中缓存的设计和用法
## 底层缓存支持
- material-admin为了给上层应用提供缓存支持,提供了CacheDao接口,CacheDao接口负责和底层的缓存组件打交道,比如Ehcache、Redis、ssdb,甚至自己实现的缓存系统皆可。
- 在material-admin中针对CacheDao的默认实现类是EhcacheDao,没错material-admin默认使用的缓存组件就是Ehcache。
- 针对ehcache的具体用法实现,可以查看EhcacheDao的实现和ehcache.xml配置,这里不再赘述。
## 缓存应用
目前material-admin中有两种形式的缓存应用方式:
- 手动管理缓存,比如针对系统参数和字典数据的管理维护,具体用法也很简单,分为以下几个步骤
- 系统启动的时候通过CacheListener将数据加载到缓存
- 具体的功能中使用的时候注入对应的缓存类使用即可。
- 数据更新的时候重新刷新缓存
- 通过注解自动维护缓存。
- 主要在service中通过@Cacheable 和 @CacheEvict 注解来维护缓存,具体可参考BaseService中的用法
下面是一些用法的关键代码:
- CacheListner 缓存监听器,启动的时候将数据从数据库加载到缓存中
```java
@Component
public class CacheListener implements CommandLineRunner {
@Autowired
private ConfigCache configCache;
@Autowired
private DictCache dictCache;
public void loadCache() {
configCache.cache();
dictCache.cache();
}
@Override
public void run(String... strings) throws Exception {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
loadCache();
}
});
thread.start();
}
}
```
- Cache顶级缓存接口,定义了缓存基本的三个方法
```java
public interface Cache {
void cache();
Object get(String key);
void set(String key, Object val);
}
```
- Service中的缓存的使用
```java
@CacheEvict(value = Cache.APPLICATION ,key = "#root.targetClass.simpleName+':'+#id")
public void delete(ID id) {
dao.deleteById(id);
}
@Cacheable(value = Cache.APPLICATION ,key = "#root.targetClass.simpleName+':'+#id")
public T get(ID id) {
return dao.findById(id).get();
}
```
## 备注
**为什么选用Ehcahce**
- 目前最流行的缓存中间件非Redis莫属。而且我司大多数产品和项目也是使用redis,但是考虑到Ehcahe的开箱即用(直接整合到项目中,不需要部署专门的缓存服务),所以在material-admin
默认支持Ehcache,
- 想用Redis也很简单,参考EhcacheDao实现一个RedisCacheDao即可。
**当数据库中数据变化的时候缓存中的数据如何做到更新**
- material-admin中的做法简单明了,目前针对全局参数Cfg和字典Dict表的进行更新操作的时候分别调用ConfigCache和DictCache的cache()重新将数据库中的数据加载到缓存中.
- 也可以通过@CacheEvict注解来刷新缓存
- 具体生产中,也许会有很多产品都是微服务架构,这时候推荐使用zookeeper来做配置变更的管理,感兴趣的同学可以发issue或者在qq群中讨论,本文档不再赘述
================================================
FILE: doc/action/jpaauditing.md
================================================
# 使用注解自动保存数据的维护时间和修改者
通常来说,我们都有这样的需求:我需要知道库中的数据是由谁创建,什么时候创建,最后一次修改时间是什么时候,最后一次修改人是谁。
在Spring jpa中可以通过在实体bean的属性或者方法上添加以下注解来实现上述需求@CreatedDate、@CreatedBy、@LastModifiedDate、@LastModifiedBy。
- @CreatedDate 表示该字段为创建时间时间字段,在这个实体被insert的时候,会设置值
- @CreatedBy 表示该字段为创建人,在这个实体被insert的时候,会设置值
- @LastModifiedDate 最后修改时间 实体被update的时候会设置
- @LastModifiedBy 最后修改人 实体被update的时候会设置
## 使用方式
### 实体类添加注解
- 首先在实体中对应的字段加上上述4个注解
- 在material-admin中我们提取了一个基础实体类BaseEntity,并将对应的字段添加上述4个注解,所有需要记录维护信息的表对应的实体都集成该类
```java
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
import java.util.Date;
@MappedSuperclass
@Data
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue
private Long id;
@CreatedDate
@Column(name = "create_time",columnDefinition="DATETIME COMMENT '创建时间/注册时间'")
private Date createTime;
@Column(name = "create_by",columnDefinition="bigint COMMENT '创建人'")
@CreatedBy
private Long createBy;
@LastModifiedDate
@Column(name = "modify_time",columnDefinition="DATETIME COMMENT '最后更新时间'")
private Date modifyTime;
@LastModifiedBy
@Column(name = "modify_by",columnDefinition="bigint COMMENT '最后更新人'")
private Long modifyBy;
}
```
### 实现AuditorAware接口返回操作人员的id
配置完上述4个注解后,在jpa.save方法被调用的时候,时间字段会自动设置并插入数据库,但是CreatedBy和LastModifiedBy并没有赋值
这两个信息需要实现AuditorAware接口来返回操作人员的id
- 首先需要在项目启动类添加@EnableJpaAuditing 注解来启用审计功能
```java
@SpringBootApplication
@EnableJpaAuditing
public class AdminApplication extends WebMvcConfigurerAdapter {
//省略
}
```
- 然后实现AuditorAware接口返回操作人员的id
```java
@Configuration
public class UserIDAuditorConfig implements AuditorAware<Long> {
@Override
public Optional<Long> getCurrentAuditor() {
ShiroUser shiroUser = ShiroKit.getUser();
if(shiroUser!=null){
return Optional.of(shiroUser.getId());
}
return Optional.of(Constants.SYSTEM_USER_ID);
}
}
```
================================================
FILE: doc/action/sqlite.md
================================================
# 将数据库切换为sqlite
sqlite和mysql兼容性比较好,使用master分支做很小的调整就可以支持sqlite。
下面介绍如何将master分支经过简单调整将底层数据库从mysql切换为sqlite。
## 数据库替换
这节描述如何将mysql替换为sqlite。
在本系统中使用的mysql建表语句中,只需要下面字段类型调整下就可以用在sqlite中。
- 将bigint类型替换为INTEGER
- 将verchar类型替换为TEXT
- 将date、datetime类型皆替换为TEXT或INTEGER,我在我司的产品中都是替换为text类型,这样也不用考虑日期格式化的问题。
将更改过的语句在mysql中执行即可。
## entity模块调整
- 将实体类中所有日期类型的字段替换为String,当然你也可以直接继续用Date(这样的话,sqlite的对应字段类型必须为INTGER)
没错,只需要调整日期类型的属性即可,甚至也不需要调整(如果数据库中对应字段使用INTEGER的话)
## 业务代码调整
如果在上一小节,你将日期类型调整为String,那么在涉及到所有为entity设置日期属性的时候用DateUtil.getTime()代替new Date()方法即可,
DateUtil.getTime() 方法会返回当前日期的yyyy-MM-dd HH:mm:ss格式
大功告成,是不是很简单!
## 使用sqlite常见问题
### No Dialect mapping for JDBC type: 0
```
org.springframework.orm.jpa.JpaSystemException: No Dialect mapping for JDBC type: 0; nested exception is org.hibernate.MappingException: No Dialect mapping for JDBC type: 0
```
出现这个问题的原因是:
**返回值返回类型为Null,hibernate不支持SQLite的空值类型,所以需要我们自定义映射关系**
- 解决方法
- 自定义SQLiteDialect
```java
package cn.enilu.material.config;
import java.sql.Types;
public class SQLiteDialect extends com.enigmabridge.hibernate.dialect.SQLiteDialect {
public SQLiteDialect(){
super();
registerHibernateType(Types.NULL,"null");
}
}
```
- 配置该方言
```properties
spring.jpa.properties.hibernate.dialect=cn.enilu.material.config.SQLiteDialect
```
**参考资料:**
- https://kevin12.iteye.com/blog/1768258
- https://stackoverflow.com/questions/10719117/sqlite-no-dialect-mapping-for-jdbc-type-0-hibernate
================================================
FILE: doc/action/task.md
================================================
# 定时任务管理
这两年做的项目和产品几乎多有定时任务管理的需求。
常用的场景有:
- 定时给用户发送一些消息
- 定时进行一些报表的计算
- 定时去指定的接口get一些数据
- 定时降一些报表发送到指定的邮箱
当然还有很多,没有必要一一列举
## 需求
定时任务的需求通常是这样的
- 1 需要添加一个定时任务,做一些事情。但是什么时候做要我自己配置,而且还想配置一些参数进去,比如我想定时给指定的email发送邮件.
- 2 可以临时禁用一个任务。
- 3 看定时任务执行的历史日志。
## 具体用法
material-admin对定时任务管理功能的实现如下。
## 表结构
material-admin提供了两个表:t_sys_task(任务)和t_sys_task_log(任务执行日志)
- t_sys_task
```sql
CREATE TABLE `t_sys_task` (
`id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`name` varchar(50) DEFAULT NULL COMMENT '任务名',
`job_group` varchar(50) DEFAULT NULL COMMENT '任务组',
`job_class` varchar(255) DEFAULT NULL COMMENT '执行类',
`note` varchar(255) DEFAULT NULL COMMENT '任务说明',
`cron` varchar(50) DEFAULT NULL COMMENT '定时规则',
`data` text COMMENT '执行参数',
`exec_at` datetime DEFAULT NULL COMMENT '执行时间',
`exec_result` text COMMENT '执行结果',
`disabled` tinyint(1) DEFAULT NULL COMMENT '是否禁用',
`createtime` datetime DEFAULT NULL,
`creator` bigint(20) DEFAULT NULL,
`concurrent` tinyint(4) DEFAULT '0' COMMENT '是否允许并发',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
- t_sys_task_log
```sql
CREATE TABLE `t_sys_task_log` (
`id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`name` varchar(50) DEFAULT NULL COMMENT '任务名',
`exec_at` datetime DEFAULT NULL COMMENT '执行时间',
`exec_success` int(11) DEFAULT NULL COMMENT '执行结果(成功:1、失败:0)',
`job_exception` varchar(255) DEFAULT NULL COMMENT '抛出异常',
`id_task` bigint(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
```
### 创建一个定时任务类
比如我创建一个测试任务类
```java
package cn.enilu.material.service.task.job;
import cn.enilu.material.service.task.JobExecuter;
import com.alibaba.fastjson.JSON;
import org.springframework.stereotype.Component;
@Component
public class HelloJob extends JobExecuter {
@Override
public void execute(Map<String, Object> dataMap) throws Exception {
System.out.println("输出配置参数如下 :"+JSON.toJSONString(dataMap));
System.out.println("这里可以编写任意其他业务逻辑");
}
}
```
### 页面配置一个定时任务
在任务管理页面可以增上改查一个定时任务,还可以禁用、启用定时任务
- 添加定时任务

- 定时任务列表

- 查看定时任务执行历史日志

================================================
FILE: doc/base/jdkAndMaven.md
================================================
# 开发前必读
本章介绍本书所需要的一些准备工作. 请确保把各部分的准备工作完成
本文档基于Intellij IDEA,Mysql,Maven,JDK8这四个基本工具,
当然你也可以用Eclipse开发工具。
**Jdk**
- 请选用当前最新的版本,根据平台选用X64或X86版本的JDK8,并妥善安装
**MySQL**
- [Mysql官网](https://dev.mysql.com/)
- [下载页面](https://dev.mysql.com/downloads/), 选用5.6以上系列的版本
- 妥善安装,并配置账号密码
**Intellij IDEA**
- [Intellij IDEA官网](https://www.jetbrains.com/idea/)
- [下载页面](https://www.jetbrains.com/idea/download/)
- 请自行下载安装合适版本的IDEA(或者eclipse)
**Lombok**
- Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。
- 本系统用通过给实体类增加@Data注解让给实体类自动生成setter,getter方法。
- 开发之前需要安装开发工具对应的Lombok插件
- 添加新的实体的时候要再类名上增加@Data注解。
**Maven**
-[下载页面](http://maven.apache.org/download.cgi)
================================================
FILE: doc/base/modules.md
================================================
# 基本包结构
本节详细说明本项目的基本目录结构
## material-admin模块
material-admin包含3个核心模块:
- material-core 项目核心模块,包括实体层,dao层,service层,以及各种工具类
- material-generator 代码生成模块,配合IDEA Intellij的代码生成插件:webflash-generator可以提高开发效率
- material-manage 项目web模块,包含项目页面内容,controller层
其中material-manage是一个java web模块
其他都为java se模块,
================================================
FILE: doc/base/preface.md
================================================
# 前言
本文档以向导的方式引导用户使用material-admin系统做二次开发,
material-admin项目本身有readme文件,如果你有使用spring boot的和beetl的经验,那么基本上你是用不上本文档了,
有什么问题直接看代码即可。大多数功能都可以参考代码,即使找不到的google和百度也能帮到你。
但是考虑到有的开发者可能初次使用上述组件,有的甚至刚接触java不久,那么本文当将引导你一步步使用本系统搭建一个后台管理系统,并做二次开发。
## 简介
[materail-admin](https://github.com/enilu/material-admin) 是一个通用的基础的后台管理系统,它基于[Spring Boot2](https://spring.io/projects/spring-boot/) 和 [Bootstrap](https://www.bootcss.com/)实现。它使用了当下流行的java 框架Spring Boot和基于Materail Design风格的组件构建。内置了权限管理,配置管理,组织机构,用户,定时任务,消息管理等后台常用的基础功能。提炼了典型的业务模型,可以帮助你快速搭建企业级中后台产品系统。
- [在线预览](http://material.enilu.cn)
- [gitee地址](https://gitee.com/enilu/material-admin)
## 准备
你需要下载JAVA IDE :Eclipse或者Intellij IDEA
你需要在开发环境中安装Lombook插件,用以生成java entity的set get方法。
你需要在本地安装JDK1.8 ,MySQL5.5+,Maven
**如有问题请,欢迎 issue 和 pr**
## 技术选型
- 核心框架:spring boot
- 数据库层:spring data jpa
- 安全框架:Shiro
- 数据库连接池:Druid
- 缓存:Ehcache
- 前端:Beetl模版+Bootstrap
## 功能
- 部门管理
- 用户管理
- 角色管理
- 菜单管理
- 权限分配
- 参数管理
- 数据字典
- 定时任务
- 业务日志
- 登录日志
## 开发
- 克隆本项目
- 导入idea或者eclipse,确保开发工具安装了lombok插件,如果不了解该插件,请自行搜索
- 创建数据库:
```sql
CREATE DATABASE IF NOT EXISTS material DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE USER 'material'@'%' IDENTIFIED BY 'material123';
GRANT ALL privileges ON material.* TO 'material'@'%';
flush privileges;
```
- 更改配置文件中相应数据库配置
- material-manage启动的时候会自动创建表并导入src/main/resources/import.sql到数据库中,无需开发手动初始化表结构
- 启动material-manage中的类:cn.enilu.material.admin.AdminApplication
- 访问 http://localhost:8085,
- 登录,用户名密码:admin/admin
## Online Demo
[在线 Demo](http://material.enilu.cn)
## License
[MIT](https://github.com/enilu/material-admin/blob/master/LICENSE)
Copyright (c) 2017-present enilu
## 交流
- Bugs: [Issues](https://github.com/enilu/material-admin/issues/new)
- QQ: 欢迎加入qq交流群 752844606
- 微信群: 请添加myenilu好友后入群,添加备注:material-admin
- Gitter: [Gitter channel](https://gitter.im/material-admin/community)
================================================
FILE: doc/config/application.md
================================================
# application配置
完善中...
================================================
FILE: doc/config/beetl.md
================================================
# beetl模板配置
完善中...
================================================
FILE: doc/config/ehcache.md
================================================
# ehcache缓存配置
完善中...
================================================
FILE: doc/config/logback.md
================================================
# 日志输出配置
完善中...
================================================
FILE: doc/config/shiro.md
================================================
# shiro权限配置
完善中...
================================================
FILE: doc/config/swagger.md
================================================
# swagger在线文档配置
完善中...
================================================
FILE: doc/donate.md
================================================
::: tip Donate
如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励
:::
<img src="./img/donate.jpg" width = "600" align=center />
================================================
FILE: doc/ecosystem/code-generator.md
================================================
# 代码生成
## 用法
- 在material-core/pom.xml中添加依赖
```xml
<dependency>
<groupId>cn.enilu</groupId>
<artifactId>material-generator</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
```
- 下载intellij代码生成插件,在插件中心搜索并安装插件:webflash-generator
- 写好实体类,例如:
```java
package cn.enilu.material.bean.entity.test;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
@Entity(name="t_test_boy")
@Table(appliesTo = "t_test_boy",comment = "男孩")
@Data
public class Boy extends BaseEntity {
@Column(columnDefinition = "VARCHAR(32) COMMENT '姓名'")
private String name;
@Column(columnDefinition = "INT COMMENT '年龄'")
private Integer age;
@Column(columnDefinition = "VARCHAR(12) COMMENT '生日'")
private String birthday;
@Column(name = "has_girl_friend",columnDefinition = "TINYINT COMMENT '是否有女朋友'")
private Boolean hasGirFriend;
}
```
- 上面实体类注意事项
- @Table注解要使用org.hibernate.annotations.Table 不要使用javax.persistence.Table
- @Table注解 必须配置表名(applyiesTo)和注释(comment)
- @Column注解必须配置columnDefinition来表述列信息(英文全部大写):包括类型,注释COMMENT
- 实体类必须继承BaseEntity
- 实体类准备好了后,打开实体类,右键点击“Generator"-->"web-flash-mvc",弹出如下图所示对话框

**注意**不用更改对话框中的配置(大部分没有什么作用)
- 运行生成代码后,将会生成controller,service,repository,以及对应的增上改查页面和js,以TestBoy为例,生成的代码如下所示:

- 代码生成后,在系统中配置对应的菜单和权限,即可使用



================================================
FILE: doc/ecosystem/database-doc-generator.md
================================================
# 数据库文档生成器
- 这是一个简单的小工具,可以根据数据库表结构生成数据库设计文档(格式包括markdown,html,word),支持数据库(MySQL,Oracle,PostgreSQL)
- 如果你嫌PowerDesigner太重,那么可以试试该工具。
- 你可以下载[release](https://github.com/enilu/database-doc-generator/releases/tag/1.0)包来或者下载[源代码](https://github.com/enilu/database-doc-generator)来使用。
- 如果使用源代码,需要先克隆该项目后运行mvn package打包,然后运行发布包中的bin/start.bat
- 运行程序后按照下面提示输入对应数据库参数:
```bash
choose database:
1:mysql
2:oracle
3:PostgreSQL
Select the appropriate numbers choose database type
(Enter 'c' to cancel): 3
input database name:
gunslite
input host:
localhost
input port:
5432
input username:
enilu
input password:
123456
```
- 输入完成后回车,即可生成数据库文档目录${dbname}-doc,目录中文档以markdown文件为载体:

- 确保安装了gitbook后,进入上述文件目录的命令行窗口运行:gitbook serve
```bash
E:\\database-doc-generator-20181006100721\material-admin-doc>gitbook serve
openssl config failed: error:02001003:system library:fopen:No such process
Live reload server started on port: 35729
Press CTRL+C to quit ...
info: 7 plugins are installed
info: loading plugin "livereload"... OK
info: loading plugin "highlight"... OK
info: loading plugin "search"... OK
info: loading plugin "lunr"... OK
info: loading plugin "sharing"... OK
info: loading plugin "fontsettings"... OK
info: loading plugin "theme-default"... OK
info: found 15 pages
info: found 0 asset files
info: >> generation finished with success in 1.6s !
Starting server ...
Serving book on http://localhost:4000
```
- 访问 http://localhost:4000,即可在线查看数据库文档


- 另外还可以生成word文档哦;虽然有点简陋:

================================================
FILE: doc/feature/dict.md
================================================
# 字典管理
该模块提供了对各种枚举数据进行维护的功能。

后台中常量工厂ConstantFactory封装了的对字典的常规功能。
## 根据名称获取其所有字典列表
使用场景,比如页面查询表单中需要一个联系人关系的下拉框来所搜索,具体用法为:
```html
<#select id="account" name="我方账户" >
@for(dict in constant.getDicts('学历类型')){
<option value="${dict.value}" }>${dict.name}</option>
@}
</#select>
```
## 根据字典id获取字典名称
数据库中存的是字典id,但是页面展示需要具体的值
```java
String degreeName = ConstantFactory.me().findByPnameAndCode("学历类型",1).getName();
model.addAttribute('degreeName',degreeName);
```
================================================
FILE: doc/feature/log.md
================================================
# 日志管理
日志管理包括两方面:
一个是后台用户登录日志的查看
一个是业务日志查看,业务日志内容主要包含两方面:系统产生的异常和用户操作日志。
## 登录日志
用户登录系统和退出系统的时候会调用LogTaskFactory记录相关日志,并在“登录日志”页面进行展示。

## 业务日志
业务日志包含异常日志和业务操作日志两大类日志收集、保存和展示。
### 异常日志
系统提供了异常处理类:GlobalExceptionHandler 来对系统各种异常进行统一收集保存。
该类提供了九个方法来分别对9中常见的异常类型进行收集保存,如果开发者自己有特殊需求需要对其他异常类型处理。,可以通过新增处理方式来对新的异常进行收集。
### 业务操作日志
系统提供了通过注解的形式可以方便的添加业务操作日志,比如在新增部门的是增加业务日志通过如下方式:
在DeptController的新增部门方法增加注解:
```java
/**
* 新增部门
*/
@BussinessLog(value = "添加部门", key = "simplename", dict = DeptDict.class)
@RequestMapping(value = "/add")
@Permission
@ResponseBody
public Object add(Dept dept) {
if (ToolUtil.isOneEmpty(dept, dept.getSimplename())) {
throw new ApplicationException(BizExceptionEnum.REQUEST_NULL);
}
//完善pids,根据pid拿到pid的pids
deptSetPids(dept);
return this.deptRepository.save(dept);
}
```
具体的实现逻辑感兴趣的同学可以自行通过注解类:BusinessLog进行跟进查看。
================================================
FILE: doc/feature/menu.md
================================================
# 菜单管理
菜单管理包含两部分:一个是左侧菜单树的维护,一个是页面操作功能(主要是按钮)的维护。
不管是左侧菜单还是按钮,都需要在角色中进行配置才能正常显示出来。
先看下菜单列表大致了解下菜单管理都维护哪些内容:

## 左侧菜单维护
- 菜单维护基本上采用了两级菜单形式:如上图所示:第一级菜单为“系统管理”,“系统管理”中包含了“用户管理”、“角色管理”等多个二级菜单。
- 其中“系统管理”为虚拟菜单,点击“系统管理”并不会跳转到真实的页面而是展开其子菜单列表;所以虚拟菜单的请求地址应配置为“#”。
- “系统管理”下的子菜单,例如“业务日志”需要配置请求地址,比如配置为“/log”,点击“业务日志”会跳转到业务日志列表页面。
## 页面功能维护
- 菜单维护中的另外一种形式我功能(主要是操作按钮或者页面中的链接)的维护。点击按钮虽然不需要跳转到具体的页面但是也需要配置请求地址,因为代码中需要通过该地址来判断用户是否拥有操作权限。
- 例如“业务日志”菜单中有三个子菜单:“清空日志”的请求地址配置为:"log/delLog",则页面进行控制权限的写法为:
```html
@if(shiro.hasPermission("/log/delLog")){
<#button name="清空日志" icon="fa-minus" clickFun="OptLog.delLog()" space="true"/>
@}
```
菜单管理的其他维护参数不赘述,具体作用配置试用一下即可知晓。
================================================
FILE: doc/feature/modules.md
================================================
# 基本包结构
本节详细说明本项目的基本目录结构
## material-admin模块
material-admin包含3个核心模块:
- material-core
- material-generator
- material-manage
其中material-manage一个java web模块,其他都为java se项目;
具体每个包的作用通过名字即可看出包含的功能分别为:核心模块,代码生成模块,web管理模块
具体每个包里的细节不详细介绍,开发人员可以在使用过程中逐渐了解,本身代码量并不大,熟悉起来不需要花费太多时间。
这里仅详细说明下material-manage的内部结构,毕竟日常开发主要是基于该模块来做的。
## material-manage
material-manage是一个标准的java web项目

目录结构包含:
- src/main/java java源码
- src/main/resources 配置文件
- src/webapp web页面和静态文件资源
这里介绍下material-manage的基本目录和开发流程
### src/main/java/ 源代码
目录结构如下所示:

- **common** 该package 封装了一些工具的类库,如一些注解,常量、枚举,异常等公共类
- **config** 该package 包含项目支持各种特性的相关配置。例如:
- 支持swagger在线文档的配置
- EhCache缓存配置
- Session配置
- Shiro配置
- Beetl模版配置
- **core** 该package是项目的核心,包含注入数据源管理、缓存管理、模版管理、aop,监听器以及分页工具、各种工具类。
当然开发人员可以根据项目实际情况做二次调整和封装。
- **modular** 该pakcage存放和业务相关的代码。
比如目前提供了一个**system模块**,主要包含诸如:用户、角色、权限、日志等管理功能的系统管理功能。
system包中除了controller包是必须的,其他包都是根据具体情况选择是否需要。
### src/webapp web页面和静态文件资源
目录结构如下所示:

- static 目录为静态资源
- css、fonts,img,js分别为公共的样式、字体,图片,js资源
- modular 目录为业务用js资源,比如system即为admin内置功能的js资源,其中每个功能使用一个目录和WEB-INF/view/中的目录一一对应

- WEB-INF/view 为页面目录
- common 为公共的页面框架和封装的标签目录
- 其他目录为业务页面目录,比如system即为内置的功能页面包括用户、角色、权限等管理功能的页面

================================================
FILE: doc/feature/monitor.md
================================================
# 监控管理
这里的监控功能用的是alibaba druid自带的监控功能

================================================
FILE: doc/helloworld/add.md
================================================
# add
## 添加参数
添加参数功能为点击“添加”按钮后调用对应的js代码逻辑弹出添加页面,在添加页面输入相关信息提交保存,保存成功后关闭弹窗,并刷新参数列表数据.
### 添加按钮注册点击函数:
```html
@if(shiro.hasPermission("/cfg/add")){
<#button name="添加" icon="fa-plus" clickFun="Cfg.openAddCfg()" space="true"/>
@}
```
### 添加 按钮点击逻辑:
```javascript
/**
* 点击添加系统参数
*/
Cfg.openAddCfg = function () {
var index = layer.open({
type: 2,
title: '添加系统参数',
area: ['65%', '280px'], //宽高
fix: false, //不固定
maxmin: true,
content: Feng.ctxPath + '/cfg/cfg_add'
});
this.layerIndex = index;
};
```
### 添加页面代码
```html
@layout("/common/include.html"){
<div class="card">
<div class="card-body card-padding">
<div class="form-horizontal">
<input type="hidden" id="id" value="">
<div class="row">
<div class="col-sm-6 b-r">
<#input id="cfgName" name="参数名"/>
<#input id="cfgValue" name="参数值" underline="true"/>
</div>
<div class="col-sm-6">
<#input id="cfgDesc" name="参数描述" underline="true"/>
</div>
</div>
<div class="row btn-group-m-t">
<div class="col-sm-10">
<#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CfgInfoDlg.addSubmit()"/>
<#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CfgInfoDlg.close()"/>
</div>
</div>
</div>
</div>
</div>
<script src="${ctxPath}/static/modular/system/cfg/cfg_info.js"></script>
@}
```
### 点击“提交”按钮提交参数保存逻辑:
_cfg_info.js_:
```javascript
/**
* 提交添加
*/
CfgInfoDlg.addSubmit = function() {
this.clearData();
this.collectData();
//提交信息
var ajax = new $ax(Feng.ctxPath + "/cfg/add", function(data){
Feng.success("添加成功!");
window.parent.Cfg.table.refresh();
CfgInfoDlg.close();
},function(data){
Feng.error("添加失败!" + data.responseJSON.message + "!");
});
ajax.set(this.cfgInfoData);
ajax.start();
}
```
## 后台保存逻辑
```java
/**
* 跳转到添加参数页面
*/
@RequestMapping(value = "/cfg_add",method = RequestMethod.GET)
public String add() {
return PREFIX + "cfg_add.html";
}
/**
* 新增参数
*/
@RequestMapping(value = "/add",method = RequestMethod.POST)
@ResponseBody
@BussinessLog(value = "添加参数", key = "cfgName",dict = CfgDict.class)
public Object add(@Valid Cfg cfg) {
cfgService.saveOrUpdate(cfg);
return SUCCESS_TIP;
}
```
================================================
FILE: doc/helloworld/base.md
================================================
# 基础代码
## 实体Entity
```java
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.validation.constraints.NotBlank;
@Entity(name="t_sys_cfg")
@Table(appliesTo = "t_sys_cfg",comment = "系统参数")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Cfg extends BaseEntity {
@Column(name = "cfg_name",columnDefinition = "VARCHAR(256) COMMENT '参数名'")
@NotBlank(message = "参数名不能为空")
private String cfgName;
@Column(name = "cfg_value",columnDefinition = "VARCHAR(512) COMMENT '参数值'")
@NotBlank(message = "参数值不能为空")
private String cfgValue;
@Column(name = "cfg_desc",columnDefinition = "TEXT COMMENT '备注'")
private String cfgDesc;
}
```
## 数据库操作Repository
```java
public interface CfgRepository extends BaseRepository<Cfg,Long> {
}
```
## service
```java
@Service
public class CfgService extends BaseService<Cfg,Long,CfgRepository> {
}
```
## controller
```java
@Controller
@RequestMapping("/cfg")
public class CfgController extends BaseController {
@Autowired
private CfgService cfgService;
private static String PREFIX = "/system/cfg/";
/**
* 跳转到参数首页
*/
@RequestMapping("")
public String index() {
return PREFIX + "cfg.html";
}
/**
* 跳转到添加参数
*/
@RequestMapping("/cfg_add")
public String add() {
return PREFIX + "cfg_add.html";
}
/**
* 跳转到修改参数
*/
@RequestMapping("/cfg_update/{cfgId}")
public String update(@PathVariable Long cfgId, Model model) {
Cfg cfg = cfgService.get(cfgId);
model.addAttribute("item",cfg);
return PREFIX + "cfg_edit.html";
}
/**
* 获取参数列表
*/
@RequestMapping(value = "/list")
@ResponseBody
public Object list(@RequestParam(required = false) String cfgName, @RequestParam(required = false) String cfgValue) {
Page<Cfg> page = new PageFactory<Cfg>().defaultPage();
if(StringUtils.isNotEmpty(cfgName)){
page.addFilter(SearchFilter.build("cfgName", SearchFilter.Operator.LIKE, cfgName));
}
if(StringUtils.isNotEmpty(cfgValue)){
page.addFilter(SearchFilter.build("cfgValue", SearchFilter.Operator.LIKE, cfgValue));
}
page = cfgService.queryPage(page);
return packForBT(page);
}
/**
* 新增参数
*/
@RequestMapping(value = "/add")
@ResponseBody
@BussinessLog(value = "添加参数", key = "cfgName",dict = CfgDict.class)
public Object add(@Valid Cfg cfg) {
cfgService.saveOrUpdate(cfg);
return SUCCESS_TIP;
}
/**
* 删除参数
*/
@RequestMapping(value = "/delete")
@ResponseBody
@BussinessLog(value = "删除参数", key = "cfgId",dict = CfgDict.class)
public Object delete(@RequestParam Long cfgId) {
cfgService.delete(cfgId);
return SUCCESS_TIP;
}
/**
* 修改参数
*/
@RequestMapping(value = "/update")
@ResponseBody
@BussinessLog(value = "编辑参数", key = "cfgName",dict = CfgDict.class)
public Object update(@Valid Cfg cfg) {
cfgService.update(cfg);
return SUCCESS_TIP;
}
/**
* 参数详情
*/
@RequestMapping(value = "/detail/{cfgId}")
@ResponseBody
public Object detail(@PathVariable("cfgId") Long cfgId) {
return cfgService.get(cfgId);
}
```
================================================
FILE: doc/helloworld/create_table.md
================================================
# 建表
比如我们要开发一个系统参数的管理功能,该功能主要对系统相关参数进行增删该查。
~~建表语句如下:~~
```sql
CREATE TABLE `t_sys_cfg` (
`id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`cfg_name` varchar(100) DEFAULT NULL COMMENT '参数名',
`cfg_value` varchar(3000) DEFAULT NULL COMMENT '参数值',
`cfg_desc` varchar(200) DEFAULT NULL COMMENT '参数描述',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='系统参数';
```
**注意**
- 看到上面的 ~~建表语句如下:~~ 了么,知道为什么要划掉么?因为在使用本系统做开发的时候强烈建议不用自己建表,而是直接根据实体在系统启动的时候自动生成表。因为以后如果我们用代码生成工具的话,你要建个表,再写一遍实体类,不近工作做了两套,而且容易出现两别字段定义不一致的问题。
- 当然在生产环境,我个人是不建议开启Spring Boot的自动更新表结构功能的,还是自己手动建表比较稳妥。
================================================
FILE: doc/helloworld/crud.md
================================================
# 简单的CRUD
本章将手把手带你开发一个增删该查功能,包含从建表到代码(controller,service,dao,页面),到权限控制,以及一个相对复杂的查询。
**PS** 其实真正开发中你完全可以使用代码生成工具一键生成这些功能;不过工具再好用,过程自己还是要掌握的,对吧!
接下来我们要开发一个参数管理功能,用于对系统参数进行增删该查
## 本章知识点
* [建表](./create_table.md)
* [基础代码](./base.md)
* [list](./list.md)
* [add](./add.md)
* [delete](./delete.md)
* [update](./update.md)
* [添加菜单和分配权限](./menuAndPermission.md)
================================================
FILE: doc/helloworld/delete.md
================================================
# delete
## 针对要删除的数据点击行尾的删除按钮即弹出删除确认空,确认删除
_cfg.js_
```javascript
{title: '操作',formatter:function(data,row){
return '<button type="button" class="btn btn-info btn-icon waves-effect waves-circle" onclick="Cfg.delete('+row.id+')" title="删除"><span class="zmdi zmdi-delete"></span></button>';
}}
/**
* 删除系统参数
*/
Cfg.delete = function (id) {
var operation = function() {
var ajax = new $ax(Feng.ctxPath + "/cfg/delete", function (data) {
Feng.success("删除成功!");
Cfg.table.refresh();
}, function (data) {
Feng.error("删除失败!" + data.responseJSON.message + "!");
});
ajax.set("cfgId", id);
ajax.setType('delete');
ajax.start();
};
Feng.confirm("确认删除该记录?", operation);
};
```
## 后台逻辑
```java
/**
* 删除参数
*/
@RequestMapping(value = "/delete",method = RequestMethod.DELETE)
@ResponseBody
@BussinessLog(value = "删除参数", key = "cfgId",dict = CfgDict.class)
public Object delete(@RequestParam Long cfgId) {
cfgService.delete(cfgId);
return SUCCESS_TIP;
}
```
================================================
FILE: doc/helloworld/list.md
================================================
# list
## 列表页面
列表页面包含分页(根据指定条件)查询数据列表,添加,修改,删除按钮
列表页面针对:添加按钮做了权限控制,具体逻辑在下文再详细描述
```html
@layout("/common/layout.html"){
<div class="block-header">
<h2>参数管理</h2>
</div>
<div class="card">
<div class="card-body card-padding">
<div class="row row-lg">
<div class="col-sm-12">
<div class="hidden-xs" id="CfgTableToolbar" role="group">
<div class="col-sm-3">
<#NameCon id="cfgName" placeholder="参数名" />
</div>
<div class="col-sm-3">
<#NameCon id="cfgValue" placeholder="参数值" />
</div>
<#button name="搜索" icon="fa-search" clickFun="Cfg.search()"/>
<#button name="重置" icon="fa-refresh" clickFun="Cfg.reset()" btnCss="info" space="true"/>
@if(shiro.hasPermission("/cfg/add")){
<#button name="添加" icon="fa-plus" clickFun="Cfg.openAddCfg()" space="true"/>
@}
</div>
<#table id="CfgTable"/>
</div>
</div>
</div>
</div>
<script src="${ctxPath}/static/modular/system/cfg/cfg.js"></script>
@}
```
## 查询列表数据的js代码:
```javascript
/**
* 系统参数管理初始化
*/
var Cfg = {
id: "CfgTable", //表格id
seItem: null, //选中的条目
table: null,
layerIndex: -1
};
/**
* 初始化表格的列
*/
Cfg.initColumn = function () {
return [
{field: 'selectItem', checkbox: true},
{title: 'ID', field: 'id', visible: true, align: 'center', valign: 'middle'},
{title: '参数名', field: 'cfgName', visible: true, align: 'center', valign: 'middle',formatter:function(data,row){
return '<a href="javascript:;" onclick="Cfg.openCfgDetail('+row.id+')">'+data+'</a>';
}},
{title: '参数值', field: 'cfgValue', visible: true, align: 'center', valign: 'middle'},
{title: '参数描述', field: 'cfgDesc', visible: true, align: 'center', valign: 'middle'},
{title: '操作',formatter:function(data,row){
return '<button type="button" class="btn btn-info btn-icon waves-effect waves-circle" onclick="Cfg.delete('+row.id+')" title="删除"><span class="zmdi zmdi-delete"></span></button>';
}}
];
};
/**
* 查询系统参数列表
*/
Cfg.search = function () {
var queryData = {};
queryData['cfgName'] = $("#cfgName").val();
queryData['cfgValue'] = $("#cfgValue").val();
Cfg.table.refresh({query: queryData});
};
Cfg.reset = function () {
$("#cfgName").val("");
$("#cfgValue").val("");
this.search();
};
$(function () {
var defaultColunms = Cfg.initColumn();
var table = new BSTable(Cfg.id, "/cfg/list", defaultColunms);
table.setPaginationType("server");
Cfg.table = table.init();
});
```
## 后台代码
**CfgController**
```java
/**
* 跳转到参数首页
*/
@RequestMapping(value = "",method = RequestMethod.GET)
public String index() {
return PREFIX + "cfg.html";
}
/**
* 分页查询系统参数
*/
@RequestMapping(value = "/list",method = RequestMethod.POST)
@ResponseBody
public Object list(@RequestParam(required = false) String cfgName, @RequestParam(required = false) String cfgValue) {
Page<Cfg> page = new PageFactory<Cfg>().defaultPage();
if(StringUtils.isNotEmpty(cfgName)){
page.addFilter(SearchFilter.build("cfgName", SearchFilter.Operator.LIKE, cfgName));
}
if(StringUtils.isNotEmpty(cfgValue)){
page.addFilter(SearchFilter.build("cfgValue", SearchFilter.Operator.LIKE, cfgValue));
}
page = cfgService.queryPage(page);
return packForBT(page);
}
```
================================================
FILE: doc/helloworld/menuAndPermission.md
================================================
# 添加菜单和分配权限
现在功能已经开发完毕了,但是在页面上并不能使用这个功能;
因为我没有给当前用不配置参数管理的权限。下面分两步骤启用参数管理功能
- 在菜单管理中添加参数管理的功能,包括一个菜单项(点击链接进入列表页面)和一个个功能项(新增)
- 在权限管理中给指定的角色配置上述两个资源
- 在用户管理中给指定的用户配置指定的角色
## 添加菜单项
在菜单管理中添加4条记录,添加过程中要注意一下几点:
- 父级编号:选中的父级编号决定了当前功能所属哪一个模块,比如“参数管理”这一项的父级编号选择“系统管理”,则“参数管理”这一功能菜单在“系统管理”模块下。
- 是否是菜单:选择“是”,则菜单会在左侧菜单栏显示,选择“否”,则不会显示在左侧菜单栏。针对按钮功能要选择“否”
- 请求地址,针对菜单选择“是”的记录,则该地址必须为页面打开的地址,针是否是菜单选择“否”的记录,则该地址必须与用作权限判断的字符串一致。
```
比如“添加系统参数”这一项的请求地址为“cfg/add”, 则页面判断是否有操作权限的的代码为:
@if(shiro.hasPermission("/cfg/add")){
<#button name="添加" icon="fa-plus" clickFun="Cfg.openAddCfg()" space="true"/>
@}
```
添加四条菜单记录:
- 参数管理
- 添加系统参数

## 为角色配置菜单项

================================================
FILE: doc/helloworld/update.md
================================================
# update
参数修改逻辑为:
- 点击参数名,打开编辑页面
- 更改信息,提交修改
- 关闭修改弹窗,并刷新列表页面
## 列表页点击要修改的参数名,弹出修改页面
```html
{title: '参数名', field: 'cfgName', visible: true, align: 'center', valign: 'middle',formatter:function(data,row){
return '<a href="javascript:;" onclick="Cfg.openCfgDetail('+row.id+')">'+data+'</a>';
}},
```
- 打开参数详情弹窗
```javascript
/**
* 打开系统参数详情页
*/
Cfg.openCfgDetail = function (id) {
var index = layer.open({
type: 2,
title: '系统参数详情',
area: ['65%', '280px'], //宽高
fix: false, //不固定
maxmin: true,
content: Feng.ctxPath + '/cfg/cfg_update/' + id
});
this.layerIndex = index;
};
```
- 后台查询参数调准到详情逻辑
```java
/**
* 跳转到修改参数
*/
@RequestMapping(value = "/cfg_update/{cfgId}",method = RequestMethod.POST)
public String update(@PathVariable Long cfgId, Model model) {
Cfg cfg = cfgService.get(cfgId);
model.addAttribute("item",cfg);
return PREFIX + "cfg_edit.html";
}
```
- 参数修改页面
_cfg_edit.html_:
```html
@layout("/common/include.html"){
<div class="card">
<div class="card-body card-padding">
<div class="form-horizontal">
<input type="hidden" id="id" value="${item.id}">
<div class="row">
<div class="col-sm-6 b-r">
<#input id="id" name="自增主键" value="${item.id}" disabled="disabled"/>
<#input id="cfgName" name="参数名" value="${item.cfgName}" />
</div>
<div class="col-sm-6">
<#input id="cfgValue" name="参数值" value="${item.cfgValue}" underline="true"/>
<#input id="cfgDesc" name="参数描述" value="${item.cfgDesc}" />
</div>
</div>
<div class="row btn-group-m-t">
<div class="col-sm-10">
<#button btnCss="info" name="提交" id="ensure" icon="fa-check" clickFun="CfgInfoDlg.editSubmit()"/>
<#button btnCss="danger" name="取消" id="cancel" icon="fa-eraser" clickFun="CfgInfoDlg.close()"/>
</div>
</div>
</div>
</div>
</div>
<script src="${ctxPath}/static/modular/system/cfg/cfg_info.js"></script>
@}
```
## 更改信息,提交修改
- js逻辑提交修改
```javascript
/**
* 提交修改
*/
CfgInfoDlg.editSubmit = function() {
this.clearData();
this.collectData();
//提交信息
var ajax = new $ax(Feng.ctxPath + "/cfg/update", function(data){
Feng.success("修改成功!");
window.parent.Cfg.table.refresh();
CfgInfoDlg.close();
},function(data){
Feng.error("修改失败!" + data.responseJSON.message + "!");
});
ajax.set(this.cfgInfoData);
ajax.start();
}
```
- 后台逻辑提交更改
```java
/**
* 修改参数
*/
@RequestMapping(value = "/update",method = RequestMethod.POST)
@ResponseBody
@BussinessLog(value = "编辑参数", key = "cfgName",dict = CfgDict.class)
public Object update(@Valid Cfg cfg) {
cfgService.update(cfg);
return SUCCESS_TIP;
}
```
================================================
FILE: doc/other/faq.md
================================================
# 常见问题
## 本地开发正常,打包运行的时候提交中文内容乱码,检查了数据库编码也没问题?
打包为jar包运行的时候可以指定运行时编码为UTF8:
```
java -Dfile.encoding=utf-8 -jar xxxxxxx.jar
```
## 使用代码生成器的时候总是报找不到Generator类或者找不到code.json配置文件
下载项目后首先mvn package 保证项目能构建并打包成功再使用代码生成器
================================================
FILE: doc/package.json
================================================
{
"scripts": {
"docs:dev": "vuepress dev docs",
"docs:build": "vuepress build docs"
},
"devDependencies": {
"@vuepress/plugin-google-analytics": "^1.0.0-alpha.0"
}
}
================================================
FILE: doc/quickstart/clone.md
================================================
# 克隆本项目
本项目地址为:[https://github.com/enilu/material-admin](https://github.com/enilu/material-admin),如果对你有用,欢迎给个star
项目共两个分,支分别为:
- master 项目主分支
- develop 开发分支,代码最新,但是不稳定
进入控制台输入以下命令将项目克隆到本地:
git clone https://github.com/enilu/material-admin.git
- 使用IDEA Intellij或者eclipse导入项目,记得开发工具要安装lombook插件哦
================================================
FILE: doc/quickstart/config.md
================================================
# 配置项目
你已经下载项目,并且初始化好了数据库,那么接下来只需要更改相应的配置就可以运行该项目了
- 更改src/resources/application-dev.properties配置:
```properties
## 开发环境配置,修改为真实的用户名密码
spring.datasource.url=jdbc:mysql://localhost:3306/material
spring.datasource.username=root
spring.datasource.password=root
```
================================================
FILE: doc/quickstart/initDb.md
================================================
# 初始化数据
本系统使用mysql数据库:
- 在mysql中创建数据库 material
```sql
CREATE DATABASE IF NOT EXISTS material DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
```
- 启动项目系统会自动建表并初始化数据。
================================================
FILE: doc/quickstart/quickstart.md
================================================
# 10分钟把项目跑起来
## 真的10分钟吗?
当然,如果你的网速给力,并且依赖的软件都下载安装好了,并且手速够快,是不是前置条件有点多?^_^
## 本章知识点
- [克隆项目](./clone.md)
- [初始化数据](./initDb.md)
- [配置项目](./config.md)
- [启动项目](./startup.md)
================================================
FILE: doc/quickstart/startup.md
================================================
# 启动项目
- 右键直接运行 cn.enilu.material.admin.AdminApplication类即可启动material-manage后台管理系统
- 系统默认是用8085端口,参考配置文件src/resources/application.properties
```properties
server.port=8085
```
- 启动成功后访问http://localhost:8085 如下图所示

- 输入用户名/密码:admin/admin即可登录:

so,是不是很简单!
================================================
FILE: doc/resource.md
================================================
# 资源
本节会整理提供一些助于开发的相关资源文档,在开发过程中学会恰当的里用这些资源将会是开发过程如虎添翼,事半功倍!。
## 前端
### Material Admin
- [https://www.sucaihuo.com/templates/3963](https://www.sucaihuo.com/templates/3963)
- 本项目使用该框架,开发过程中可以参考该框架,该框架封装很多常用的material风格的组件
### Fontawesome 图标库
- [http://www.fontawesome.com.cn/faicons](http://www.fontawesome.com.cn/faicons)
- material-manage中使用了fontawesome的图标库,如果你想用一些图标,又不知道用哪些合适,可以通过下面网站,找到合适的图标和样式名
- 比如菜单管理,在添加菜单的时候,有个图标的配置项:**图标**,这里就要求默认使用fontawesome的图标库样式。<img src="./img/resource/menu_1.jpg" align=center />
### Bootstrap
- [https://v3.bootcss.com/css/](https://v3.bootcss.com/css/)
- material-manage中使用了Bootstrap作为前端样式库,Bootstrap有丰富的样式,插件和组件,开发过程中可以参考在线文档,方便搞笑。
### Beetl
- [http://ibeetl.com/guide](http://ibeetl.com/guide)
- material-manage使用Beetl做为模板引擎,Beetl是一个很好用的国产模板引擎。使用中有什么问题也可以去其官方论坛提问[http://bbs.ibeetl.com/](http://bbs.ibeetl.com/)
### 阿里巴巴矢量图库
- [https://iconfont.cn](https://iconfont.cn)
- 这个站点是阿里巴巴维护的一个图标站点,里面有极其丰富的图标,如果开发过程中如果在Fontawesome和Bootstrap中的找不到合适的图标,可以来这里看看,应该不会让你失望。
## 后端
## Spring Boot
- [https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/](https://qbgbook.gitbooks.io/spring-boot-reference-guide-zh/content/) 文档基于Spring Boot1.4.1的英文文档翻译
- [https://www.breakyizhan.com/springboot/3028.html](https://www.breakyizhan.com/springboot/3028.html) 文档基于Spring Boot2.0.1的英文文档翻译
- 本系统基于Spring Boot2.1.1开发,所以建议开发过程中多翻翻第二个在线文档,第一个文档可以作为蛇参考。
================================================
FILE: doc/文档完善中
================================================
================================================
FILE: material-core/pom.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>material-admin</artifactId>
<groupId>cn.enilu</groupId>
<version>0.1</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>material-core</artifactId>
<dependencies>
<dependency>
<groupId>cn.enilu</groupId>
<artifactId>material-generator</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
</dependency>
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz-jobs</artifactId>
</dependency>
<!-- message start-->
<dependency>
<groupId>com.github.qcloudsms</groupId>
<artifactId>qcloudsms</artifactId>
</dependency>
<!-- message end-->
<!-- entity-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.ehcache</groupId>
<artifactId>ehcache</artifactId>
</dependency>
<dependency>
<groupId>net.sf.ehcache.internal</groupId>
<artifactId>ehcache-core</artifactId>
</dependency>
<!-- utils-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
</dependency>
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
</dependency>
<!--shiro依赖-->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-ehcache</artifactId>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>compile</scope>
</dependency>
<!--test-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
================================================
FILE: material-core/src/main/java/cn/enilu/material/aop/LogAop.java
================================================
package cn.enilu.material.aop;
import cn.enilu.material.bean.core.BussinessLog;
import cn.enilu.material.bean.core.ShiroUser;
import cn.enilu.material.bean.vo.SpringContextHolder;
import cn.enilu.material.dao.cache.TokenCache;
import cn.enilu.material.platform.log.LogManager;
import cn.enilu.material.platform.log.LogTaskFactory;
import cn.enilu.material.service.system.LogObjectHolder;
import cn.enilu.material.shiro.ShiroKit;
import cn.enilu.material.utils.BeanUtil;
import cn.enilu.material.utils.HttpKit;
import cn.enilu.material.utils.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.util.Map;
/**
* 日志记录
*
* @author fengshuonan
* @date 2016年12月6日 下午8:48:30
*/
@Aspect
@Component
public class LogAop {
private Logger log = LoggerFactory.getLogger(this.getClass());
@Pointcut(value = "@annotation(cn.enilu.material.bean.core.BussinessLog)")
public void cutService() {
}
@Around("cutService()")
public Object recordSysLog(ProceedingJoinPoint point) throws Throwable {
//先执行业务
Object result = point.proceed();
try {
handle(point);
} catch (Exception e) {
log.error("日志记录出错!", e);
}
return result;
}
private void handle(ProceedingJoinPoint point) throws Exception {
//获取拦截的方法名
Signature sig = point.getSignature();
MethodSignature msig = null;
if (!(sig instanceof MethodSignature)) {
throw new IllegalArgumentException("该注解只能用于方法");
}
msig = (MethodSignature) sig;
Object target = point.getTarget();
Method currentMethod = target.getClass().getMethod(msig.getName(), msig.getParameterTypes());
String methodName = currentMethod.getName();
//获取用户id,admin和api模块获取idUser方式不同
Long idUser = null;
HttpServletRequest request = HttpKit.getRequest();
String token = request.getHeader("Authorization");
if(StringUtils.isNotEmpty(token)) {
idUser = SpringContextHolder.getBean(TokenCache.class).get(token);
}
if(idUser==null) {
//如果当前用户未登录,不做日志
ShiroUser user = ShiroKit.getUser();
if (null == user) {
return;
}
idUser = user.getId();
}
//获取拦截方法的参数
String className = point.getTarget().getClass().getName();
Object[] params = point.getArgs();
//获取操作名称
BussinessLog annotation = currentMethod.getAnnotation(BussinessLog.class);
String bussinessName = annotation.value();
String key = annotation.key();
Class dictClass = annotation.dict();
StringBuilder sb = new StringBuilder();
for (Object param : params) {
sb.append(param);
sb.append(" & ");
}
//如果涉及到修改,比对变化
String msg="";
if (bussinessName.indexOf("修改") != -1 || bussinessName.indexOf("编辑") != -1) {
//todo api模块无法使用该方法获取数据
Object obj1 = LogObjectHolder.me().get();
Map<String, String> obj2 = HttpKit.getRequestParameters();
try {
msg = BeanUtil.contrastObj(key, obj1, obj2);
}catch (Exception e){
}
} else {
Map<String, String> parameters = HttpKit.getRequestParameters();
msg = BeanUtil.parseMutiKey(parameters);
}
LogManager.me().executeLog(LogTaskFactory.bussinessLog(idUser, bussinessName, className, methodName, msg));
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/aop/PermissionAop.java
================================================
/**
* Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).
* <p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.enilu.material.aop;
import cn.enilu.material.bean.core.Permission;
import cn.enilu.material.shiro.check.PermissionCheckManager;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.reflect.MethodSignature;
import org.springframework.stereotype.Component;
import javax.naming.NoPermissionException;
import java.lang.reflect.Method;
/**
* AOP 权限自定义检查
*/
@Aspect
@Component
public class PermissionAop {
@Pointcut(value = "@annotation(cn.enilu.material.bean.core.Permission)")
private void cutPermission() {
}
@Around("cutPermission()")
public Object doPermission(ProceedingJoinPoint point) throws Throwable {
MethodSignature ms = (MethodSignature) point.getSignature();
Method method = ms.getMethod();
Permission permission = method.getAnnotation(Permission.class);
Object[] permissions = permission.value();
if (permissions == null || permissions.length == 0) {
//检查全体角色
boolean result = PermissionCheckManager.checkAll();
if (result) {
return point.proceed();
} else {
throw new NoPermissionException();
}
} else {
//检查指定角色
boolean result = PermissionCheckManager.check(permissions);
if (result) {
return point.proceed();
} else {
throw new NoPermissionException();
}
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/Const.java
================================================
package cn.enilu.material.bean.constant;
/**
* 系统常量
*
* @author fengshuonan
* @date 2017年2月12日 下午9:42:53
*/
public interface Const {
long SYSTEM_USER_ID=-1;
/**
* 用户密码加密key
*/
String CRYPT_DES_KEY = "sc123456";
/**
* 系统默认的管理员密码
*/
String DEFAULT_PWD = "111111";
/**
* 管理员角色的名字
*/
String ADMIN_NAME = "administrator";
/**
* 管理员id
*/
Integer ADMIN_ID = 1;
/**
* 超级管理员角色id
*/
Integer ADMIN_ROLE_ID = 1;
/**
* 接口文档的菜单名
*/
String API_MENU_NAME = "接口文档";
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/cache/Cache.java
================================================
package cn.enilu.material.bean.constant.cache;
/**
* 所有缓存名称的集合
*
* @author fengshuonan
* @date 2017-04-24 21:56
*/
public interface Cache {
/**
* 常量缓存
*/
String CONSTANT = "CONSTANT";
String APPLICATION = "APPLICATION";
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/cache/CacheKey.java
================================================
package cn.enilu.material.bean.constant.cache;
/**
* 缓存的key集合
*
* @author fengshuonan
* @date 2017-04-25 9:37
*/
public interface CacheKey {
/**
* ConstantFactory中的缓存
*/
String ROLES_NAME = "roles_name_";
String SINGLE_ROLE_NAME = "single_role_name_";
String SINGLE_ROLE_TIP = "single_role_tip_";
String DEPT_NAME = "dept_name_";
String DICT_NAME = "dict_name_";
String DICT = "dict_";
String COURSE_NAME = "course_name_";
String ORG_NAME = "org_name_";
String DIC_ALL = "dic_all_";
String CFG = "cfg_";
String MENU_NAME = "menu_name_" ;
String SYS_USER_NAME = "SYS_USER_NAME" ;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/factory/PageFactory.java
================================================
package cn.enilu.material.bean.constant.factory;
import cn.enilu.material.bean.constant.state.Order;
import cn.enilu.material.utils.HttpKit;
import cn.enilu.material.utils.StringUtils;
import cn.enilu.material.bean.vo.query.Page;
import cn.enilu.material.utils.ToolUtil;
import javax.servlet.http.HttpServletRequest;
/**
* BootStrap Table默认的分页参数创建
*
* @author fengshuonan
* @date 2017-04-05 22:25
*/
public class PageFactory<T> {
public Page<T> defaultPage() {
HttpServletRequest request = HttpKit.getRequest();
//每页多少条数据
int limit = Integer.valueOf(request.getParameter("limit"));
String pageNum = request.getParameter("page");
//每页的偏移量(本页当前有多少条)
int offset = 0;
if(StringUtils.isNotEmpty(pageNum)){
offset = (Integer.valueOf(pageNum)-1)*limit;
}else {
offset = Integer.valueOf(request.getParameter("offset"));
}
//排序字段名称
String sort = request.getParameter("sort");
//asc或desc(升序或降序)
String order = request.getParameter("order");
if (ToolUtil.isEmpty(sort)) {
Page<T> page = new Page<>((offset / limit + 1), limit);
page.setOpenSort(false);
return page;
} else {
Page<T> page = new Page<>((offset / limit + 1), limit, sort);
if (Order.ASC.getDes().equals(order)) {
page.setAsc(true);
} else {
page.setAsc(false);
}
return page;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/package-info.java
================================================
/**
* Created on 2018/3/28 0028.
*
* @author enilu
*/
package cn.enilu.material.bean.constant;
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/BizLogType.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 业务日志类型
*
* @author fengshuonan
* @Date 2017年1月22日 下午12:14:59
*/
public enum BizLogType {
ALL(0, null),//全部日志
BUSSINESS(1, "业务日志"),
EXCEPTION(2, "异常日志");
Integer val;
String message;
BizLogType(Integer val, String message) {
this.val = val;
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Integer getVal() {
return val;
}
public void setVal(Integer val) {
this.val = val;
}
public static String valueOf(Integer value) {
if (value == null) {
return null;
} else {
for (BizLogType bizLogType : BizLogType.values()) {
if (bizLogType.getVal().equals(value)) {
return bizLogType.getMessage();
}
}
return null;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/LogSucceed.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 业务是否成功的日志记录
*
* @author fengshuonan
* @Date 2017年1月22日 下午12:14:59
*/
public enum LogSucceed {
SUCCESS("成功"),
FAIL("失败");
String message;
LogSucceed(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/LogType.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 日志类型
*
* @author fengshuonan
* @Date 2017年1月22日 下午12:14:59
*/
public enum LogType {
LOGIN("登录日志"),
LOGIN_FAIL("登录失败日志"),
EXIT("退出日志"),
EXCEPTION("异常日志"),
BUSSINESS("业务日志");
String message;
LogType(String message) {
this.message = message;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/ManagerStatus.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 管理员的状态
*
* @author fengshuonan
* @Date 2017年1月10日 下午9:54:13
*/
public enum ManagerStatus {
OK(1, "启用"), FREEZED(2, "冻结"), DELETED(3, "被删除");
int code;
String message;
ManagerStatus(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static String valueOf(Integer value) {
if (value == null) {
return "";
} else {
for (ManagerStatus ms : ManagerStatus.values()) {
if (ms.getCode() == value) {
return ms.getMessage();
}
}
return "";
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/MenuStatus.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 菜单的状态
*
* @author fengshuonan
* @Date 2017年1月22日 下午12:14:59
*/
public enum MenuStatus {
ENABLE(1, "启用"),
DISABLE(0, "禁用");
int code;
String message;
MenuStatus(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static String valueOf(Integer status) {
if (status == null) {
return "";
} else {
for (MenuStatus s : MenuStatus.values()) {
if (s.getCode() == status) {
return s.getMessage();
}
}
return "";
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/Order.java
================================================
package cn.enilu.material.bean.constant.state;
/**
* 数据库排序
*
* @author fengshuonan
* @Date 2017年5月31日20:48:41
*/
public enum Order {
ASC("asc"), DESC("desc");
private String des;
Order(String des) {
this.des = des;
}
public String getDes() {
return des;
}
public void setDes(String des) {
this.des = des;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/core/BussinessLog.java
================================================
package cn.enilu.material.bean.core;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
import cn.enilu.material.bean.dictmap.SystemDict;
import java.lang.annotation.*;
/**
* 标记需要做业务日志的方法
*
* @author fengshuonan
* @date 2017-03-31 12:46
*/
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface BussinessLog {
/**
* 业务的名称,例如:"修改菜单"
*/
String value() default "";
/**
* 被修改的实体的唯一标识,例如:菜单实体的唯一标识为"id"
*/
String key() default "id";
/**
* 字典(用于查找key的中文名称和字段的中文名称)
*/
Class<? extends AbstractDictMap> dict() default SystemDict.class;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/core/Permission.java
================================================
package cn.enilu.material.bean.core;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 权限注解 用于检查权限 规定访问权限
*
* @example @Permission({roleID1,roleID2})
* @example @Permission
*/
@Inherited
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Permission {
String[] value() default {};
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/core/ShiroUser.java
================================================
package cn.enilu.material.bean.core;
import cn.enilu.material.bean.entity.system.User;
import cn.enilu.material.bean.vo.node.MenuNode;
import java.io.Serializable;
import java.util.List;
/**
* 自定义Authentication对象,使得Subject除了携带用户的登录名外还可以携带更多信息
*
* @author fengshuonan
* @date 2016年12月5日 上午10:26:43
*/
public class ShiroUser implements Serializable {
private static final long serialVersionUID = 1L;
private Long id; // 主键ID
private String account; // 账号
private String name; // 姓名
private Long deptId; // 部门id
private List<Long> roleList; // 角色集
private String deptName; // 部门名称
private List<String> roleNames; // 角色名称集
private List<String> roleCodes;//角色编码
private User profile;//用户详细资料
private List<MenuNode> titles;//用户可用菜单资源
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Long getDeptId() {
return deptId;
}
public void setDeptId(Long deptId) {
this.deptId = deptId;
}
public List<Long> getRoleList() {
return roleList;
}
public void setRoleList(List<Long> roleList) {
this.roleList = roleList;
}
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
public List<String> getRoleNames() {
return roleNames;
}
public void setRoleNames(List<String> roleNames) {
this.roleNames = roleNames;
}
public List<String> getRoleCodes() {
return roleCodes;
}
public void setRoleCodes(List<String> roleCodes) {
this.roleCodes = roleCodes;
}
public User getProfile() {
return profile;
}
public void setProfile(User profile) {
this.profile = profile;
}
public List<MenuNode> getTitles() {
return titles;
}
public void setTitles(List<MenuNode> titles) {
this.titles = titles;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/CfgDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 字典map
*
* @author fengshuonan
* @date 2017-05-06 15:43
*/
public class CfgDict extends AbstractDictMap {
@Override
public void init() {
put("cfgId","参数id");
put("cfgName","参数名称");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/CommonDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
public class CommonDict extends AbstractDictMap {
@Override
public void init() {
put("id","ID");
put("name","名称");
put("code","编码");
put("title","标题");
put("remark","备注");
put("descript","备注");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DeleteDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 用于删除业务的字典
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class DeleteDict extends AbstractDictMap {
@Override
public void init() {
put("roleId","角色名称");
put("deptId", "部门名称");
put("menuId", "菜单名称");
put("dictId", "字典名称");
put("noticeId", "标题");
}
@Override
protected void initBeWrapped() {
putFieldWrapperMethodName("roleId","getCacheObject");
putFieldWrapperMethodName("deptId","getCacheObject");
putFieldWrapperMethodName("menuId","getCacheObject");
putFieldWrapperMethodName("dictId","getCacheObject");
putFieldWrapperMethodName("noticeId","getCacheObject");
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DeptDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 部门的映射
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class DeptDict extends AbstractDictMap {
@Override
public void init() {
put("deptId", "部门名称");
put("id","部门名称");
put("num", "部门排序");
put("pid", "上级名称");
put("simplename", "部门简称");
put("fullname", "部门全称");
put("tips", "备注");
}
@Override
protected void initBeWrapped() {
putFieldWrapperMethodName("deptId", "getDeptName");
putFieldWrapperMethodName("pid", "getDeptName");
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DictMap.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 字典map
*
* @author fengshuonan
* @date 2017-05-06 15:43
*/
public class DictMap extends AbstractDictMap {
@Override
public void init() {
put("dictId","字典名称");
put("dictName","字典名称");
put("dictValues","字典内容");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/LogDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 日志的字典
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class LogDict extends AbstractDictMap {
@Override
public void init() {
put("tips","备注");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/MenuDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 菜单的字典
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class MenuDict extends AbstractDictMap {
@Override
public void init() {
put("menuId","菜单id");
put("id","菜单id");
put("code","菜单编号");
put("pcode","菜单父编号");
put("name","菜单名称");
put("icon","菜单图标");
put("url","url地址");
put("num","菜单排序号");
put("levels","菜单层级");
put("tips","备注");
put("status","菜单状态");
put("isopen","是否打开");
put("","");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/NoticeMap.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 通知的映射
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class NoticeMap extends AbstractDictMap {
@Override
public void init() {
put("title", "标题");
put("content", "内容");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/RoleDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 角色的字典
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class RoleDict extends AbstractDictMap {
@Override
public void init() {
put("roleId","角色名称");
put("num","角色排序");
put("pid","角色的父级");
put("name","角色名称");
put("deptid","部门名称");
put("tips","备注");
put("ids","资源名称");
}
@Override
protected void initBeWrapped() {
putFieldWrapperMethodName("pid","getSingleRoleName");
putFieldWrapperMethodName("deptid","getDeptName");
putFieldWrapperMethodName("roleId","getSingleRoleName");
putFieldWrapperMethodName("ids","getMenuNames");
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/SystemDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 系统相关的字典
*
* @author fengshuonan
* @date 2017-05-06 15:48
*/
public class SystemDict extends AbstractDictMap {
@Override
public void init() {
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/TaskDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 字典map
*
* @author fengshuonan
* @date 2017-05-06 15:43
*/
public class TaskDict extends AbstractDictMap {
@Override
public void init() {
put("taskId","任务id");
put("name","任务名称");
}
@Override
protected void initBeWrapped() {
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/UserDict.java
================================================
package cn.enilu.material.bean.dictmap;
import cn.enilu.material.bean.dictmap.base.AbstractDictMap;
/**
* 用户的字典
*
* @author fengshuonan
* @date 2017-05-06 15:01
*/
public class UserDict extends AbstractDictMap {
@Override
public void init() {
put("userId","账号");
put("avatar","头像");
put("account","账号");
put("name","名字");
put("birthday","生日");
put("sex","性别");
put("email","电子邮件");
put("phone","电话");
put("roleid","角色名称");
put("deptid","部门名称");
put("roleIds","角色名称集合");
}
@Override
protected void initBeWrapped() {
putFieldWrapperMethodName("sex","getSexName");
putFieldWrapperMethodName("deptid","getDeptName");
putFieldWrapperMethodName("roleid","getSingleRoleName");
putFieldWrapperMethodName("userId","getUserAccountById");
putFieldWrapperMethodName("roleIds","getRoleName");
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/base/AbstractDictMap.java
================================================
package cn.enilu.material.bean.dictmap.base;
import java.util.HashMap;
/**
* 字典映射抽象类
*
* @author fengshuonan
* @date 2017-05-06 14:58
*/
public abstract class AbstractDictMap {
protected HashMap<String, String> dictory = new HashMap<>();
protected HashMap<String, String> fieldWarpperDictory = new HashMap<>();
public AbstractDictMap(){
put("id","主键id");
init();
initBeWrapped();
}
/**
* 初始化字段英文名称和中文名称对应的字典
*
* @author enilu.cn
* @Date 2017/5/9 19:39
*/
public abstract void init();
/**
* 初始化需要被包装的字段(例如:性别为1:男,2:女,需要被包装为汉字)
*
* @author enilu.cn
* @Date 2017/5/9 19:35
*/
protected abstract void initBeWrapped();
public String get(String key) {
return this.dictory.get(key);
}
public void put(String key, String value) {
this.dictory.put(key, value);
}
public String getFieldWarpperMethodName(String key){
return this.fieldWarpperDictory.get(key);
}
public void putFieldWrapperMethodName(String key,String methodName){
this.fieldWarpperDictory.put(key,methodName);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/dto/UserDto.java
================================================
package cn.enilu.material.bean.dto;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
* 用户传输bean
*
* @author enilu.cn
* @Date 2017/5/5 22:40
*/
@Data
public class UserDto{
private Long id;
private String account;
private String password;
private String salt;
private String name;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
private Integer sex;
private String email;
private String phone;
private String roleid;
private Long deptid;
private Long eduorgid;
private Integer status;
private Date createtime;
private Integer version;
private String avatar;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/BaseEntity.java
================================================
package cn.enilu.material.bean.entity;
import lombok.Data;
import org.springframework.data.annotation.CreatedBy;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedBy;
import org.springframework.data.annotation.LastModifiedDate;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
import java.util.Date;
/**
* Created on 2019/1/8 0002.
*
* @author enilu
*/
@MappedSuperclass
@Data
public abstract class BaseEntity implements Serializable {
@Id
@GeneratedValue
private Long id;
@CreatedDate
@Column(name = "create_time",columnDefinition="DATETIME COMMENT '创建时间/注册时间'")
private Date createTime;
@Column(name = "create_by",columnDefinition="bigint COMMENT '创建人'")
@CreatedBy
private Long createBy;
@LastModifiedDate
@Column(name = "modify_time",columnDefinition="DATETIME COMMENT '最后更新时间'")
private Date modifyTime;
@LastModifiedBy
@Column(name = "modify_by",columnDefinition="bigint COMMENT '最后更新人'")
private Long modifyBy;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/Message.java
================================================
package cn.enilu.material.bean.entity.message;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
/**
* 历史消息
*/
@Data
@Entity(name="t_message")
@Table(appliesTo = "t_message",comment = "历史消息")
public class Message extends BaseEntity {
@Column(name="tpl_code",columnDefinition = "VARCHAR(32) COMMENT '模板编码'")
private String tplCode;
@Column(name="content",columnDefinition = "TEXT COMMENT '消息内容'")
private String content;
@Column(name="receiver",columnDefinition = "VARCHAR(64) COMMENT '接收者'")
private String receiver;
@Column(name="type",columnDefinition = "VARCHAR(32) COMMENT '消息类型,0:短信,1:邮件'")
private Integer type;
@Column(name="state",columnDefinition = "VARCHAR(32) COMMENT '消息类型,0:初始,1:成功,2:失败'")
private Integer state;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageSender.java
================================================
package cn.enilu.material.bean.entity.message;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.validation.constraints.NotBlank;
/**
* 消息发送者
*/
@Data
@Entity(name="t_message_sender")
@Table(appliesTo = "t_message_sender",comment = "消息发送者")
public class MessageSender extends BaseEntity {
@Column(name="name",columnDefinition = "VARCHAR(64) COMMENT '名称'")
@NotBlank(message = "名称并能为空")
private String name;
@Column(name="class_name",columnDefinition = "VARCHAR(64) COMMENT '发送类'")
@NotBlank(message = "发送类不能为空")
private String className;
@Column(name="tpl_code",columnDefinition = "VARCHAR(64) COMMENT '短信运营商模板编号'")
private String tplCode;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageTemplate.java
================================================
package cn.enilu.material.bean.entity.message;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* 消息模板
*/
@Data
@Entity(name="t_message_template")
@Table(appliesTo = "t_message_template",comment = "消息模板")
public class MessageTemplate extends BaseEntity {
@Column(name="code",columnDefinition = "VARCHAR(32) COMMENT '编号'")
@NotBlank(message = "编号不能为空")
private String code;
@NotBlank(message = "标题不能为空")
@Column(name="title",columnDefinition = "VARCHAR(64) COMMENT '标题'")
private String title;
@NotBlank(message = "内容并能为空")
@Column(name="content",columnDefinition = "TEXT COMMENT '内容'")
private String content;
@Column(name="cond",columnDefinition = "VARCHAR(32) COMMENT '发送条件'")
private String cond;
@Column(name="id_message_sender",columnDefinition = "BIGINT COMMENT '发送者id'")
@NotNull(message = "发送器不能为空")
private Long idMessageSender;
@Column(name="type",columnDefinition = "VARCHAR(32) COMMENT '消息类型,0:短信,1:邮件'")
private Integer type;
@JoinColumn(name="id_message_sender", referencedColumnName = "id", columnDefinition = "BIGINT comment '发送者id'", insertable = false, updatable = false,foreignKey = @ForeignKey(name="none",value = ConstraintMode.NO_CONSTRAINT))
@ManyToOne(fetch = FetchType.EAGER)
private MessageSender messageSender;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Cfg.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.validation.constraints.NotBlank;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_cfg")
@Table(appliesTo = "t_sys_cfg",comment = "系统参数")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Cfg extends BaseEntity {
@Column(name = "cfg_name",columnDefinition = "VARCHAR(256) COMMENT '参数名'")
@NotBlank(message = "参数名不能为空")
private String cfgName;
@Column(name = "cfg_value",columnDefinition = "VARCHAR(512) COMMENT '参数值'")
@NotBlank(message = "参数值不能为空")
private String cfgValue;
@Column(name = "cfg_desc",columnDefinition = "TEXT COMMENT '备注'")
private String cfgDesc;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Dept.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_dept")
@Table(appliesTo = "t_sys_dept",comment = "部门")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Dept extends BaseEntity {
@Column
private Integer num;
@Column
private Long pid;
@Column
private String pids;
@Column
private String simplename;
@Column
private String fullname;
@Column
private String tips;
@Column
private Integer version;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Dict.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_dict")
@Table(appliesTo = "t_sys_dict",comment = "字典")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Dict extends BaseEntity {
@Column(columnDefinition = "BIGINT COMMENT '字典组id'")
private Long pid;
@Column(columnDefinition = "VARCHAR(32) COMMENT '字典值'")
private String value;
@Column(columnDefinition = "VARCHAR(32) COMMENT '字典显示值'")
private String name;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/FileInfo.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
@Data
@Entity
@Table(name="t_sys_file_info")
public class FileInfo extends BaseEntity {
@Column
private String originalFileName;
@Column
private String realFileName;
@Transient
private String ablatePath;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/LoginLog.java
================================================
package cn.enilu.material.bean.entity.system;
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_login_log")
@Table(appliesTo = "t_sys_login_log",comment = "登录日志")
@Data
public class LoginLog {
@Id
@GeneratedValue
private Integer id;
@Column
private String logname;
@Column
private Integer userid;
@Column
private String succeed;
@Column
private String message;
@Column
private String ip;
@CreationTimestamp
@Column(name = "create_time",columnDefinition="DATETIME COMMENT '创建时间'")
private Date createTime;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Menu.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name = "t_sys_menu")
@Table(appliesTo = "t_sys_menu",comment = "菜单")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Menu extends BaseEntity {
@Column
private String code;
@Column
private String pcode;
@Column
private String pcodes;
@Column
private String name;
@Column
private String icon;
@Column
private String url;
@Column
private Integer num;
@Column
private Integer levels;
@Column
private Integer ismenu;
@Column
private String tips;
@Column
private Integer status;
@Column
private Integer isopen;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Notice.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_notice")
@Table(appliesTo = "t_sys_notice",comment = "系统通知")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Notice extends BaseEntity {
@Column
private String title;
@Column
private Integer type;
@Column
private String content;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/OperationLog.java
================================================
package cn.enilu.material.bean.entity.system;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name = "t_sys_operation_log")
@Table(appliesTo= "t_sys_operation_log",comment = "操作日志")
@Data
public class OperationLog {
@Id
@GeneratedValue
private Long id;
@Column
private String logtype;
@Column
private String logname;
@Column
private Integer userid;
@Column
private String classname;
@Column
private String method;
@Column(name="create_time")
private Date createTime;
@Column
private String succeed;
@Column(columnDefinition = "TEXT COMMENT '详细信息'")
private String message;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Relation.java
================================================
package cn.enilu.material.bean.entity.system;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_relation")
@Table(appliesTo = "t_sys_relation",comment = "角色菜单关系")
@Data
public class Relation {
@Id
@GeneratedValue
private Long id;
@Column
private Long menuid;
@Column
private Long roleid;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Role.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name="t_sys_role")
@Table(appliesTo = "t_sys_role",comment = "角色")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Role extends BaseEntity {
@Column
private Integer num;
@Column
private Long pid;
@Column
private String name;
@Column
private Long deptid;
@Column
private String tips;
@Column
private Integer version;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Task.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.validation.constraints.NotBlank;
import java.util.Date;
@Table(appliesTo="t_sys_task",comment = "定时任务")
@Entity(name="t_sys_task")
@Data
@EntityListeners(AuditingEntityListener.class)
public class Task extends BaseEntity {
@Column(columnDefinition = "VARCHAR(50) COMMENT '任务名'")
@NotBlank(message = "任务名不能为空")
private String name;
@Column(name="job_group", columnDefinition = "VARCHAR(50) COMMENT '任务组名'")
private String jobGroup;
@Column(name="job_class", columnDefinition = "VARCHAR(255) COMMENT '执行类'")
@NotBlank(message = "执行类不能为空")
private String jobClass;
@Column(name="note", columnDefinition = "VARCHAR(255) COMMENT '任务说明'")
private String note;
@Column(name="cron", columnDefinition = "VARCHAR(50) COMMENT '定时规则'")
@NotBlank(message = "定时规则不能为空")
private String cron;
@Column(name="concurrent", columnDefinition = "TINYINT COMMENT '是否允许并发'")
private boolean concurrent;
@Column(name="data", columnDefinition = "TEXT COMMENT '执行参数'")
private String data;
@Column(name="exec_at", columnDefinition = "DateTime COMMENT '执行时间'")
private Date execAt;
@Column(name="exec_result", columnDefinition = "text COMMENT '执行结果'")
private String execResult;
@Column(name="disabled", columnDefinition = "TINYINT COMMENT '是否禁用'")
private boolean disabled;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/TaskLog.java
================================================
package cn.enilu.material.bean.entity.system;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import java.util.Date;
/**
* <p>
* User: Yao
* Date: 2017-06-22 11:12:48
*/
@Table(appliesTo="t_sys_task_log",comment = "定时任务日志")
@Entity(name="t_sys_task_log")
@Data
public class TaskLog{
public static final int EXE_FAILURE_RESULT = 0;
public static final int EXE_SUCCESS_RESULT = 1;
@Id
@GeneratedValue
private Long id;
@Column
private Long idTask;
@Column(columnDefinition = "VARCHAR(50) COMMENT '任务名'")
private String name;
@Column(columnDefinition = "DATETime COMMENT '执行时间'")
private Date execAt;
@Column(columnDefinition = "INTEGER COMMENT '执行结果(成功:1、失败:0)'")
private int execSuccess;
@Column(columnDefinition = "VARCHAR(500) COMMENT '抛出异常'")
private String jobException;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/User.java
================================================
package cn.enilu.material.bean.entity.system;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import java.util.Date;
/**
* Created on 2018/4/2 0002.
*
* @author enilu
*/
@Entity(name = "t_sys_user")
@Table(appliesTo = "t_sys_user",comment = "系统管理员")
@Data
@EntityListeners(AuditingEntityListener.class)
public class User extends BaseEntity {
@Column
private String avatar="";
@Column
private String account;
@Column
private String password;
@Column
private String salt;
@Column
private String name;
@Column
private Date birthday;
@Column
private Integer sex;
@Column
private String email;
@Column
private String phone;
@Column
private String roleid;
@Column
private Long deptid;
@Column
private Integer status;
@Column
private Integer version;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/test/Boy.java
================================================
package cn.enilu.material.bean.entity.test;
import cn.enilu.material.bean.entity.BaseEntity;
import lombok.Data;
import org.hibernate.annotations.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
/**
* 该实体用于测试生成代码
*/
@Entity(name="t_test_boy")
@Table(appliesTo = "t_test_boy",comment = "男孩")
@Data
public class Boy extends BaseEntity {
@Column(columnDefinition = "VARCHAR(32) COMMENT '姓名'")
private String name;
@Column(columnDefinition = "INT COMMENT '年龄'")
private Integer age;
@Column(columnDefinition = "VARCHAR(12) COMMENT '生日'")
private String birthday;
@Column(name = "has_girl_friend",columnDefinition = "TINYINT COMMENT '是否有女朋友'")
private Boolean hasGirFriend;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/BizExceptionEnum.java
================================================
package cn.enilu.material.bean.enumeration;
import cn.enilu.material.bean.exception.ServiceExceptionEnum;
/**
* @Description 所有业务异常的枚举
* @author fengshuonan
* @date 2016年11月12日 下午5:04:51
*/
public enum BizExceptionEnum implements ServiceExceptionEnum {
/**
* 字典
*/
DICT_EXISTED(400,"字典已经存在"),
ERROR_CREATE_DICT(500,"创建字典失败"),
ERROR_WRAPPER_FIELD(500,"包装字典属性失败"),
/**
* 文件上传
*/
FILE_READING_ERROR(400,"FILE_READING_ERROR!"),
FILE_NOT_FOUND(400,"FILE_NOT_FOUND!"),
NOT_ALLOW(400, "不允许该操作"),
UPLOAD_ERROR(500,"上传图片出错"),
/**
* 权限和数据问题
*/
DB_RESOURCE_NULL(400,"数据库中没有该资源"),
NO_PERMITION(405, "没有该操作权限"),
REQUEST_INVALIDATE(400,"请求数据格式不正确"),
INVALID_KAPTCHA(400,"验证码不正确"),
CANT_DELETE_ADMIN(600,"不能删除超级管理员"),
CANT_FREEZE_ADMIN(600,"不能冻结超级管理员"),
CANT_CHANGE_ADMIN(600,"不能修改超级管理员"),
/**
* 账户问题
*/
USER_ALREADY_REG(401,"该用户已经注册"),
NO_THIS_USER(400,"没有此用户"),
USER_NOT_EXISTED(400, "没有此用户"),
ACCOUNT_FREEZED(401, "账号被冻结"),
OLD_PWD_NOT_RIGHT(402, "原密码不正确"),
TWO_PWD_NOT_MATCH(405, "两次输入密码不一致"),
/**
* 错误的请求
*/
MENU_PCODE_COINCIDENCE(400,"菜单编号和副编号不能一致"),
EXISTED_THE_MENU(400,"菜单编号重复,不能添加"),
DICT_MUST_BE_NUMBER(400,"字典的值必须为数字"),
REQUEST_NULL(400, "请求有错误"),
SESSION_TIMEOUT(400, "会话超时"),
SERVER_ERROR(500, "服务器异常"),
CAN_NOT_DELETE(400,"数据被引用,无法删除");
BizExceptionEnum(int code, String message) {
this.code = code;
this.message = message;
}
private Integer code;
private String message;
@Override
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/ConfigKeyEnum.java
================================================
package cn.enilu.material.bean.enumeration;
public enum ConfigKeyEnum {
SYSTEM_FILE_UPLOAD_PATH("system.file.upload.path"),
SYSTEM_APP_NAME("system.app.name"),
SYSTEM_RESOURCE_VERSION("system.resource.version"),
/**
* 腾讯sms接口appid
*/
API_TENCENT_SMS_APPID("api.tencent.sms.appid"),
/**
* 腾讯sms接口appkey
*/
API_TENCENT_SMS_APPKEY("api.tencent.sms.appkey"),
/**
* 腾讯sms接口签名参数
*/
API_TENCENT_SMS_SIGN("api.tencent.sms.sign");
private String value;
ConfigKeyEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/ProjectEnum.java
================================================
package cn.enilu.material.bean.enumeration;
/**
* Created by deanyule on 17/8/16.
*/
public enum ProjectEnum {
SCORE_CARD("ScoreCard"),
DOLPHIN_PROD("dolphin"),
SNOW_PRODUCT("PRJ_SNOW_PRODUCT");
private String value;
ProjectEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/RedisQueueName.java
================================================
package cn.enilu.material.bean.enumeration;
/**
* redis队列名称
* Created by zt on 2017/8/25 0015.
*/
public enum RedisQueueName {
CREDIT_LIMIT("credit_limit"),COLLECTION_TAG("collection_tag");
private String value;
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
RedisQueueName(String value) {
this.value = value;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/SerialNumberEnum.java
================================================
package cn.enilu.material.bean.enumeration;
/**
* Created by deanyule on 17/4/13.
* 系统各种编号枚举
*/
public enum SerialNumberEnum {
//交易编号
TR_DFYW_KLT("TRDFYWKLT", "代付-开联通"),
TR_DFYW_CJ0("TRDFYWCJ0", "代付-畅捷"),
TR_DFYW_LL0("TRDFYWLL0", "代付-连连"),
TR_DFYW_RB0("TRDFYWRB0", "代付-融宝"),
TR_DFYW_YSB("TRDFYWYSB", "代付-银生宝"),
TR_DSYW_CJ0("TRDSYWCJ0", "代收-畅捷"),
TR_DSYW_YSB("TRDSYWYSB", "代收-银生宝"),
TR_DSYW_CPCN("TRDSYWCPC", "代收-中金"),
TR_DSYW_BAOFU("TRDSYWBF", "代收-宝付"),
TR_DSYW_FY0("TRDSYWFY0", "代收-富友"),
TR_KJWG_CJ0("TRKJWGCJ0", "快捷-畅捷"),
TR_KJWG_FY0("TRFY", "快捷-富友"),
TR_KJWG_LL0("TRKJWGLL0", "快捷-连连"),
TR_KJWG_WX0("TRKJWGWX0", "快捷-微信"),
TR_KJTK_CJ0("TRKJTKCJ0", "快捷-退款-畅捷"),
TR_KJZL_KLT("TRKJZLKLT", "快捷-直连-开联通"),
/**第三方抽成*/
TR_CCSN_000("TRCCSN000", "第三方抽成"),
TR_MANUL_000("TRMANUL00", "手工还款记账"),
//借款申请编号
JK_SQC("JKSQC", "借款申请客户为Company"),
JK_SQP("JKSQP", "借款申请客户为PC"),
JK_SQS("JKSQS", "借款申请客户为ShareTransfer"),
JK_SQM("JKSQM", "借款申请客户为Mobile"),
JK_SQH("JKSQH", "借款申请客户为person on H5"),
//协议模板编号
XDXY_L_C("XDXYLC","借款项目Lending Company"),
XDXY_L_P("XDXYLP", "借款项目Lending Person"),
XDXY_M_J("XDXYMJ", "居间协议M 借款居间J"),
XDXY_R("XDXYR0", "注册协议R 0补位"),
XDXY_Z("XDXYZ0", "征信协议Z 0补位"),
//协议子编号
XDXY_L_P_0001("XDXYLP0001", "协议编号,借款项目Lending Person"),
XDXY_R_P_0001("XDXYRP0001", "协议编号,代收协议签约"),
//消息发送编号
XX_E("XXE", "发送方式Email"),
XX_S("XXS", "发送方式SMS"),
XX_L("XXL", "发送方式Letter"),
XX_W("XXW", "发送方式微信"),
//消息模板编号
XXMB_CL("XXMBCL","credit lending个人信贷"),
XXMB_MC("XXMBMC", "小贷"),
XXMB_YX("XXMBYX", "营销类"),
//用户ID编号
US_JK_C("USJKC", "借款JK来源Company"),
US_JK_P("USJKP", "借款JK 来源Person on PC"),
US_JK_S("USJKS", "借款JK 来源Share transfer"),
US_JK_M("USJKM", "借款JK 来源person on Mobile"),
US_JK_H("USJKH", "借款JK 来源person on H5")
;
private String code;
private String desc;
private SerialNumberEnum(String code, String desc) {
this.code = code;
this.desc = desc;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/TypeEnum.java
================================================
package cn.enilu.material.bean.enumeration;
public class TypeEnum {
/**
* 输入数据的html类型
*/
public enum DataItemShowType {
/**
* 0为文本框;1为下拉框;2为日期框
*/
TEXT(0), SELECT(1), DATE(2);
private int value;
private DataItemShowType(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
/**
* 调用类型枚举类
*/
public enum InvokeTypeEnum {
/**
* 1:本地;1:远程
*/
LOCAL("local"), REMOTE("remote");
private String value;
private InvokeTypeEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
/**
* 调用结果枚举类
*/
public enum InvokeStateEnum {
/**
* 1:查询成功;-1:查询无数据;2:查询异常
*/
SUCCESS(1, "0000"), NO_DATA(-1, "0001"), ERROR(2, "9999"), ERROR_NO_WARN(2, "9999");
private int value;
private String code;
private InvokeStateEnum(int value, String code) {
this.value = value;
this.code = code;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public static boolean isError(InvokeStateEnum invokeState) {
return InvokeStateEnum.ERROR == invokeState || InvokeStateEnum.ERROR_NO_WARN == invokeState;
}
public static boolean isNeedWarning(InvokeStateEnum invokeState) {
return InvokeStateEnum.ERROR == invokeState;
}
public static InvokeStateEnum getNoData() {
return InvokeStateEnum.NO_DATA;
}
public static InvokeStateEnum getSuccess() {
return InvokeStateEnum.SUCCESS;
}
public static InvokeStateEnum getError() {
return InvokeStateEnum.ERROR;
}
public static InvokeStateEnum getErrorNoWarn() {
return InvokeStateEnum.ERROR_NO_WARN;
}
}
/**
* 订单来源枚举类
*/
public enum OrderChannelEnum {
WEB(0, "web"), WS(1, "接口");
private int value;
private String name;
private OrderChannelEnum(int value, String name) {
this.value = value;
this.name = name;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public enum AdminType {
/**
* 0为普通用户;1为超级管理员;2为机构管理员
*/
NORMAL(0), SUPERADMIN(1), ORGADMIN(2);
private int value;
private AdminType(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public enum MatchType {
/**
* 0为模糊匹配;1为精确匹配;
*/
FUZZY(0), EXACT(1);
private int value;
private MatchType(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public enum MessageType {
/**
* 0为系统通知;1为订阅通知;2为用户发送
*/
NOTIFY(0), SUBSCRIBE(1), SEND(2);
private int value;
private MessageType(int value) {
this.value = value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public enum Aspect {
AFTERPAY("afterPay"),
EVENTTRACK("eventTrack"),
SNOWLOG("snowlog"),
AFTERACTION("afterAction"),
ENTERFINAL("enterFinal"),
QUARTZJOB("quartzJob"),
AUTOTRIGGER("autoTrigger"),
PAYLIMIT("payLimit");
private String value;
private Aspect(String value) {
this.value = value;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
public enum JobStatus {
NONE("NONE", "未知"),
NORMAL("NORMAL", "正常运行"),
PAUSED("PAUSED", "暂停状态"),
COMPLETE("COMPLETE", "运行完成"),
ERROR("ERROR", "错误状态"),
BLOCKED("BLOCKED", "锁定状态");
private JobStatus(String index, String name) {
this.name = name;
this.index = index;
}
private String index;
private String name;
public String getName() {
return name;
}
public String getIndex() {
return index;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/BannerTypeEnum.java
================================================
package cn.enilu.material.bean.enumeration.cms;
public enum BannerTypeEnum {
INDEX("index"),
NEWS("news"),
CASE ("case"),
PRODUCT("product"),
SOLUTION("solution");
private String value;
BannerTypeEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/ChannelEnum.java
================================================
package cn.enilu.material.bean.enumeration.cms;
public enum ChannelEnum {
NEWS(1L,"news"),
PRODUCT(2L,"product"),
SOLUTION(3L,"solution"),
CASE(4L,"case");
private String value;
private Long id;
ChannelEnum(Long id,String value) {
this.id = id;
this.value = value;
}
public String getValue() {
return value;
}
public Long getId(){
return id;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ApplicationException.java
================================================
package cn.enilu.material.bean.exception;
/**
* 封装异常
*
* @author fengshuonan
* @Date 2017/12/28 下午10:32
*/
public class ApplicationException extends RuntimeException {
private Integer code;
private String message;
public ApplicationException(ServiceExceptionEnum serviceExceptionEnum) {
this.code = serviceExceptionEnum.getCode();
this.message = serviceExceptionEnum.getMessage();
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ExceptionEnum.java
================================================
package cn.enilu.material.bean.exception;
/**
* 异常枚举
*
* @author fengshuonan
* @Date 2017/12/28 下午10:33
*/
public enum ExceptionEnum implements ServiceExceptionEnum{
/**
* 其他
*/
WRITE_ERROR(500,"渲染界面错误"),
/**
* 文件上传
*/
FILE_READING_ERROR(400,"FILE_READING_ERROR!"),
FILE_NOT_FOUND(400,"FILE_NOT_FOUND!"),
/**
* 错误的请求
*/
REQUEST_NULL(400, "请求有错误"),
SERVER_ERROR(500, "服务器异常"),
TEST_NOT_ALLOWED(400, "演示环境不允许该操作"),
ONLY_DEMO_ACCOUNT(400,"演示环境不能试用其他账号的登录"),
TASK_CONFIG_ERROR(500, "定时任务配置错误");
ExceptionEnum(int code, String message) {
this.code = code;
this.message = message;
}
private Integer code;
private String message;
@Override
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
@Override
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/InvalidKaptchaException.java
================================================
package cn.enilu.material.bean.exception;
/**
* 验证码错误异常
*
* @author fengshuonan
* @date 2017-05-05 23:52
*/
public class InvalidKaptchaException extends RuntimeException {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/MailException.java
================================================
package cn.enilu.material.bean.exception;
public class MailException extends Exception {
public MailException(String msg) {
super(msg);
}
public MailException(String msg, Throwable e) {
super(msg, e);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ParamException.java
================================================
package cn.enilu.material.bean.exception;
public class ParamException extends Exception {
public ParamException(String msg) {
super(msg);
}
public ParamException(String msg, Throwable e) {
super(msg, e);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ServiceExceptionEnum.java
================================================
package cn.enilu.material.bean.exception;
/**
* 抽象接口
*
* @author fengshuonan
* @date 2017-12-28-下午10:27
*/
public interface ServiceExceptionEnum {
/**
* 获取异常编码
*/
Integer getCode();
/**
* 获取异常信息
*/
String getMessage();
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/SlConnectException.java
================================================
package cn.enilu.material.bean.exception;
import java.util.List;
public class SlConnectException extends Exception {
private static final long serialVersionUID = 1L;
private String errorCode;
private List<String> details;
public SlConnectException(String errorCode, String errorMessage) {
super(errorMessage);
this.errorCode = errorCode;
}
public String getErrorCode() {
return errorCode;
}
public List<String> getDetails() {
return details;
}
public void setDetails(List<String> details) {
this.details = details;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/SlEvalException.java
================================================
package cn.enilu.material.bean.exception;
import java.util.List;
public class SlEvalException extends Exception {
private static final long serialVersionUID = 1L;
private String errorCode;
private List<String> details;
public SlEvalException(String errorCode, String errorMessage) {
super(errorMessage);
this.errorCode = errorCode;
}
public String getErrorCode() {
return errorCode;
}
public List<String> getDetails() {
return details;
}
public void setDetails(List<String> details) {
this.details = details;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ValidException.java
================================================
package cn.enilu.material.bean.exception;
public class ValidException extends RuntimeException {
public ValidException(String msg) {
super(msg);
}
public ValidException(String msg, Throwable e) {
super(msg, e);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/XSException.java
================================================
package cn.enilu.material.bean.exception;
/**
* 定义通用异常
* code 存储异常代码
* @author czhou
*/
public class XSException extends Exception {
private static final long serialVersionUID = 1L;
private String code;
public String getCode() {
return this.code;
}
public XSException(String code, String message, Throwable t) {
super(message, t);
this.code = code;
}
public XSException(String code, String message) {
this(code, message, null);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/XSRuntimeException.java
================================================
package cn.enilu.material.bean.exception;
@SuppressWarnings("serial")
public class XSRuntimeException extends RuntimeException {
public XSRuntimeException(String msg) {
super(msg);
}
public XSRuntimeException(String msg, Throwable e) {
super(msg, e);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/DictVo.java
================================================
package cn.enilu.material.bean.vo;
/**
* DictVo
*
* @author enilu
* @version 2018/8/14 0014
*/
public class DictVo {
private String key;
private String value;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public DictVo() {
}
public DictVo(String key, String value) {
this.key = key;
this.value = value;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/QuartzJob.java
================================================
package cn.enilu.material.bean.vo;
import lombok.Getter;
import lombok.Setter;
import java.io.Serializable;
import java.util.Date;
import java.util.Map;
@Getter
@Setter
public class QuartzJob implements Serializable {
private String jobId;
private String jobName;
private String jobGroup;
private String jobClass;
private String description;
private String cronExpression;
private boolean concurrent;
private String jobStatus;
private Date nextTime;
private Date previousTime;
private boolean disabled;
private Map<String, Object> dataMap;
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/SpringContextHolder.java
================================================
package cn.enilu.material.bean.vo;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
/**
* Spring的ApplicationContext的持有者,可以用静态方法的方式获取spring容器中的bean
*
* @author fengshuonan
* @date 2016年11月27日 下午3:32:11
*/
@Component
public class SpringContextHolder implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextHolder.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
assertApplicationContext();
return applicationContext;
}
@SuppressWarnings("unchecked")
public static <T> T getBean(String beanName) {
assertApplicationContext();
return (T) applicationContext.getBean(beanName);
}
public static <T> T getBean(Class<T> requiredType) {
assertApplicationContext();
return applicationContext.getBean(requiredType);
}
private static void assertApplicationContext() {
if (SpringContextHolder.applicationContext == null) {
throw new RuntimeException("applicaitonContext属性为null,请检查是否注入了SpringContextHolder!");
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/front/Ret.java
================================================
package cn.enilu.material.bean.vo.front;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Ret<T> {
private Integer code;
private String msg;
private T data;
private boolean success;
public Ret() {
}
public Ret(Integer code, String msg, T data) {
this.code = code;
this.msg = msg;
this.data = data;
this.success = "0000".equals(code);
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("{");
builder.append("'code':").append(code).append(",");
builder.append("'msg':").append(msg).append(",");
builder.append("'success':").append(success).append(",");
builder.append("}");
return builder.toString();
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/front/Rets.java
================================================
package cn.enilu.material.bean.vo.front;
public class Rets {
public static final Integer SUCCESS = 20000;
public static final Integer FAILURE = 9999;
public static final Integer TOKEN_EXPIRE=50014;
public static Ret success(Object data) {
return new Ret(Rets.SUCCESS, "成功", data);
}
public static Ret failure(String msg) {
return new Ret(Rets.FAILURE, msg, null);
}
public static Ret success() {
return new Ret(Rets.SUCCESS, "成功", null);
}
public static Ret expire(){
return new Ret(Rets.TOKEN_EXPIRE,"token 过期",null);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/DeptNode.java
================================================
package cn.enilu.material.bean.vo.node;
import cn.enilu.material.bean.entity.system.Dept;
import java.util.ArrayList;
import java.util.List;
/**
* DeptNode
*
* @author enilu
* @version 2018/9/15 0015
*/
public class DeptNode extends Dept {
private List<DeptNode> children = new ArrayList<>(10);
public List<DeptNode> getChildren() {
return children;
}
public void setChildren(List<DeptNode> children) {
this.children = children;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/IsMenu.java
================================================
package cn.enilu.material.bean.vo.node;
/**
* 是否是菜单的枚举
*
* @author fengshuonan
* @date 2017年6月1日22:50:11
*/
public enum IsMenu {
YES(1, "是"),
NO(0, "不是");//不是菜单的是按钮
int code;
String message;
IsMenu(int code, String message) {
this.code = code;
this.message = message;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static String valueOf(Integer status) {
if (status == null) {
return "";
} else {
for (IsMenu s : IsMenu.values()) {
if (s.getCode() == status) {
return s.getMessage();
}
}
return "";
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/MenuNode.java
================================================
package cn.enilu.material.bean.vo.node;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* @author fengshuonan
* @Description 菜单的节点
* @date 2016年12月6日 上午11:34:17
*/
public class MenuNode implements Comparable , Serializable {
/**
* 节点id
*/
private Long id;
/**
* 父节点
*/
private Long parentId;
/**
* 节点名称
*/
private String name;
/**
* 按钮级别
*/
private Integer levels;
/**
* 按钮级别
*/
private Integer ismenu;
private String isMenuName;
private Integer status;
private String statusName;
/**
* 按钮的排序
*/
private Integer num;
/**
* 节点的url
*/
private String url;
/**
* 节点图标
*/
private String icon;
/**
* 菜单编码
*/
private String code;
/**
* 子节点的集合
*/
private List<MenuNode> children = new ArrayList<>(10);
/**
* 查询子节点时候的临时集合
*/
private List<MenuNode> linkedList = new ArrayList<MenuNode>();
public MenuNode() {
super();
}
public MenuNode(Long id, Long parentId) {
super();
this.id = id;
this.parentId = parentId;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Integer getLevels() {
return levels;
}
public void setLevels(Integer levels) {
this.levels = levels;
}
public String getIcon() {
return icon;
}
public void setIcon(String icon) {
this.icon = icon;
}
public static MenuNode createRoot() {
return new MenuNode(0L, -1L);
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getParentId() {
return parentId;
}
public void setParentId(Long parentId) {
this.parentId = parentId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public List<MenuNode> getChildren() {
return children;
}
public void setChildren(List<MenuNode> children) {
this.children = children;
}
public Integer getNum() {
return num;
}
public void setNum(Integer num) {
this.num = num;
}
public Integer getIsmenu() {
return ismenu;
}
public void setIsmenu(Integer ismenu) {
this.ismenu = ismenu;
}
public String getIsMenuName() {
return ismenu == 1 ?"是":"否";
}
public void setIsMenuName(String isMenuName) {
this.isMenuName = isMenuName;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getStatusName() {
return status == 1 ?"启用":"禁用";
}
public void setStatusName(String statusName) {
this.statusName = statusName;
}
@Override
public String toString() {
return "MenuNode{" +
"id=" + id +
", parentId=" + parentId +
", name='" + name + '\'' +
", levels=" + levels +
", num=" + num +
", url='" + url + '\'' +
", icon='" + icon + '\'' +
", children=" + children +
", linkedList=" + linkedList +
'}';
}
@Override
public int compareTo(Object o) {
MenuNode menuNode = (MenuNode) o;
Integer num = menuNode.getNum();
if (num == null) {
num = 0;
}
return this.num.compareTo(num);
}
/**
* 构建整个菜单树
*
* @author fengshuonan
*/
public void buildNodeTree(List<MenuNode> nodeList) {
for (MenuNode treeNode : nodeList) {
List<MenuNode> linkedList = treeNode.findChildNodes(nodeList, treeNode.getId());
if (linkedList.size() > 0) {
treeNode.setChildren(linkedList);
}
}
}
/**
* 查询子节点的集合
*
* @author fengshuonan
*/
public List<MenuNode> findChildNodes(List<MenuNode> nodeList, Long parentId) {
if (nodeList == null && parentId == null)
return null;
for (Iterator<MenuNode> iterator = nodeList.iterator(); iterator.hasNext(); ) {
MenuNode node = (MenuNode) iterator.next();
// 根据传入的某个父节点ID,遍历该父节点的所有子节点
if (node.getParentId() != 0 && parentId.equals(node.getParentId())) {
recursionFn(nodeList, node, parentId);
}
}
return linkedList;
}
/**
* 遍历一个节点的子节点
*
* @author fengshuonan
*/
public void recursionFn(List<MenuNode> nodeList, MenuNode node, Long pId) {
List<MenuNode> childList = getChildList(nodeList, node);// 得到子节点列表
if (childList.size() > 0) {// 判断是否有子节点
if (node.getParentId().equals(pId)) {
linkedList.add(node);
}
Iterator<MenuNode> it = childList.iterator();
while (it.hasNext()) {
MenuNode n = (MenuNode) it.next();
recursionFn(nodeList, n, pId);
}
} else {
if (node.getParentId().equals(pId)) {
linkedList.add(node);
}
}
}
/**
* 得到子节点列表
*
* @author fengshuonan
*/
private List<MenuNode> getChildList(List<MenuNode> list, MenuNode node) {
List<MenuNode> nodeList = new ArrayList<MenuNode>();
Iterator<MenuNode> it = list.iterator();
while (it.hasNext()) {
MenuNode n = (MenuNode) it.next();
if (n.getParentId().equals(node.getId())) {
nodeList.add(n);
}
}
return nodeList;
}
/**
* 清除掉按钮级别的资源
*
* @date 2017年2月19日 下午11:04:11
*/
public static List<MenuNode> clearBtn(List<MenuNode> nodes) {
ArrayList<MenuNode> noBtns = new ArrayList<MenuNode>();
for (MenuNode node : nodes) {
if(node.getIsmenu() == IsMenu.YES.getCode()){
noBtns.add(node);
}
}
return noBtns;
}
/**
* 清除所有二级菜单
*
* @date 2017年2月19日 下午11:18:19
*/
public static List<MenuNode> clearLevelTwo(List<MenuNode> nodes) {
ArrayList<MenuNode> results = new ArrayList<MenuNode>();
for (MenuNode node : nodes) {
Integer levels = node.getLevels();
if (levels.equals(1)) {
results.add(node);
}
}
return results;
}
/**
* 构建菜单列表
*
* @date 2017年2月19日 下午11:18:19
*/
public static List<MenuNode> buildTitle(List<MenuNode> nodes) {
List<MenuNode> clearBtn = clearBtn(nodes);
new MenuNode().buildNodeTree(clearBtn);
List<MenuNode> menuNodes = clearLevelTwo(clearBtn);
//对菜单排序
Collections.sort(menuNodes);
//对菜单的子菜单进行排序
for (MenuNode menuNode : menuNodes) {
if (menuNode.getChildren() != null && menuNode.getChildren().size() > 0) {
Collections.sort(menuNode.getChildren());
}
}
return menuNodes;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/Node.java
================================================
package cn.enilu.material.bean.vo.node;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* Node
*
* @author enilu
* @version 2018/11/24 0024
*/
@Data
public class Node {
private Long id;
private Long pid;
private String name;
private Boolean checked;
private List<Node> children = new ArrayList<>(10);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/ZTreeNode.java
================================================
package cn.enilu.material.bean.vo.node;
/**
*
* jquery ztree 插件的节点
*
* @author fengshuonan
* @date 2017年2月17日 下午8:25:14
*/
public class ZTreeNode {
private Long id; //节点id
private Long pId;//父节点id
private String code;//编号
private String name;//节点名称
private Boolean open;//是否打开节点
private Boolean checked;//是否被选中
private Object nodeData;//自定义数据
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getpId() {
return pId;
}
public void setpId(Long pId) {
this.pId = pId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getOpen() {
return open;
}
public void setOpen(Boolean open) {
this.open = open;
}
public Boolean getIsOpen() {
return open;
}
public void setIsOpen(Boolean open) {
this.open = open;
}
public Boolean getChecked() {
return checked;
}
public void setChecked(Boolean checked) {
this.checked = checked;
}
public Object getNodeData() {
return nodeData;
}
public void setNodeData(Object nodeData) {
this.nodeData = nodeData;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public static ZTreeNode createParent(){
ZTreeNode zTreeNode = new ZTreeNode();
zTreeNode.setChecked(true);
zTreeNode.setId(0L);
zTreeNode.setName("顶级");
zTreeNode.setOpen(true);
zTreeNode.setpId(0L);
zTreeNode.setCode("");
return zTreeNode;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/DynamicSpecifications.java
================================================
package cn.enilu.material.bean.vo.query;
import cn.enilu.material.utils.Lists;
import org.apache.commons.lang3.StringUtils;
import org.springframework.data.jpa.domain.Specification;
import javax.persistence.criteria.*;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* descript
*
* @author :enilu
* @date :Created in 2019/6/30 16:04
*/
public class DynamicSpecifications {
public static <T> Specification<T> bySearchFilter(final Collection<SearchFilter> filters, final Class<T> entityClazz) {
return new Specification<T>() {
@Override
public Predicate toPredicate(Root<T> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
if (filters!=null && !filters.isEmpty()) {
List<Predicate> predicates = Lists.newArrayList();
for (SearchFilter filter : filters) {
// nested path translate, 如Task的名为"user.name"的filedName, 转换为Task.user.name属性
String[] names = StringUtils.split(filter.fieldName, ".");
Path expression = root.get(names[0]);
for (int i = 1; i < names.length; i++) {
expression = expression.get(names[i]);
}
// logic operator
switch (filter.operator) {
case EQ:
predicates.add(builder.equal(expression, filter.value));
break;
case LIKE:
predicates.add(builder.like(expression, "%" + filter.value + "%"));
break;
case GT:
predicates.add(builder.greaterThan(expression, (Comparable) filter.value));
break;
case LT:
predicates.add(builder.lessThan(expression, (Comparable) filter.value));
break;
case GTE:
predicates.add(builder.greaterThanOrEqualTo(expression, (Comparable) filter.value));
break;
case LTE:
predicates.add(builder.lessThanOrEqualTo(expression, (Comparable) filter.value));
break;
case IN:
if(filter.value.getClass().isArray()){
predicates.add(expression.in((Object[]) filter.value));
}else {
predicates.add(expression.in((ArrayList) filter.value));
}
break;
case ISNULL:
predicates.add(expression.isNull());
break;
case ISNOTNULL:
predicates.add(expression.isNotNull());
break;
}
}
// 将所有条件用 and 联合起来
if (!predicates.isEmpty()) {
return builder.and(predicates.toArray(new Predicate[predicates.size()]));
}
}
return builder.conjunction();
}
};
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/MutiStrFactory.java
================================================
package cn.enilu.material.bean.vo.query;
import cn.enilu.material.utils.ToolUtil;
import cn.enilu.material.utils.StrKit;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 组合字符串生产者
*
* @author fengshuonan
* @date 2017-04-27 16:42
*/
public class MutiStrFactory {
/**
* 每个条目之间的分隔符
*/
public static final String ITEM_SPLIT = ";";
/**
* 属性之间的分隔符
*/
public static final String ATTR_SPLIT = ":";
/**
* 拼接字符串的id
*/
public static final String MUTI_STR_ID = "ID";
/**
* 拼接字符串的key
*/
public static final String MUTI_STR_KEY = "KEY";
/**
* 拼接字符串的value
*/
public static final String MUTI_STR_VALUE = "VALUE";
/**
* 解析一个组合字符串(例如: "1:启用;2:禁用;3:冻结" 这样的字符串)
*
* @author fengshuonan
* @Date 2017/4/27 16:44
*/
public static List<Map<String,String>> parseKeyValue(String mutiString){
if(ToolUtil.isEmpty(mutiString)){
return new ArrayList<>();
}else{
ArrayList<Map<String,String>> results = new ArrayList<>();
String[] items = StrKit.split(StrKit.removeSuffix(mutiString, ITEM_SPLIT), ITEM_SPLIT);
for (String item : items) {
String[] attrs = item.split(ATTR_SPLIT);
HashMap<String, String> itemMap = new HashMap<>();
itemMap.put(MUTI_STR_KEY,attrs[0]);
itemMap.put(MUTI_STR_VALUE,attrs[1]);
results.add(itemMap);
}
return results;
}
}
/**
* 解析id:key:value这样类型的字符串
*
* @author fengshuonan
* @Date 2017/4/28 11:06
*/
public static List<Map<String,String>> parseIdKeyValue(String mutiString){
if(ToolUtil.isEmpty(mutiString)){
return new ArrayList<>();
}else{
ArrayList<Map<String,String>> results = new ArrayList<>();
String[] items = StrKit.split(StrKit.removeSuffix(mutiString, ITEM_SPLIT), ITEM_SPLIT);
for (String item : items) {
String[] attrs = item.split(ATTR_SPLIT);
HashMap<String, String> itemMap = new HashMap<>();
itemMap.put(MUTI_STR_ID,attrs[0]);
itemMap.put(MUTI_STR_KEY,attrs[1]);
itemMap.put(MUTI_STR_VALUE,attrs[2]);
results.add(itemMap);
}
return results;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/Page.java
================================================
package cn.enilu.material.bean.vo.query;
import cn.enilu.material.utils.Lists;
import cn.enilu.material.utils.StringUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Created on 2018/3/22 0022.
*
* @author enilu
*/
public class Page<T> {
/**
* 该操作只是为了忽略RowBounds属性
*
*
*/
private transient int offset;
/**
* 该操作只是为了忽略RowBounds属性
*
*
*/
private transient int limit;
/**
* 总数
*/
private int total;
/**
* 每页显示条数,默认 10
*/
private int size = 10;
/**
* 总页数
*/
private int pages;
/**
* 当前页
*/
private int current = 1;
/**
* 查询总记录数(默认 true)
*/
private transient boolean searchCount = true;
/**
* 开启排序(默认 true) 只在代码逻辑判断 并不截取sql分析
*
*
**/
private transient boolean openSort = true;
/**
* <p>
* SQL 排序 ASC 集合
* </p>
*/
private transient List<String> ascs;
/**
* <p>
* SQL 排序 DESC 集合
* </p>
*/
private transient List<String> descs;
/**
* 是否为升序 ASC( 默认: true )
*
* @see #ascs
* @see #descs
*/
private transient boolean isAsc = true;
/**
* <p>
* SQL 排序 ORDER BY 字段,例如: id DESC(根据id倒序查询)
* </p>
* <p>
* DESC 表示按倒序排序(即:从大到小排序)<br>
* ASC 表示按正序排序(即:从小到大排序)
*
* @see #ascs
* @see #descs
* </p>
*/
private transient String orderByField;
public Page() {
}
public Page(int current, int size, String orderByField) {
this.setOrderByField(orderByField);
}
public Page(int current, int size, String orderByField, boolean isAsc) {
this(current, size, orderByField);
this.setAsc(isAsc);
}
/**
* <p>
* 分页构造函数
* </p>
*
* @param current 当前页
* @param size 每页显示条数
*/
public Page(int current, int size) {
this(current,size,true);
}
public Page(int current, int size, boolean searchCount) {
this(current, size, searchCount, true);
}
public Page(int current, int size, boolean searchCount, boolean openSort) {
setOffset(offsetCurrent(current, size));
setLimit(size);
if (current > 1) {
this.current = current;
}
this.size = size;
this.searchCount = searchCount;
this.openSort = openSort;
}
protected static int offsetCurrent(int current, int size) {
if (current > 0) {
return (current - 1) * size;
}
return 0;
}
public int offsetCurrent() {
return offsetCurrent(this.current, this.size);
}
public boolean hasPrevious() {
return this.current > 1;
}
public boolean hasNext() {
return this.current < this.pages;
}
public int getTotal() {
return total;
}
public Page setTotal(int total) {
this.total = total;
return this;
}
public int getSize() {
return size;
}
public Page setSize(int size) {
this.size = size;
return this;
}
public int getPages() {
if (this.size == 0) {
return 0;
}
this.pages = this.total / this.size;
if (this.total % this.size != 0) {
this.pages++;
}
return this.pages;
}
public int getCurrent() {
return current;
}
public Page setCurrent(int current) {
this.current = current;
return this;
}
public boolean isSearchCount() {
return searchCount;
}
public Page setSearchCount(boolean searchCount) {
this.searchCount = searchCount;
return this;
}
/**
* @see #ascs
* @see #descs
*/
@Deprecated
public String getOrderByField() {
return orderByField;
}
/**
* @see #ascs
* @see #descs
*/
public Page setOrderByField(String orderByField) {
if (StringUtils.isNotEmpty(orderByField)) {
this.orderByField = orderByField;
}
return this;
}
public boolean isOpenSort() {
return openSort;
}
public Page setOpenSort(boolean openSort) {
this.openSort = openSort;
return this;
}
public List<String> getAscs() {
return orders(isAsc, ascs);
}
private List<String> orders(boolean condition, List<String> columns) {
if (condition && StringUtils.isNotEmpty(orderByField)) {
if (columns == null) {
columns = new ArrayList<>();
}
if (!columns.contains(orderByField)) {
columns.add(orderByField);
}
}
return columns;
}
public Page setAscs(List<String> ascs) {
this.ascs = ascs;
return this;
}
public List<String> getDescs() {
return orders(!isAsc, descs);
}
public Page setDescs(List<String> descs) {
this.descs = descs;
return this;
}
/**
* @see #ascs
* @see #descs
*/
@Deprecated
public boolean isAsc() {
return isAsc;
}
/**
* @see #ascs
* @see #descs
*/
public Page setAsc(boolean isAsc) {
this.isAsc = isAsc;
return this;
}
public int getOffset() {
return offset;
}
public Page setOffset(int offset) {
this.offset = offset;
return this;
}
public int getLimit() {
return limit;
}
public Page setLimit(int limit) {
this.limit = limit;
return this;
}
/**
* 查询数据列表
*/
private List<T> records = Collections.emptyList();
/**
* 查询参数
*/
private transient Map<String, Object> condition;
private transient List<SearchFilter> filters;
public List<T> getRecords() {
return records;
}
public Page<T> setRecords(List<T> records) {
this.records = records;
return this;
}
public Map<String, Object> getCondition() {
return condition;
}
public Page<T> setCondition(Map<String, Object> condition) {
this.condition = condition;
return this;
}
public List<SearchFilter> getFilters() {
return filters;
}
public void setFilters(List<SearchFilter> filters) {
this.filters = filters;
}
public void addFilter(SearchFilter filter){
if(filter==null){
return ;
}
if(filters==null){
filters = Lists.newArrayList();
}
filters.add(filter);
}
public void addFilter(String fieldName, SearchFilter.Operator operator, Object value){
if(!StringUtils.isNullOrEmpty(value)){
addFilter(SearchFilter.build(fieldName,operator,value));
}
}
public void addFilter(String fieldName, SearchFilter.Operator operator){
addFilter(SearchFilter.build(fieldName,operator));
}
@Override
public String toString() {
StringBuilder pg = new StringBuilder();
pg.append(" Page:{ [").append(super.toString()).append("], ");
if (records != null) {
pg.append("records-size:").append(records.size());
} else {
pg.append("records is null");
}
return pg.append(" }").toString();
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/SearchFilter.java
================================================
package cn.enilu.material.bean.vo.query;
import cn.enilu.material.utils.Maps;
import org.apache.commons.lang3.StringUtils;
import java.util.Map;
/**
* descript
*
* @author :enilu
* @date :Created in 2019/6/30 16:02
*/
public class SearchFilter {
public enum Operator {
EQ, LIKE, GT, LT, GTE, LTE,IN,ISNULL,ISNOTNULL
}
public String fieldName;
public Object value;
public Operator operator = Operator.EQ;
public static SearchFilter build(String fieldName, Operator operator, Object value){
return new SearchFilter(fieldName,operator,value);
}
public static SearchFilter build(String fieldName, Object val){
return new SearchFilter(fieldName,Operator.EQ,val);
}
public SearchFilter(String fieldName, Object val) {
this.fieldName = fieldName;
this.value = val;
}
public SearchFilter(String fieldName, Operator operator, Object value) {
this.fieldName = fieldName;
this.value = value;
this.operator = operator;
}
/**
* searchParams中key的格式为OPERATOR_FIELDNAME
*/
public static Map<String, SearchFilter> parse(Map<String, Object> searchParams) {
Map<String, SearchFilter> filters = Maps.newHashMap();
for (Map.Entry<String, Object> entry : searchParams.entrySet()) {
// 过滤掉空值
String key = entry.getKey();
Object value = entry.getValue();
/*if (StringUtils.isBlank((String) value)) {
continue;
}*/
// 拆分operator与filedAttribute
String[] names = StringUtils.split(key, "_");
if (names.length != 2) {
throw new IllegalArgumentException(key + " is not a valid search filter name");
}
String filedName = names[1];
Operator operator = Operator.valueOf(names[0]);
// 创建searchFilter
SearchFilter filter = new SearchFilter(filedName, operator, value);
filters.put(key, filter);
}
return filters;
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepository.java
================================================
package cn.enilu.material.dao;
import cn.enilu.material.bean.vo.query.SearchFilter;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.NoRepositoryBean;
import org.springframework.data.repository.PagingAndSortingRepository;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 封装基础的dao接口
*
* @author :enilu
* @date :Created in 2019/6/29 12:50
*/
@NoRepositoryBean
public interface BaseRepository<T, ID extends Serializable> extends JpaRepository<T, ID>
, PagingAndSortingRepository<T, ID>
, JpaSpecificationExecutor<T> {
List<Map> queryBySql(String sql);
List<Map> queryBySql(String sql, List<SearchFilter> filter);
List<T> query(String sql);
Object getBySql(String sql);
T get(String sql);
int execute(String sql);
Class<T> getDataClass();
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryFactoryBean.java
================================================
package cn.enilu.material.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.support.JpaEntityInformation;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactory;
import org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean;
import org.springframework.data.jpa.repository.support.JpaRepositoryImplementation;
import org.springframework.data.repository.core.RepositoryInformation;
import org.springframework.data.repository.core.RepositoryMetadata;
import org.springframework.data.repository.core.support.RepositoryFactorySupport;
import org.springframework.util.Assert;
import javax.persistence.EntityManager;
import java.io.Serializable;
/**
* 自定义repository工厂类
*
* @author :enilu
* @date :Created in 2019/6/29 12:59
*/
public class BaseRepositoryFactoryBean<JR extends JpaRepository<T, ID>, T, ID extends Serializable>
extends JpaRepositoryFactoryBean<JR, T, ID> {
public BaseRepositoryFactoryBean(Class<? extends JR> repositoryInterface) {
super(repositoryInterface);
}
@Override
protected RepositoryFactorySupport createRepositoryFactory(EntityManager entityManager) {
return new BaseRepositoryFactory(entityManager);
}
private static class BaseRepositoryFactory<T, ID extends Serializable> extends JpaRepositoryFactory {
private final EntityManager entityManager;
public BaseRepositoryFactory(EntityManager entityManager) {
super(entityManager);
this.entityManager = entityManager;
}
@Override
protected JpaRepositoryImplementation<?, ?> getTargetRepository(RepositoryInformation information, EntityManager entityManager) {
JpaEntityInformation<?, Serializable> entityInformation = this.getEntityInformation(information.getDomainType());
Object repository = this.getTargetRepositoryViaReflection(information, new Object[]{entityInformation, entityManager});
Assert.isInstanceOf(BaseRepositoryImpl.class, repository);
return (JpaRepositoryImplementation)repository;
}
@Override
protected Class<?> getRepositoryBaseClass(RepositoryMetadata metadata) {
return BaseRepositoryImpl.class;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryImpl.java
================================================
package cn.enilu.material.dao;
import cn.enilu.material.bean.vo.query.SearchFilter;
import org.hibernate.SQLQuery;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.data.jpa.repository.support.JpaEntityInformation;
import org.springframework.data.jpa.repository.support.SimpleJpaRepository;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
/**
* 基础dao实现类
*
* @author :enilu
* @date :Created in 2019/6/29 12:53
*/
public class BaseRepositoryImpl<T, ID extends Serializable>
extends SimpleJpaRepository<T, ID>
implements BaseRepository<T, ID> {
private final EntityManager entityManager;
private Class<T> klass;
BaseRepositoryImpl(JpaEntityInformation<T, ID> entityInformation,
EntityManager entityManager) {
super(entityInformation, entityManager);
this.entityManager = entityManager;
this.klass = (Class<T>) entityInformation.getJavaType();
}
@Override
public List<Map> queryBySql(String sql) {
return queryBySql(sql,null);
}
@Override
public List<Map> queryBySql(String sql, List<SearchFilter> filters) {
Query query = entityManager.createNativeQuery(sql);
query.unwrap(NativeQueryImpl.class)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
if(filters!=null&&!filters.isEmpty()) {
for (SearchFilter filter : filters) {
query.setParameter(filter.fieldName, filter.value);
}
}
List list = query.getResultList();
return list;
}
@Override
public Object getBySql(String sql) {
List list = entityManager.createNativeQuery(sql).getResultList();
if(list.isEmpty()){
return null;
}
return list.get(0);
}
@Override
public T get(String sql) {
List<T> list = entityManager.createNativeQuery(sql,klass).getResultList();
return list.get(0);
}
@Override
public int execute(String sql) {
return entityManager.createNativeQuery(sql).executeUpdate();
}
@Override
public Class<T> getDataClass() {
return klass;
}
@Override
public List<T> query(String sql) {
return entityManager.createNativeQuery(sql,klass).getResultList();
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/DaoConfiguration.java
================================================
package cn.enilu.material.dao;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
/**
* Name: DabConfiguration<br>
* User: Yao<br>
* Date: 2018/2/27<br>
* Time: 13:54<br>
*/
@Configuration
@EnableJpaRepositories("cn.enilu.material.dao")
public class DaoConfiguration {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/BaseCache.java
================================================
package cn.enilu.material.dao.cache;
import cn.enilu.material.bean.vo.SpringContextHolder;
import cn.enilu.material.service.system.impl.ConstantFactory;
/**
* @author :enilu
* @date :Created in 2020/4/26 19:07
*/
public abstract class BaseCache implements Cache {
@Override
public void cache() {
SpringContextHolder.getBean(ConstantFactory.class).cleanLocalCache();
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/Cache.java
================================================
package cn.enilu.material.dao.cache;
/**
* 顶级缓存接口
*/
public interface Cache {
/**
* 将数据库中的数据加载到缓存中
*/
void cache();
/**
* 获取缓存数据
*
* @param key
* @return
*/
Object get(String key);
/**
* 设置缓存数据
*
* @param key
* @param val
*/
void set(String key, Object val);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/CacheDao.java
================================================
package cn.enilu.material.dao.cache;
import java.io.Serializable;
/**
* CacheDao
*
* @author enilu
* @version 2018/9/12 0012
*/
public interface CacheDao {
/**
* 设置hash key值
*
* @param key
* @param k
* @param val
*/
void hset(Serializable key, Serializable k, Object val);
/**
* 获取hash key值
*
* @param key
* @param k
* @return
*/
Serializable hget(Serializable key, Serializable k);
/**
* 获取hash key值
* @param key
* @param k
* @param klass
* @param <T>
* @return
*/
<T>T hget(Serializable key, Serializable k,Class<T> klass);
/**
* 设置key值,超时失效
*
* @param key
* @param val
*/
void set(Serializable key, Object val);
/**
* 获取key值
*
* @param key
* @return
*/
<T>T get(Serializable key,Class<T> klass);
String get(Serializable key);
void del(Serializable key);
void hdel(Serializable key, Serializable k);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/ConfigCache.java
================================================
package cn.enilu.material.dao.cache;
/**
* 全局配置数据访问
*/
public interface ConfigCache extends Cache {
/**
* 获取全局配置参数值,可选本地缓存
* @param key
* @return
*/
String get(String key, boolean local);
/**
* 获取全局配置参数值(带默认值)
*
* @param key the key
* @param def the default value
* @return the config
*/
String get(String key, String def);
/**
* 删除缓存
* @param key
* @param val
*/
void del(String key, String val);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/DictCache.java
================================================
package cn.enilu.material.dao.cache;
import cn.enilu.material.bean.entity.system.Dict;
import java.util.List;
/**
* 字典缓存
*
* @author zt
* @version 2018/12/23 0023
*/
public interface DictCache extends Cache{
List<Dict> getDictsByPname(String dictName);
String getDict(Long dictId);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/TokenCache.java
================================================
package cn.enilu.material.dao.cache;
import cn.enilu.material.bean.core.ShiroUser;
import cn.enilu.material.dao.cache.impl.EhcacheDao;
import cn.enilu.material.utils.HttpKit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* 用户登录时,生成的Token与用户ID的对应关系
*/
@Service
public class TokenCache {
@Autowired
private EhcacheDao ehcacheDao;
public void put(String token, Long idUser) {
ehcacheDao.hset(EhcacheDao.SESSION,token, idUser);
}
public Long get(String token) {
return ehcacheDao.hget(EhcacheDao.SESSION,token,Long.class);
}
public Long getIdUser(){
return ehcacheDao.hget(EhcacheDao.SESSION,HttpKit.getToken(),Long.class );
}
public void remove(String token) {
ehcacheDao.hdel(EhcacheDao.SESSION,token);
}
public void setUser(String token, ShiroUser shiroUser){
ehcacheDao.hset(EhcacheDao.SESSION,token+"user",shiroUser);
}
public ShiroUser getUser(String token){
return ehcacheDao.hget(EhcacheDao.SESSION,token+"user",ShiroUser.class);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/ConfigCacheImpl.java
================================================
package cn.enilu.material.dao.cache.impl;
import cn.enilu.material.bean.entity.system.Cfg;
import cn.enilu.material.dao.cache.BaseCache;
import cn.enilu.material.dao.cache.CacheDao;
import cn.enilu.material.dao.cache.ConfigCache;
import cn.enilu.material.dao.system.CfgRepository;
import cn.enilu.material.utils.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* 全局参数缓存实现类
*
* @author enilu
* @version 2018/12/20 0020
*/
@Service
public class ConfigCacheImpl extends BaseCache implements ConfigCache {
private static final Logger logger = LoggerFactory.getLogger(ConfigCacheImpl.class);
@Autowired
private CfgRepository cfgRepository;
@Autowired
private CacheDao cacheDao;
@Override
public Object get(String key) {
return (String) cacheDao.hget(EhcacheDao.CONSTANT,key);
}
@Override
public String get(String key, boolean local) {
String ret = null;
if(local) {
ret = (String) get(key);
}else{
ret = cfgRepository.findByCfgName(key).getCfgValue();
set(key,ret);
}
return ret;
}
@Override
public String get(String key, String def) {
String ret = (String) get(key);
if(StringUtils.isEmpty(ret)){
return ret;
}
return ret;
}
@Override
public void set(String key, Object val) {
cacheDao.hset(EhcacheDao.CONSTANT,key,val);
}
@Override
public void del(String key, String val) {
cacheDao.hdel(EhcacheDao.CONSTANT,val);
}
@Override
public void cache() {
super.cache();
logger.info("reset config cache");
List<Cfg> list = cfgRepository.findAll();
if (list != null && !list.isEmpty()) {
for (Cfg cfg : list) {
if (StringUtils.isNotEmpty(cfg.getCfgName()) && StringUtils.isNotEmpty(cfg.getCfgValue())) {
set(cfg.getCfgName(),cfg.getCfgValue());
}
}
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/DictCacheImpl.java
================================================
package cn.enilu.material.dao.cache.impl;
import cn.enilu.material.bean.constant.cache.CacheKey;
import cn.enilu.material.bean.entity.system.Dict;
import cn.enilu.material.dao.cache.BaseCache;
import cn.enilu.material.dao.cache.CacheDao;
import cn.enilu.material.dao.cache.DictCache;
import cn.enilu.material.dao.system.DictRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.List;
/**
* DictCacheImpl
*
* @author zt
* @version 2018/12/23 0023
*/
@Component
public class DictCacheImpl extends BaseCache implements DictCache {
@Autowired
private DictRepository dictRepository;
@Autowired
private CacheDao cacheDao;
@Override
public List<Dict> getDictsByPname(String dictName) {
return (List<Dict>) cacheDao.hget(EhcacheDao.CONSTANT, CacheKey.DICT + dictName, List.class);
}
@Override
public String getDict(Long dictId) {
return (String) get(CacheKey.DICT_NAME + String.valueOf(dictId));
}
@Override
public void cache() {
super.cache();
List<Dict> list = dictRepository.findByPid(0L);
for (Dict dict : list) {
List<Dict> children = dictRepository.findByPid(dict.getId());
if (children.isEmpty()) {
continue;
}
set(String.valueOf(dict.getId()), children);
set(dict.getName(), children);
for (Dict child : children) {
set(CacheKey.DICT_NAME + String.valueOf(child.getId()), child.getName());
}
}
}
@Override
public Object get(String key) {
return cacheDao.hget(EhcacheDao.CONSTANT, CacheKey.DICT + key);
}
@Override
public void set(String key, Object val) {
cacheDao.hset(EhcacheDao.CONSTANT, CacheKey.DICT + key, val);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/EhcacheDao.java
================================================
package cn.enilu.material.dao.cache.impl;
import cn.enilu.material.dao.cache.CacheDao;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.io.Serializable;
/**
* EhcacheDao
*
* @author enilu
* @version 2018/9/12 0012
*/
@Component
public class EhcacheDao implements CacheDao {
//缓存常量,永不过期
public static final String CONSTANT = "CONSTANT";
public static final String SESSION = "SESSION";
@Resource
private CacheManager cacheManager;
@Override
public void hset(Serializable key, Serializable k, Object val) {
Cache cache = cacheManager.getCache(String.valueOf(key));
cache.put(k,val);
}
@Override
public Serializable hget(Serializable key, Serializable k) {
Cache cache = cacheManager.getCache(String.valueOf(key));
return cache.get(k,String.class);
}
@Override
public <T>T hget(Serializable key, Serializable k,Class<T> klass) {
Cache cache = cacheManager.getCache(String.valueOf(key));
return cache.get(k,klass);
}
@Override
public void set(Serializable key, Object val) {
Cache cache = cacheManager.getCache(CONSTANT);
cache.put(key,val);
}
@Override
public <T>T get(Serializable key,Class<T> klass) {
return cacheManager.getCache(CONSTANT).get(String.valueOf(key),klass);
}
@Override
public String get(Serializable key) {
return cacheManager.getCache(CONSTANT).get(String.valueOf(key),String.class);
}
@Override
public void del(Serializable key) {
cacheManager.getCache(CONSTANT).put(String.valueOf(key),null);
}
@Override
public void hdel(Serializable key, Serializable k) {
cacheManager.getCache(String.valueOf(key)).put(String.valueOf(k),null);
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/package-info.java
================================================
/**
* package-info
*
* @version 2018/9/11 0011
* @author enilu
*/
package cn.enilu.material.dao.cache;
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessageRepository.java
================================================
package cn.enilu.material.dao.message;
import cn.enilu.material.bean.entity.message.Message;
import cn.enilu.material.dao.BaseRepository;
import java.util.ArrayList;
public interface MessageRepository extends BaseRepository<Message,Long> {
void deleteAllByIdIn(ArrayList<String> list);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessagesenderRepository.java
================================================
package cn.enilu.material.dao.message;
import cn.enilu.material.bean.entity.message.MessageSender;
import cn.enilu.material.dao.BaseRepository;
public interface MessagesenderRepository extends BaseRepository<MessageSender,Long> {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessagetemplateRepository.java
================================================
package cn.enilu.material.dao.message;
import cn.enilu.material.bean.entity.message.MessageTemplate;
import cn.enilu.material.dao.BaseRepository;
import java.util.List;
public interface MessagetemplateRepository extends BaseRepository<MessageTemplate,Long> {
MessageTemplate findByCode(String code);
List<MessageTemplate> findByIdMessageSender(Long idMessageSender);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/CfgRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Cfg;
import cn.enilu.material.dao.BaseRepository;
public interface CfgRepository extends BaseRepository<Cfg,Long> {
Cfg findByCfgName(String cfgName);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/DeptRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Dept;
import cn.enilu.material.dao.BaseRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface DeptRepository extends BaseRepository<Dept,Long> {
List<Dept> findByPidsLike(String pid);
@Query(nativeQuery = true,value = "SELECT id, pid AS pId, simplename AS NAME, ( CASE WHEN (pId = 0 OR pId IS NULL) THEN 'true' ELSE 'false' END ) AS isOpen FROM t_sys_dept")
List tree();
List<Dept> findBySimplenameLikeOrFullnameLike(String name,String name2);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/DictRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Dict;
import cn.enilu.material.dao.BaseRepository;
import java.util.List;
public interface DictRepository extends BaseRepository<Dict,Long> {
List<Dict> findByPid(Long pid);
List<Dict> findByNameAndPid(String name,Long pid);
List<Dict> findByNameLike(String name);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/FileInfoRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.FileInfo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface FileInfoRepository extends PagingAndSortingRepository<FileInfo,Long>
, JpaRepository<FileInfo,Long>, JpaSpecificationExecutor<FileInfo> {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/LoginLogRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.LoginLog;
import cn.enilu.material.dao.BaseRepository;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface LoginLogRepository extends BaseRepository<LoginLog,Long>{
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/MenuRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Menu;
import cn.enilu.material.dao.BaseRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface MenuRepository extends BaseRepository<Menu,Long> {
Menu findByCode(String code);
List<Menu> findByPcodesLike(String code);
List<Menu> findByNameLikeAndLevels(String name,Integer levels);
@Query(nativeQuery = true,value="SELECT m1.id AS id, m1.icon AS icon, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) " +
"THEN 0 ELSE m2.id END ) AS parentId, m1. NAME AS NAME, m1.url AS url, m1.levels AS levels, m1.ismenu AS " +
"ismenu, m1.num AS num,m1.code as code,m1.status as status FROM t_sys_menu m1 LEFT JOIN t_sys_menu m2 ON " +
"m1.pcode = " +
"m2. " +
"CODE " +
"INNER " +
"JOIN ( SELECT ID FROM t_sys_menu WHERE ID IN ( SELECT menuid FROM t_sys_relation rela WHERE rela.roleid IN (?1))) m3 ON m1.id = m3.id WHERE m1.ismenu = 1 and m1.status = 1 ORDER BY levels, num ASC")
List getMenusByRoleIds(List<Long> roleList);
@Query(nativeQuery = true,value="SELECT m1.id AS id, m1.icon AS icon, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) " +
"THEN 0 ELSE m2.id END ) AS parentId, m1. NAME AS NAME, m1.url AS url, m1.levels AS levels, m1.ismenu AS " +
"ismenu, m1.num AS num, m1. CODE AS CODE,m1.status as status FROM t_sys_menu m1 LEFT JOIN t_sys_menu m2 " +
"ON " +
"m1.pcode = m2. CODE ORDER BY levels, num ASC")
List getMenus();
@Query(nativeQuery = true,value="select menuid from t_sys_relation where roleid=?1")
List getMenuIdsByRoleId(Integer roleId);
@Query(nativeQuery = true,value = "SELECT m1.id AS id, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) THEN 0 ELSE m2.id END ) AS pId, m1. NAME AS NAME, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) THEN 'true' ELSE 'false' END ) AS isOpen, m1.code FROM t_sys_menu m1 LEFT JOIN t_sys_menu m2 ON m1.pcode = m2. CODE ORDER BY m1.id ASC")
List menuTreeList();
@Query(nativeQuery = true,value = "SELECT m1.id AS id, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) THEN 0 ELSE m2.id END ) AS pId, m1. NAME AS NAME, ( CASE WHEN (m2.id = 0 OR m2.id IS NULL) THEN 'true' ELSE 'false' END ) AS isOpen, ( CASE WHEN (m3.ID = 0 OR m3.ID IS NULL) THEN 'false' ELSE 'true' END ) \"checked\" FROM t_sys_menu m1 LEFT JOIN t_sys_menu m2 ON m1.pcode = m2. CODE LEFT JOIN ( SELECT ID FROM t_sys_menu WHERE ID IN (?1)) m3 ON m1.id = m3.id ORDER BY m1.id ASC")
List menuTreeListByMenuIds(List<Long> menuIds);
@Modifying
@Transactional
@Query(nativeQuery = true,value = "delete from t_sys_relation where menuid=?1")
void deleteRelationByMenu(Long menuId);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/OperationLogRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.OperationLog;
import cn.enilu.material.dao.BaseRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import javax.transaction.Transactional;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface OperationLogRepository extends BaseRepository<OperationLog,Long> {
@Modifying
@Transactional
@Query(nativeQuery = true,value = "delete from t_sys_operation_log")
int clear();
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/RelationRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Relation;
import cn.enilu.material.dao.BaseRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.transaction.annotation.Transactional;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface RelationRepository extends BaseRepository<Relation,Long> {
@Transactional
@Modifying
@Query(nativeQuery = true,value = "delete from t_sys_relation where roleid=?1")
int deleteByRoleId(Long roleId);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/RoleRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Role;
import cn.enilu.material.dao.BaseRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface RoleRepository extends BaseRepository<Role,Long> {
@Query(nativeQuery = true,value = "SELECT id, pId, NAME, ( CASE WHEN (pId = 0 OR pId IS NULL) THEN 'true' ELSE 'false' END ) OPEN FROM t_sys_role")
List roleTreeList();
@Query(nativeQuery = true,value="SELECT r.id AS id, pId AS pId, NAME AS NAME, ( CASE WHEN (pId = 0 OR pId IS NULL) THEN 'true' ELSE 'false' END ) \"open\", ( CASE WHEN (r1.ID = 0 OR r1.ID IS NULL) THEN 'false' ELSE 'true' END ) AS checked FROM t_sys_role r LEFT JOIN ( SELECT ID FROM t_sys_role WHERE ID IN (?1)) r1 ON r.ID = r1.ID ORDER BY pId, num ASC")
List roleTreeListByRoleId(Long[] ids);
List findByName(String roleName);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/SysNoticeRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Notice;
import cn.enilu.material.dao.BaseRepository;
import java.util.List;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface SysNoticeRepository extends BaseRepository<Notice,Long> {
List<Notice> findByTitleLike(String name);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/TaskLogRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.TaskLog;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.PagingAndSortingRepository;
public interface TaskLogRepository extends PagingAndSortingRepository<TaskLog,Long>
,JpaSpecificationExecutor<TaskLog>
,JpaRepository<TaskLog,Long> {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/TaskRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.Task;
import cn.enilu.material.dao.BaseRepository;
import java.util.List;
public interface TaskRepository extends BaseRepository<Task, Long> {
long countByNameLike(String name);
List<Task> findByNameLike(String name);
List<Task> findAllByDisabled(boolean disable);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/dao/system/UserRepository.java
================================================
package cn.enilu.material.dao.system;
import cn.enilu.material.bean.entity.system.User;
import cn.enilu.material.dao.BaseRepository;
import java.util.List;
/**
* Created on 2018/3/21 0021.
*
* @author enilu
*/
public interface UserRepository extends BaseRepository<User,Long> {
User findByAccount(String account);
List<User> findByRoleid(String idRole);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/factory/DictFieldWarpperFactory.java
================================================
package cn.enilu.material.factory;
import cn.enilu.material.bean.enumeration.BizExceptionEnum;
import cn.enilu.material.bean.exception.ApplicationException;
import cn.enilu.material.service.system.IConstantFactory;
import cn.enilu.material.service.system.impl.ConstantFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Method;
/**
* 字段的包装创建工厂
*
* @author fengshuonan
* @date 2017-05-06 15:12
*/
public class DictFieldWarpperFactory {
private static Logger logger = LoggerFactory.getLogger(DictFieldWarpperFactory.class);
public static Object createFieldWarpper(Object field, String methodName) {
IConstantFactory me = ConstantFactory.me();
try {
Method method = IConstantFactory.class.getMethod(methodName, field.getClass());
Object result = method.invoke(me, field);
return result;
} catch (Exception e) {
logger.error("field:{},methodName:{}",field,methodName);
try {
Method method = IConstantFactory.class.getMethod(methodName, Long.class);
Object result = method.invoke(me, Long.valueOf(field.toString()));
return result;
} catch (Exception e1) {
throw new ApplicationException(BizExceptionEnum.ERROR_WRAPPER_FIELD);
}
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/factory/UserFactory.java
================================================
package cn.enilu.material.factory;
import cn.enilu.material.bean.dto.UserDto;
import cn.enilu.material.bean.entity.system.User;
import org.springframework.beans.BeanUtils;
/**
* 用户创建工厂
*
* @author fengshuonan
* @date 2017-05-05 22:43
*/
public class UserFactory {
public static User createUser(UserDto userDto, User user){
if(userDto == null){
return null;
}else{
BeanUtils.copyProperties(userDto,user);
return user;
}
}
public static User updateUser(UserDto userDto,User user){
if(userDto == null){
return null;
}else{
user.setName(userDto.getName());
user.setDeptid(userDto.getDeptid());
user.setSex(userDto.getSex());
user.setPhone(userDto.getPhone());
user.setEmail(userDto.getEmail());
user.setBirthday(userDto.getBirthday());
user.setAvatar(userDto.getAvatar());
if(userDto.getStatus()!=null){
user.setStatus(userDto.getStatus());
}
return user;
}
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/platform/package-info.java
================================================
/**
* package-info
*
* @version 2018/9/11 0011
* @author enilu
*/
package cn.enilu.material.platform;
================================================
FILE: material-core/src/main/java/cn/enilu/material/service/BaseService.java
================================================
package cn.enilu.material.service;
import cn.enilu.material.bean.constant.cache.Cache;
import cn.enilu.material.bean.vo.query.DynamicSpecifications;
import cn.enilu.material.bean.vo.query.Page;
import cn.enilu.material.bean.vo.query.SearchFilter;
import cn.enilu.material.dao.BaseRepository;
import cn.enilu.material.utils.Lists;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;
import java.io.Serializable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/**
*
* @author :enilu
* @date :Created in 2019/6/29 22:32
*/
public abstract class BaseService<T, ID extends Serializable, R extends BaseRepository<T, ID>>
implements CrudService<T, ID> {
@Autowired
private R dao;
@Override
@CacheEvict(value = Cache.APPLICATION ,key = "#root.targetClass.simpleName+':'+#id")
public void delete(ID id) {
dao.deleteById(id);
}
@Override
public void delete(Iterable<ID> ids) {
Iterator<ID> iterator = ids.iterator();
while (iterator.hasNext()) {
ID id = iterator.next();
dao.deleteById(id);
}
}
@Override
public T insert(T record) {
return dao.save(record);
}
@Override
@Cacheable(value = Cache.APPLICATION ,key = "#root.targetClass.simpleName+':'+#id")
public T get(ID id) {
return dao.findById(id).get();
}
@Override
public T get(SearchFilter filter) {
List<T> list = queryAll(filter);
return list.isEmpty()?null:list.get(0);
}
@Override
public T get(List<SearchFilter> filters) {
List<T> list = queryAll(filters);
return list.isEmpty()?null:list.get(0);
}
@Override
public List<T> query(Iterable<ID> ids) {
return dao.findAllById(ids);
}
@Override
public List<T> queryAll() {
return dao.findAll();
}
@Override
public Page<T> queryPage(Page<T> page) {
Pageable pageable = null;
if(page.isOpenSort()) {
pageable = new PageRequest(page.getCurrent()-1, page.getSize(), page.isAsc() ? Sort.Direction.ASC : Sort.Direction.DESC, page.getOrderByField());
}else{
pageable = new PageRequest(page.getCurrent()-1,page.getSize(), Sort.Direction.DESC,"id");
}
Specification<T> specification = DynamicSpecifications.bySearchFilter(page.getFilters(),dao.getDataClass());
org.springframework.data.domain.Page<T> pageResult = dao.findAll(specification,pageable);
page.setTotal(Integer.valueOf(pageResult.getTotalElements()+""));
page.setRecords(pageResult.getContent());
return page;
}
@Override
public List<T> queryAll(List<SearchFilter> filters) {
return queryAll(filters,null);
}
@Override
public List<T> queryAll(SearchFilter filter) {
return queryAll(filter,null);
}
@Override
public List<T> queryAll(List<SearchFilter> filters, Sort sort) {
Specification<T> specification = DynamicSpecifications.bySearchFilter(filters,dao.getDataClass());
if(sort==null){
return dao.findAll(specification);
}
return dao.findAll(specification,sort);
}
@Override
public List<T> queryAll(SearchFilter filter, Sort sort) {
if(filter!=null){
return queryAll(Lists.newArrayList(filter),sort);
}else {
return queryAll(Lists.newArrayList(), sort);
}
}
@Override
public List<Map> queryBySql(String sql){
return queryBySql(sql,Lists.newArrayList());
}
@Override
public List<Map> queryBySql(String sql, SearchFilter filter){
return dao.queryBySql(sql,Lists.newArrayList(filter));
}
@Override
public List<Map> queryBySql(String sql, List<SearchFilter> filter){
return dao.queryBySql(sql,filter);
}
@Override
public long count(SearchFilter filter) {
return count(Lists.newArrayList(filter));
}
@Override
public long count(List<SearchFilter> filters) {
Specification<T> specification = DynamicSpecifications.bySearchFilter(filters,dao.getDataClass());
return dao.count(specification);
}
@Override
@CacheEvict(value = Cache.APPLICATION ,key = "#root.targetClass.simpleName+':'+#record.id")
public T update(T record) {
return dao.save(record);
}
@Override
public void clear() {
dao.deleteAllInBatch();
}
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/service/CrudService.java
================================================
package cn.enilu.material.service;
/**
*
* @author :enilu
* @date :Created in 2019/6/29 22:31
*/
public interface CrudService <T, ID> extends
InsertService<T, ID>,
UpdateService<T,ID>,
DeleteService<ID>,
SelectService<T, ID> {
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/service/DeleteService.java
================================================
package cn.enilu.material.service;
/**
*
* @author :enilu
* @date :Created in 2019/6/29 22:29
*/
public interface DeleteService<ID> {
/**
* 根据主键删除记录
*
* @param id 主键
*/
void delete(ID id);
/**
* 根据主键删除记录
*
* @param ids 主键集合
*/
void delete(Iterable<ID> ids);
/**
* 清空表数据
*/
void clear();
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/service/InsertService.java
================================================
package cn.enilu.material.service;
/**
*
* @author :enilu
* @date :Created in 2019/6/29 22:28
*/
public interface InsertService<T, ID> {
/**
* 添加一条数据
*
* @param record 要添加的数据
* @return 添加后生成的主键
*/
T insert(T record);
}
================================================
FILE: material-core/src/main/java/cn/enilu/material/service/SelectService.java
================================================
package cn
gitextract_tobjk67h/ ├── .gitignore ├── CHANGELOG.md ├── LICENSE ├── README.md ├── README.zh-CN.md ├── doc/ │ ├── .vuepress/ │ │ └── config.js │ ├── README.md │ ├── action/ │ │ ├── cache.md │ │ ├── jpaauditing.md │ │ ├── sqlite.md │ │ └── task.md │ ├── base/ │ │ ├── jdkAndMaven.md │ │ ├── modules.md │ │ └── preface.md │ ├── config/ │ │ ├── application.md │ │ ├── beetl.md │ │ ├── ehcache.md │ │ ├── logback.md │ │ ├── shiro.md │ │ └── swagger.md │ ├── donate.md │ ├── ecosystem/ │ │ ├── code-generator.md │ │ └── database-doc-generator.md │ ├── feature/ │ │ ├── dict.md │ │ ├── log.md │ │ ├── menu.md │ │ ├── modules.md │ │ └── monitor.md │ ├── helloworld/ │ │ ├── add.md │ │ ├── base.md │ │ ├── create_table.md │ │ ├── crud.md │ │ ├── delete.md │ │ ├── list.md │ │ ├── menuAndPermission.md │ │ └── update.md │ ├── other/ │ │ └── faq.md │ ├── package.json │ ├── quickstart/ │ │ ├── clone.md │ │ ├── config.md │ │ ├── initDb.md │ │ ├── quickstart.md │ │ └── startup.md │ ├── resource.md │ └── 文档完善中 ├── material-core/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cn/ │ │ └── enilu/ │ │ └── material/ │ │ ├── aop/ │ │ │ ├── LogAop.java │ │ │ └── PermissionAop.java │ │ ├── bean/ │ │ │ ├── constant/ │ │ │ │ ├── Const.java │ │ │ │ ├── cache/ │ │ │ │ │ ├── Cache.java │ │ │ │ │ └── CacheKey.java │ │ │ │ ├── factory/ │ │ │ │ │ └── PageFactory.java │ │ │ │ ├── package-info.java │ │ │ │ └── state/ │ │ │ │ ├── BizLogType.java │ │ │ │ ├── LogSucceed.java │ │ │ │ ├── LogType.java │ │ │ │ ├── ManagerStatus.java │ │ │ │ ├── MenuStatus.java │ │ │ │ └── Order.java │ │ │ ├── core/ │ │ │ │ ├── BussinessLog.java │ │ │ │ ├── Permission.java │ │ │ │ └── ShiroUser.java │ │ │ ├── dictmap/ │ │ │ │ ├── CfgDict.java │ │ │ │ ├── CommonDict.java │ │ │ │ ├── DeleteDict.java │ │ │ │ ├── DeptDict.java │ │ │ │ ├── DictMap.java │ │ │ │ ├── LogDict.java │ │ │ │ ├── MenuDict.java │ │ │ │ ├── NoticeMap.java │ │ │ │ ├── RoleDict.java │ │ │ │ ├── SystemDict.java │ │ │ │ ├── TaskDict.java │ │ │ │ ├── UserDict.java │ │ │ │ └── base/ │ │ │ │ └── AbstractDictMap.java │ │ │ ├── dto/ │ │ │ │ └── UserDto.java │ │ │ ├── entity/ │ │ │ │ ├── BaseEntity.java │ │ │ │ ├── message/ │ │ │ │ │ ├── Message.java │ │ │ │ │ ├── MessageSender.java │ │ │ │ │ └── MessageTemplate.java │ │ │ │ ├── system/ │ │ │ │ │ ├── Cfg.java │ │ │ │ │ ├── Dept.java │ │ │ │ │ ├── Dict.java │ │ │ │ │ ├── FileInfo.java │ │ │ │ │ ├── LoginLog.java │ │ │ │ │ ├── Menu.java │ │ │ │ │ ├── Notice.java │ │ │ │ │ ├── OperationLog.java │ │ │ │ │ ├── Relation.java │ │ │ │ │ ├── Role.java │ │ │ │ │ ├── Task.java │ │ │ │ │ ├── TaskLog.java │ │ │ │ │ └── User.java │ │ │ │ └── test/ │ │ │ │ └── Boy.java │ │ │ ├── enumeration/ │ │ │ │ ├── BizExceptionEnum.java │ │ │ │ ├── ConfigKeyEnum.java │ │ │ │ ├── ProjectEnum.java │ │ │ │ ├── RedisQueueName.java │ │ │ │ ├── SerialNumberEnum.java │ │ │ │ ├── TypeEnum.java │ │ │ │ └── cms/ │ │ │ │ ├── BannerTypeEnum.java │ │ │ │ └── ChannelEnum.java │ │ │ ├── exception/ │ │ │ │ ├── ApplicationException.java │ │ │ │ ├── ExceptionEnum.java │ │ │ │ ├── InvalidKaptchaException.java │ │ │ │ ├── MailException.java │ │ │ │ ├── ParamException.java │ │ │ │ ├── ServiceExceptionEnum.java │ │ │ │ ├── SlConnectException.java │ │ │ │ ├── SlEvalException.java │ │ │ │ ├── ValidException.java │ │ │ │ ├── XSException.java │ │ │ │ └── XSRuntimeException.java │ │ │ └── vo/ │ │ │ ├── DictVo.java │ │ │ ├── QuartzJob.java │ │ │ ├── SpringContextHolder.java │ │ │ ├── front/ │ │ │ │ ├── Ret.java │ │ │ │ └── Rets.java │ │ │ ├── node/ │ │ │ │ ├── DeptNode.java │ │ │ │ ├── IsMenu.java │ │ │ │ ├── MenuNode.java │ │ │ │ ├── Node.java │ │ │ │ └── ZTreeNode.java │ │ │ └── query/ │ │ │ ├── DynamicSpecifications.java │ │ │ ├── MutiStrFactory.java │ │ │ ├── Page.java │ │ │ └── SearchFilter.java │ │ ├── dao/ │ │ │ ├── BaseRepository.java │ │ │ ├── BaseRepositoryFactoryBean.java │ │ │ ├── BaseRepositoryImpl.java │ │ │ ├── DaoConfiguration.java │ │ │ ├── cache/ │ │ │ │ ├── BaseCache.java │ │ │ │ ├── Cache.java │ │ │ │ ├── CacheDao.java │ │ │ │ ├── ConfigCache.java │ │ │ │ ├── DictCache.java │ │ │ │ ├── TokenCache.java │ │ │ │ ├── impl/ │ │ │ │ │ ├── ConfigCacheImpl.java │ │ │ │ │ ├── DictCacheImpl.java │ │ │ │ │ └── EhcacheDao.java │ │ │ │ └── package-info.java │ │ │ ├── message/ │ │ │ │ ├── MessageRepository.java │ │ │ │ ├── MessagesenderRepository.java │ │ │ │ └── MessagetemplateRepository.java │ │ │ └── system/ │ │ │ ├── CfgRepository.java │ │ │ ├── DeptRepository.java │ │ │ ├── DictRepository.java │ │ │ ├── FileInfoRepository.java │ │ │ ├── LoginLogRepository.java │ │ │ ├── MenuRepository.java │ │ │ ├── OperationLogRepository.java │ │ │ ├── RelationRepository.java │ │ │ ├── RoleRepository.java │ │ │ ├── SysNoticeRepository.java │ │ │ ├── TaskLogRepository.java │ │ │ ├── TaskRepository.java │ │ │ └── UserRepository.java │ │ ├── factory/ │ │ │ ├── DictFieldWarpperFactory.java │ │ │ └── UserFactory.java │ │ ├── platform/ │ │ │ └── package-info.java │ │ ├── service/ │ │ │ ├── BaseService.java │ │ │ ├── CrudService.java │ │ │ ├── DeleteService.java │ │ │ ├── InsertService.java │ │ │ ├── SelectService.java │ │ │ ├── UpdateService.java │ │ │ ├── message/ │ │ │ │ ├── MessageService.java │ │ │ │ ├── MessagesenderService.java │ │ │ │ ├── MessagetemplateService.java │ │ │ │ ├── email/ │ │ │ │ │ ├── DefaultEmailSender.java │ │ │ │ │ └── EmailSender.java │ │ │ │ └── sms/ │ │ │ │ ├── SmsSender.java │ │ │ │ └── tencent/ │ │ │ │ └── TencentSmsSender.java │ │ │ ├── system/ │ │ │ │ ├── AccountService.java │ │ │ │ ├── CfgService.java │ │ │ │ ├── DeptService.java │ │ │ │ ├── DictService.java │ │ │ │ ├── FileService.java │ │ │ │ ├── IConstantFactory.java │ │ │ │ ├── LogObjectHolder.java │ │ │ │ ├── LoginLogService.java │ │ │ │ ├── MenuService.java │ │ │ │ ├── NoticeService.java │ │ │ │ ├── OperationLogService.java │ │ │ │ ├── RoleService.java │ │ │ │ ├── UserService.java │ │ │ │ └── impl/ │ │ │ │ └── ConstantFactory.java │ │ │ └── task/ │ │ │ ├── BaseJob.java │ │ │ ├── JobExecuter.java │ │ │ ├── JobService.java │ │ │ ├── NoConurrentBaseJob.java │ │ │ ├── QuartzConfigration.java │ │ │ ├── TaskService.java │ │ │ ├── TaskUtils.java │ │ │ └── job/ │ │ │ └── HelloJob.java │ │ ├── shiro/ │ │ │ ├── ShiroDbRealm.java │ │ │ ├── ShiroKit.java │ │ │ ├── check/ │ │ │ │ ├── ICheck.java │ │ │ │ ├── PermissionCheckFactory.java │ │ │ │ └── PermissionCheckManager.java │ │ │ └── factory/ │ │ │ ├── IShiro.java │ │ │ └── ShiroFactroy.java │ │ ├── utils/ │ │ │ ├── BasicType.java │ │ │ ├── BeanUtil.java │ │ │ ├── BirthUtils.java │ │ │ ├── CollectionKit.java │ │ │ ├── Constants.java │ │ │ ├── Convert.java │ │ │ ├── CryptUtils.java │ │ │ ├── DateTime.java │ │ │ ├── DateTimeKit.java │ │ │ ├── DateUtil.java │ │ │ ├── HexKit.java │ │ │ ├── HttpKit.java │ │ │ ├── Lists.java │ │ │ ├── Log.java │ │ │ ├── MD5.java │ │ │ ├── Maps.java │ │ │ ├── MobileUtil.java │ │ │ ├── PageKit.java │ │ │ ├── RSAUtil.java │ │ │ ├── RandomUtils.java │ │ │ ├── StrKit.java │ │ │ ├── StringUtils.java │ │ │ ├── ToolUtil.java │ │ │ ├── WafKit.java │ │ │ ├── WafRequestWrapper.java │ │ │ ├── XmlHelper.java │ │ │ ├── ZipUtils.java │ │ │ └── cache/ │ │ │ ├── TimeCacheMap.java │ │ │ └── exception/ │ │ │ └── ToolBoxException.java │ │ ├── warpper/ │ │ │ ├── BaseControllerWarpper.java │ │ │ ├── DeptWarpper.java │ │ │ ├── DictWarpper.java │ │ │ ├── LogWarpper.java │ │ │ ├── MenuWarpper.java │ │ │ ├── NoticeWrapper.java │ │ │ ├── RoleWarpper.java │ │ │ └── UserWarpper.java │ │ └── web/ │ │ ├── listener/ │ │ │ ├── CacheListener.java │ │ │ └── ConfigListener.java │ │ └── package-info.java │ └── resources/ │ └── code/ │ └── code.json ├── material-generator/ │ ├── README.md │ ├── README.zh-CN.md │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cn/ │ │ └── enilu/ │ │ └── flash/ │ │ └── code/ │ │ ├── AbstractLoader.java │ │ ├── CodeConfig.java │ │ ├── ColumnDescriptor.java │ │ ├── EntityDescLoader.java │ │ ├── Generator.java │ │ ├── Loader.java │ │ ├── StrKit.java │ │ ├── TableDescLoader.java │ │ ├── TableDescriptor.java │ │ └── Utils.java │ └── resources/ │ └── code/ │ ├── code.json │ ├── controller.vm │ ├── repository.vm │ ├── service.vm │ └── view/ │ ├── add.html.vm │ ├── edit.html.vm │ ├── index.html.vm │ ├── index.js.vm │ └── info.js.vm ├── material-lab/ │ ├── README.md │ ├── pom.xml │ └── src/ │ └── main/ │ └── resources/ │ └── application.properties ├── material-manage/ │ ├── pom.xml │ └── src/ │ └── main/ │ ├── java/ │ │ └── cn/ │ │ └── enilu/ │ │ └── material/ │ │ └── admin/ │ │ ├── AdminApplication.java │ │ ├── AdminServletInitializer.java │ │ ├── common/ │ │ │ └── constant/ │ │ │ ├── enums/ │ │ │ │ └── Status.java │ │ │ └── state/ │ │ │ ├── ExpenseState.java │ │ │ ├── IsMenu.java │ │ │ └── MenuOpenStatus.java │ │ ├── config/ │ │ │ ├── DefaultFastjsonConfig.java │ │ │ ├── DruidConfig.java │ │ │ ├── EhCacheConfig.java │ │ │ ├── SpringSessionConfig.java │ │ │ ├── SwaggerConfig.java │ │ │ ├── UserIDAuditorConfig.java │ │ │ ├── properties/ │ │ │ │ ├── AppProperties.java │ │ │ │ └── BeetlProperties.java │ │ │ └── web/ │ │ │ ├── BeetlConfig.java │ │ │ └── ShiroConfig.java │ │ ├── core/ │ │ │ ├── CoreFlag.java │ │ │ ├── aop/ │ │ │ │ ├── BaseControllerExceptionHandler.java │ │ │ │ └── GlobalExceptionHandler.java │ │ │ ├── base/ │ │ │ │ ├── controller/ │ │ │ │ │ ├── BaseController.java │ │ │ │ │ ├── ErrorView.java │ │ │ │ │ └── GlobalController.java │ │ │ │ └── tips/ │ │ │ │ ├── ErrorTip.java │ │ │ │ ├── SuccessTip.java │ │ │ │ └── Tip.java │ │ │ ├── beetl/ │ │ │ │ ├── BeetlConfiguration.java │ │ │ │ └── ShiroExt.java │ │ │ ├── cache/ │ │ │ │ ├── BaseCacheFactory.java │ │ │ │ ├── CacheKit.java │ │ │ │ ├── EhcacheFactory.java │ │ │ │ ├── ICache.java │ │ │ │ └── ILoader.java │ │ │ ├── datascope/ │ │ │ │ └── DataScope.java │ │ │ ├── datasource/ │ │ │ │ └── DruidProperties.java │ │ │ ├── intercept/ │ │ │ │ ├── SessionInterceptor.java │ │ │ │ └── SessionTimeoutInterceptor.java │ │ │ ├── page/ │ │ │ │ ├── PageBT.java │ │ │ │ └── PageInfoBT.java │ │ │ ├── qr/ │ │ │ │ ├── ImgQrTool.java │ │ │ │ ├── MatrixToImageConfig.java │ │ │ │ ├── MatrixToImageWriter.java │ │ │ │ └── QrImage.java │ │ │ ├── support/ │ │ │ │ ├── BasicType.java │ │ │ │ ├── BeanKit.java │ │ │ │ ├── ClassKit.java │ │ │ │ ├── CollectionKit.java │ │ │ │ ├── DateTime.java │ │ │ │ ├── DateTimeKit.java │ │ │ │ ├── HexKit.java │ │ │ │ ├── ObjectKit.java │ │ │ │ ├── PageKit.java │ │ │ │ └── exception/ │ │ │ │ └── ToolBoxException.java │ │ │ ├── util/ │ │ │ │ ├── ApiMenuFilter.java │ │ │ │ ├── FileUtil.java │ │ │ │ ├── HttpSessionHolder.java │ │ │ │ ├── KaptchaUtil.java │ │ │ │ ├── NumUtil.java │ │ │ │ ├── PingYinUtil.java │ │ │ │ ├── RenderUtil.java │ │ │ │ ├── ResKit.java │ │ │ │ └── SqlUtil.java │ │ │ └── xss/ │ │ │ ├── XssFilter.java │ │ │ └── XssHttpServletRequestWrapper.java │ │ ├── modular/ │ │ │ ├── lab/ │ │ │ │ ├── controller/ │ │ │ │ │ └── LabController.java │ │ │ │ └── package-info.java │ │ │ ├── message/ │ │ │ │ ├── MessageController.java │ │ │ │ ├── MessagesenderController.java │ │ │ │ └── MessagetemplateController.java │ │ │ └── system/ │ │ │ ├── controller/ │ │ │ │ ├── BlackboardController.java │ │ │ │ ├── CfgController.java │ │ │ │ ├── DeptController.java │ │ │ │ ├── DictController.java │ │ │ │ ├── KaptchaController.java │ │ │ │ ├── LogController.java │ │ │ │ ├── LoginController.java │ │ │ │ ├── LoginLogController.java │ │ │ │ ├── MenuController.java │ │ │ │ ├── NoticeController.java │ │ │ │ ├── RoleController.java │ │ │ │ ├── TaskController.java │ │ │ │ └── UserMgrController.java │ │ │ └── transfer/ │ │ │ ├── ManagerUser.java │ │ │ ├── ReqAddManager.java │ │ │ └── ReqEditManager.java │ │ └── runner/ │ │ └── StartJob.java │ ├── resources/ │ │ ├── META-INF/ │ │ │ └── spring-devtools.properties │ │ ├── application-dev.properties │ │ ├── application-lab.properties │ │ ├── application-prod.properties │ │ ├── application.properties │ │ ├── banner.txt │ │ ├── ehcache.xml │ │ ├── import.sql │ │ └── logback.xml │ └── webapp/ │ ├── WEB-INF/ │ │ └── view/ │ │ ├── 404.html │ │ ├── common/ │ │ │ ├── _chat.html │ │ │ ├── _footer.html │ │ │ ├── _header.html │ │ │ ├── _sidebar.html │ │ │ ├── include.html │ │ │ ├── layout.html │ │ │ └── tags/ │ │ │ ├── NameCon.tag │ │ │ ├── SelectCon.tag │ │ │ ├── TimeCon.tag │ │ │ ├── avatar.tag │ │ │ ├── button.tag │ │ │ ├── datePicker.tag │ │ │ ├── input.tag │ │ │ ├── select.tag │ │ │ ├── table.tag │ │ │ └── textarea.tag │ │ ├── index.html │ │ ├── lab/ │ │ │ ├── actuator.html │ │ │ └── gis.html │ │ ├── login.html │ │ ├── message/ │ │ │ ├── history/ │ │ │ │ ├── message.html │ │ │ │ └── message_view.html │ │ │ ├── sender/ │ │ │ │ ├── sender.html │ │ │ │ ├── sender_add.html │ │ │ │ └── sender_edit.html │ │ │ └── template/ │ │ │ ├── template.html │ │ │ ├── template_add.html │ │ │ └── template_edit.html │ │ └── system/ │ │ ├── cfg/ │ │ │ ├── cfg.html │ │ │ ├── cfg_add.html │ │ │ └── cfg_edit.html │ │ ├── dept/ │ │ │ ├── dept.html │ │ │ ├── dept_add.html │ │ │ └── dept_edit.html │ │ ├── dict/ │ │ │ ├── dict.html │ │ │ ├── dict_add.html │ │ │ └── dict_edit.html │ │ ├── menu/ │ │ │ ├── menu.html │ │ │ ├── menu_add.html │ │ │ └── menu_edit.html │ │ ├── role/ │ │ │ ├── role.html │ │ │ ├── role_add.html │ │ │ ├── role_assign.html │ │ │ └── role_edit.html │ │ ├── task/ │ │ │ ├── task.html │ │ │ ├── task_add.html │ │ │ ├── task_edit.html │ │ │ └── task_log.html │ │ └── user/ │ │ ├── user.html │ │ ├── user_add.html │ │ ├── user_chpwd.html │ │ ├── user_edit.html │ │ ├── user_roleassign.html │ │ └── user_view.html │ └── static/ │ ├── css/ │ │ ├── _fstyle.css │ │ ├── app.css │ │ ├── app.min.1.css │ │ ├── app.min.2.css │ │ ├── font-awesome.css │ │ ├── material.css │ │ └── plugins/ │ │ ├── dataTables/ │ │ │ └── dataTables.bootstrap.css │ │ ├── jquery-treegrid/ │ │ │ └── css/ │ │ │ └── jquery.treegrid.css │ │ ├── webuploader/ │ │ │ └── webuploader.css │ │ └── ztree/ │ │ ├── demo.css │ │ └── zTreeStyle.css │ ├── fonts/ │ │ └── FontAwesome.otf │ ├── js/ │ │ ├── charts.js │ │ ├── common/ │ │ │ ├── Feng.js │ │ │ ├── ajax-object.js │ │ │ ├── bootstrap-table-object.js │ │ │ ├── tree-table-object.js │ │ │ ├── web-upload-object.js │ │ │ └── ztree-object.js │ │ ├── demo.js │ │ ├── flot-charts/ │ │ │ ├── bar-chart.js │ │ │ ├── curved-line-chart.js │ │ │ ├── dynamic-chart.js │ │ │ ├── line-chart.js │ │ │ └── pie-chart.js │ │ ├── functions.js │ │ ├── hplus.js │ │ ├── plugins/ │ │ │ ├── bootstrap-table/ │ │ │ │ └── locale/ │ │ │ │ └── bootstrap-table-zh-CN.js │ │ │ ├── dataTables/ │ │ │ │ ├── dataTables.bootstrap.js │ │ │ │ └── jquery.dataTables.js │ │ │ ├── jquery-treegrid/ │ │ │ │ ├── extension/ │ │ │ │ │ └── jquery.treegrid.extension.js │ │ │ │ └── js/ │ │ │ │ └── jquery.treegrid.bootstrap3.js │ │ │ ├── layer/ │ │ │ │ ├── extend/ │ │ │ │ │ └── layer.ext.js │ │ │ │ ├── laydate/ │ │ │ │ │ ├── laydate.js │ │ │ │ │ ├── need/ │ │ │ │ │ │ └── laydate.css │ │ │ │ │ └── skins/ │ │ │ │ │ └── default/ │ │ │ │ │ └── laydate.css │ │ │ │ ├── layim/ │ │ │ │ │ ├── layim.css │ │ │ │ │ └── layim.js │ │ │ │ ├── mobile/ │ │ │ │ │ ├── layer.js │ │ │ │ │ └── need/ │ │ │ │ │ └── layer.css │ │ │ │ ├── skin/ │ │ │ │ │ ├── layer.css │ │ │ │ │ └── layer.ext.css │ │ │ │ └── theme/ │ │ │ │ └── default/ │ │ │ │ └── layer.css │ │ │ ├── validate/ │ │ │ │ └── zh_CN.js │ │ │ └── webuploader/ │ │ │ ├── README.md │ │ │ ├── Uploader.swf │ │ │ ├── webuploader.css │ │ │ ├── webuploader.custom.js │ │ │ ├── webuploader.fis.js │ │ │ ├── webuploader.flashonly.js │ │ │ ├── webuploader.html5only.js │ │ │ ├── webuploader.js │ │ │ ├── webuploader.noimage.js │ │ │ ├── webuploader.nolog.js │ │ │ └── webuploader.withoutimage.js │ │ └── read-me.txt │ ├── lab/ │ │ ├── README.md │ │ └── gis/ │ │ ├── base/ │ │ │ ├── base_leaflet.draw.ext.js │ │ │ ├── base_map.js │ │ │ └── base_tilesUtils.js │ │ ├── index.js │ │ ├── js/ │ │ │ ├── base/ │ │ │ │ ├── base_leaflet.draw.ext.js │ │ │ │ ├── base_map.js │ │ │ │ └── base_tilesUtils.js │ │ │ ├── jslib/ │ │ │ │ ├── LMapLib.js │ │ │ │ ├── Leaflet/ │ │ │ │ │ ├── leaflet.css │ │ │ │ │ ├── leaflet.functionaltilelayer.js │ │ │ │ │ ├── leaflet.js │ │ │ │ │ └── leaflet.markercluster.js │ │ │ │ ├── Leaflet.PolylineDecorator-master/ │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── example/ │ │ │ │ │ │ ├── example.html │ │ │ │ │ │ └── example.js │ │ │ │ │ ├── leaflet.polylineDecorator.js │ │ │ │ │ └── src/ │ │ │ │ │ ├── L.LineUtil.PolylineDecorator.js │ │ │ │ │ ├── L.PolylineDecorator.js │ │ │ │ │ ├── L.RotatedMarker.js │ │ │ │ │ └── L.Symbol.js │ │ │ │ ├── Leaflet.draw/ │ │ │ │ │ ├── leaflet.draw-src.js │ │ │ │ │ ├── leaflet.draw.css │ │ │ │ │ └── leaflet.draw.js │ │ │ │ ├── Leaflet.plugins/ │ │ │ │ │ └── arc.js │ │ │ │ ├── arc.js-gh-pages/ │ │ │ │ │ ├── README.md │ │ │ │ │ ├── arc.js │ │ │ │ │ ├── bezier.geojson │ │ │ │ │ ├── bezier.html │ │ │ │ │ ├── bezier.js │ │ │ │ │ ├── bezier.py │ │ │ │ │ ├── example/ │ │ │ │ │ │ ├── csv2arc.js │ │ │ │ │ │ ├── round.js │ │ │ │ │ │ ├── routes.csv │ │ │ │ │ │ └── tracks.geojson │ │ │ │ │ ├── index.html │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package.json │ │ │ │ │ ├── polymaps.js │ │ │ │ │ ├── sphericalmercator.js │ │ │ │ │ └── test.js │ │ │ │ ├── arcDecorator.js │ │ │ │ ├── bar.js │ │ │ │ └── mapColumnChart.js │ │ │ └── test/ │ │ │ ├── data/ │ │ │ │ └── cirlData.js │ │ │ └── demo.js │ │ └── leaflet/ │ │ ├── L.Control.Zoominfo.css │ │ ├── L.Control.Zoominfo.js │ │ ├── leaflet.css │ │ └── leaflet.js │ ├── less/ │ │ ├── app.less │ │ └── inc/ │ │ ├── 404.less │ │ ├── alert.less │ │ ├── base.less │ │ ├── bootstrap-master/ │ │ │ ├── alerts.less │ │ │ ├── badges.less │ │ │ ├── bootstrap.less │ │ │ ├── breadcrumbs.less │ │ │ ├── button-groups.less │ │ │ ├── buttons.less │ │ │ ├── carousel.less │ │ │ ├── close.less │ │ │ ├── code.less │ │ │ ├── component-animations.less │ │ │ ├── dropdowns.less │ │ │ ├── forms.less │ │ │ ├── glyphicons.less │ │ │ ├── grid.less │ │ │ ├── input-groups.less │ │ │ ├── jumbotron.less │ │ │ ├── labels.less │ │ │ ├── list-group.less │ │ │ ├── media.less │ │ │ ├── mixins/ │ │ │ │ ├── alerts.less │ │ │ │ ├── background-variant.less │ │ │ │ ├── border-radius.less │ │ │ │ ├── buttons.less │ │ │ │ ├── center-block.less │ │ │ │ ├── clearfix.less │ │ │ │ ├── forms.less │ │ │ │ ├── gradients.less │ │ │ │ ├── grid-framework.less │ │ │ │ ├── grid.less │ │ │ │ ├── hide-text.less │ │ │ │ ├── image.less │ │ │ │ ├── labels.less │ │ │ │ ├── list-group.less │ │ │ │ ├── nav-divider.less │ │ │ │ ├── nav-vertical-align.less │ │ │ │ ├── opacity.less │ │ │ │ ├── pagination.less │ │ │ │ ├── panels.less │ │ │ │ ├── progress-bar.less │ │ │ │ ├── reset-filter.less │ │ │ │ ├── resize.less │ │ │ │ ├── responsive-visibility.less │ │ │ │ ├── size.less │ │ │ │ ├── tab-focus.less │ │ │ │ ├── table-row.less │ │ │ │ ├── text-emphasis.less │ │ │ │ ├── text-overflow.less │ │ │ │ └── vendor-prefixes.less │ │ │ ├── mixins.less │ │ │ ├── modals.less │ │ │ ├── navbar.less │ │ │ ├── navs.less │ │ │ ├── normalize.less │ │ │ ├── pager.less │ │ │ ├── pagination.less │ │ │ ├── panels.less │ │ │ ├── popovers.less │ │ │ ├── print.less │ │ │ ├── progress-bars.less │ │ │ ├── responsive-embed.less │ │ │ ├── responsive-utilities.less │ │ │ ├── scaffolding.less │ │ │ ├── tables.less │ │ │ ├── theme.less │ │ │ ├── thumbnails.less │ │ │ ├── tooltip.less │ │ │ ├── type.less │ │ │ ├── utilities.less │ │ │ ├── variables.less │ │ │ └── wells.less │ │ ├── bootstrap-overrides.less │ │ ├── breadcrumb.less │ │ ├── button.less │ │ ├── card.less │ │ ├── chart.less │ │ ├── chat.less │ │ ├── contacts.less │ │ ├── dropdown.less │ │ ├── font.less │ │ ├── footer.less │ │ ├── form.less │ │ ├── generics.less │ │ ├── header.less │ │ ├── ie-warning.less │ │ ├── invoice.less │ │ ├── less-plugins/ │ │ │ └── for.less │ │ ├── list.less │ │ ├── listview.less │ │ ├── login.less │ │ ├── media.less │ │ ├── messages.less │ │ ├── misc.less │ │ ├── mixin.less │ │ ├── modal.less │ │ ├── pagination.less │ │ ├── panel.less │ │ ├── photos.less │ │ ├── popover.less │ │ ├── preloader.less │ │ ├── pricing-table.less │ │ ├── print.less │ │ ├── profile.less │ │ ├── progress-bar.less │ │ ├── shadow.less │ │ ├── sidebar.less │ │ ├── skin.less │ │ ├── table.less │ │ ├── tabs.less │ │ ├── todo.less │ │ ├── tooltip.less │ │ ├── variables.less │ │ ├── vendor-overrides/ │ │ │ ├── bootgrid.less │ │ │ ├── bootstrap-datetimepicker.less │ │ │ ├── bootstrap-select.less │ │ │ ├── chosen.less │ │ │ ├── farbtastic.less │ │ │ ├── fileinput.less │ │ │ ├── fullcalendar.less │ │ │ ├── light-gallery.less │ │ │ ├── malihu-custom-scrollbar.less │ │ │ ├── mediaelement.less │ │ │ ├── noUiSlider.less │ │ │ ├── summernote.less │ │ │ ├── sweetalert.less │ │ │ ├── typeahead.less │ │ │ └── waves.less │ │ ├── wall.less │ │ ├── widgets.less │ │ └── wizard.less │ ├── modular/ │ │ ├── message/ │ │ │ ├── history/ │ │ │ │ └── message.js │ │ │ ├── sender/ │ │ │ │ ├── sender.js │ │ │ │ └── sender_info.js │ │ │ └── template/ │ │ │ ├── template.js │ │ │ └── template_info.js │ │ └── system/ │ │ ├── cfg/ │ │ │ ├── cfg.js │ │ │ └── cfg_info.js │ │ ├── dept/ │ │ │ ├── dept.js │ │ │ └── dept_info.js │ │ ├── dict/ │ │ │ ├── dict.js │ │ │ └── dict_info.js │ │ ├── menu/ │ │ │ ├── menu.js │ │ │ └── menu_info.js │ │ ├── role/ │ │ │ ├── role.js │ │ │ └── role_info.js │ │ ├── task/ │ │ │ ├── task.js │ │ │ ├── task_info.js │ │ │ └── task_log.js │ │ └── user/ │ │ ├── user.js │ │ └── user_info.js │ └── vendors/ │ ├── bootgrid/ │ │ ├── .bower.json │ │ ├── .npmignore │ │ ├── jquery.bootgrid.css │ │ ├── jquery.bootgrid.fa.js │ │ ├── jquery.bootgrid.js │ │ └── jquery.bootgrid.updated.js │ ├── bootstrap-growl/ │ │ └── bootstrap-growl.js │ ├── bootstrap-wizard/ │ │ └── jquery.bootstrap.wizard.js │ ├── bower.json │ ├── bower_components/ │ │ ├── Waves/ │ │ │ └── 0.7.4/ │ │ │ ├── waves.css │ │ │ └── waves.js │ │ ├── animate.css/ │ │ │ └── animate.css │ │ ├── autosize/ │ │ │ └── 3.0.5/ │ │ │ └── autosize.js │ │ ├── bootstrap/ │ │ │ └── 3.3.6/ │ │ │ ├── css/ │ │ │ │ ├── bootstrap-theme.css │ │ │ │ └── bootstrap.css │ │ │ └── js/ │ │ │ ├── bootstrap.js │ │ │ └── npm.js │ │ ├── bootstrap-select/ │ │ │ └── 1.7.2/ │ │ │ ├── css/ │ │ │ │ └── bootstrap-select.css │ │ │ └── js/ │ │ │ ├── bootstrap-select.js │ │ │ └── i18n/ │ │ │ ├── defaults-bg_BG.js │ │ │ ├── defaults-cs_CZ.js │ │ │ ├── defaults-da_DK.js │ │ │ ├── defaults-de_DE.js │ │ │ ├── defaults-en_US.js │ │ │ ├── defaults-es_CL.js │ │ │ ├── defaults-eu.js │ │ │ ├── defaults-fa_IR.js │ │ │ ├── defaults-fr_FR.js │ │ │ ├── defaults-hu_HU.js │ │ │ ├── defaults-it_IT.js │ │ │ ├── defaults-ko_KR.js │ │ │ ├── defaults-nl_NL.js │ │ │ ├── defaults-pl_PL.js │ │ │ ├── defaults-pt_BR.js │ │ │ ├── defaults-pt_PT.js │ │ │ ├── defaults-ro_RO.js │ │ │ ├── defaults-ru_RU.js │ │ │ ├── defaults-sk_SK.js │ │ │ ├── defaults-sl_SI.js │ │ │ ├── defaults-sv_SE.js │ │ │ ├── defaults-tr_TR.js │ │ │ ├── defaults-ua_UA.js │ │ │ ├── defaults-zh_CN.js │ │ │ └── defaults-zh_TW.js │ │ ├── bootstrap-sweetalert/ │ │ │ └── lib/ │ │ │ ├── sweet-alert-animations.less │ │ │ ├── sweet-alert-combine.less │ │ │ ├── sweet-alert.css │ │ │ ├── sweet-alert.js │ │ │ └── sweet-alert.less │ │ ├── eonasdan-bootstrap-datetimepicker/ │ │ │ └── 4.7.14/ │ │ │ └── css/ │ │ │ └── bootstrap-datetimepicker.css │ │ ├── flot/ │ │ │ ├── jquery.flot.js │ │ │ └── jquery.flot.resize.js │ │ ├── flot-orderBars/ │ │ │ ├── .bower.json │ │ │ ├── README.md │ │ │ └── js/ │ │ │ └── jquery.flot.orderBars.js │ │ ├── flot.curvedlines/ │ │ │ └── curvedLines.js │ │ ├── jquery/ │ │ │ └── 2.1.4/ │ │ │ └── jquery.js │ │ ├── jquery.easy-pie-chart/ │ │ │ └── 2.1.6/ │ │ │ └── jquery.easypiechart.js │ │ ├── malihu-custom-scrollbar-plugin/ │ │ │ ├── jquery.mCustomScrollbar.css │ │ │ └── jquery.mCustomScrollbar.js │ │ ├── material-design-iconic-font/ │ │ │ └── dist/ │ │ │ └── css/ │ │ │ └── material-design-iconic-font.css │ │ ├── moment/ │ │ │ └── 2.10.6/ │ │ │ └── moment-with-locales.js │ │ ├── nouislider/ │ │ │ └── distribute/ │ │ │ ├── jquery.nouislider.all.js │ │ │ └── jquery.nouislider.js │ │ └── summernote/ │ │ └── dist/ │ │ ├── summernote-bs3.css │ │ ├── summernote.css │ │ └── summernote.js │ ├── farbtastic/ │ │ ├── farbtastic.css │ │ └── farbtastic.js │ ├── fileinput/ │ │ ├── fileinput.js │ │ └── fileinput.less │ ├── input-mask/ │ │ └── input-mask.js │ ├── sparklines/ │ │ └── jquery.sparkline.js │ └── summernote/ │ ├── .bower.json │ └── dist/ │ ├── summernote-bs3.css │ ├── summernote-updated.js │ ├── summernote.css │ └── summernote.js └── pom.xml
Showing preview only (278K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3310 symbols across 334 files)
FILE: material-core/src/main/java/cn/enilu/material/aop/LogAop.java
class LogAop (line 34) | @Aspect
method cutService (line 40) | @Pointcut(value = "@annotation(cn.enilu.material.bean.core.BussinessLo...
method recordSysLog (line 44) | @Around("cutService()")
method handle (line 59) | private void handle(ProceedingJoinPoint point) throws Exception {
FILE: material-core/src/main/java/cn/enilu/material/aop/PermissionAop.java
class PermissionAop (line 33) | @Aspect
method cutPermission (line 37) | @Pointcut(value = "@annotation(cn.enilu.material.bean.core.Permission)")
method doPermission (line 42) | @Around("cutPermission()")
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/Const.java
type Const (line 9) | public interface Const {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/cache/Cache.java
type Cache (line 9) | public interface Cache {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/cache/CacheKey.java
type CacheKey (line 9) | public interface CacheKey {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/factory/PageFactory.java
class PageFactory (line 16) | public class PageFactory<T> {
method defaultPage (line 18) | public Page<T> defaultPage() {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/BizLogType.java
type BizLogType (line 9) | public enum BizLogType {
method BizLogType (line 18) | BizLogType(Integer val, String message) {
method getMessage (line 23) | public String getMessage() {
method setMessage (line 27) | public void setMessage(String message) {
method getVal (line 31) | public Integer getVal() {
method setVal (line 35) | public void setVal(Integer val) {
method valueOf (line 39) | public static String valueOf(Integer value) {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/LogSucceed.java
type LogSucceed (line 9) | public enum LogSucceed {
method LogSucceed (line 16) | LogSucceed(String message) {
method getMessage (line 20) | public String getMessage() {
method setMessage (line 24) | public void setMessage(String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/LogType.java
type LogType (line 9) | public enum LogType {
method LogType (line 19) | LogType(String message) {
method getMessage (line 23) | public String getMessage() {
method setMessage (line 27) | public void setMessage(String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/ManagerStatus.java
type ManagerStatus (line 9) | public enum ManagerStatus {
method ManagerStatus (line 16) | ManagerStatus(int code, String message) {
method getCode (line 21) | public int getCode() {
method setCode (line 25) | public void setCode(int code) {
method getMessage (line 29) | public String getMessage() {
method setMessage (line 33) | public void setMessage(String message) {
method valueOf (line 37) | public static String valueOf(Integer value) {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/MenuStatus.java
type MenuStatus (line 9) | public enum MenuStatus {
method MenuStatus (line 17) | MenuStatus(int code, String message) {
method getCode (line 22) | public int getCode() {
method setCode (line 26) | public void setCode(int code) {
method getMessage (line 30) | public String getMessage() {
method setMessage (line 34) | public void setMessage(String message) {
method valueOf (line 38) | public static String valueOf(Integer status) {
FILE: material-core/src/main/java/cn/enilu/material/bean/constant/state/Order.java
type Order (line 9) | public enum Order {
method Order (line 15) | Order(String des) {
method getDes (line 19) | public String getDes() {
method setDes (line 23) | public void setDes(String des) {
FILE: material-core/src/main/java/cn/enilu/material/bean/core/ShiroUser.java
class ShiroUser (line 15) | public class ShiroUser implements Serializable {
method getId (line 30) | public Long getId() {
method setId (line 34) | public void setId(Long id) {
method getAccount (line 38) | public String getAccount() {
method setAccount (line 42) | public void setAccount(String account) {
method getName (line 46) | public String getName() {
method setName (line 50) | public void setName(String name) {
method getDeptId (line 54) | public Long getDeptId() {
method setDeptId (line 58) | public void setDeptId(Long deptId) {
method getRoleList (line 62) | public List<Long> getRoleList() {
method setRoleList (line 66) | public void setRoleList(List<Long> roleList) {
method getDeptName (line 70) | public String getDeptName() {
method setDeptName (line 74) | public void setDeptName(String deptName) {
method getRoleNames (line 78) | public List<String> getRoleNames() {
method setRoleNames (line 82) | public void setRoleNames(List<String> roleNames) {
method getRoleCodes (line 86) | public List<String> getRoleCodes() {
method setRoleCodes (line 90) | public void setRoleCodes(List<String> roleCodes) {
method getProfile (line 94) | public User getProfile() {
method setProfile (line 98) | public void setProfile(User profile) {
method getTitles (line 102) | public List<MenuNode> getTitles() {
method setTitles (line 106) | public void setTitles(List<MenuNode> titles) {
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/CfgDict.java
class CfgDict (line 11) | public class CfgDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 19) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/CommonDict.java
class CommonDict (line 5) | public class CommonDict extends AbstractDictMap {
method init (line 6) | @Override
method initBeWrapped (line 16) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DeleteDict.java
class DeleteDict (line 11) | public class DeleteDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 22) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DeptDict.java
class DeptDict (line 11) | public class DeptDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 24) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/DictMap.java
class DictMap (line 11) | public class DictMap extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 20) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/LogDict.java
class LogDict (line 11) | public class LogDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 18) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/MenuDict.java
class MenuDict (line 11) | public class MenuDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 30) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/NoticeMap.java
class NoticeMap (line 11) | public class NoticeMap extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 19) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/RoleDict.java
class RoleDict (line 11) | public class RoleDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 24) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/SystemDict.java
class SystemDict (line 11) | public class SystemDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 18) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/TaskDict.java
class TaskDict (line 11) | public class TaskDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 19) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/UserDict.java
class UserDict (line 11) | public class UserDict extends AbstractDictMap {
method init (line 13) | @Override
method initBeWrapped (line 28) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/dictmap/base/AbstractDictMap.java
class AbstractDictMap (line 11) | public abstract class AbstractDictMap {
method AbstractDictMap (line 16) | public AbstractDictMap(){
method init (line 28) | public abstract void init();
method initBeWrapped (line 36) | protected abstract void initBeWrapped();
method get (line 38) | public String get(String key) {
method put (line 42) | public void put(String key, String value) {
method getFieldWarpperMethodName (line 46) | public String getFieldWarpperMethodName(String key){
method putFieldWrapperMethodName (line 50) | public void putFieldWrapperMethodName(String key,String methodName){
FILE: material-core/src/main/java/cn/enilu/material/bean/dto/UserDto.java
class UserDto (line 14) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/BaseEntity.java
class BaseEntity (line 23) | @MappedSuperclass
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/Message.java
class Message (line 13) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageSender.java
class MessageSender (line 14) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageTemplate.java
class MessageTemplate (line 14) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Cfg.java
class Cfg (line 18) | @Entity(name="t_sys_cfg")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Dept.java
class Dept (line 17) | @Entity(name="t_sys_dept")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Dict.java
class Dict (line 17) | @Entity(name="t_sys_dict")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/FileInfo.java
class FileInfo (line 11) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/LoginLog.java
class LoginLog (line 18) | @Entity(name="t_sys_login_log")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Menu.java
class Menu (line 17) | @Entity(name = "t_sys_menu")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Notice.java
class Notice (line 17) | @Entity(name="t_sys_notice")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/OperationLog.java
class OperationLog (line 17) | @Entity(name = "t_sys_operation_log")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Relation.java
class Relation (line 17) | @Entity(name="t_sys_relation")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Role.java
class Role (line 17) | @Entity(name="t_sys_role")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/Task.java
class Task (line 15) | @Table(appliesTo="t_sys_task",comment = "定时任务")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/TaskLog.java
class TaskLog (line 18) | @Table(appliesTo="t_sys_task_log",comment = "定时任务日志")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/system/User.java
class User (line 18) | @Entity(name = "t_sys_user")
FILE: material-core/src/main/java/cn/enilu/material/bean/entity/test/Boy.java
class Boy (line 11) | @Entity(name="t_test_boy")
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/BizExceptionEnum.java
type BizExceptionEnum (line 10) | public enum BizExceptionEnum implements ServiceExceptionEnum {
method BizExceptionEnum (line 60) | BizExceptionEnum(int code, String message) {
method getCode (line 69) | @Override
method setCode (line 74) | public void setCode(Integer code) {
method getMessage (line 78) | @Override
method setMessage (line 83) | public void setMessage(String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/ConfigKeyEnum.java
type ConfigKeyEnum (line 3) | public enum ConfigKeyEnum {
method ConfigKeyEnum (line 23) | ConfigKeyEnum(String value) {
method getValue (line 27) | public String getValue() {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/ProjectEnum.java
type ProjectEnum (line 6) | public enum ProjectEnum {
method ProjectEnum (line 14) | ProjectEnum(String value) {
method getValue (line 18) | public String getValue() {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/RedisQueueName.java
type RedisQueueName (line 7) | public enum RedisQueueName {
method getValue (line 12) | public String getValue() {
method setValue (line 16) | public void setValue(String value) {
method RedisQueueName (line 20) | RedisQueueName(String value) {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/SerialNumberEnum.java
type SerialNumberEnum (line 7) | public enum SerialNumberEnum {
method SerialNumberEnum (line 72) | private SerialNumberEnum(String code, String desc) {
method getDesc (line 77) | public String getDesc() {
method setDesc (line 81) | public void setDesc(String desc) {
method getCode (line 85) | public String getCode() {
method setCode (line 89) | public void setCode(String code) {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/TypeEnum.java
class TypeEnum (line 3) | public class TypeEnum {
type DataItemShowType (line 8) | public enum DataItemShowType {
method DataItemShowType (line 16) | private DataItemShowType(int value) {
method getValue (line 20) | public int getValue() {
method setValue (line 24) | public void setValue(int value) {
type InvokeTypeEnum (line 32) | public enum InvokeTypeEnum {
method InvokeTypeEnum (line 41) | private InvokeTypeEnum(String value) {
method getValue (line 45) | public String getValue() {
method setValue (line 49) | public void setValue(String value) {
type InvokeStateEnum (line 57) | public enum InvokeStateEnum {
method InvokeStateEnum (line 68) | private InvokeStateEnum(int value, String code) {
method getValue (line 73) | public int getValue() {
method setValue (line 77) | public void setValue(int value) {
method getCode (line 81) | public String getCode() {
method setCode (line 85) | public void setCode(String code) {
method isError (line 89) | public static boolean isError(InvokeStateEnum invokeState) {
method isNeedWarning (line 93) | public static boolean isNeedWarning(InvokeStateEnum invokeState) {
method getNoData (line 97) | public static InvokeStateEnum getNoData() {
method getSuccess (line 101) | public static InvokeStateEnum getSuccess() {
method getError (line 105) | public static InvokeStateEnum getError() {
method getErrorNoWarn (line 109) | public static InvokeStateEnum getErrorNoWarn() {
type OrderChannelEnum (line 117) | public enum OrderChannelEnum {
method OrderChannelEnum (line 124) | private OrderChannelEnum(int value, String name) {
method getValue (line 129) | public int getValue() {
method setValue (line 133) | public void setValue(int value) {
method getName (line 137) | public String getName() {
method setName (line 141) | public void setName(String name) {
type AdminType (line 146) | public enum AdminType {
method AdminType (line 154) | private AdminType(int value) {
method getValue (line 158) | public int getValue() {
method setValue (line 162) | public void setValue(int value) {
type MatchType (line 167) | public enum MatchType {
method MatchType (line 175) | private MatchType(int value) {
method getValue (line 179) | public int getValue() {
method setValue (line 183) | public void setValue(int value) {
type MessageType (line 188) | public enum MessageType {
method MessageType (line 196) | private MessageType(int value) {
method getValue (line 200) | public int getValue() {
method setValue (line 204) | public void setValue(int value) {
type Aspect (line 209) | public enum Aspect {
method Aspect (line 222) | private Aspect(String value) {
method getValue (line 226) | public String getValue() {
method setValue (line 230) | public void setValue(String value) {
type JobStatus (line 235) | public enum JobStatus {
method JobStatus (line 243) | private JobStatus(String index, String name) {
method getName (line 251) | public String getName() {
method getIndex (line 255) | public String getIndex() {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/BannerTypeEnum.java
type BannerTypeEnum (line 3) | public enum BannerTypeEnum {
method BannerTypeEnum (line 13) | BannerTypeEnum(String value) {
method getValue (line 17) | public String getValue() {
FILE: material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/ChannelEnum.java
type ChannelEnum (line 3) | public enum ChannelEnum {
method ChannelEnum (line 13) | ChannelEnum(Long id,String value) {
method getValue (line 18) | public String getValue() {
method getId (line 21) | public Long getId(){
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ApplicationException.java
class ApplicationException (line 9) | public class ApplicationException extends RuntimeException {
method ApplicationException (line 15) | public ApplicationException(ServiceExceptionEnum serviceExceptionEnum) {
method getCode (line 20) | public Integer getCode() {
method setCode (line 24) | public void setCode(Integer code) {
method getMessage (line 28) | @Override
method setMessage (line 33) | public void setMessage(String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ExceptionEnum.java
type ExceptionEnum (line 9) | public enum ExceptionEnum implements ServiceExceptionEnum{
method ExceptionEnum (line 32) | ExceptionEnum(int code, String message) {
method getCode (line 41) | @Override
method setCode (line 46) | public void setCode(Integer code) {
method getMessage (line 50) | @Override
method setMessage (line 55) | public void setMessage(String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/InvalidKaptchaException.java
class InvalidKaptchaException (line 9) | public class InvalidKaptchaException extends RuntimeException {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/MailException.java
class MailException (line 3) | public class MailException extends Exception {
method MailException (line 5) | public MailException(String msg) {
method MailException (line 9) | public MailException(String msg, Throwable e) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ParamException.java
class ParamException (line 3) | public class ParamException extends Exception {
method ParamException (line 5) | public ParamException(String msg) {
method ParamException (line 9) | public ParamException(String msg, Throwable e) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ServiceExceptionEnum.java
type ServiceExceptionEnum (line 9) | public interface ServiceExceptionEnum {
method getCode (line 14) | Integer getCode();
method getMessage (line 19) | String getMessage();
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/SlConnectException.java
class SlConnectException (line 5) | public class SlConnectException extends Exception {
method SlConnectException (line 12) | public SlConnectException(String errorCode, String errorMessage) {
method getErrorCode (line 17) | public String getErrorCode() {
method getDetails (line 21) | public List<String> getDetails() {
method setDetails (line 25) | public void setDetails(List<String> details) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/SlEvalException.java
class SlEvalException (line 5) | public class SlEvalException extends Exception {
method SlEvalException (line 12) | public SlEvalException(String errorCode, String errorMessage) {
method getErrorCode (line 17) | public String getErrorCode() {
method getDetails (line 21) | public List<String> getDetails() {
method setDetails (line 25) | public void setDetails(List<String> details) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/ValidException.java
class ValidException (line 3) | public class ValidException extends RuntimeException {
method ValidException (line 5) | public ValidException(String msg) {
method ValidException (line 9) | public ValidException(String msg, Throwable e) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/XSException.java
class XSException (line 8) | public class XSException extends Exception {
method getCode (line 14) | public String getCode() {
method XSException (line 18) | public XSException(String code, String message, Throwable t) {
method XSException (line 23) | public XSException(String code, String message) {
FILE: material-core/src/main/java/cn/enilu/material/bean/exception/XSRuntimeException.java
class XSRuntimeException (line 3) | @SuppressWarnings("serial")
method XSRuntimeException (line 6) | public XSRuntimeException(String msg) {
method XSRuntimeException (line 10) | public XSRuntimeException(String msg, Throwable e) {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/DictVo.java
class DictVo (line 9) | public class DictVo {
method getKey (line 13) | public String getKey() {
method setKey (line 17) | public void setKey(String key) {
method getValue (line 21) | public String getValue() {
method setValue (line 25) | public void setValue(String value) {
method DictVo (line 29) | public DictVo() {
method DictVo (line 32) | public DictVo(String key, String value) {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/QuartzJob.java
class QuartzJob (line 10) | @Getter
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/SpringContextHolder.java
class SpringContextHolder (line 14) | @Component
method setApplicationContext (line 19) | @Override
method getApplicationContext (line 24) | public static ApplicationContext getApplicationContext() {
method getBean (line 29) | @SuppressWarnings("unchecked")
method getBean (line 35) | public static <T> T getBean(Class<T> requiredType) {
method assertApplicationContext (line 40) | private static void assertApplicationContext() {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/front/Ret.java
class Ret (line 6) | @Getter
method Ret (line 15) | public Ret() {
method Ret (line 19) | public Ret(Integer code, String msg, T data) {
method toString (line 26) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/front/Rets.java
class Rets (line 3) | public class Rets {
method success (line 9) | public static Ret success(Object data) {
method failure (line 13) | public static Ret failure(String msg) {
method success (line 17) | public static Ret success() {
method expire (line 20) | public static Ret expire(){
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/DeptNode.java
class DeptNode (line 14) | public class DeptNode extends Dept {
method getChildren (line 18) | public List<DeptNode> getChildren() {
method setChildren (line 22) | public void setChildren(List<DeptNode> children) {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/IsMenu.java
type IsMenu (line 9) | public enum IsMenu {
method IsMenu (line 17) | IsMenu(int code, String message) {
method getCode (line 22) | public int getCode() {
method setCode (line 26) | public void setCode(int code) {
method getMessage (line 30) | public String getMessage() {
method setMessage (line 34) | public void setMessage(String message) {
method valueOf (line 38) | public static String valueOf(Integer status) {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/MenuNode.java
class MenuNode (line 15) | public class MenuNode implements Comparable , Serializable {
method MenuNode (line 73) | public MenuNode() {
method MenuNode (line 77) | public MenuNode(Long id, Long parentId) {
method getCode (line 83) | public String getCode() {
method setCode (line 87) | public void setCode(String code) {
method getLevels (line 91) | public Integer getLevels() {
method setLevels (line 95) | public void setLevels(Integer levels) {
method getIcon (line 99) | public String getIcon() {
method setIcon (line 103) | public void setIcon(String icon) {
method createRoot (line 107) | public static MenuNode createRoot() {
method getId (line 111) | public Long getId() {
method setId (line 115) | public void setId(Long id) {
method getParentId (line 119) | public Long getParentId() {
method setParentId (line 123) | public void setParentId(Long parentId) {
method getName (line 127) | public String getName() {
method setName (line 131) | public void setName(String name) {
method getUrl (line 135) | public String getUrl() {
method setUrl (line 139) | public void setUrl(String url) {
method getChildren (line 143) | public List<MenuNode> getChildren() {
method setChildren (line 147) | public void setChildren(List<MenuNode> children) {
method getNum (line 151) | public Integer getNum() {
method setNum (line 155) | public void setNum(Integer num) {
method getIsmenu (line 159) | public Integer getIsmenu() {
method setIsmenu (line 163) | public void setIsmenu(Integer ismenu) {
method getIsMenuName (line 167) | public String getIsMenuName() {
method setIsMenuName (line 172) | public void setIsMenuName(String isMenuName) {
method getStatus (line 176) | public Integer getStatus() {
method setStatus (line 180) | public void setStatus(Integer status) {
method getStatusName (line 184) | public String getStatusName() {
method setStatusName (line 188) | public void setStatusName(String statusName) {
method toString (line 192) | @Override
method compareTo (line 207) | @Override
method buildNodeTree (line 222) | public void buildNodeTree(List<MenuNode> nodeList) {
method findChildNodes (line 236) | public List<MenuNode> findChildNodes(List<MenuNode> nodeList, Long par...
method recursionFn (line 254) | public void recursionFn(List<MenuNode> nodeList, MenuNode node, Long p...
method getChildList (line 277) | private List<MenuNode> getChildList(List<MenuNode> list, MenuNode node) {
method clearBtn (line 294) | public static List<MenuNode> clearBtn(List<MenuNode> nodes) {
method clearLevelTwo (line 309) | public static List<MenuNode> clearLevelTwo(List<MenuNode> nodes) {
method buildTitle (line 325) | public static List<MenuNode> buildTitle(List<MenuNode> nodes) {
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/Node.java
class Node (line 14) | @Data
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/node/ZTreeNode.java
class ZTreeNode (line 10) | public class ZTreeNode {
method getId (line 25) | public Long getId() {
method setId (line 29) | public void setId(Long id) {
method getpId (line 33) | public Long getpId() {
method setpId (line 37) | public void setpId(Long pId) {
method getName (line 41) | public String getName() {
method setName (line 45) | public void setName(String name) {
method getOpen (line 49) | public Boolean getOpen() {
method setOpen (line 53) | public void setOpen(Boolean open) {
method getIsOpen (line 57) | public Boolean getIsOpen() {
method setIsOpen (line 61) | public void setIsOpen(Boolean open) {
method getChecked (line 65) | public Boolean getChecked() {
method setChecked (line 69) | public void setChecked(Boolean checked) {
method getNodeData (line 73) | public Object getNodeData() {
method setNodeData (line 77) | public void setNodeData(Object nodeData) {
method getCode (line 81) | public String getCode() {
method setCode (line 85) | public void setCode(String code) {
method createParent (line 89) | public static ZTreeNode createParent(){
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/DynamicSpecifications.java
class DynamicSpecifications (line 19) | public class DynamicSpecifications {
method bySearchFilter (line 22) | public static <T> Specification<T> bySearchFilter(final Collection<Sea...
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/MutiStrFactory.java
class MutiStrFactory (line 18) | public class MutiStrFactory {
method parseKeyValue (line 51) | public static List<Map<String,String>> parseKeyValue(String mutiString){
method parseIdKeyValue (line 74) | public static List<Map<String,String>> parseIdKeyValue(String mutiStri...
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/Page.java
class Page (line 16) | public class Page<T> {
method Page (line 98) | public Page() {
method Page (line 102) | public Page(int current, int size, String orderByField) {
method Page (line 107) | public Page(int current, int size, String orderByField, boolean isAsc) {
method Page (line 120) | public Page(int current, int size) {
method Page (line 124) | public Page(int current, int size, boolean searchCount) {
method Page (line 128) | public Page(int current, int size, boolean searchCount, boolean openSo...
method offsetCurrent (line 140) | protected static int offsetCurrent(int current, int size) {
method offsetCurrent (line 147) | public int offsetCurrent() {
method hasPrevious (line 151) | public boolean hasPrevious() {
method hasNext (line 155) | public boolean hasNext() {
method getTotal (line 159) | public int getTotal() {
method setTotal (line 163) | public Page setTotal(int total) {
method getSize (line 168) | public int getSize() {
method setSize (line 172) | public Page setSize(int size) {
method getPages (line 177) | public int getPages() {
method getCurrent (line 188) | public int getCurrent() {
method setCurrent (line 192) | public Page setCurrent(int current) {
method isSearchCount (line 197) | public boolean isSearchCount() {
method setSearchCount (line 201) | public Page setSearchCount(boolean searchCount) {
method getOrderByField (line 210) | @Deprecated
method setOrderByField (line 219) | public Page setOrderByField(String orderByField) {
method isOpenSort (line 226) | public boolean isOpenSort() {
method setOpenSort (line 230) | public Page setOpenSort(boolean openSort) {
method getAscs (line 235) | public List<String> getAscs() {
method orders (line 239) | private List<String> orders(boolean condition, List<String> columns) {
method setAscs (line 251) | public Page setAscs(List<String> ascs) {
method getDescs (line 256) | public List<String> getDescs() {
method setDescs (line 260) | public Page setDescs(List<String> descs) {
method isAsc (line 269) | @Deprecated
method setAsc (line 278) | public Page setAsc(boolean isAsc) {
method getOffset (line 283) | public int getOffset() {
method setOffset (line 287) | public Page setOffset(int offset) {
method getLimit (line 292) | public int getLimit() {
method setLimit (line 296) | public Page setLimit(int limit) {
method getRecords (line 313) | public List<T> getRecords() {
method setRecords (line 317) | public Page<T> setRecords(List<T> records) {
method getCondition (line 322) | public Map<String, Object> getCondition() {
method setCondition (line 326) | public Page<T> setCondition(Map<String, Object> condition) {
method getFilters (line 332) | public List<SearchFilter> getFilters() {
method setFilters (line 336) | public void setFilters(List<SearchFilter> filters) {
method addFilter (line 339) | public void addFilter(SearchFilter filter){
method addFilter (line 348) | public void addFilter(String fieldName, SearchFilter.Operator operator...
method addFilter (line 353) | public void addFilter(String fieldName, SearchFilter.Operator operator){
method toString (line 357) | @Override
FILE: material-core/src/main/java/cn/enilu/material/bean/vo/query/SearchFilter.java
class SearchFilter (line 14) | public class SearchFilter {
type Operator (line 15) | public enum Operator {
method build (line 22) | public static SearchFilter build(String fieldName, Operator operator,...
method build (line 25) | public static SearchFilter build(String fieldName, Object val){
method SearchFilter (line 28) | public SearchFilter(String fieldName, Object val) {
method SearchFilter (line 32) | public SearchFilter(String fieldName, Operator operator, Object value) {
method parse (line 41) | public static Map<String, SearchFilter> parse(Map<String, Object> sear...
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepository.java
type BaseRepository (line 19) | @NoRepositoryBean
method queryBySql (line 23) | List<Map> queryBySql(String sql);
method queryBySql (line 24) | List<Map> queryBySql(String sql, List<SearchFilter> filter);
method query (line 25) | List<T> query(String sql);
method getBySql (line 26) | Object getBySql(String sql);
method get (line 27) | T get(String sql);
method execute (line 28) | int execute(String sql);
method getDataClass (line 29) | Class<T> getDataClass();
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryFactoryBean.java
class BaseRepositoryFactoryBean (line 22) | public class BaseRepositoryFactoryBean<JR extends JpaRepository<T, ID>, ...
method BaseRepositoryFactoryBean (line 24) | public BaseRepositoryFactoryBean(Class<? extends JR> repositoryInterfa...
method createRepositoryFactory (line 28) | @Override
class BaseRepositoryFactory (line 33) | private static class BaseRepositoryFactory<T, ID extends Serializable>...
method BaseRepositoryFactory (line 35) | public BaseRepositoryFactory(EntityManager entityManager) {
method getTargetRepository (line 40) | @Override
method getRepositoryBaseClass (line 48) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryImpl.java
class BaseRepositoryImpl (line 22) | public class BaseRepositoryImpl<T, ID extends Serializable>
method BaseRepositoryImpl (line 29) | BaseRepositoryImpl(JpaEntityInformation<T, ID> entityInformation,
method queryBySql (line 36) | @Override
method queryBySql (line 41) | @Override
method getBySql (line 56) | @Override
method get (line 65) | @Override
method execute (line 71) | @Override
method getDataClass (line 76) | @Override
method query (line 81) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/DaoConfiguration.java
class DaoConfiguration (line 12) | @Configuration
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/BaseCache.java
class BaseCache (line 11) | public abstract class BaseCache implements Cache {
method cache (line 12) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/Cache.java
type Cache (line 6) | public interface Cache {
method cache (line 10) | void cache();
method get (line 19) | Object get(String key);
method set (line 28) | void set(String key, Object val);
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/CacheDao.java
type CacheDao (line 11) | public interface CacheDao {
method hset (line 21) | void hset(Serializable key, Serializable k, Object val);
method hget (line 30) | Serializable hget(Serializable key, Serializable k);
method hget (line 40) | <T>T hget(Serializable key, Serializable k,Class<T> klass);
method set (line 48) | void set(Serializable key, Object val);
method get (line 58) | <T>T get(Serializable key,Class<T> klass);
method get (line 59) | String get(Serializable key);
method del (line 62) | void del(Serializable key);
method hdel (line 63) | void hdel(Serializable key, Serializable k);
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/ConfigCache.java
type ConfigCache (line 6) | public interface ConfigCache extends Cache {
method get (line 14) | String get(String key, boolean local);
method get (line 23) | String get(String key, String def);
method del (line 30) | void del(String key, String val);
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/DictCache.java
type DictCache (line 13) | public interface DictCache extends Cache{
method getDictsByPname (line 15) | List<Dict> getDictsByPname(String dictName);
method getDict (line 16) | String getDict(Long dictId);
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/TokenCache.java
class TokenCache (line 12) | @Service
method put (line 18) | public void put(String token, Long idUser) {
method get (line 22) | public Long get(String token) {
method getIdUser (line 25) | public Long getIdUser(){
method remove (line 29) | public void remove(String token) {
method setUser (line 33) | public void setUser(String token, ShiroUser shiroUser){
method getUser (line 36) | public ShiroUser getUser(String token){
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/ConfigCacheImpl.java
class ConfigCacheImpl (line 22) | @Service
method get (line 30) | @Override
method get (line 35) | @Override
method get (line 47) | @Override
method set (line 57) | @Override
method del (line 62) | @Override
method cache (line 67) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/DictCacheImpl.java
class DictCacheImpl (line 20) | @Component
method getDictsByPname (line 27) | @Override
method getDict (line 32) | @Override
method cache (line 37) | @Override
method get (line 56) | @Override
method set (line 61) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/cache/impl/EhcacheDao.java
class EhcacheDao (line 17) | @Component
method hset (line 25) | @Override
method hget (line 31) | @Override
method hget (line 36) | @Override
method set (line 41) | @Override
method get (line 48) | @Override
method get (line 53) | @Override
method del (line 58) | @Override
method hdel (line 63) | @Override
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessageRepository.java
type MessageRepository (line 10) | public interface MessageRepository extends BaseRepository<Message,Long> {
method deleteAllByIdIn (line 11) | void deleteAllByIdIn(ArrayList<String> list);
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessagesenderRepository.java
type MessagesenderRepository (line 8) | public interface MessagesenderRepository extends BaseRepository<MessageS...
FILE: material-core/src/main/java/cn/enilu/material/dao/message/MessagetemplateRepository.java
type MessagetemplateRepository (line 11) | public interface MessagetemplateRepository extends BaseRepository<Messag...
method findByCode (line 12) | MessageTemplate findByCode(String code);
method findByIdMessageSender (line 14) | List<MessageTemplate> findByIdMessageSender(Long idMessageSender);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/CfgRepository.java
type CfgRepository (line 7) | public interface CfgRepository extends BaseRepository<Cfg,Long> {
method findByCfgName (line 8) | Cfg findByCfgName(String cfgName);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/DeptRepository.java
type DeptRepository (line 15) | public interface DeptRepository extends BaseRepository<Dept,Long> {
method findByPidsLike (line 16) | List<Dept> findByPidsLike(String pid);
method tree (line 17) | @Query(nativeQuery = true,value = "SELECT id, pid AS pId, simplename A...
method findBySimplenameLikeOrFullnameLike (line 20) | List<Dept> findBySimplenameLikeOrFullnameLike(String name,String name2);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/DictRepository.java
type DictRepository (line 10) | public interface DictRepository extends BaseRepository<Dict,Long> {
method findByPid (line 11) | List<Dict> findByPid(Long pid);
method findByNameAndPid (line 12) | List<Dict> findByNameAndPid(String name,Long pid);
method findByNameLike (line 14) | List<Dict> findByNameLike(String name);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/FileInfoRepository.java
type FileInfoRepository (line 8) | public interface FileInfoRepository extends PagingAndSortingRepository<...
FILE: material-core/src/main/java/cn/enilu/material/dao/system/LoginLogRepository.java
type LoginLogRepository (line 11) | public interface LoginLogRepository extends BaseRepository<LoginLog,Long>{
FILE: material-core/src/main/java/cn/enilu/material/dao/system/MenuRepository.java
type MenuRepository (line 16) | public interface MenuRepository extends BaseRepository<Menu,Long> {
method findByCode (line 17) | Menu findByCode(String code);
method findByPcodesLike (line 18) | List<Menu> findByPcodesLike(String code);
method findByNameLikeAndLevels (line 19) | List<Menu> findByNameLikeAndLevels(String name,Integer levels);
method getMenusByRoleIds (line 20) | @Query(nativeQuery = true,value="SELECT m1.id AS id, m1.icon AS icon, ...
method getMenus (line 29) | @Query(nativeQuery = true,value="SELECT m1.id AS id, m1.icon AS icon, ...
method getMenuIdsByRoleId (line 35) | @Query(nativeQuery = true,value="select menuid from t_sys_relation whe...
method menuTreeList (line 37) | @Query(nativeQuery = true,value = "SELECT m1.id AS id, ( CASE WHEN (m2...
method menuTreeListByMenuIds (line 39) | @Query(nativeQuery = true,value = "SELECT m1.id AS id, ( CASE WHEN (m2...
method deleteRelationByMenu (line 42) | @Modifying
FILE: material-core/src/main/java/cn/enilu/material/dao/system/OperationLogRepository.java
type OperationLogRepository (line 16) | public interface OperationLogRepository extends BaseRepository<Operation...
method clear (line 17) | @Modifying
FILE: material-core/src/main/java/cn/enilu/material/dao/system/RelationRepository.java
type RelationRepository (line 14) | public interface RelationRepository extends BaseRepository<Relation,Long> {
method deleteByRoleId (line 15) | @Transactional
FILE: material-core/src/main/java/cn/enilu/material/dao/system/RoleRepository.java
type RoleRepository (line 15) | public interface RoleRepository extends BaseRepository<Role,Long> {
method roleTreeList (line 16) | @Query(nativeQuery = true,value = "SELECT id, pId, NAME, ( CASE WHEN (...
method roleTreeListByRoleId (line 19) | @Query(nativeQuery = true,value="SELECT r.id AS id, pId AS pId, NAME A...
method findByName (line 22) | List findByName(String roleName);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/SysNoticeRepository.java
type SysNoticeRepository (line 14) | public interface SysNoticeRepository extends BaseRepository<Notice,Long> {
method findByTitleLike (line 15) | List<Notice> findByTitleLike(String name);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/TaskLogRepository.java
type TaskLogRepository (line 10) | public interface TaskLogRepository extends PagingAndSortingRepository<T...
FILE: material-core/src/main/java/cn/enilu/material/dao/system/TaskRepository.java
type TaskRepository (line 10) | public interface TaskRepository extends BaseRepository<Task, Long> {
method countByNameLike (line 12) | long countByNameLike(String name);
method findByNameLike (line 14) | List<Task> findByNameLike(String name);
method findAllByDisabled (line 15) | List<Task> findAllByDisabled(boolean disable);
FILE: material-core/src/main/java/cn/enilu/material/dao/system/UserRepository.java
type UserRepository (line 14) | public interface UserRepository extends BaseRepository<User,Long> {
method findByAccount (line 15) | User findByAccount(String account);
method findByRoleid (line 17) | List<User> findByRoleid(String idRole);
FILE: material-core/src/main/java/cn/enilu/material/factory/DictFieldWarpperFactory.java
class DictFieldWarpperFactory (line 18) | public class DictFieldWarpperFactory {
method createFieldWarpper (line 20) | public static Object createFieldWarpper(Object field, String methodNam...
FILE: material-core/src/main/java/cn/enilu/material/factory/UserFactory.java
class UserFactory (line 13) | public class UserFactory {
method createUser (line 15) | public static User createUser(UserDto userDto, User user){
method updateUser (line 23) | public static User updateUser(UserDto userDto,User user){
FILE: material-core/src/main/java/cn/enilu/material/service/BaseService.java
class BaseService (line 27) | public abstract class BaseService<T, ID extends Serializable, R extends...
method delete (line 35) | @Override
method delete (line 41) | @Override
method insert (line 50) | @Override
method get (line 55) | @Override
method get (line 61) | @Override
method get (line 67) | @Override
method query (line 73) | @Override
method queryAll (line 78) | @Override
method queryPage (line 83) | @Override
method queryAll (line 98) | @Override
method queryAll (line 103) | @Override
method queryAll (line 108) | @Override
method queryAll (line 117) | @Override
method queryBySql (line 125) | @Override
method queryBySql (line 129) | @Override
method queryBySql (line 133) | @Override
method count (line 138) | @Override
method count (line 143) | @Override
method update (line 148) | @Override
method clear (line 154) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/CrudService.java
type CrudService (line 8) | public interface CrudService <T, ID> extends
FILE: material-core/src/main/java/cn/enilu/material/service/DeleteService.java
type DeleteService (line 8) | public interface DeleteService<ID> {
method delete (line 15) | void delete(ID id);
method delete (line 22) | void delete(Iterable<ID> ids);
method clear (line 27) | void clear();
FILE: material-core/src/main/java/cn/enilu/material/service/InsertService.java
type InsertService (line 8) | public interface InsertService<T, ID> {
method insert (line 16) | T insert(T record);
FILE: material-core/src/main/java/cn/enilu/material/service/SelectService.java
type SelectService (line 15) | public interface SelectService <T, ID> {
method get (line 22) | T get(ID id);
method get (line 23) | T get(SearchFilter filter);
method get (line 24) | T get(List<SearchFilter> filters);
method query (line 30) | List<T> query(Iterable<ID> ids);
method queryAll (line 36) | List<T> queryAll();
method queryPage (line 42) | Page<T> queryPage(Page<T> page);
method queryAll (line 49) | List<T> queryAll(List<SearchFilter> filters);
method queryAll (line 57) | List<T> queryAll(List<SearchFilter> filters, Sort sort);
method queryAll (line 64) | List<T> queryAll(SearchFilter filter);
method queryAll (line 72) | List<T> queryAll(SearchFilter filter,Sort sort);
method queryBySql (line 80) | List<Map> queryBySql(String sql);
method queryBySql (line 88) | List<Map> queryBySql(String sql, SearchFilter filter);
method queryBySql (line 96) | List<Map> queryBySql(String sql, List<SearchFilter> filter);
method count (line 102) | long count(SearchFilter filter);
method count (line 109) | long count(List<SearchFilter> filters);
FILE: material-core/src/main/java/cn/enilu/material/service/UpdateService.java
type UpdateService (line 8) | public interface UpdateService <T, ID> {
method update (line 15) | T update(T record);
FILE: material-core/src/main/java/cn/enilu/material/service/message/MessageService.java
class MessageService (line 34) | @Service
method delete (line 46) | public boolean delete(String ids) {
method sendTplEmail (line 61) | public void sendTplEmail(String tplCode, String from, String to, Strin...
method sendTplEmail (line 78) | public void sendTplEmail(String tplCode, String from, String to, Strin...
method sendSimpleEmail (line 95) | public void sendSimpleEmail(String tplCode, String from, String to, St...
method sendSms (line 107) | public void sendSms(String tplCode, String receiver, String... args) {
method sendEmailMessage (line 118) | private void sendEmailMessage(String tplCode, String from, String to, ...
method getContent (line 136) | private String getContent(String template, String... args) {
method getContent (line 146) | private String getContent(String template, Map<String, Object> dataMap) {
method saveMessage (line 150) | private void saveMessage(Integer type, String tplCode, String receiver...
method sendSmsMessage (line 166) | private boolean sendSmsMessage( String receiver, String content, Mess...
method getSmsSender (line 186) | private SmsSender getSmsSender(MessageTemplate messageTemplate) throws...
method getEmailSender (line 200) | private EmailSender getEmailSender(MessageTemplate messageTemplate) th...
method getTpl (line 213) | private String getTpl(MessageTemplate messageTemplate) {
FILE: material-core/src/main/java/cn/enilu/material/service/message/MessagesenderService.java
class MessagesenderService (line 24) | @Service
method save (line 32) | public void save(MessageSender messageSender){
method delete (line 35) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/message/MessagetemplateService.java
class MessagetemplateService (line 14) | @Service
FILE: material-core/src/main/java/cn/enilu/material/service/message/email/DefaultEmailSender.java
class DefaultEmailSender (line 18) | @Service
method sendEmail (line 22) | @Override
method sendEmail (line 27) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/message/email/EmailSender.java
type EmailSender (line 11) | public interface EmailSender {
method sendEmail (line 21) | boolean sendEmail(String from, String to, String cc, String title, Str...
method sendEmail (line 34) | boolean sendEmail(String from, String to, String cc, String title, Str...
FILE: material-core/src/main/java/cn/enilu/material/service/message/sms/SmsSender.java
type SmsSender (line 3) | public interface SmsSender {
method sendSms (line 13) | boolean sendSms(String tplCode, String receiver, String[] args, String...
FILE: material-core/src/main/java/cn/enilu/material/service/message/sms/tencent/TencentSmsSender.java
class TencentSmsSender (line 14) | @Service
method sendSms (line 19) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/system/AccountService.java
class AccountService (line 24) | @Service
method login (line 31) | public String login(Long idUser) {
method logout (line 58) | public void logout(String token) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/CfgService.java
class CfgService (line 17) | @Service
method saveOrUpdate (line 22) | public Cfg saveOrUpdate(Cfg cfg) {
method delete (line 31) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/system/DeptService.java
class DeptService (line 23) | @Service
method tree (line 28) | public List<ZTreeNode> tree() {
method transfer (line 38) | private ZTreeNode transfer(Object[] obj){
method query (line 46) | public List<Dept> query(String condition) {
method deleteDept (line 57) | public void deleteDept(Long deptId) {
method queryAllNode (line 64) | public List<DeptNode> queryAllNode() {
method deptSetPids (line 69) | public void deptSetPids(Dept dept) {
method generateTree (line 85) | private List<DeptNode> generateTree(List<Dept> list){
method get (line 112) | public Dept get(Long id) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/DictService.java
class DictService (line 24) | @Service
method addDict (line 32) | public void addDict(String dictName, String dictValues) {
method editDict (line 66) | public void editDict(Long dictId, String dictName, String dicts) {
method delteDict (line 76) | public void delteDict(Long dictId) {
method get (line 85) | public Dict get(Long id) {
method queryByPid (line 93) | public List<Dict> queryByPid(Long pid) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/FileService.java
class FileService (line 25) | @Service
method save (line 33) | public FileInfo save(MultipartFile multipartFile){
method get (line 56) | public FileInfo get(Long id){
method findPage (line 62) | public Page<FileInfo> findPage(Page<FileInfo> page, HashMap<String, St...
FILE: material-core/src/main/java/cn/enilu/material/service/system/IConstantFactory.java
type IConstantFactory (line 15) | public interface IConstantFactory {
method resourceVersion (line 20) | String resourceVersion();
method getUserNameById (line 27) | String getUserNameById(Long userId);
method getUserAccountById (line 35) | String getUserAccountById(Long userId);
method getRoleName (line 40) | String getRoleName(String roleIds);
method getSingleRoleName (line 45) | String getSingleRoleName(Long roleId);
method getSingleRoleTip (line 50) | String getSingleRoleTip(Long roleId);
method getDeptName (line 55) | String getDeptName(Long deptId);
method getMenuNames (line 60) | String getMenuNames(String menuIds);
method getMenuName (line 65) | String getMenuName(Long menuId);
method getMenuNameByCode (line 70) | String getMenuNameByCode(String code);
method findByDictName (line 77) | List<DictVo> findByDictName(String dictName);
method getDictName (line 81) | String getDictName(Long dictId);
method getNoticeTitle (line 86) | String getNoticeTitle(Long dictId);
method getDictsByName (line 91) | String getDictsByName(String name, String val);
method getSexName (line 96) | String getSexName(Integer sex);
method getCardTypeName (line 102) | String getCardTypeName(String cardType);
method getIdCardTypeName (line 109) | String getIdCardTypeName(String cardType);
method getRelationName (line 116) | String getRelationName(String relation);
method getStatusName (line 120) | String getStatusName(Integer status);
method getMenuStatusName (line 125) | String getMenuStatusName(Integer status);
method findInDict (line 130) | List<Dict> findInDict(Long id);
method getCacheObject (line 135) | String getCacheObject(String para);
method getSubDeptId (line 140) | List<Long> getSubDeptId(Long deptid);
method getParentDeptIds (line 145) | List<Integer> getParentDeptIds(Long deptid);
method getDicts (line 153) | List<Dict> getDicts(String pname);
method getCfg (line 159) | String getCfg(String cfgName);
method getRole (line 162) | Role getRole(Long id) ;
method getDept (line 163) | Dept getDept(Long id);
method getMenu (line 164) | Menu getMenu(Long id) ;
method getNotice (line 166) | Notice getNotice(Long id);
method cleanLocalCache (line 167) | void cleanLocalCache() ;
FILE: material-core/src/main/java/cn/enilu/material/service/system/LogObjectHolder.java
class LogObjectHolder (line 16) | @Component
method set (line 22) | public void set(Object obj) {
method get (line 26) | public Object get() {
method me (line 30) | public static LogObjectHolder me(){
FILE: material-core/src/main/java/cn/enilu/material/service/system/LoginLogService.java
class LoginLogService (line 14) | @Service
FILE: material-core/src/main/java/cn/enilu/material/service/system/MenuService.java
class MenuService (line 26) | @Service
method delMenu (line 34) | public void delMenu(Long menuId) {
method delMenuContainSubMenus (line 42) | public void delMenuContainSubMenus(Long menuId) {
method getMenusByRoleIds (line 51) | public List<MenuNode> getMenusByRoleIds(List<Long> roleList) {
method getMenusTreeByRoleIds (line 57) | public List<MenuNode> getMenusTreeByRoleIds(List<Long> roleList) {
method getMenus (line 74) | public List<MenuNode> getMenus() {
method sortTree (line 92) | private void sortTree(List<MenuNode> list){
method generateTree (line 100) | private List<MenuNode> generateTree(List<MenuNode> list){
method transferMenuNode (line 116) | private List<MenuNode> transferMenuNode(List menus){
method menuTreeList (line 140) | public List<ZTreeNode> menuTreeList() {
method menuTreeListByMenuIds (line 156) | public List<ZTreeNode> menuTreeListByMenuIds(List<Long> menuIds) {
method menuSetPcode (line 172) | public void menuSetPcode(Menu menu) {
method generateMenuTreeForRole (line 193) | public List<Node> generateMenuTreeForRole(List<ZTreeNode> list){
method get (line 222) | public Menu get(Long id) {
method findByCode (line 230) | public Menu findByCode(String code) {
method findByNameLike (line 235) | public List<Menu> findByNameLike(String name) {
method findByLevels (line 239) | public List<Menu> findByLevels(Integer level) {
method getMenuIdsByRoleId (line 243) | public List<Long> getMenuIdsByRoleId(Integer roleId) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/NoticeService.java
class NoticeService (line 15) | @Service
method findByTitleLike (line 19) | public List<Notice> findByTitleLike(String title) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/OperationLogService.java
class OperationLogService (line 13) | @Service
FILE: material-core/src/main/java/cn/enilu/material/service/system/RoleService.java
class RoleService (line 30) | @Service
method roleTreeList (line 39) | public List<ZTreeNode> roleTreeList() {
method roleTreeListByRoleId (line 55) | public List<ZTreeNode> roleTreeListByRoleId(Long[] ids) {
method setAuthority (line 72) | public void setAuthority(Long roleId, String ids) {
method delRoleById (line 85) | public void delRoleById(Long roleId) { List<User> list = userRepositor...
method generateRoleTree (line 98) | public List<Node> generateRoleTree(List<ZTreeNode> list) {
method get (line 111) | public Role get(Long id) {
method findByName (line 119) | public List findByName(String roleName) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/UserService.java
class UserService (line 27) | @Service
method findAll (line 32) | public List<User> findAll(final Map<String, Object> params) {
method findByAccount (line 62) | public User findByAccount(String account) {
FILE: material-core/src/main/java/cn/enilu/material/service/system/impl/ConstantFactory.java
class ConstantFactory (line 34) | @Component
method me (line 48) | public static IConstantFactory me() {
method get (line 52) | public String get(String key) {
method set (line 56) | public void set(String key, String val) {
method resourceVersion (line 60) | @Override
method getUserNameById (line 71) | @Override
method getUser (line 89) | private User getUser(Long id) {
method getUserAccountById (line 104) | @Override
method getRoleName (line 117) | @Override
method getSingleRoleName (line 139) | @Override
method getSingleRoleTip (line 154) | @Override
method getDeptName (line 169) | @Override
method getMenuNames (line 190) | @Override
method getMenuName (line 206) | @Override
method getMenuNameByCode (line 220) | @Override
method findByDictName (line 231) | @Override
method getDictName (line 250) | @Override
method getNoticeTitle (line 266) | @Override
method getDictsByName (line 281) | @Override
method getSexName (line 302) | @Override
method getCardTypeName (line 307) | @Override
method getIdCardTypeName (line 312) | @Override
method getRelationName (line 317) | @Override
method getStatusName (line 325) | @Override
method getMenuStatusName (line 333) | @Override
method findInDict (line 341) | @Override
method getCacheObject (line 350) | @Override
method getSubDeptId (line 358) | @Override
method getParentDeptIds (line 377) | @Override
method getDicts (line 390) | @Override
method getCfg (line 395) | @Override
method getRole (line 405) | @Override
method getDept (line 413) | @Override
method getMenu (line 421) | @Override
method getNotice (line 429) | @Override
method cleanLocalCache (line 437) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/task/BaseJob.java
class BaseJob (line 10) | @Component
method execute (line 13) | @Override
FILE: material-core/src/main/java/cn/enilu/material/service/task/JobExecuter.java
class JobExecuter (line 17) | @Component
method setJob (line 30) | public void setJob(QuartzJob job) {
method execute (line 34) | public void execute() {
method execute (line 69) | public abstract void execute(Map<String, Object> dataMap) throws Excep...
method getEmail (line 71) | public String getEmail() {
method getEmail (line 75) | public String getEmail(String defaultEmail) {
FILE: material-core/src/main/java/cn/enilu/material/service/task/JobService.java
class JobService (line 23) | @Service
method getJob (line 40) | public QuartzJob getJob(String jobName, String jobGroup) throws Schedu...
method getTaskList (line 62) | public List<QuartzJob> getTaskList() {
method getJob (line 71) | public QuartzJob getJob(Task task) {
method addJob (line 101) | public boolean addJob(QuartzJob job) throws SchedulerException {
method deleteJob (line 139) | public boolean deleteJob(QuartzJob job) {
FILE: material-core/src/main/java/cn/enilu/material/service/task/NoConurrentBaseJob.java
class NoConurrentBaseJob (line 6) | @Component
FILE: material-core/src/main/java/cn/enilu/material/service/task/QuartzConfigration.java
class QuartzConfigration (line 7) | @Configuration
method schedulerFactory (line 10) | @Bean(name = "scheduler")
FILE: material-core/src/main/java/cn/enilu/material/service/task/TaskService.java
class TaskService (line 33) | @Service
method save (line 44) | public Task save(Task task) {
method update (line 55) | @Override
method simpleUpdate (line 72) | public boolean simpleUpdate(Task task) {
method disable (line 78) | public Task disable(Long id) {
method enable (line 95) | public Task enable(Long id) {
method delete (line 114) | @Override
method getTaskLogs (line 132) | public Page<TaskLog> getTaskLogs(Page<TaskLog> page, Long taskId) {
method findByNameLike (line 156) | public Object findByNameLike(String name) {
FILE: material-core/src/main/java/cn/enilu/material/service/task/TaskUtils.java
class TaskUtils (line 16) | public class TaskUtils {
method executeJob (line 26) | public static void executeJob(QuartzJob job) throws Exception {
method isValidExpression (line 46) | public static boolean isValidExpression(final String cronExpression) {
method main (line 58) | public static void main(String[] args) {
FILE: material-core/src/main/java/cn/enilu/material/service/task/job/HelloJob.java
class HelloJob (line 21) | @Component
method execute (line 26) | @Override
FILE: material-core/src/main/java/cn/enilu/material/shiro/ShiroDbRealm.java
class ShiroDbRealm (line 20) | public class ShiroDbRealm extends AuthorizingRealm {
method doGetAuthenticationInfo (line 25) | @Override
method doGetAuthorizationInfo (line 39) | @Override
method setCredentialsMatcher (line 70) | @Override
FILE: material-core/src/main/java/cn/enilu/material/shiro/ShiroKit.java
class ShiroKit (line 36) | public class ShiroKit {
method md5 (line 57) | public static String md5(String credentials, String saltSource) {
method getRandomSalt (line 67) | public static String getRandomSalt(int length) {
method getSubject (line 76) | public static Subject getSubject() {
method getUser (line 85) | public static ShiroUser getUser() {
method getSession (line 97) | public static Session getSession() {
method getSessionAttr (line 105) | @SuppressWarnings("unchecked")
method setSessionAttr (line 115) | public static void setSessionAttr(String key, Object value) {
method removeSessionAttr (line 123) | public static void removeSessionAttr(String key) {
method hasRole (line 137) | public static boolean hasRole(String roleName) {
method lacksRole (line 149) | public static boolean lacksRole(String roleName) {
method hasAnyRoles (line 160) | public static boolean hasAnyRoles(String roleNames) {
method hasAllRoles (line 181) | public static boolean hasAllRoles(String roleNames) {
method hasPermission (line 202) | public static boolean hasPermission(String permission) {
method lacksPermission (line 215) | public static boolean lacksPermission(String permission) {
method isAuthenticated (line 224) | public static boolean isAuthenticated() {
method notAuthenticated (line 233) | public static boolean notAuthenticated() {
method isUser (line 242) | public static boolean isUser() {
method isGuest (line 251) | public static boolean isGuest() {
method principal (line 260) | public static String principal() {
method getDeptDataScope (line 271) | public static List<Long> getDeptDataScope() {
method isAdmin (line 281) | public static boolean isAdmin() {
FILE: material-core/src/main/java/cn/enilu/material/shiro/check/ICheck.java
type ICheck (line 22) | public interface ICheck {
method check (line 29) | boolean check(Object[] permissions);
method checkAll (line 35) | boolean checkAll();
FILE: material-core/src/main/java/cn/enilu/material/shiro/check/PermissionCheckFactory.java
class PermissionCheckFactory (line 33) | @Service
method me (line 38) | public static ICheck me() {
method check (line 42) | @Override
method checkAll (line 55) | @Override
FILE: material-core/src/main/java/cn/enilu/material/shiro/check/PermissionCheckManager.java
class PermissionCheckManager (line 24) | public class PermissionCheckManager {
method me (line 29) | public static PermissionCheckManager me() {
method PermissionCheckManager (line 33) | private PermissionCheckManager() {
method PermissionCheckManager (line 36) | public PermissionCheckManager(ICheck checkFactory) {
method setDefaultCheckFactory (line 40) | public void setDefaultCheckFactory(ICheck defaultCheckFactory) {
method check (line 44) | public static boolean check(Object[] permissions) {
method checkAll (line 48) | public static boolean checkAll() {
FILE: material-core/src/main/java/cn/enilu/material/shiro/factory/IShiro.java
type IShiro (line 15) | public interface IShiro {
method user (line 22) | User user(String account);
method shiroUser (line 29) | ShiroUser shiroUser(User user);
method findPermissionsByRoleId (line 36) | List<String> findPermissionsByRoleId(Integer roleId);
method findRoleNameByRoleId (line 43) | String findRoleNameByRoleId(Long roleId);
method info (line 48) | SimpleAuthenticationInfo info(ShiroUser shiroUser, User user, String r...
FILE: material-core/src/main/java/cn/enilu/material/shiro/factory/ShiroFactroy.java
class ShiroFactroy (line 29) | @Service
method me (line 42) | public static IShiro me() {
method user (line 46) | @Override
method shiroUser (line 62) | @Override
method findPermissionsByRoleId (line 93) | @Override
method findRoleNameByRoleId (line 106) | @Override
method info (line 111) | @Override
FILE: material-core/src/main/java/cn/enilu/material/utils/BasicType.java
type BasicType (line 10) | public enum BasicType {
FILE: material-core/src/main/java/cn/enilu/material/utils/BeanUtil.java
class BeanUtil (line 23) | public class BeanUtil {
method beanToMap (line 38) | public static <T> Map<String, Object> beanToMap(T bean) {
method mapToBean (line 56) | public static <T> T mapToBean(Map<String, Object> map, T bean) {
method objectsToMaps (line 68) | public static <T> List<Map<String, Object>> objectsToMaps(List<T> objL...
method mapsToObjects (line 91) | public static <T> List<T> mapsToObjects(List<Map<String, Object>> maps...
method objectToObjects (line 107) | public static <T> List<T> objectToObjects(List<Object> objectList, Cla...
method contrastObj (line 133) | public static String contrastObj(String key, Object pojo1, Map<String,...
method getReadMethod (line 180) | private static Method getReadMethod(String fieldName, Class clazz) {
method getFieldComment (line 204) | public static String getFieldComment(Class clazz, Field field) {
method parseMutiKey (line 234) | public static String parseMutiKey(Map<String, String> requests) {
method isOneEmpty (line 249) | public static boolean isOneEmpty(Object... os) {
FILE: material-core/src/main/java/cn/enilu/material/utils/BirthUtils.java
class BirthUtils (line 9) | public class BirthUtils {
method getZodica (line 21) | public static String getZodica(Date date) {
method getConstellation (line 31) | public static String getConstellation(Date date) {
method getSex (line 54) | public static String getSex(String cardNo) {
method getZodica (line 70) | public static String getZodica(String cardNo) {
method getConstellation (line 88) | public static String getConstellation(String cardNo) {
method getAge (line 101) | public static int getAge(String cardNo) {
method getAge (line 121) | public static int getAge(String cardNo, Date date) {
FILE: material-core/src/main/java/cn/enilu/material/utils/CollectionKit.java
class CollectionKit (line 16) | public class CollectionKit {
method CollectionKit (line 18) | private CollectionKit() {
method join (line 30) | public static <T> String join(Iterable<T> collection, String conjuncti...
method join (line 52) | public static <T> String join(T[] array, String conjunction) {
method sortPageAll (line 74) | @SafeVarargs
method sortEntrySetToList (line 122) | public static List<Entry<Long, Long>> sortEntrySetToList(Set<Entry<Lon...
method popPart (line 148) | public static <T> List<T> popPart(Stack<T> surplusAlaDatas, int partSi...
method popPart (line 176) | public static <T> List<T> popPart(Deque<T> surplusAlaDatas, int partSi...
method newHashMap (line 201) | public static <T, K> HashMap<T, K> newHashMap() {
method newHashMap (line 210) | public static <T, K> HashMap<T, K> newHashMap(int size) {
method newHashSet (line 219) | public static <T> HashSet<T> newHashSet() {
method newHashSet (line 228) | @SafeVarargs
method newArrayList (line 242) | public static <T> ArrayList<T> newArrayList() {
method newArrayList (line 251) | @SafeVarargs
method append (line 264) | public static <T> T[] append(T[] buffer, T newElement) {
method resize (line 278) | public static <T> T[] resize(T[] buffer, int newSize, Class<?> compone...
method newArray (line 290) | @SuppressWarnings("unchecked")
method resize (line 303) | public static <T> T[] resize(T[] buffer, int newSize) {
method addAll (line 314) | @SafeVarargs
method clone (line 345) | public static <T> T[] clone(T[] array) {
method range (line 358) | public static int[] range(int excludedEnd) {
method range (line 369) | public static int[] range(int includedStart, int excludedEnd) {
method range (line 381) | public static int[] range(int includedStart, int excludedEnd, int step) {
method sub (line 412) | public static <T> List<T> sub(List<T> list, int start, int end) {
method sub (line 448) | public static <T> List<T> sub(Collection<T> list, int start, int end) {
method isEmpty (line 461) | public static <T> boolean isEmpty(T[] array) {
method isNotEmpty (line 470) | public static <T> boolean isNotEmpty(T[] array) {
method isEmpty (line 479) | public static boolean isEmpty(Collection<?> collection) {
method isNotEmpty (line 488) | public static boolean isNotEmpty(Collection<?> collection) {
method isEmpty (line 497) | public static boolean isEmpty(Map<?, ?> map) {
method isNotEmpty (line 506) | public static <T> boolean isNotEmpty(Map<?, ?> map) {
method zip (line 521) | public static <T, K> Map<T, K> zip(T[] keys, K[] values) {
method zip (line 547) | public static Map<String, String> zip(String keys, String values, Stri...
method zip (line 562) | public static <T, K> Map<T, K> zip(Collection<T> keys, Collection<K> v...
method contains (line 585) | public static <T> boolean contains(T[] array, T value) {
method toMap (line 606) | public static <T, K> HashMap<T, K> toMap(Collection<Entry<T, K>> entry...
method toTreeSet (line 620) | public static <T> TreeSet<T> toTreeSet(Collection<T> collection, Compa...
method sort (line 634) | public static <T> List<T> sort(Collection<T> collection, Comparator<T>...
method wrap (line 646) | public static Integer[] wrap(int... values){
method wrap (line 660) | public static Long[] wrap(long... values){
method wrap (line 674) | public static Character[] wrap(char... values){
method wrap (line 688) | public static Byte[] wrap(byte... values){
method wrap (line 702) | public static Short[] wrap(short... values){
method wrap (line 716) | public static Float[] wrap(float... values){
method wrap (line 730) | public static Double[] wrap(double... values){
method wrap (line 744) | public static Boolean[] wrap(boolean... values){
method isArray (line 758) | public static boolean isArray(Object obj){
method toString (line 768) | public static String toString(Object obj) {
FILE: material-core/src/main/java/cn/enilu/material/utils/Constants.java
type Constants (line 3) | public interface Constants {
method msg (line 49) | static String msg(String state, Object info) {
FILE: material-core/src/main/java/cn/enilu/material/utils/Convert.java
class Convert (line 21) | public class Convert {
method Convert (line 24) | private Convert() {
method parse (line 35) | public static Object parse(Class<?> clazz, Object value) {
method parseBasic (line 80) | public static Object parseBasic(Class<?> clazz, String valueStr) {
method toStr (line 147) | public static String toStr(Object value, String defaultValue) {
method toStr (line 167) | public static String toStr(Object value) {
method toChar (line 180) | public static Character toChar(Object value, Character defaultValue) {
method toChar (line 200) | public static Character toChar(Object value) {
method toByte (line 213) | public static Byte toByte(Object value, Byte defaultValue) {
method toByte (line 242) | public static Byte toByte(Object value) {
method toShort (line 255) | public static Short toShort(Object value, Short defaultValue) {
method toShort (line 284) | public static Short toShort(Object value) {
method toNumber (line 297) | public static Number toNumber(Object value, Number defaultValue) {
method toNumber (line 323) | public static Number toNumber(Object value) {
method toInt (line 336) | public static Integer toInt(Object value, Integer defaultValue) {
method toInt (line 365) | public static Integer toInt(Object value) {
method toIntArray (line 376) | public static Integer[] toIntArray(boolean isIgnoreConvertError, Objec...
method toIntArray (line 398) | public static Integer[] toIntArray(String str) {
method toIntArray (line 409) | public static Integer[] toIntArray(String split, String str) {
method toLongArray (line 421) | public static Long[] toLongArray(String split, String str) {
method toStrArray (line 440) | public static String[] toStrArray(String str) {
method toStrArray (line 451) | public static String[] toStrArray(String split, String str) {
method toLong (line 464) | public static Long toLong(Object value, Long defaultValue) {
method toLong (line 494) | public static Long toLong(Object value) {
method toLongArray (line 505) | public static Long[] toLongArray(boolean isIgnoreConvertError, Object....
method toDouble (line 529) | public static Double toDouble(Object value, Double defaultValue) {
method toDouble (line 559) | public static Double toDouble(Object value) {
method toDoubleArray (line 570) | public static Double[] toDoubleArray(boolean isIgnoreConvertError, Obj...
method toFloat (line 594) | public static Float toFloat(Object value, Float defaultValue) {
method toFloat (line 623) | public static Float toFloat(Object value) {
method toFloatArray (line 634) | public static <T> Float[] toFloatArray(boolean isIgnoreConvertError, O...
method toBool (line 658) | public static Boolean toBool(Object value, Boolean defaultValue) {
method toBool (line 698) | public static Boolean toBool(Object value) {
method toBooleanArray (line 709) | public static Boolean[] toBooleanArray(boolean isIgnoreConvertError, O...
method toEnum (line 733) | public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object valu...
method toEnum (line 761) | public static <E extends Enum<E>> E toEnum(Class<E> clazz, Object valu...
method toBigInteger (line 774) | public static BigInteger toBigInteger(Object value, BigInteger default...
method toBigInteger (line 803) | public static BigInteger toBigInteger(Object value) {
method toBigDecimal (line 816) | public static BigDecimal toBigDecimal(Object value, BigDecimal default...
method toBigDecimal (line 851) | public static BigDecimal toBigDecimal(Object value) {
method toSBC (line 862) | public static String toSBC(String input) {
method toSBC (line 873) | public static String toSBC(String input, Set<Character> notConvertSet) {
method toDBC (line 897) | public static String toDBC(String input) {
method toDBC (line 908) | public static String toDBC(String text, Set<Character> notConvertSet) {
method toHex (line 934) | public static String toHex(String str) {
method toHex (line 944) | public static String toHex(byte[] bytes) {
method hexToBytes (line 954) | public static byte[] hexToBytes(String src) {
method hexStrToStr (line 965) | public static String hexStrToStr(String hexStr, Charset charset) {
method strToUnicode (line 976) | public static String strToUnicode(String strText) throws Exception {
method unicodeToStr (line 999) | public static String unicodeToStr(String hex) {
method convertCharset (line 1026) | public static String convertCharset(String str, String sourceCharset, ...
method digitUppercase (line 1044) | public static String digitUppercase(double n) {
FILE: material-core/src/main/java/cn/enilu/material/utils/CryptUtils.java
class CryptUtils (line 22) | public class CryptUtils {
method encrypt (line 34) | private static byte[] encrypt(byte[] src, byte[] key) {
method decrypt (line 64) | private static byte[] decrypt(byte[] src, byte[] key) {
method decrypt (line 94) | private final static String decrypt(String data, String key) {
method encrypt (line 109) | public final static String encrypt(String data, String key) {
method byte2hex (line 126) | private static String byte2hex(byte[] b) {
method hex2byte (line 139) | private static byte[] hex2byte(byte[] b) {
method encode (line 154) | public static String encode(String data) {
method decode (line 161) | public static String decode(String data) {
method encode (line 168) | public static String encode(String data, String key) {
method decode (line 185) | public static String decode(String data, String key) {
method generateSecretKey (line 204) | private static SecretKey generateSecretKey(String key) {
method convertToHexString (line 226) | public static String convertToHexString(byte[] data) {
method encryptBASE64 (line 241) | public static String encryptBASE64(byte[] key) throws Exception {
method decryptBASE64 (line 248) | public static byte[] decryptBASE64(String key) throws Exception {
method encodeBASE64 (line 251) | public static String encodeBASE64(byte[] bytes) {
method encodeBASE64 (line 261) | public static String encodeBASE64(File file) {
method decodeBASE64 (line 291) | public static void decodeBASE64(String encoder, File file) {
method decodeBASE64 (line 312) | public static byte[] decodeBASE64(String encoder) {
method getSign (line 318) | public static String getSign(String privateKey) {
method getMD5ofStr (line 321) | public static String getMD5ofStr(String inStr) {
method getSign (line 345) | public static String getSign(String privateKey, Date date) {
FILE: material-core/src/main/java/cn/enilu/material/utils/DateTime.java
class DateTime (line 10) | public class DateTime extends Date{
method parse (line 18) | public static DateTime parse(Date date) {
method DateTime (line 25) | public DateTime() {
method DateTime (line 33) | public DateTime(Date date) {
method DateTime (line 41) | public DateTime(long timeMillis) {
method toString (line 45) | @Override
method toString (line 50) | public String toString(String format) {
method toMsStr (line 57) | public String toMsStr() {
method toDate (line 64) | public Date toDate() {
FILE: material-core/src/main/java/cn/enilu/material/utils/DateTimeKit.java
class DateTimeKit (line 16) | public class DateTimeKit {
method initialValue (line 44) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 51) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 58) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 65) | synchronized protected SimpleDateFormat initialValue() {
method now (line 75) | public static String now() {
method current (line 85) | public static long current(boolean isNano) {
method today (line 94) | public static String today() {
method thisMonth (line 101) | public static int thisMonth() {
method thisYear (line 108) | public static int thisYear() {
method date (line 115) | public static DateTime date() {
method date (line 125) | public static DateTime date(long date) {
method toCalendar (line 135) | public static Calendar toCalendar(Date date) {
method month (line 147) | public static int month(Date date) {
method year (line 157) | public static int year(Date date) {
method season (line 167) | public static int season(Date date) {
method yearAndSeason (line 178) | public static String yearAndSeason(Date date) {
method yearAndSeasons (line 189) | public static LinkedHashSet<String> yearAndSeasons(Date startDate, Dat...
method format (line 224) | public static String format(Date date, String format) {
method formatDateTime (line 234) | public static String formatDateTime(Date date) {
method formatDate (line 247) | public static String formatDate(Date date) {
method formatHttpDate (line 260) | public static String formatHttpDate(Date date) {
method parse (line 277) | public static DateTime parse(String dateStr, SimpleDateFormat simpleDa...
method parse (line 292) | public static DateTime parse(String dateString, String format) {
method parseDateTime (line 302) | public static DateTime parseDateTime(String dateString) {
method parseDate (line 312) | public static DateTime parseDate(String dateString) {
method parseTime (line 322) | public static DateTime parseTime(String timeString) {
method parse (line 336) | public static DateTime parse(String dateStr) {
method getBeginTimeOfDay (line 370) | public static DateTime getBeginTimeOfDay(Date date) {
method getEndTimeOfDay (line 386) | public static DateTime getEndTimeOfDay(Date date) {
method yesterday (line 401) | public static DateTime yesterday() {
method lastWeek (line 410) | public static DateTime lastWeek() {
method lastMouth (line 419) | public static DateTime lastMouth() {
method offsiteDay (line 430) | public static DateTime offsiteDay(Date date, int offsite) {
method offsiteWeek (line 441) | public static DateTime offsiteWeek(Date date, int offsite) {
method offsiteMonth (line 452) | public static DateTime offsiteMonth(Date date, int offsite) {
method offsiteDate (line 464) | public static DateTime offsiteDate(Date date, int calendarField, int o...
method diff (line 481) | public static long diff(Date subtrahend, Date minuend, long diffField) {
method spendNt (line 492) | public static long spendNt(long preTime) {
method spendMs (line 502) | public static long spendMs(long preTime) {
method toIntSecond (line 512) | public static int toIntSecond(Date date) {
method weekCount (line 523) | public static int weekCount(Date start, Date end) {
method timer (line 547) | public static Timer timer() {
method ageOfNow (line 558) | public static int ageOfNow(String birthDay) {
method ageOfNow (line 568) | public static int ageOfNow(Date birthDay) {
method age (line 579) | public static int age(Date birthDay, Date dateToCompare) {
class Timer (line 616) | public static class Timer {
method Timer (line 620) | public Timer() {
method Timer (line 624) | public Timer(boolean isNano) {
method start (line 632) | public long start() {
method durationRestart (line 640) | public long durationRestart() {
method duration (line 650) | public long duration() {
method yearAndSeason (line 662) | private static String yearAndSeason(Calendar cal) {
FILE: material-core/src/main/java/cn/enilu/material/utils/DateUtil.java
class DateUtil (line 30) | public class DateUtil {
method getYear (line 41) | public static String getYear() {
method getYear (line 50) | public static String getYear(Date date) {
method getDay (line 59) | public static String getDay() {
method getDay (line 68) | public static String getDay(Date date) {
method getDays (line 77) | public static String getDays() {
method getDays (line 86) | public static String getDays(Date date) {
method getTime (line 95) | public static String getTime() {
method getMsTime (line 104) | public static String getMsTime() {
method getAllTime (line 113) | public static String getAllTime() {
method getTime (line 122) | public static String getTime(Date date) {
method formatDate (line 126) | public static String formatDate(Date date, String pattern) {
method compareDate (line 145) | public static boolean compareDate(String s, String e) {
method parseDate (line 157) | public static Date parseDate(String date) {
method parseTime (line 166) | public static Date parseTime(String date) {
method parse (line 175) | public static Date parse(String date, String pattern) {
method getDFormat (line 189) | public static SimpleDateFormat getDFormat(String pattern) {
method format (line 214) | public static String format(Date date, String pattern) {
method format (line 224) | public static Timestamp format(Date date) {
method isValidDate (line 233) | public static boolean isValidDate(String s) {
method isValidDate (line 242) | public static boolean isValidDate(String s, String pattern) {
method getDiffYear (line 246) | public static int getDiffYear(String startTime, String endTime) {
method getDaySub (line 266) | public static long getDaySub(String beginDateStr, String endDateStr) {
method getAfterDayDate (line 291) | public static String getAfterDayDate(String days) {
method getAfterDayWeek (line 310) | public static String getAfterDayWeek(String days) {
method main (line 324) | public static void main(String[] args) {
FILE: material-core/src/main/java/cn/enilu/material/utils/HexKit.java
class HexKit (line 15) | public class HexKit {
method encodeHex (line 33) | public static char[] encodeHex(byte[] data) {
method encodeHex (line 44) | public static char[] encodeHex(String str, Charset charset) {
method encodeHex (line 55) | public static char[] encodeHex(byte[] data, boolean toLowerCase) {
method encodeHexStr (line 65) | public static String encodeHexStr(byte[] data) {
method encodeHexStr (line 76) | public static String encodeHexStr(byte[] data, boolean toLowerCase) {
method decodeHexStr (line 88) | public static String decodeHexStr(String hexStr, Charset charset) {
method decodeHexStr (line 102) | public static String decodeHexStr(char[] hexData, Charset charset) {
method decodeHex (line 113) | public static byte[] decodeHex(char[] hexData) {
method encodeHexStr (line 143) | private static String encodeHexStr(byte[] data, char[] toDigits) {
method encodeHex (line 154) | private static char[] encodeHex(byte[] data, char[] toDigits) {
method toDigit (line 173) | private static int toDigit(char ch, int index) {
method binary2Hex (line 189) | public static String binary2Hex(String bString) {
method hex2Binary (line 209) | public static String hex2Binary(String hexString) {
method binary2Hex (line 225) | public static String binary2Hex(byte buf[]) {
method hex2Byte (line 242) | public static byte[] hex2Byte(String hexStr) {
FILE: material-core/src/main/java/cn/enilu/material/utils/HttpKit.java
class HttpKit (line 33) | public class HttpKit {
method getIp (line 35) | public static String getIp(){
method getRequestParameters (line 42) | public static Map<String, String> getRequestParameters() {
method getResponse (line 57) | public static HttpServletResponse getResponse() {
method getRequest (line 66) | public static HttpServletRequest getRequest() {
method getToken (line 70) | public static String getToken(){
method sendGet (line 81) | public static String sendGet(String url, Map<String, String> param) {
method sendPost (line 141) | public static String sendPost(String url, Map<String, String> param) {
FILE: material-core/src/main/java/cn/enilu/material/utils/Lists.java
class Lists (line 13) | public final class Lists {
method Lists (line 15) | private Lists() {
method flatten (line 26) | @SuppressWarnings("unchecked")
method compact (line 47) | public static <T> List<T> compact(List<T> list) {
method map (line 66) | public static <T, R> List<R> map(List<T> list, String property) {
method toMap (line 90) | public static <K, V> Map<K, V> toMap(List<V> list, String keyProperty) {
method filter (line 114) | public static <T> List<T> filter(List<T> list, String property, Object...
method without (line 137) | public static <T> List<T> without(List<T> list, T value) {
method uniq (line 156) | public static <T> List<T> uniq(List<T> input) {
method sortBy (line 174) | public static <K, T> List<T> sortBy(List<T> input, String keyProperty,
method group (line 200) | public static <K, V> Map<K, List<V>> group(List<V> input, String keyPr...
method group (line 230) | public static <T> List<List<T>> group(List<T> input, int n) {
method containAny (line 251) | public static boolean containAny(Set parent, Set child) {
method newArrayList (line 262) | public static <V> List<V> newArrayList(V... vs) {
method getProperty (line 270) | private static Object getProperty(Object bean,String name){
FILE: material-core/src/main/java/cn/enilu/material/utils/Log.java
class Log (line 10) | public class Log {
method get (line 12) | public static Logger get(Class<?> clazz) {
FILE: material-core/src/main/java/cn/enilu/material/utils/MD5.java
class MD5 (line 20) | public class MD5 {
method getMD5String (line 45) | public static String getMD5String(String str) {
method getMD5String (line 59) | public static String getMD5String(byte[] bytes) {
method getFileMD5String (line 76) | public static String getFileMD5String(File file) {
method getFileMD5String (line 102) | public static String getFileMD5String(String fileName) {
method bytesToHex (line 113) | public static String bytesToHex(byte[] bytes) {
method bytesToHex (line 125) | public static String bytesToHex(byte[] bytes, int start, int end) {
method byteToHex (line 139) | public static String byteToHex(byte bt) {
method md5 (line 151) | public static String md5(String credentials, String salt) {
method main (line 181) | public static void main(String[] args) {
FILE: material-core/src/main/java/cn/enilu/material/utils/Maps.java
class Maps (line 12) | public final class Maps {
method Maps (line 14) | private Maps() {
method newHashMap (line 17) | public static <K, V> HashMap<K, V> newHashMap() {
method newHashMap (line 21) | public static <K, V> HashMap<K, V> newHashMap(K k, V v) {
method newHashMap (line 27) | @SuppressWarnings("unchecked")
FILE: material-core/src/main/java/cn/enilu/material/utils/MobileUtil.java
class MobileUtil (line 11) | public class MobileUtil {
type MobileType (line 25) | public enum MobileType {ChinaTelecom, ChinaUnicom, ChinaMobile, UnKnow}
method type (line 34) | public static MobileType type(String mobile) {
method cleanPhone (line 46) | public static String cleanPhone(String value) {
method strClean (line 106) | public static String strClean(String value) {
FILE: material-core/src/main/java/cn/enilu/material/utils/PageKit.java
class PageKit (line 9) | public class PageKit {
method transToStartEnd (line 25) | public static int[] transToStartEnd(int pageNo, int countPerPage) {
method totalPage (line 50) | public static int totalPage(int totalCount, int numPerPage) {
FILE: material-core/src/main/java/cn/enilu/material/utils/RSAUtil.java
class RSAUtil (line 23) | public class RSAUtil {
method initKey (line 44) | public static Map<String, Object> initKey() throws Exception {
method encryptByPrivateKey (line 71) | public static byte[] encryptByPrivateKey(byte[] data, byte[] key) thro...
method encryptByPublicKey (line 91) | public static byte[] encryptByPublicKey(byte[] data, byte[] key) throw...
method decryptByPrivateKey (line 114) | public static byte[] decryptByPrivateKey(byte[] data, byte[] key) thro...
method decryptByPublicKey (line 133) | public static byte[] decryptByPublicKey(byte[] data, byte[] key) throw...
method getPrivateKey (line 154) | public static byte[] getPrivateKey(Map<String, Object> keyMap) {
method getPublicKey (line 165) | public static byte[] getPublicKey(Map<String, Object> keyMap) throws E...
method main (line 174) | public static void main(String[] args) throws Exception {
FILE: material-core/src/main/java/cn/enilu/material/utils/RandomUtils.java
class RandomUtils (line 10) | public class RandomUtils {
method nextChar (line 22) | public static char nextChar() {
method nextChar (line 26) | public static String nextChar(int i) {
method getNormalRandom (line 40) | public static String getNormalRandom(int range, String fmt) {
method getCharacterRandom (line 49) | public static String getCharacterRandom(int length) {
method getNumberRandom (line 56) | public static String getNumberRandom(int length) {
method getRandom (line 64) | public static String getRandom(String range, int length) {
method getUUIDRandom (line 91) | public static String getUUIDRandom() {
method getTimestampRandom (line 98) | public static String getTimestampRandom(String head, String tail, int ...
method randomCode (line 102) | public static String randomCode() {
FILE: material-core/src/main/java/cn/enilu/material/utils/StrKit.java
class StrKit (line 20) | public class StrKit {
method firstCharToLowerCase (line 44) | public static String firstCharToLowerCase(String str) {
method firstCharToUpperCase (line 57) | public static String firstCharToUpperCase(String str) {
method isBlank (line 77) | public static boolean isBlank(String str) {
method notBlank (line 100) | public static boolean notBlank(String str) {
method hasBlank (line 110) | public static boolean hasBlank(String... strs) {
method isAllBlank (line 128) | public static boolean isAllBlank(String... strs) {
method isEmpty (line 148) | public static boolean isEmpty(String str) {
method isNotEmpty (line 160) | public static boolean isNotEmpty(String str) {
method nullToEmpty (line 170) | public static String nullToEmpty(String str) {
method nullToDefault (line 189) | public static String nullToDefault(String str, String defaultStr) {
method emptyToNull (line 199) | public static String emptyToNull(String str) {
method hasEmpty (line 209) | public static boolean hasEmpty(String... strs) {
method isAllEmpty (line 228) | public static boolean isAllEmpty(String... strs) {
method trim (line 262) | public static String trim(String str) {
method trim (line 271) | public static void trim(String[] strs) {
method trimStart (line 305) | public static String trimStart(String str) {
method trimEnd (line 330) | public static String trimEnd(String str) {
method trim (line 342) | public static String trim(String str, int mode) {
method startWith (line 379) | public static boolean startWith(String str, String prefix, boolean isI...
method endWith (line 394) | public static boolean endWith(String str, String suffix, boolean isIgn...
method containsIgnoreCase (line 408) | public static boolean containsIgnoreCase(String str, String testStr){
method getGeneralField (line 423) | public static String getGeneralField(String getOrSetMethodName) {
method genSetter (line 437) | public static String genSetter(String fieldName) {
method genGetter (line 447) | public static String genGetter(String fieldName) {
method cutPreAndLowerFirst (line 459) | public static String cutPreAndLowerFirst(String str, int preLength) {
method upperFirstAndAddPre (line 480) | public static String upperFirstAndAddPre(String str, String preString) {
method upperFirst (line 494) | public static String upperFirst(String str) {
method lowerFirst (line 505) | public static String lowerFirst(String str) {
method removePrefix (line 519) | public static String removePrefix(String str, String prefix) {
method removePrefixIgnoreCase (line 537) | public static String removePrefixIgnoreCase(String str, String prefix) {
method removeSuffix (line 555) | public static String removeSuffix(String str, String suffix) {
method getBytes (line 572) | public static byte[] getBytes(String str, Charset charset){
method removeSuffixIgnoreCase (line 586) | public static String removeSuffixIgnoreCase(String str, String suffix) {
method addPrefixIfNot (line 603) | public static String addPrefixIfNot(String str, String prefix){
method addSuffixIfNot (line 619) | public static String addSuffixIfNot(String str, String suffix){
method cleanBlank (line 635) | public static String cleanBlank(String str) {
method split (line 652) | public static List<String> split(String str, char separator) {
method split (line 664) | public static List<String> split(String str, char separator, int limit) {
method split (line 704) | public static String[] split(String str, String delimiter) {
method sub (line 750) | public static String sub(String string, int fromIndex, int toIndex) {
method subPre (line 788) | public static String subPre(String string, int toIndex) {
method subSuf (line 799) | public static String subSuf(String string, int fromIndex) {
method isSurround (line 814) | public static boolean isSurround(String str, String prefix, String suf...
method isSurround (line 833) | public static boolean isSurround(String str, char prefix, char suffix) {
method repeat (line 851) | public static String repeat(char c, int count) {
method repeat (line 866) | public static String repeat(String str, int count) {
method equals (line 902) | public static boolean equals(String str1, String str2) {
method equalsIgnoreCase (line 926) | public static boolean equalsIgnoreCase(String str1, String str2) {
method format (line 942) | public static String format(String template, Object... values) {
method format (line 984) | public static String format(String template, Map<?, ?> map) {
method bytes (line 1002) | public static byte[] bytes(String str, String charset) {
method bytes (line 1013) | public static byte[] bytes(String str, Charset charset) {
method str (line 1031) | public static String str(byte[] bytes, String charset) {
method str (line 1042) | public static String str(byte[] data, Charset charset) {
method str (line 1059) | public static String str(ByteBuffer data, String charset){
method str (line 1073) | public static String str(ByteBuffer data, Charset charset){
method byteBuffer (line 1086) | public static ByteBuffer byteBuffer(String str, String charset) {
method join (line 1097) | public static String join(String conjunction, Object... objs) {
method toUnderlineCase (line 1118) | public static String toUnderlineCase(String camelCaseStr) {
method toCamelCase (line 1153) | public static String toCamelCase(String name) {
method wrap (line 1187) | public static String wrap(String str, String prefix, String suffix) {
method isWrap (line 1199) | public static boolean isWrap(String str, String prefix, String suffix) {
method isWrap (line 1210) | public static boolean isWrap(String str, String wrapper) {
method isWrap (line 1221) | public static boolean isWrap(String str, char wrapper) {
method isWrap (line 1233) | public static boolean isWrap(String str, char prefixChar, char suffixC...
method padPre (line 1245) | public static String padPre(String str, int minLength, char padChar) {
method padEnd (line 1265) | public static String padEnd(String str, int minLength, char padChar) {
method builder (line 1282) | public static StringBuilder builder() {
method builder (line 1291) | public static StringBuilder builder(int capacity) {
method builder (line 1300) | public static StringBuilder builder(String... strs) {
method getReader (line 1314) | public static StringReader getReader(String str) {
method getWriter (line 1323) | public static StringWriter getWriter() {
method encode (line 1334) | public static byte[] encode(String str, String charset) {
method decode (line 1356) | public static String decode(byte[] data, String charset) {
FILE: material-core/src/main/java/cn/enilu/material/utils/StringUtils.java
class StringUtils (line 10) | public class StringUtils {
method isEmpty (line 19) | public static boolean isEmpty(String str) {
method hasBlank (line 35) | public static boolean hasBlank(String... strs) {
method isNotEmpty (line 50) | public static boolean isNotEmpty(String str) {
method isNullOrEmpty (line 57) | public static boolean isNullOrEmpty(Object o) {
method isNotNullOrEmpty (line 73) | public static boolean isNotNullOrEmpty(Object o) {
method isChinese (line 78) | private static boolean isChinese(char c) {
method sNull (line 90) | public static String sNull(Object obj) {
method format (line 103) | public static String format(String template, Object... values) {
method format (line 145) | public static String format(String template, Map<?, ?> map) {
method sub (line 171) | public static String sub(String string, int fromIndex, int toIndex) {
method firstCharToLowerCase (line 206) | public static String firstCharToLowerCase(String str) {
method firstCharToUpperCase (line 219) | public static String firstCharToUpperCase(String str) {
method removePrefix (line 237) | public static String removePrefix(String str, String prefix) {
method removeSuffix (line 256) | public static String removeSuffix(String str, String suffix) {
method getBytes (line 274) | public static byte[] getBytes(String str, Charset charset) {
method split (line 290) | public static String[] split(String str, String delimiter) {
method equals (line 337) | public static boolean equals(String str1, String str2) {
method bytes (line 353) | public static byte[] bytes(String str, Charset charset) {
method str (line 372) | public static String str(byte[] data, Charset charset) {
FILE: material-core/src/main/java/cn/enilu/material/utils/ToolUtil.java
class ToolUtil (line 31) | public class ToolUtil {
method getRandomString (line 39) | public static String getRandomString(int length) {
method dateType (line 56) | public static String dateType(Object o) {
method getExceptionMsg (line 71) | public static String getExceptionMsg(Exception e) {
method equals (line 94) | public static boolean equals(Object obj1, Object obj2) {
method length (line 104) | public static int length(Object obj) {
method contains (line 150) | public static boolean contains(Object obj, Object element) {
method isNotEmpty (line 205) | public static boolean isNotEmpty(Object o) {
method isEmpty (line 215) | @SuppressWarnings("rawtypes")
method isOneEmpty (line 258) | public static boolean isOneEmpty(Object... os) {
method isAllEmpty (line 273) | public static boolean isAllEmpty(Object... os) {
method isNum (line 288) | public static boolean isNum(Object obj) {
method getValue (line 303) | public static Object getValue(Object str, Object defaultValue) {
method format (line 317) | public static String format(String template, Object... values) {
method format (line 328) | public static String format(String template, Map<?, ?> map) {
method toStr (line 338) | public static String toStr(Object str) {
method toStr (line 349) | public static String toStr(Object str, String defaultValue) {
method caseInsensitiveMap (line 412) | public static Map<String, Object> caseInsensitiveMap(Map<String, Objec...
method getFirstOrNull (line 428) | public static <K, V> V getFirstOrNull(Map<K, V> map) {
method builder (line 444) | public static StringBuilder builder(String... strs) {
method builder (line 457) | public static void builder(StringBuilder sb, String... strs) {
method removeSuffix (line 470) | public static String removeSuffix(String str, String suffix) {
method currentTime (line 487) | public static String currentTime() {
method firstLetterToUpper (line 497) | public static String firstLetterToUpper(String val) {
method firstLetterToLower (line 507) | public static String firstLetterToLower(String val) {
method isWinOs (line 517) | public static Boolean isWinOs() {
method getTempPath (line 532) | public static String getTempPath() {
method toInt (line 542) | public static Integer toInt(Object val) {
method getWebRootPath (line 555) | public static String getWebRootPath(String filePath) {
FILE: material-core/src/main/java/cn/enilu/material/utils/WafKit.java
class WafKit (line 26) | public class WafKit {
method stripXSS (line 34) | public static String stripXSS(String value) {
method stripSqlInjection (line 100) | public static String stripSqlInjection(String value) {
method stripSqlXSS (line 110) | public static String stripSqlXSS(String value) {
FILE: material-core/src/main/java/cn/enilu/material/utils/WafRequestWrapper.java
class WafRequestWrapper (line 30) | public class WafRequestWrapper extends HttpServletRequestWrapper {
method WafRequestWrapper (line 37) | public WafRequestWrapper(HttpServletRequest request, boolean filterXSS...
method WafRequestWrapper (line 44) | public WafRequestWrapper(HttpServletRequest request) {
method getParameterValues (line 55) | @Override
method getParameterMap (line 71) | @Override
method filterEntryString (line 83) | protected String[] filterEntryString(String[] rawValue) {
method getParameter (line 96) | @Override
method getHeader (line 108) | @Override
method getCookies (line 118) | @Override
method filterParamString (line 136) | protected String filterParamString(String rawValue) {
FILE: material-core/src/main/java/cn/enilu/material/utils/XmlHelper.java
class XmlHelper (line 28) | public class XmlHelper {
method XmlHelper (line 33) | private XmlHelper(InputSource inputSource) throws ParserConfigurationE...
method create (line 40) | private static XmlHelper create(InputSource inputSource) {
method of (line 52) | public static XmlHelper of(InputStream is) {
method of (line 57) | public static XmlHelper of(String xmlStr) {
method evalXPath (line 65) | private Object evalXPath(String expression, Object item, QName returnT...
method getString (line 79) | public String getString(String expression) {
method getBoolean (line 88) | public Boolean getBoolean(String expression) {
method getNumber (line 97) | public Number getNumber(String expression) {
method getNode (line 106) | public Node getNode(String expression) {
method getNodeList (line 115) | public NodeList getNodeList(String expression) {
method getString (line 126) | public String getString(Object node, String expression) {
method getBoolean (line 136) | public Boolean getBoolean(Object node, String expression) {
method getNumber (line 146) | public Number getNumber(Object node, String expression) {
method getNode (line 156) | public Node getNode(Object node, String expression) {
method getNodeList (line 166) | public NodeList getNodeList(Object node, String expression) {
method toMap (line 174) | public Map<String, String> toMap() {
method getDocumentBuilderFactory (line 189) | private static DocumentBuilderFactory getDocumentBuilderFactory(){
method getXPathFactory (line 193) | private static XPathFactory getXPathFactory() {
class XmlHelperHolder (line 200) | private static class XmlHelperHolder {
FILE: material-core/src/main/java/cn/enilu/material/utils/ZipUtils.java
class ZipUtils (line 17) | public class ZipUtils {
method zipFile (line 37) | public static boolean zipFile(String baseDir, String zipFileName) {
method zipFile (line 62) | public static String zipFile(String baseDir) {
method zipAddFile (line 100) | private static boolean zipAddFile(ZipOutputStream zos, File file,
method upZipFile (line 127) | public static boolean upZipFile(String zipName, String targetDirName) {
method getAbsFileName (line 185) | private static String getAbsFileName(String baseDir, File realFile) {
method getSubFiles (line 210) | private static List<File> getSubFiles(File baseDir) {
method isExist (line 224) | public static boolean isExist(String path) {
method createDirectory (line 229) | public static boolean createDirectory(String path) {
method deleteDirectory (line 237) | public static boolean deleteDirectory(String path) {
FILE: material-core/src/main/java/cn/enilu/material/utils/cache/TimeCacheMap.java
class TimeCacheMap (line 10) | public class TimeCacheMap<K, V> {
type ExpiredCallback (line 15) | public static interface ExpiredCallback<K, V> {
method expire (line 16) | public void expire(K key, V val);
method TimeCacheMap (line 26) | public TimeCacheMap(int expirationSecs, int numBuckets, ExpiredCallbac...
method TimeCacheMap (line 69) | public TimeCacheMap(int expirationSecs, ExpiredCallback<K, V> callback) {
method TimeCacheMap (line 73) | public TimeCacheMap(int expirationSecs) {
method TimeCacheMap (line 77) | public TimeCacheMap(int expirationSecs, int numBuckets) {
method containsKey (line 82) | public boolean containsKey(K key) {
method get (line 90) | public V get(K key) {
method put (line 94) | public void put(K key, V value) {
method remove (line 99) | public Object remove(K key) {
method size (line 103) | public int size() {
method cleanup (line 108) | public void cleanup() {
FILE: material-core/src/main/java/cn/enilu/material/utils/cache/exception/ToolBoxException.java
class ToolBoxException (line 9) | public class ToolBoxException extends RuntimeException{
method ToolBoxException (line 12) | public ToolBoxException(Throwable e) {
method ToolBoxException (line 16) | public ToolBoxException(String message) {
method ToolBoxException (line 20) | public ToolBoxException(String messageTemplate, Object... params) {
method ToolBoxException (line 24) | public ToolBoxException(String message, Throwable throwable) {
method ToolBoxException (line 28) | public ToolBoxException(Throwable throwable, String messageTemplate, O...
FILE: material-core/src/main/java/cn/enilu/material/warpper/BaseControllerWarpper.java
class BaseControllerWarpper (line 12) | public abstract class BaseControllerWarpper {
method BaseControllerWarpper (line 15) | public BaseControllerWarpper(Object obj) {
method warp (line 19) | @SuppressWarnings("unchecked")
method warpTheMap (line 37) | protected abstract void warpTheMap(Map<String, Object> map);
FILE: material-core/src/main/java/cn/enilu/material/warpper/DeptWarpper.java
class DeptWarpper (line 14) | public class DeptWarpper extends BaseControllerWarpper {
method DeptWarpper (line 16) | public DeptWarpper(Object list) {
method warpTheMap (line 20) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/DictWarpper.java
class DictWarpper (line 16) | public class DictWarpper extends BaseControllerWarpper {
method DictWarpper (line 18) | public DictWarpper(Object list) {
method warpTheMap (line 22) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/LogWarpper.java
class LogWarpper (line 17) | public class LogWarpper extends BaseControllerWarpper {
method LogWarpper (line 19) | public LogWarpper(Object list) {
method warpTheMap (line 23) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/MenuWarpper.java
class MenuWarpper (line 15) | public class MenuWarpper extends BaseControllerWarpper {
method MenuWarpper (line 17) | public MenuWarpper(List<Map<String, Object>> list) {
method warpTheMap (line 21) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/NoticeWrapper.java
class NoticeWrapper (line 13) | public class NoticeWrapper extends BaseControllerWarpper {
method NoticeWrapper (line 15) | public NoticeWrapper(Object list) {
method warpTheMap (line 19) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/RoleWarpper.java
class RoleWarpper (line 14) | public class RoleWarpper extends BaseControllerWarpper {
method RoleWarpper (line 16) | public RoleWarpper(List<Map<String, Object>> list) {
method warpTheMap (line 20) | @Override
FILE: material-core/src/main/java/cn/enilu/material/warpper/UserWarpper.java
class UserWarpper (line 15) | public class UserWarpper extends BaseControllerWarpper {
method UserWarpper (line 17) | public UserWarpper(List<Map<String, Object>> list) {
method warpTheMap (line 21) | @Override
FILE: material-core/src/main/java/cn/enilu/material/web/listener/CacheListener.java
class CacheListener (line 18) | @Component
method loadCache (line 28) | public void loadCache() {
method run (line 33) | @Override
FILE: material-core/src/main/java/cn/enilu/material/web/listener/ConfigListener.java
class ConfigListener (line 24) | public class ConfigListener implements ServletContextListener {
method getConf (line 28) | public static Map<String, String> getConf() {
method contextDestroyed (line 32) | @Override
method contextInitialized (line 37) | @Override
FILE: material-generator/src/main/java/cn/enilu/flash/code/AbstractLoader.java
class AbstractLoader (line 12) | public abstract class AbstractLoader {
method loadTables (line 14) | public abstract Map<String, TableDescriptor> loadTables(Ioc ioc,
FILE: material-generator/src/main/java/cn/enilu/flash/code/CodeConfig.java
class CodeConfig (line 3) | public class CodeConfig {
method getModel (line 9) | public String getModel(String type){
method getEntityModel (line 24) | public String getEntityModel() {
method setEntityModel (line 28) | public void setEntityModel(String entityModel) {
method getDaoModel (line 32) | public String getDaoModel() {
method setDaoModel (line 36) | public void setDaoModel(String daoModel) {
method getServiceModel (line 40) | public String getServiceModel() {
method setServiceModel (line 44) | public void setServiceModel(String serviceModel) {
method getControllerModel (line 48) | public String getControllerModel() {
method setControllerModel (line 52) | public void setControllerModel(String controllerModel) {
method getViewModel (line 56) | public String getViewModel() {
method setViewModel (line 60) | public void setViewModel(String viewModel) {
FILE: material-generator/src/main/java/cn/enilu/flash/code/ColumnDescriptor.java
class ColumnDescriptor (line 20) | public class ColumnDescriptor {
class Validation (line 56) | public static class Validation {
method Validation (line 60) | public Validation(Class<?> klass, String annotation) {
method getAnnotation (line 65) | public String getAnnotation() {
method containsValidation (line 96) | private boolean containsValidation(Class<?> klass) {
method hasLabel (line 105) | public boolean hasLabel() {
method setLabel (line 109) | public void setLabel(String label) {
method getLabel (line 113) | public String getLabel() {
method getComment (line 124) | public String getComment() {
method setComment (line 128) | public void setComment(String comment) {
method extractLabel (line 138) | private void extractLabel(String comment) {
method getQueryOperator (line 146) | public String getQueryOperator() {
method extractSearchable (line 150) | private void extractSearchable(String comment) {
method getColumnName (line 159) | public String getColumnName() {
method getFieldName (line 163) | public String getFieldName() {
method setFieldName (line 169) | public void setFieldName(String fieldName){
method getEnumValues (line 173) | public List<String> getEnumValues() {
method setColumnType (line 177) | public void setColumnType(String columnType) {
method getJavaType (line 201) | public String getJavaType() {
method getSimpleJavaTypeName (line 216) | public String getSimpleJavaTypeName() {
method isEnum (line 220) | public boolean isEnum() {
method isBoolean (line 224) | public boolean isBoolean() {
method isTimestamp (line 228) | public boolean isTimestamp() {
method getUpperJavaFieldName (line 232) | public String getUpperJavaFieldName() {
method getGetterMethodName (line 238) | public String getGetterMethodName() {
method getSetterMethodName (line 245) | public String getSetterMethodName() {
method getColumnAnnotation (line 249) | public String getColumnAnnotation() {
method setDefaultValue (line 257) | public void setDefaultValue(Object v) {
method getDefaultValue (line 261) | public Object getDefaultValue() {
method getDefaultValueCode (line 265) | public String getDefaultValueCode() {
method getValidationFormClass (line 291) | public String getValidationFormClass() {
FILE: material-generator/src/main/java/cn/enilu/flash/code/EntityDescLoader.java
class EntityDescLoader (line 30) | public class EntityDescLoader extends Loader {
method loadTables (line 35) | @Override
FILE: material-generator/src/main/java/cn/enilu/flash/code/Generator.java
class Generator (line 27) | public class Generator {
method Generator (line 31) | public Generator( TableDescriptor table) {
method generate (line 35) | public void generate(String packageName, String templatePath, File fil...
method generateCode (line 48) | public String generateCode(String packageName, String templatePath) th...
method main (line 64) | public static void main(String[] args) throws Exception {
method isTypeMatch (line 225) | private static boolean isTypeMatch(String[] types, String type) {
method generateViews (line 234) | private static void generateViews(String basePath,CodeConfig codeConfi...
method usage (line 265) | private static void usage(Options options) {
FILE: material-generator/src/main/java/cn/enilu/flash/code/Loader.java
class Loader (line 12) | public abstract class Loader {
method loadTables (line 14) | public abstract Map<String, TableDescriptor> loadTables(Ioc ioc,
FILE: material-generator/src/main/java/cn/enilu/flash/code/StrKit.java
class StrKit (line 20) | public class StrKit {
method firstCharToLowerCase (line 44) | public static String firstCharToLowerCase(String str) {
method firstCharToUpperCase (line 57) | public static String firstCharToUpperCase(String str) {
method isEmpty (line 77) | public static boolean isEmpty(String str) {
method isNotEmpty (line 89) | public static boolean isNotEmpty(String str) {
method nullToEmpty (line 99) | public static String nullToEmpty(String str) {
method nullToDefault (line 118) | public static String nullToDefault(String str, String defaultStr) {
method toUnderlineCase (line 131) | public static String toUnderlineCase(String camelCaseStr) {
method toCamelCase (line 166) | public static String toCamelCase(String name) {
FILE: material-generator/src/main/java/cn/enilu/flash/code/TableDescLoader.java
class TableDescLoader (line 25) | public class TableDescLoader extends Loader{
method loadTables (line 28) | @Override
FILE: material-generator/src/main/java/cn/enilu/flash/code/TableDescriptor.java
class TableDescriptor (line 18) | public class TableDescriptor {
method TableDescriptor (line 41) | public TableDescriptor(String name, String entityName, String basePack...
method getBaseUri (line 57) | public String getBaseUri() {
method getName (line 61) | public String getName() {
method getPlural (line 65) | public String getPlural() {
method getPkType (line 69) | public String getPkType() {
method setPkType (line 73) | public void setPkType(String pkType) {
method getBasePackageName (line 77) | public String getBasePackageName() {
method getColumns (line 81) | public List<ColumnDescriptor> getColumns() {
method addColumn (line 85) | public void addColumn(ColumnDescriptor column) {
method getClassName (line 89) | public String getClassName() {
method getUriPrefix (line 93) | public String getUriPrefix() {
method getViewBasePath (line 100) | public String getViewBasePath() {
method getModPackageName (line 107) | public String getModPackageName() {
method setModPackageName (line 111) | public void setModPackageName(String modPackageName) {
method getSerPackageName (line 115) | public String getSerPackageName() {
method setSerPackageName (line 119) | public void setSerPackageName(String serPackageName) {
method getRepoPackageName (line 123) | public String getRepoPackageName() {
method setRepoPackageName (line 127) | public void setRepoPackageName(String repoPackageName) {
method getEntityClassName (line 131) | public String getEntityClassName() {
method getEntityNameLowerFirstChar (line 137) | public String getEntityNameLowerFirstChar(){
method getEntityFullClassName (line 141) | public String getEntityFullClassName() {
method getServiceFullClassName (line 145) | public String getServiceFullClassName() {
method getRepositoryFullClassName (line 148) | public String getRepositoryFullClassName(){
method getEntityInstanceName (line 153) | public String getEntityInstanceName() {
method getEntityInstancesName (line 157) | public String getEntityInstancesName() {
method getServiceInstanceName (line 161) | public String getServiceInstanceName() {
method getServiceClassName (line 165) | public String getServiceClassName() {
method getRepositoryClassName (line 168) | public String getRepositoryClassName(){
method getControllerClassName (line 172) | public String getControllerClassName() {
method addPrimaryKeyColumn (line 176) | public void addPrimaryKeyColumn(String columnName) {
method getPrimaryColumn (line 185) | public ColumnDescriptor getPrimaryColumn() {
method getPrimaryType (line 194) | public String getPrimaryType() {
method getTableAnnotation (line 203) | public String getTableAnnotation() {
method getImports (line 207) | public List<String> getImports() {
method getEnumColumns (line 234) | public List<ColumnDescriptor> getEnumColumns() {
method getQueryColumns (line 245) | public String getQueryColumns(String op) {
method getSearchableColumns (line 259) | public List<ColumnDescriptor> getSearchableColumns() {
method getLabeledColumns (line 271) | public List<ColumnDescriptor> getLabeledColumns() {
method getLabeledColumnNames (line 282) | public String[] getLabeledColumnNames() {
method getLabeledColumnNamesString (line 292) | public String getLabeledColumnNamesString() {
method getIndexColumns (line 303) | public List<ColumnDescriptor> getIndexColumns() {
method setLabel (line 316) | public void setLabel(String label) {
method getLabel (line 320) | public String getLabel() {
method getComment (line 324) | public String getComment() {
method setComment (line 328) | public void setComment(String comment) {
FILE: material-generator/src/main/java/cn/enilu/flash/code/Utils.java
class Utils (line 11) | public class Utils {
method LOWER_CAMEL (line 17) | public static String LOWER_CAMEL(String src){
method UPPER_CAMEL (line 35) | public static String UPPER_CAMEL(String src){
method main (line 50) | public static void main(String[] args){
FILE: material-manage/src/main/java/cn/enilu/material/admin/AdminApplication.java
class AdminApplication (line 24) | @SpringBootApplication
method addResourceHandlers (line 40) | @Override
method main (line 48) | public static void main(String[] args) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/AdminServletInitializer.java
class AdminServletInitializer (line 12) | public class AdminServletInitializer extends SpringBootServletInitializer {
method configure (line 14) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/common/constant/enums/Status.java
type Status (line 10) | public enum Status {
method Status (line 16) | Status(final int value) {
method getValue (line 21) | public Serializable getValue() {
method toString (line 25) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/common/constant/state/ExpenseState.java
type ExpenseState (line 9) | public enum ExpenseState {
method ExpenseState (line 19) | ExpenseState(int code, String message) {
method getCode (line 24) | public int getCode() {
method setCode (line 28) | public void setCode(int code) {
method getMessage (line 32) | public String getMessage() {
method setMessage (line 36) | public void setMessage(String message) {
method valueOf (line 40) | public static String valueOf(Integer status) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/common/constant/state/IsMenu.java
type IsMenu (line 9) | public enum IsMenu {
method IsMenu (line 17) | IsMenu(int code, String message) {
method getCode (line 22) | public int getCode() {
method setCode (line 26) | public void setCode(int code) {
method getMessage (line 30) | public String getMessage() {
method setMessage (line 34) | public void setMessage(String message) {
method valueOf (line 38) | public static String valueOf(Integer status) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/common/constant/state/MenuOpenStatus.java
type MenuOpenStatus (line 9) | public enum MenuOpenStatus {
method MenuOpenStatus (line 17) | MenuOpenStatus(int code, String message) {
method getCode (line 22) | public int getCode() {
method setCode (line 26) | public void setCode(int code) {
method getMessage (line 30) | public String getMessage() {
method setMessage (line 34) | public void setMessage(String message) {
method valueOf (line 38) | public static String valueOf(Integer status) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/DefaultFastjsonConfig.java
class DefaultFastjsonConfig (line 27) | @Configuration("defaultFastjsonConfig")
method fastJsonHttpMessageConverter (line 33) | @Bean
method fastjsonConfig (line 44) | public FastJsonConfig fastjsonConfig() {
method getSupportedMediaType (line 76) | public List<MediaType> getSupportedMediaType() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/DruidConfig.java
class DruidConfig (line 31) | @Configuration
method druidServletRegistration (line 37) | @Bean
method druidStatFilter (line 48) | @Bean
method druidStatInterceptor (line 64) | @Bean
method druidStatPointcut (line 70) | @Bean
method beanTypeAutoProxyCreator (line 82) | @Bean
method druidStatAdvisor (line 94) | @Bean
method xssFilterRegistration (line 102) | @Bean
method requestContextListenerRegistration (line 114) | @Bean
method configListenerRegistration (line 122) | @Bean
method kaptcha (line 130) | @Bean
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/EhCacheConfig.java
class EhCacheConfig (line 17) | @Configuration
method cacheManager (line 24) | @Bean
method ehcache (line 32) | @Bean
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/SpringSessionConfig.java
class SpringSessionConfig (line 12) | @ConditionalOnProperty(prefix = "apps", name = "spring-session-open", ha...
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/SwaggerConfig.java
class SwaggerConfig (line 21) | @Configuration
method createRestApi (line 26) | @Bean
method apiInfo (line 37) | private ApiInfo apiInfo() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/UserIDAuditorConfig.java
class UserIDAuditorConfig (line 17) | @Configuration
method getCurrentAuditor (line 19) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/properties/AppProperties.java
class AppProperties (line 15) | @Component
method getFileUploadPath (line 35) | public String getFileUploadPath() {
method setFileUploadPath (line 54) | public void setFileUploadPath(String fileUploadPath) {
method getKaptchaOpen (line 58) | public Boolean getKaptchaOpen() {
method setKaptchaOpen (line 62) | public void setKaptchaOpen(Boolean kaptchaOpen) {
method getSwaggerOpen (line 66) | public Boolean getSwaggerOpen() {
method setSwaggerOpen (line 70) | public void setSwaggerOpen(Boolean swaggerOpen) {
method getSpringSessionOpen (line 74) | public Boolean getSpringSessionOpen() {
method setSpringSessionOpen (line 78) | public void setSpringSessionOpen(Boolean springSessionOpen) {
method getSessionInvalidateTime (line 82) | public Integer getSessionInvalidateTime() {
method setSessionInvalidateTime (line 86) | public void setSessionInvalidateTime(Integer sessionInvalidateTime) {
method getSessionValidationInterval (line 90) | public Integer getSessionValidationInterval() {
method setSessionValidationInterval (line 94) | public void setSessionValidationInterval(Integer sessionValidationInte...
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/properties/BeetlProperties.java
class BeetlProperties (line 16) | @Configuration
method getProperties (line 35) | public Properties getProperties(){
method getPrefix (line 60) | public String getPrefix() {
method getDelimiterStatementStart (line 64) | public String getDelimiterStatementStart() {
method setDelimiterStatementStart (line 68) | public void setDelimiterStatementStart(String delimiterStatementStart) {
method getDelimiterStatementEnd (line 72) | public String getDelimiterStatementEnd() {
method setDelimiterStatementEnd (line 76) | public void setDelimiterStatementEnd(String delimiterStatementEnd) {
method getResourceTagroot (line 80) | public String getResourceTagroot() {
method setResourceTagroot (line 84) | public void setResourceTagroot(String resourceTagroot) {
method getResourceTagsuffix (line 88) | public String getResourceTagsuffix() {
method setResourceTagsuffix (line 92) | public void setResourceTagsuffix(String resourceTagsuffix) {
method getResourceAutoCheck (line 96) | public String getResourceAutoCheck() {
method setResourceAutoCheck (line 100) | public void setResourceAutoCheck(String resourceAutoCheck) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/web/BeetlConfig.java
class BeetlConfig (line 17) | @Configuration
method beetlConfiguration (line 26) | @Bean(initMethod = "init")
method beetlViewResolver (line 37) | @Bean
FILE: material-manage/src/main/java/cn/enilu/material/admin/config/web/ShiroConfig.java
class ShiroConfig (line 34) | @Configuration
method securityManager (line 40) | @Bean
method servletContainerSessionManager (line 53) | @Bean
method defaultWebSessionManager (line 62) | @Bean
method getCacheShiroManager (line 82) | @Bean
method shiroDbRealm (line 92) | @Bean
method rememberMeManager (line 100) | @Bean
method rememberMeCookie (line 111) | @Bean
method shiroFilter (line 122) | @Bean
method methodInvokingFactoryBean (line 164) | @Bean
method lifecycleBeanPostProcessor (line 177) | @Bean
method authorizationAttributeSourceAdvisor (line 185) | @Bean
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/CoreFlag.java
class CoreFlag (line 9) | public class CoreFlag {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/aop/BaseControllerExceptionHandler.java
class BaseControllerExceptionHandler (line 19) | public class BaseControllerExceptionHandler {
method notFount (line 28) | @ExceptionHandler(ApplicationException.class)
method notFount (line 41) | @ExceptionHandler(RuntimeException.class)
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/aop/GlobalExceptionHandler.java
class GlobalExceptionHandler (line 35) | @ControllerAdvice
method notFount (line 45) | @ExceptionHandler(ApplicationException.class)
method unAuth (line 60) | @ExceptionHandler(AuthenticationException.class)
method accountLocked (line 72) | @ExceptionHandler(DisabledAccountException.class)
method credentials (line 86) | @ExceptionHandler(CredentialsException.class)
method credentials (line 100) | @ExceptionHandler(InvalidKaptchaException.class)
method credentials (line 114) | @ExceptionHandler(UndeclaredThrowableException.class)
method notFount (line 128) | @ExceptionHandler(RuntimeException.class)
method sessionTimeout (line 144) | @ExceptionHandler(InvalidSessionException.class)
method sessionTimeout (line 158) | @ExceptionHandler(UnknownSessionException.class)
method assertAjax (line 166) | private void assertAjax(HttpServletRequest request, HttpServletRespons...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/controller/BaseController.java
class BaseController (line 20) | public class BaseController {
method getHttpServletRequest (line 30) | protected HttpServletRequest getHttpServletRequest() {
method getHttpServletResponse (line 34) | protected HttpServletResponse getHttpServletResponse() {
method getSession (line 38) | protected HttpSession getSession() {
method getSession (line 42) | protected HttpSession getSession(Boolean flag) {
method getPara (line 46) | protected String getPara(String name) {
method setAttr (line 50) | protected void setAttr(String name, Object value) {
method getSystemInvokCount (line 54) | protected Integer getSystemInvokCount() {
method packForBT (line 61) | protected <T> PageInfoBT<T> packForBT(Page<T> page) {
method warpObject (line 68) | protected Object warpObject(BaseControllerWarpper warpper) {
method deleteCookieByName (line 75) | protected void deleteCookieByName(String cookieName) {
method renderFile (line 92) | protected ResponseEntity<byte[]> renderFile(String fileName, String fi...
method renderFile (line 103) | protected ResponseEntity<byte[]> renderFile(String fileName, byte[] fi...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/controller/ErrorView.java
class ErrorView (line 16) | @Component("error")
method getContentType (line 19) | @Override
method render (line 24) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/controller/GlobalController.java
class GlobalController (line 13) | @Controller
method errorPage (line 22) | @RequestMapping(path = "/error")
method errorPageInfo (line 32) | @RequestMapping(path = "/sessionError")
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/tips/ErrorTip.java
class ErrorTip (line 9) | public class ErrorTip extends Tip {
method ErrorTip (line 11) | public ErrorTip(int code, String message) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/tips/SuccessTip.java
class SuccessTip (line 9) | public class SuccessTip extends Tip {
method SuccessTip (line 11) | public SuccessTip(){
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/base/tips/Tip.java
class Tip (line 9) | public abstract class Tip {
method getCode (line 14) | public int getCode() {
method setCode (line 18) | public void setCode(int code) {
method getMessage (line 22) | public String getMessage() {
method setMessage (line 26) | public void setMessage(String message) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/beetl/BeetlConfiguration.java
class BeetlConfiguration (line 8) | public class BeetlConfiguration extends BeetlGroupUtilConfiguration {
method initOther (line 10) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/beetl/ShiroExt.java
class ShiroExt (line 28) | public class ShiroExt {
method getSubject (line 36) | protected static Subject getSubject() {
method getUser (line 45) | public ShiroUser getUser() {
method isParent (line 59) | public boolean isParent(String sonUrl,String parentName){
method hasRole (line 86) | public boolean hasRole(String roleName) {
method lacksRole (line 97) | public boolean lacksRole(String roleName) {
method hasAnyRoles (line 107) | public boolean hasAnyRoles(String roleNames) {
method hasAllRoles (line 127) | public boolean hasAllRoles(String roleNames) {
method hasPermission (line 147) | public boolean hasPermission(String permission) {
method lacksPermission (line 159) | public boolean lacksPermission(String permission) {
method authenticated (line 168) | public boolean authenticated() {
method notAuthenticated (line 177) | public boolean notAuthenticated() {
method isUser (line 186) | public boolean isUser() {
method isGuest (line 195) | public boolean isGuest() {
method principal (line 204) | public String principal() {
method main (line 212) | public static void main(String[] args) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/cache/BaseCacheFactory.java
class BaseCacheFactory (line 22) | public abstract class BaseCacheFactory implements ICache {
method get (line 24) | @SuppressWarnings("unchecked")
method get (line 34) | @SuppressWarnings("unchecked")
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/cache/CacheKit.java
class CacheKit (line 24) | public class CacheKit {
method put (line 28) | public static void put(String cacheName, Object key, Object value) {
method get (line 32) | public static <T> T get(String cacheName, Object key) {
method getKeys (line 36) | @SuppressWarnings("rawtypes")
method remove (line 41) | public static void remove(String cacheName, Object key) {
method removeAll (line 45) | public static void removeAll(String cacheName) {
method get (line 49) | public static <T> T get(String cacheName, Object key, ILoader iLoader) {
method get (line 53) | public static <T> T get(String cacheName, Object key, Class<? extends ...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/cache/EhcacheFactory.java
class EhcacheFactory (line 29) | public class EhcacheFactory extends BaseCacheFactory {
method getCacheManager (line 35) | private static CacheManager getCacheManager() {
method getOrAddCache (line 46) | static Cache getOrAddCache(String cacheName) {
method put (line 63) | public void put(String cacheName, Object key, Object value) {
method get (line 67) | @SuppressWarnings("unchecked")
method getKeys (line 73) | @SuppressWarnings("rawtypes")
method remove (line 78) | public void remove(String cacheName, Object key) {
method removeAll (line 82) | public void removeAll(String cacheName) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/cache/ICache.java
type ICache (line 23) | public interface ICache {
method put (line 25) | void put(String cacheName, Object key, Object value);
method get (line 27) | <T> T get(String cacheName, Object key);
method getKeys (line 29) | @SuppressWarnings("rawtypes")
method remove (line 32) | void remove(String cacheName, Object key);
method removeAll (line 34) | void removeAll(String cacheName);
method get (line 36) | <T> T get(String cacheName, Object key, ILoader iLoader);
method get (line 38) | <T> T get(String cacheName, Object key, Class<? extends ILoader> iLoad...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/cache/ILoader.java
type ILoader (line 21) | public interface ILoader {
method load (line 22) | Object load();
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/datascope/DataScope.java
class DataScope (line 11) | public class DataScope {
method DataScope (line 23) | public DataScope() {
method DataScope (line 26) | public DataScope(List<Integer> deptIds) {
method DataScope (line 30) | public DataScope(String scopeName, List<Integer> deptIds) {
method getDeptIds (line 35) | public List<Integer> getDeptIds() {
method setDeptIds (line 39) | public void setDeptIds(List<Integer> deptIds) {
method getScopeName (line 43) | public String getScopeName() {
method setScopeName (line 47) | public void setScopeName(String scopeName) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/datasource/DruidProperties.java
class DruidProperties (line 15) | @Component
method config (line 53) | public void config(DruidDataSource dataSource) {
method getUrl (line 86) | public String getUrl() {
method setUrl (line 90) | public void setUrl(String url) {
method getUsername (line 94) | public String getUsername() {
method setUsername (line 98) | public void setUsername(String username) {
method getPassword (line 102) | public String getPassword() {
method setPassword (line 106) | public void setPassword(String password) {
method getDriverClassName (line 110) | public String getDriverClassName() {
method setDriverClassName (line 114) | public void setDriverClassName(String driverClassName) {
method getInitialSize (line 118) | public Integer getInitialSize() {
method setInitialSize (line 122) | public void setInitialSize(Integer initialSize) {
method getMinIdle (line 126) | public Integer getMinIdle() {
method setMinIdle (line 130) | public void setMinIdle(Integer minIdle) {
method getMaxActive (line 134) | public Integer getMaxActive() {
method setMaxActive (line 138) | public void setMaxActive(Integer maxActive) {
method getMaxWait (line 142) | public Integer getMaxWait() {
method setMaxWait (line 146) | public void setMaxWait(Integer maxWait) {
method getTimeBetweenEvictionRunsMillis (line 150) | public Integer getTimeBetweenEvictionRunsMillis() {
method setTimeBetweenEvictionRunsMillis (line 154) | public void setTimeBetweenEvictionRunsMillis(Integer timeBetweenEvicti...
method getMinEvictableIdleTimeMillis (line 158) | public Integer getMinEvictableIdleTimeMillis() {
method setMinEvictableIdleTimeMillis (line 162) | public void setMinEvictableIdleTimeMillis(Integer minEvictableIdleTime...
method getValidationQuery (line 166) | public String getValidationQuery() {
method setValidationQuery (line 170) | public void setValidationQuery(String validationQuery) {
method getTestWhileIdle (line 174) | public Boolean getTestWhileIdle() {
method setTestWhileIdle (line 178) | public void setTestWhileIdle(Boolean testWhileIdle) {
method getTestOnBorrow (line 182) | public Boolean getTestOnBorrow() {
method setTestOnBorrow (line 186) | public void setTestOnBorrow(Boolean testOnBorrow) {
method getTestOnReturn (line 190) | public Boolean getTestOnReturn() {
method setTestOnReturn (line 194) | public void setTestOnReturn(Boolean testOnReturn) {
method getPoolPreparedStatements (line 198) | public Boolean getPoolPreparedStatements() {
method setPoolPreparedStatements (line 202) | public void setPoolPreparedStatements(Boolean poolPreparedStatements) {
method getMaxPoolPreparedStatementPerConnectionSize (line 206) | public Integer getMaxPoolPreparedStatementPerConnectionSize() {
method setMaxPoolPreparedStatementPerConnectionSize (line 210) | public void setMaxPoolPreparedStatementPerConnectionSize(Integer maxPo...
method getFilters (line 214) | public String getFilters() {
method setFilters (line 218) | public void setFilters(String filters) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/intercept/SessionInterceptor.java
class SessionInterceptor (line 17) | @Aspect
method cutService (line 21) | @Pointcut("execution(* cn.enilu.material.admin.*..controller.*.*(..))")
method sessionKit (line 25) | @Around("cutService()")
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/intercept/SessionTimeoutInterceptor.java
class SessionTimeoutInterceptor (line 20) | @Aspect
method cutService (line 25) | @Pointcut("execution(* cn.enilu.material.admin.*..controller.*.*(..))")
method sessionTimeoutValidate (line 29) | @Around("cutService()")
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/page/PageBT.java
class PageBT (line 9) | public class PageBT {
method PageBT (line 18) | public PageBT() {
method PageBT (line 22) | public PageBT(int limit, int offset) {
method getLimit (line 28) | public int getLimit() {
method setLimit (line 32) | public void setLimit(int limit) {
method getOffset (line 36) | public int getOffset() {
method setOffset (line 40) | public void setOffset(int offset) {
method getOrder (line 44) | public String getOrder() {
method setOrder (line 48) | public void setOrder(String order) {
method getPageSize (line 52) | public int getPageSize() {
method getPageNumber (line 56) | public int getPageNumber() {
method toString (line 60) | @Override
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/page/PageInfoBT.java
class PageInfoBT (line 14) | public class PageInfoBT<T> {
method PageInfoBT (line 22) | public PageInfoBT(Page<T> page) {
method getRows (line 27) | public List<T> getRows() {
method setRows (line 31) | public void setRows(List<T> rows) {
method getTotal (line 35) | public long getTotal() {
method setTotal (line 39) | public void setTotal(long total) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/qr/ImgQrTool.java
class ImgQrTool (line 29) | public class ImgQrTool {
method encode (line 53) | public static void encode(String content, int width, int height, Strin...
method encode (line 74) | public static void encode(String content, int width, int height, Strin...
method createSimpleQr (line 90) | public static void createSimpleQr(String content, int width, int heigh...
method genBarcode (line 113) | private static BufferedImage genBarcode(String content, int width, int...
method scale (line 179) | private static BufferedImage scale(String srcImageFile, int height, in...
method createQrWithFontsAbove (line 215) | public static void createQrWithFontsAbove(QrImage para) {
method splitStrLines (line 268) | private static String[] splitStrLines(String str, int len) {
method main (line 281) | public static void main(String[] args) throws IOException {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/qr/MatrixToImageConfig.java
class MatrixToImageConfig (line 24) | public final class MatrixToImageConfig {
method MatrixToImageConfig (line 36) | public MatrixToImageConfig() {
method MatrixToImageConfig (line 44) | public MatrixToImageConfig(int onColor, int offColor) {
method getPixelOnColor (line 49) | public int getPixelOnColor() {
method getPixelOffColor (line 53) | public int getPixelOffColor() {
method getBufferedImageColorModel (line 57) | int getBufferedImageColorModel() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/qr/MatrixToImageWriter.java
class MatrixToImageWriter (line 34) | public final class MatrixToImageWriter {
method MatrixToImageWriter (line 38) | private MatrixToImageWriter() {}
method toBufferedImage (line 44) | public static BufferedImage toBufferedImage(BitMatrix matrix) {
method toBufferedImage (line 51) | public static BufferedImage toBufferedImage(BitMatrix matrix, MatrixTo...
method writeToFile (line 68) | @Deprecated
method writeToPath (line 78) | public static void writeToPath(BitMatrix matrix, String format, Path f...
method writeToFile (line 85) | @Deprecated
method writeToPath (line 94) | public static void writeToPath(BitMatrix matrix, String format, Path f...
method writeToStream (line 107) | public static void writeToStream(BitMatrix matrix, String format, Outp...
method writeToStream (line 114) | public static void writeToStream(BitMatrix matrix, String format, Outp...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/qr/QrImage.java
class QrImage (line 9) | public class QrImage {
class Builder (line 56) | public static class Builder {
method Builder (line 67) | public Builder() {
method setQrContent (line 70) | public Builder setQrContent(String qrContent) {
method setQrWidth (line 75) | public Builder setQrWidth(int qrWidth) {
method setQrHeight (line 80) | public Builder setQrHeight(int qrHeight) {
method setQrIconFilePath (line 85) | public Builder setQrIconFilePath(String qrIconFilePath) {
method setTopWrodHeight (line 90) | public Builder setTopWrodHeight(int topWrodHeight) {
method setWordSize (line 95) | public Builder setWordSize(int wordSize) {
method setWordContent (line 100) | public Builder setWordContent(String wordContent) {
method setFileOutputPath (line 105) | public Builder setFileOutputPath(String fileOutputPath) {
method setQrIconWidth (line 110) | public Builder setQrIconWidth(int qrIconWidth) {
method build (line 115) | public QrImage build() {
method QrImage (line 121) | public QrImage(String qrContent, int qrWidth, int qrHeight, String qrI...
method getQrContent (line 135) | public String getQrContent() {
method getQrWidth (line 139) | public int getQrWidth() {
method getQrHeight (line 143) | public int getQrHeight() {
method getQrIconFilePath (line 147) | public String getQrIconFilePath() {
method getTopWrodHeight (line 151) | public int getTopWrodHeight() {
method getWordSize (line 155) | public int getWordSize() {
method getWordContent (line 159) | public String getWordContent() {
method getFileOutputPath (line 163) | public String getFileOutputPath() {
method getQrIconWidth (line 167) | public int getQrIconWidth() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/BasicType.java
type BasicType (line 10) | public enum BasicType {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/BeanKit.java
class BeanKit (line 17) | public class BeanKit {
method isBean (line 25) | public static boolean isBean(Class<?> clazz) {
method findEditor (line 38) | public static PropertyEditor findEditor(Class<?> type) {
method getPropertyDescriptors (line 49) | public static PropertyDescriptor[] getPropertyDescriptors(Class<?> cla...
method getFieldNamePropertyDescriptorMap (line 60) | public static Map<String, PropertyDescriptor> getFieldNamePropertyDesc...
method getPropertyDescriptor (line 77) | public static PropertyDescriptor getPropertyDescriptor(Class<?> clazz,...
method mapToBean (line 94) | public static <T> T mapToBean(Map<?, ?> map, Class<T> beanClass) {
method mapToBeanIgnoreCase (line 106) | public static <T> T mapToBeanIgnoreCase(Map<?, ?> map, Class<T> beanCl...
method fillBeanWithMap (line 117) | public static <T> T fillBeanWithMap(final Map<?, ?> map, T bean) {
method fillBeanWithMap (line 134) | public static <T> T fillBeanWithMap(Map<?, ?> map, T bean, boolean isT...
method fillBeanWithMapIgnoreCase (line 159) | public static <T> T fillBeanWithMapIgnoreCase(Map<?, ?> map, T bean) {
method requestParamToBean (line 186) | public static <T> T requestParamToBean(javax.servlet.ServletRequest re...
method fillBeanWithRequestParam (line 197) | public static <T> T fillBeanWithRequestParam(final javax.servlet.Servl...
method toBean (line 224) | public static <T> T toBean(Class<T> beanClass, ValueProvider valueProv...
method fillBean (line 236) | public static <T> T fillBean(T bean, ValueProvider valueProvider) {
method beanToMap (line 270) | public static <T> Map<String, Object> beanToMap(T bean) {
method listToMapList (line 280) | public static <T> List<Map<String, Object>> listToMapList(List<T> bean) {
method beanToMap (line 295) | public static <T> Map<String, Object> beanToMap(T bean, boolean isToUn...
method copyProperties (line 327) | public static void copyProperties(Object source, Object target) {
method copyProperties (line 339) | public static void copyProperties(Object source, Object target, String...
method copyProperties (line 351) | public static void copyProperties(Object source, Object target, CopyOp...
type ValueProvider (line 403) | public static interface ValueProvider {
method value (line 410) | public Object value(String name);
class CopyOptions (line 422) | public static class CopyOptions {
method create (line 441) | public static CopyOptions create() {
method create (line 453) | public static CopyOptions create(Class<?> editable, boolean isIgnore...
method CopyOptions (line 460) | public CopyOptions() {
method CopyOptions (line 470) | public CopyOptions(Class<?> editable, boolean isIgnoreNullValue, Str...
method setEditable (line 482) | public CopyOptions setEditable(Class<?> editable) {
method setIgnoreNullValue (line 493) | public CopyOptions setIgnoreNullValue(boolean isIgnoreNullVall) {
method setIgnoreProperties (line 504) | public CopyOptions setIgnoreProperties(String... ignoreProperties) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/ClassKit.java
class ClassKit (line 17) | public class ClassKit {
method ClassKit (line 19) | private ClassKit() {
method isNormalClass (line 31) | public static boolean isNormalClass(Class<?> clazz) {
method isAbstract (line 42) | public static boolean isAbstract(Class<?> clazz) {
method newInstance (line 52) | @SuppressWarnings("unchecked")
method newInstance (line 69) | public static <T> T newInstance(Class<T> clazz) {
method newInstance (line 85) | public static <T> T newInstance(Class<T> clazz, Object... params) {
method getClasses (line 103) | public static Class<?>[] getClasses(Object... objects){
method isAssignable (line 122) | public static boolean isAssignable(Class<?> targetType, Class<?> sourc...
method setAccessible (line 155) | public static Method setAccessible(Method method) {
method isNotPublic (line 168) | public static boolean isNotPublic(Class<?> clazz) {
method isNotPublic (line 178) | public static boolean isNotPublic(Method method) {
method isPublic (line 188) | public static boolean isPublic(Class<?> clazz) {
method isPublic (line 201) | public static boolean isPublic(Method method) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/CollectionKit.java
class CollectionKit (line 17) | public class CollectionKit {
method CollectionKit (line 19) | private CollectionKit() {
method join (line 31) | public static <T> String join(Iterable<T> collection, String conjuncti...
method join (line 53) | public static <T> String join(T[] array, String conjunction) {
method sortPageAll (line 75) | @SafeVarargs
method sortEntrySetToList (line 123) | public static List<Entry<Long, Long>> sortEntrySetToList(Set<Entry<Lon...
method popPart (line 149) | public static <T> List<T> popPart(Stack<T> surplusAlaDatas, int partSi...
method popPart (line 177) | public static <T> List<T> popPart(Deque<T> surplusAlaDatas, int partSi...
method newHashMap (line 202) | public static <T, K> HashMap<T, K> newHashMap() {
method newHashMap (line 211) | public static <T, K> HashMap<T, K> newHashMap(int size) {
method newHashSet (line 220) | public static <T> HashSet<T> newHashSet() {
method newHashSet (line 229) | @SafeVarargs
method newArrayList (line 243) | public static <T> ArrayList<T> newArrayList() {
method newArrayList (line 252) | @SafeVarargs
method append (line 265) | public static <T> T[] append(T[] buffer, T newElement) {
method resize (line 279) | public static <T> T[] resize(T[] buffer, int newSize, Class<?> compone...
method newArray (line 291) | @SuppressWarnings("unchecked")
method resize (line 304) | public static <T> T[] resize(T[] buffer, int newSize) {
method addAll (line 315) | @SafeVarargs
method clone (line 346) | public static <T> T[] clone(T[] array) {
method range (line 359) | public static int[] range(int excludedEnd) {
method range (line 370) | public static int[] range(int includedStart, int excludedEnd) {
method range (line 382) | public static int[] range(int includedStart, int excludedEnd, int step) {
method sub (line 413) | public static <T> List<T> sub(List<T> list, int start, int end) {
method sub (line 449) | public static <T> List<T> sub(Collection<T> list, int start, int end) {
method isEmpty (line 462) | public static <T> boolean isEmpty(T[] array) {
method isNotEmpty (line 471) | public static <T> boolean isNotEmpty(T[] array) {
method isEmpty (line 480) | public static boolean isEmpty(Collection<?> collection) {
method isNotEmpty (line 489) | public static boolean isNotEmpty(Collection<?> collection) {
method isEmpty (line 498) | public static boolean isEmpty(Map<?, ?> map) {
method isNotEmpty (line 507) | public static <T> boolean isNotEmpty(Map<?, ?> map) {
method zip (line 522) | public static <T, K> Map<T, K> zip(T[] keys, K[] values) {
method zip (line 548) | public static Map<String, String> zip(String keys, String values, Stri...
method zip (line 563) | public static <T, K> Map<T, K> zip(Collection<T> keys, Collection<K> v...
method contains (line 586) | public static <T> boolean contains(T[] array, T value) {
method toMap (line 607) | public static <T, K> HashMap<T, K> toMap(Collection<Entry<T, K>> entry...
method toTreeSet (line 621) | public static <T> TreeSet<T> toTreeSet(Collection<T> collection, Compa...
method sort (line 635) | public static <T> List<T> sort(Collection<T> collection, Comparator<T>...
method wrap (line 647) | public static Integer[] wrap(int... values){
method wrap (line 661) | public static Long[] wrap(long... values){
method wrap (line 675) | public static Character[] wrap(char... values){
method wrap (line 689) | public static Byte[] wrap(byte... values){
method wrap (line 703) | public static Short[] wrap(short... values){
method wrap (line 717) | public static Float[] wrap(float... values){
method wrap (line 731) | public static Double[] wrap(double... values){
method wrap (line 745) | public static Boolean[] wrap(boolean... values){
method isArray (line 759) | public static boolean isArray(Object obj){
method toString (line 769) | public static String toString(Object obj) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/DateTime.java
class DateTime (line 10) | public class DateTime extends Date{
method parse (line 18) | public static DateTime parse(Date date) {
method DateTime (line 25) | public DateTime() {
method DateTime (line 33) | public DateTime(Date date) {
method DateTime (line 41) | public DateTime(long timeMillis) {
method toString (line 45) | @Override
method toString (line 50) | public String toString(String format) {
method toMsStr (line 57) | public String toMsStr() {
method toDate (line 64) | public Date toDate() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/DateTimeKit.java
class DateTimeKit (line 16) | public class DateTimeKit {
method initialValue (line 44) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 51) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 58) | synchronized protected SimpleDateFormat initialValue() {
method initialValue (line 65) | synchronized protected SimpleDateFormat initialValue() {
method now (line 75) | public static String now() {
method current (line 85) | public static long current(boolean isNano) {
method today (line 94) | public static String today() {
method thisMonth (line 101) | public static int thisMonth() {
method thisYear (line 108) | public static int thisYear() {
method date (line 115) | public static DateTime date() {
method date (line 125) | public static DateTime date(long date) {
method toCalendar (line 135) | public static Calendar toCalendar(Date date) {
method month (line 147) | public static int month(Date date) {
method year (line 157) | public static int year(Date date) {
method season (line 167) | public static int season(Date date) {
method yearAndSeason (line 178) | public static String yearAndSeason(Date date) {
method yearAndSeasons (line 189) | public static LinkedHashSet<String> yearAndSeasons(Date startDate, Dat...
method format (line 224) | public static String format(Date date, String format) {
method formatDateTime (line 234) | public static String formatDateTime(Date date) {
method formatDate (line 247) | public static String formatDate(Date date) {
method formatHttpDate (line 260) | public static String formatHttpDate(Date date) {
method parse (line 277) | public static DateTime parse(String dateStr, SimpleDateFormat simpleDa...
method parse (line 292) | public static DateTime parse(String dateString, String format) {
method parseDateTime (line 302) | public static DateTime parseDateTime(String dateString) {
method parseDate (line 312) | public static DateTime parseDate(String dateString) {
method parseTime (line 322) | public static DateTime parseTime(String timeString) {
method parse (line 336) | public static DateTime parse(String dateStr) {
method getBeginTimeOfDay (line 370) | public static DateTime getBeginTimeOfDay(Date date) {
method getEndTimeOfDay (line 386) | public static DateTime getEndTimeOfDay(Date date) {
method yesterday (line 401) | public static DateTime yesterday() {
method lastWeek (line 410) | public static DateTime lastWeek() {
method lastMouth (line 419) | public static DateTime lastMouth() {
method offsiteDay (line 430) | public static DateTime offsiteDay(Date date, int offsite) {
method offsiteWeek (line 441) | public static DateTime offsiteWeek(Date date, int offsite) {
method offsiteMonth (line 452) | public static DateTime offsiteMonth(Date date, int offsite) {
method offsiteDate (line 464) | public static DateTime offsiteDate(Date date, int calendarField, int o...
method diff (line 481) | public static long diff(Date subtrahend, Date minuend, long diffField) {
method spendNt (line 492) | public static long spendNt(long preTime) {
method spendMs (line 502) | public static long spendMs(long preTime) {
method toIntSecond (line 512) | public static int toIntSecond(Date date) {
method weekCount (line 523) | public static int weekCount(Date start, Date end) {
method timer (line 547) | public static Timer timer() {
method ageOfNow (line 558) | public static int ageOfNow(String birthDay) {
method ageOfNow (line 568) | public static int ageOfNow(Date birthDay) {
method age (line 579) | public static int age(Date birthDay, Date dateToCompare) {
class Timer (line 616) | public static class Timer {
method Timer (line 620) | public Timer() {
method Timer (line 624) | public Timer(boolean isNano) {
method start (line 632) | public long start() {
method durationRestart (line 640) | public long durationRestart() {
method duration (line 650) | public long duration() {
method yearAndSeason (line 662) | private static String yearAndSeason(Calendar cal) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/HexKit.java
class HexKit (line 17) | public class HexKit {
method encodeHex (line 35) | public static char[] encodeHex(byte[] data) {
method encodeHex (line 46) | public static char[] encodeHex(String str, Charset charset) {
method encodeHex (line 57) | public static char[] encodeHex(byte[] data, boolean toLowerCase) {
method encodeHexStr (line 67) | public static String encodeHexStr(byte[] data) {
method encodeHexStr (line 78) | public static String encodeHexStr(byte[] data, boolean toLowerCase) {
method decodeHexStr (line 90) | public static String decodeHexStr(String hexStr, Charset charset) {
method decodeHexStr (line 104) | public static String decodeHexStr(char[] hexData, Charset charset) {
method decodeHex (line 115) | public static byte[] decodeHex(char[] hexData) {
method encodeHexStr (line 145) | private static String encodeHexStr(byte[] data, char[] toDigits) {
method encodeHex (line 156) | private static char[] encodeHex(byte[] data, char[] toDigits) {
method toDigit (line 175) | private static int toDigit(char ch, int index) {
method binary2Hex (line 191) | public static String binary2Hex(String bString) {
method hex2Binary (line 211) | public static String hex2Binary(String hexString) {
method binary2Hex (line 227) | public static String binary2Hex(byte buf[]) {
method hex2Byte (line 244) | public static byte[] hex2Byte(String hexStr) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/ObjectKit.java
class ObjectKit (line 9) | public class ObjectKit {
method equals (line 19) | public static boolean equals(Object obj1, Object obj2) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/PageKit.java
class PageKit (line 9) | public class PageKit {
method transToStartEnd (line 25) | public static int[] transToStartEnd(int pageNo, int countPerPage) {
method totalPage (line 50) | public static int totalPage(int totalCount, int numPerPage) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/support/exception/ToolBoxException.java
class ToolBoxException (line 24) | public class ToolBoxException extends RuntimeException{
method ToolBoxException (line 27) | public ToolBoxException(Throwable e) {
method ToolBoxException (line 31) | public ToolBoxException(String message) {
method ToolBoxException (line 35) | public ToolBoxException(String messageTemplate, Object... params) {
method ToolBoxException (line 39) | public ToolBoxException(String message, Throwable throwable) {
method ToolBoxException (line 43) | public ToolBoxException(Throwable throwable, String messageTemplate, O...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/ApiMenuFilter.java
class ApiMenuFilter (line 17) | public class ApiMenuFilter extends MenuNode {
method build (line 20) | public static List<MenuNode> build(List<MenuNode> nodes) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/FileUtil.java
class FileUtil (line 14) | public class FileUtil {
method toByteArray (line 21) | public static byte[] toByteArray(String filename) {
method deleteDir (line 61) | public static boolean deleteDir(File dir) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/HttpSessionHolder.java
class HttpSessionHolder (line 11) | public class HttpSessionHolder {
method put (line 15) | public static void put(HttpSession s) {
method get (line 19) | public static HttpSession get() {
method remove (line 23) | public static void remove() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/KaptchaUtil.java
class KaptchaUtil (line 9) | public class KaptchaUtil {
method getKaptchaOnOff (line 17) | public static Boolean getKaptchaOnOff() {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/NumUtil.java
class NumUtil (line 14) | public class NumUtil {
method keepRandomPoint (line 20) | public static String keepRandomPoint(Double value, int n) {
method keep2Point (line 33) | public static String keep2Point(double value) {
method keep1Point (line 41) | public static String keep1Point(double value) {
method keepRandomPointZero (line 49) | public static String keepRandomPointZero(double value, int n) {
method keep2PointZero (line 58) | public static String keep2PointZero(double value) {
method percentRandomPoint (line 66) | public static String percentRandomPoint(double value, int n) {
method percent2Point (line 77) | public static String percent2Point(double value) {
method latLngPoint (line 85) | public static String latLngPoint(double value) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/PingYinUtil.java
class PingYinUtil (line 13) | public class PingYinUtil {
method main (line 15) | public static void main(String[] args) {
method getPYIndexStr (line 23) | public static String getPYIndexStr(String strChinese, boolean bUpCase) {
method getPYIndexChar (line 52) | private static char getPYIndexChar(char strChinese, boolean bUpCase) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/RenderUtil.java
class RenderUtil (line 17) | public class RenderUtil {
method renderJson (line 22) | public static void renderJson(HttpServletResponse response, Object jso...
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/ResKit.java
class ResKit (line 15) | public class ResKit {
method getClassPathResources (line 21) | public static Resource[] getClassPathResources(String pattern) {
method getClassPathFile (line 34) | public static String getClassPathFile(String file) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/util/SqlUtil.java
class SqlUtil (line 12) | public class SqlUtil {
method parse (line 18) | public static String parse(List<?> list) {
method main (line 29) | public static void main(String[] args) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/xss/XssFilter.java
class XssFilter (line 10) | public class XssFilter implements Filter {
method init (line 16) | public void init(FilterConfig filterConfig) throws ServletException {
method destroy (line 20) | public void destroy() {
method doFilter (line 24) | public void doFilter(ServletRequest request, ServletResponse response,...
method getUrlExclusion (line 35) | public List<String> getUrlExclusion() {
method setUrlExclusion (line 39) | public void setUrlExclusion(List<String> urlExclusion) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/core/xss/XssHttpServletRequestWrapper.java
class XssHttpServletRequestWrapper (line 8) | public class XssHttpServletRequestWrapper extends HttpServletRequestWrap...
method XssHttpServletRequestWrapper (line 10) | public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {
method getParameterValues (line 16) | public String[] getParameterValues(String parameter) {
method getParameter (line 40) | public String getParameter(String parameter) {
method getHeader (line 54) | public String getHeader(String name) {
method cleanXSS (line 66) | private String cleanXSS(String value) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/lab/controller/LabController.java
class LabController (line 12) | @RequestMapping("/lab")
method index (line 15) | @RequestMapping(value="/actuator",method = RequestMethod.GET)
method gis (line 19) | @RequestMapping(value="/gis",method = RequestMethod.GET)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/message/MessageController.java
class MessageController (line 19) | @Controller
method index (line 30) | @RequestMapping(value = "",method = RequestMethod.GET)
method view (line 38) | @RequestMapping(value = "/view/{id}",method = RequestMethod.GET)
method list (line 45) | @RequestMapping(value = "/list", method = RequestMethod.POST)
method clear (line 55) | @RequestMapping(value="/clear",method = RequestMethod.POST)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/message/MessagesenderController.java
class MessagesenderController (line 20) | @Controller
method index (line 31) | @RequestMapping(value = "", method = RequestMethod.GET)
method add (line 39) | @RequestMapping("/add")
method update (line 47) | @RequestMapping("/update/{id}")
method list (line 54) | @RequestMapping(value = "/list", method = RequestMethod.POST)
method save (line 64) | @RequestMapping(method = RequestMethod.POST)
method remove (line 72) | @RequestMapping(method = RequestMethod.DELETE)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/message/MessagetemplateController.java
class MessagetemplateController (line 25) | @Controller
method index (line 37) | @RequestMapping(value = "",method = RequestMethod.GET)
method add (line 45) | @RequestMapping("/add")
method update (line 55) | @RequestMapping("/update/{id}")
method list (line 63) | @RequestMapping(value = "/list", method = RequestMethod.POST)
method save (line 73) | @RequestMapping(method = RequestMethod.POST)
method remove (line 85) | @RequestMapping(method = RequestMethod.DELETE)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/BlackboardController.java
class BlackboardController (line 18) | @Controller
method blackboard (line 28) | @RequestMapping("")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/CfgController.java
class CfgController (line 28) | @Controller
method index (line 37) | @RequestMapping(value = "",method = RequestMethod.GET)
method list (line 44) | @RequestMapping(value = "/list",method = RequestMethod.POST)
method add (line 60) | @RequestMapping(value = "/cfg_add",method = RequestMethod.GET)
method add (line 68) | @RequestMapping(value = "/add",method = RequestMethod.POST)
method update (line 79) | @RequestMapping(value = "/cfg_update/{cfgId}",method = RequestMethod.GET)
method update (line 89) | @RequestMapping(value = "/update",method = RequestMethod.POST)
method delete (line 101) | @RequestMapping(value = "/delete",method = RequestMethod.DELETE)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/DeptController.java
class DeptController (line 34) | @Controller
method index (line 47) | @RequestMapping("")
method deptAdd (line 55) | @RequestMapping("/dept_add")
method deptUpdate (line 63) | @Permission
method tree (line 76) | @RequestMapping(value = "/tree")
method add (line 87) | @BussinessLog(value = "添加部门", key = "simplename", dict = DeptDict.class)
method list (line 103) | @RequestMapping(value = "/list")
method detail (line 114) | @RequestMapping(value = "/detail/{deptId}")
method update (line 124) | @BussinessLog(value = "修改部门", key = "simplename", dict = DeptDict.class)
method delete (line 140) | @BussinessLog(value = "删除部门", key = "deptId", dict = DeptDict.class)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/DictController.java
class DictController (line 33) | @Controller
method index (line 45) | @RequestMapping("")
method deptAdd (line 53) | @RequestMapping("/dict_add")
method deptUpdate (line 61) | @Permission(Const.ADMIN_NAME)
method add (line 77) | @BussinessLog(value = "添加字典记录", key = "dictName,dictValues", dict = Di...
method list (line 92) | @RequestMapping(value = "/list")
method detail (line 103) | @RequestMapping(value = "/detail/{dictId}")
method update (line 113) | @BussinessLog(value = "修改字典", key = "dictName,dictValues", dict = Dict...
method delete (line 128) | @BussinessLog(value = "删除字典记录", key = "dictId", dict = DictMap.class)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/KaptchaController.java
class KaptchaController (line 27) | @Controller
method index (line 40) | @RequestMapping("")
method renderPicture (line 100) | @RequestMapping("/{pictureId}")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/LogController.java
class LogController (line 33) | @Controller
method index (line 46) | @RequestMapping("")
method list (line 54) | @RequestMapping("/list")
method detail (line 73) | @RequestMapping("/detail/{id}")
method delLog (line 85) | @BussinessLog(value = "清空业务日志")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/LoginController.java
class LoginController (line 33) | @Controller
method index (line 45) | @RequestMapping(value = "/", method = RequestMethod.GET)
method login (line 59) | @RequestMapping(value = "/login", method = RequestMethod.GET)
method loginVali (line 71) | @RequestMapping(value = "/login", method = RequestMethod.POST)
method logOut (line 111) | @RequestMapping(value = "/logout", method = RequestMethod.GET)
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/LoginLogController.java
class LoginLogController (line 29) | @Controller
method index (line 41) | @RequestMapping("")
method list (line 49) | @RequestMapping("/list")
method delLog (line 67) | @BussinessLog("清空登录日志")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/MenuController.java
class MenuController (line 44) | @Controller
method index (line 57) | @RequestMapping("")
method menuAdd (line 65) | @RequestMapping(value = "/menu_add")
method menuEdit (line 73) | @Permission(Const.ADMIN_NAME)
method edit (line 98) | @Permission(Const.ADMIN_NAME)
method list (line 113) | @Permission
method add (line 140) | @Permission(Const.ADMIN_NAME)
method remove (line 165) | @Permission(Const.ADMIN_NAME)
method view (line 184) | @RequestMapping(value = "/view/{menuId}")
method menuTreeList (line 197) | @RequestMapping(value = "/menuTreeList")
method selectMenuTreeList (line 207) | @RequestMapping(value = "/selectMenuTreeList")
method menuTreeListByRoleId (line 219) | @RequestMapping(value = "/menuTreeListByRoleId/{roleId}")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/NoticeController.java
class NoticeController (line 32) | @Controller
method index (line 46) | @RequestMapping("")
method noticeAdd (line 54) | @RequestMapping("/notice_add")
method noticeUpdate (line 62) | @RequestMapping("/notice_update/{noticeId}")
method hello (line 73) | @RequestMapping("/hello")
method list (line 83) | @RequestMapping(value = "/list")
method add (line 98) | @RequestMapping(value = "/add")
method delete (line 113) | @RequestMapping(value = "/delete")
method update (line 129) | @RequestMapping(value = "/update")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/RoleController.java
class RoleController (line 45) | @Controller
method index (line 60) | @RequestMapping("")
method roleAdd (line 68) | @RequestMapping(value = "/role_add")
method roleEdit (line 76) | @Permission
method roleAssign (line 93) | @Permission
method list (line 107) | @Permission
method add (line 123) | @RequestMapping(value = "/add")
method edit (line 139) | @RequestMapping(value = "/edit")
method remove (line 157) | @RequestMapping(value = "/remove")
method view (line 187) | @RequestMapping(value = "/view/{roleId}")
method setAuthority (line 200) | @RequestMapping("/setAuthority")
method roleTreeList (line 215) | @RequestMapping(value = "/roleTreeList")
method roleTreeListByUserId (line 226) | @RequestMapping(value = "/roleTreeListByUserId/{userId}")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/TaskController.java
class TaskController (line 31) | @Controller
method index (line 42) | @RequestMapping("")
method add (line 50) | @RequestMapping("/task_add")
method update (line 58) | @RequestMapping("/task_update/{taskId}")
method list (line 68) | @RequestMapping(value = "/list")
method add (line 81) | @RequestMapping(value = "/add")
method delete (line 93) | @RequestMapping(value = "/delete")
method disable (line 102) | @RequestMapping("/disable")
method enable (line 110) | @RequestMapping("/enable")
method update (line 122) | @RequestMapping(value = "/update")
method detail (line 139) | @RequestMapping(value = "/detail/{taskId}")
method viewLog (line 145) | @RequestMapping(value = "/viewLog/{taskId}")
method listList (line 151) | @RequestMapping(value="/logList/{taskId}")
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/controller/UserMgrController.java
class UserMgrController (line 48) | @Controller
method index (line 63) | @RequestMapping("")
method addView (line 71) | @RequestMapping("/user_add")
method roleAssign (line 79) | @Permission
method userEdit (line 95) | @Permission
method userInfo (line 114) | @RequestMapping("/user_info")
method chPwd (line 131) | @RequestMapping("/user_chpwd")
method changePwd (line 139) | @RequestMapping("/changePwd")
method list (line 161) | @RequestMapping("/list")
method add (line 184) | @RequestMapping("/add")
method edit (line 213) | @RequestMapping("/edit")
method delete (line 240) | @RequestMapping("/delete")
method view (line 262) | @RequestMapping("/view/{userId}")
method reset (line 275) | @RequestMapping("/reset")
method freeze (line 297) | @RequestMapping("/freeze")
method unfreeze (line 319) | @RequestMapping("/unfreeze")
method setRole (line 337) | @RequestMapping("/setRole")
method upload (line 359) | @RequestMapping(method = RequestMethod.POST, path = "/upload")
method assertAuth (line 375) | private void assertAuth(Long userId) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/transfer/ManagerUser.java
class ManagerUser (line 11) | public class ManagerUser {
method getUserId (line 33) | public String getUserId() {
method setUserId (line 37) | public void setUserId(String userId) {
method getUserNo (line 41) | public String getUserNo() {
method setUserNo (line 45) | public void setUserNo(String userNo) {
method getUserName (line 49) | public String getUserName() {
method setUserName (line 53) | public void setUserName(String userName) {
method getUserPhone (line 57) | public String getUserPhone() {
method setUserPhone (line 61) | public void setUserPhone(String userPhone) {
method getUserRole (line 65) | public String getUserRole() {
method setUserRole (line 69) | public void setUserRole(String userRole) {
method getUserStatus (line 73) | public Integer getUserStatus() {
method setUserStatus (line 77) | public void setUserStatus(Integer userStatus) {
method getCreateTime (line 81) | public Date getCreateTime() {
method setCreateTime (line 85) | public void setCreateTime(Date createTime) {
method getLoginTime (line 89) | public Date getLoginTime() {
method setLoginTime (line 93) | public void setLoginTime(Date loginTime) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/transfer/ReqAddManager.java
class ReqAddManager (line 13) | public class ReqAddManager {
method getUserName (line 36) | public String getUserName() {
method setUserName (line 40) | public void setUserName(String userName) {
method getUserNo (line 44) | public String getUserNo() {
method setUserNo (line 48) | public void setUserNo(String userNo) {
method getUserPhone (line 52) | public String getUserPhone() {
method setUserPhone (line 56) | public void setUserPhone(String userPhone) {
method getUserRole (line 60) | public String getUserRole() {
method setUserRole (line 64) | public void setUserRole(String userRole) {
method getUserPassword (line 68) | public String getUserPassword() {
method setUserPassword (line 72) | public void setUserPassword(String userPassword) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/modular/system/transfer/ReqEditManager.java
class ReqEditManager (line 13) | public class ReqEditManager {
method getUserId (line 28) | public String getUserId() {
method setUserId (line 32) | public void setUserId(String userId) {
method getUserName (line 36) | public String getUserName() {
method setUserName (line 40) | public void setUserName(String userName) {
method getUserPassword (line 44) | public String getUserPassword() {
method setUserPassword (line 48) | public void setUserPassword(String userPassword) {
method getUserPhone (line 52) | public String getUserPhone() {
method setUserPhone (line 56) | public void setUserPhone(String userPhone) {
FILE: material-manage/src/main/java/cn/enilu/material/admin/runner/StartJob.java
class StartJob (line 19) | @Component
method run (line 27) | @Override
FILE: material-manage/src/main/webapp/static/js/charts.js
function sparklineBar (line 5) | function sparklineBar(id, values, height, barWidth, barColor, barSpacing) {
function sparklineLine (line 15) | function sparklineLine(id, values, width, height, lineColor, fillColor, ...
function sparklinePie (line 32) | function sparklinePie(id, values, width, height, sliceColors) {
function easyPieChart (line 78) | function easyPieChart(id, trackColor, scaleColor, barColor, lineWidth, l...
FILE: material-manage/src/main/webapp/static/js/demo.js
function notify (line 3) | function notify(message, type){
FILE: material-manage/src/main/webapp/static/js/flot-charts/dynamic-chart.js
function getRandomData (line 9) | function getRandomData() {
function update (line 92) | function update() {
FILE: material-manage/src/main/webapp/static/js/flot-charts/line-chart.js
function getRandomData (line 9) | function getRandomData() {
FILE: material-manage/src/main/webapp/static/js/functions.js
function scrollBar (line 43) | function scrollBar(selector, theme, mousewheelaxis) {
function notify (line 471) | function notify(message, type){
function launchIntoFullscreen (line 610) | function launchIntoFullscreen(element) {
function exitFullscreen (line 624) | function exitFullscreen() {
FILE: material-manage/src/main/webapp/static/js/hplus.js
function fix_height (line 61) | function fix_height() {
function clearTabMenuItem (line 119) | function clearTabMenuItem(){
function highLightMenuItem (line 125) | function highLightMenuItem(hrefVal){
function NavToggle (line 130) | function NavToggle() {
function SmoothlyMenu (line 134) | function SmoothlyMenu() {
function localStorageSupport (line 292) | function localStorageSupport() {
FILE: material-manage/src/main/webapp/static/js/plugins/dataTables/jquery.dataTables.js
function _fnHungarianMap (line 272) | function _fnHungarianMap ( o )
function _fnCamelToHungarian (line 310) | function _fnCamelToHungarian ( src, user, force )
function _fnLanguageCompat (line 342) | function _fnLanguageCompat( oLanguage )
function _fnCompatOpts (line 384) | function _fnCompatOpts ( init )
function _fnCompatCols (line 405) | function _fnCompatCols ( init )
function _fnBrowserDetect (line 419) | function _fnBrowserDetect( settings )
function _fnAddColumn (line 472) | function _fnAddColumn( oSettings, nTh )
function _fnColumnOptions (line 524) | function _fnColumnOptions( oSettings, iCol, oOptions )
function _fnAdjustColumnSizing (line 622) | function _fnAdjustColumnSizing ( settings )
function _fnVisibleToColumnIndex (line 654) | function _fnVisibleToColumnIndex( oSettings, iMatch )
function _fnColumnIndexToVisible (line 672) | function _fnColumnIndexToVisible( oSettings, iMatch )
function _fnVisbleColumns (line 687) | function _fnVisbleColumns( oSettings )
function _fnGetColumns (line 701) | function _fnGetColumns( oSettings, sParam )
function _fnColumnTypes (line 715) | function _fnColumnTypes ( settings )
function _fnApplyColumnDefs (line 779) | function _fnApplyColumnDefs( oSettings, aoColDefs, aoCols, fn )
function _fnAddData (line 858) | function _fnAddData ( oSettings, aDataIn, nTr, anTds )
function _fnAddTr (line 906) | function _fnAddTr( settings, trs )
function _fnNodeToDataIndex (line 929) | function _fnNodeToDataIndex( oSettings, n )
function _fnNodeToColumnIndex (line 943) | function _fnNodeToColumnIndex( oSettings, iRow, n )
function _fnGetRowData (line 958) | function _fnGetRowData( oSettings, iRow, sSpecific, aiColumns )
function _fnGetCellData (line 978) | function _fnGetCellData( oSettings, iRow, iCol, sSpecific )
function _fnSetCellData (line 1023) | function _fnSetCellData( oSettings, iRow, iCol, val )
function _fnSplitObjNotation (line 1041) | function _fnSplitObjNotation( str )
function _fnGetObjectDataFn (line 1056) | function _fnGetObjectDataFn( mSource )
function _fnSetObjectDataFn (line 1176) | function _fnSetObjectDataFn( mSource )
function _fnGetDataMaster (line 1285) | function _fnGetDataMaster ( settings )
function _fnClearTable (line 1296) | function _fnClearTable( settings )
function _fnDeleteIndex (line 1311) | function _fnDeleteIndex( a, iTarget, splice )
function _fnInvalidateRow (line 1346) | function _fnInvalidateRow( settings, rowIdx, src, column )
function _fnGetRowElements (line 1397) | function _fnGetRowElements( settings, row )
function _fnCreateTr (line 1461) | function _fnCreateTr ( oSettings, iRow, nTrIn, anTds )
function _fnRowAttributes (line 1534) | function _fnRowAttributes( row )
function _fnBuildHead (line 1568) | function _fnBuildHead( oSettings )
function _fnDrawHead (line 1654) | function _fnDrawHead( oSettings, aoSource, bIncludeHidden )
function _fnDraw (line 1751) | function _fnDraw( oSettings )
function _fnReDraw (line 1890) | function _fnReDraw( settings, holdPosition )
function _fnAddOptionsHtml (line 1922) | function _fnAddOptionsHtml ( oSettings )
function _fnDetectHeader (line 2085) | function _fnDetectHeader ( aLayout, nThead )
function _fnGetUniqueThs (line 2160) | function _fnGetUniqueThs ( oSettings, nHeader, aLayout )
function _fnBuildAjax (line 2199) | function _fnBuildAjax( oSettings, data, fn )
function _fnAjaxUpdate (line 2313) | function _fnAjaxUpdate( oSettings )
function _fnAjaxParameters (line 2343) | function _fnAjaxParameters( settings )
function _fnAjaxUpdateDraw (line 2444) | function _fnAjaxUpdateDraw ( settings, json )
function _fnAjaxDataSrc (line 2494) | function _fnAjaxDataSrc ( oSettings, json )
function _fnFeatureHtmlFilter (line 2518) | function _fnFeatureHtmlFilter ( settings )
function _fnFilterComplete (line 2589) | function _fnFilterComplete ( oSettings, oInput, iForce )
function _fnFilterCustom (line 2638) | function _fnFilterCustom( oSettings )
function _fnFilterColumn (line 2676) | function _fnFilterColumn ( settings, searchStr, colIdx, regex, smart, ca...
function _fnFilter (line 2706) | function _fnFilter( settings, input, force, regex, smart, caseInsensitive )
function _fnFilterCreateSearch (line 2758) | function _fnFilterCreateSearch( sSearch, bRegex, bSmart, bCaseInsensitive )
function _fnEscapeRegex (line 2782) | function _fnEscapeRegex ( sVal )
function _fnFilterData (line 2795) | function _fnFilterData ( settings )
function _fnFeatureHtmlInfo (line 2855) | function _fnFeatureHtmlInfo ( settings )
function _fnUpdateInfo (line 2890) | function _fnUpdateInfo ( settings )
function _fnInfoMacros (line 2928) | function _fnInfoMacros ( settings, str )
function _fnInitialise (line 2955) | function _fnInitialise ( settings )
function _fnInitComplete (line 3036) | function _fnInitComplete ( settings, json )
function _fnLengthChange (line 3050) | function _fnLengthChange ( settings, val )
function _fnFeatureHtmlLength (line 3068) | function _fnFeatureHtmlLength ( settings )
function _fnFeatureHtmlPaginate (line 3128) | function _fnFeatureHtmlPaginate ( settings )
function _fnPageChange (line 3189) | function _fnPageChange ( settings, action, redraw )
function _fnFeatureHtmlProcessing (line 3260) | function _fnFeatureHtmlProcessing ( settings )
function _fnProcessingDisplay (line 3277) | function _fnProcessingDisplay ( settings, show )
function _fnFeatureHtmlTable (line 3292) | function _fnFeatureHtmlTable ( settings )
function _fnScrollDraw (line 3440) | function _fnScrollDraw ( settings )
function _fnApplyToChildren (line 3725) | function _fnApplyToChildren( fn, an1, an2 )
function _fnCalculateColumnWidths (line 3764) | function _fnCalculateColumnWidths ( oSettings )
function _fnThrottle (line 3928) | function _fnThrottle( fn ) {
function _fnConvertToWidth (line 3962) | function _fnConvertToWidth ( width, parent )
function _fnScrollingWidthAdjust (line 3986) | function _fnScrollingWidthAdjust ( settings, n )
function _fnGetWidestNode (line 4007) | function _fnGetWidestNode( settings, colIdx )
function _fnGetMaxLenString (line 4028) | function _fnGetMaxLenString( settings, colIdx )
function _fnStringToCss (line 4052) | function _fnStringToCss( s )
function _fnScrollBarWidth (line 4076) | function _fnScrollBarWidth ()
function _fnSortFlatten (line 4119) | function _fnSortFlatten ( settings )
function _fnSort (line 4187) | function _fnSort ( oSettings )
function _fnSortAria (line 4311) | function _fnSortAria ( settings )
function _fnSortListener (line 4362) | function _fnSortListener ( settings, colIdx, append, callback )
function _fnSortAttachListener (line 4428) | function _fnSortAttachListener ( settings, attachTo, colIdx, callback )
function _fnSortingClasses (line 4460) | function _fnSortingClasses( settings )
function _fnSortData (line 4493) | function _fnSortData( settings, idx )
function _fnSaveState (line 4536) | function _fnSaveState ( oSettings )
function _fnLoadState (line 4572) | function _fnLoadState ( oSettings, oInit )
function _fnSettingsFromNode (line 4644) | function _fnSettingsFromNode ( table )
function _fnLog (line 4663) | function _fnLog( settings, level, msg, tn )
function _fnMap (line 4699) | function _fnMap( ret, src, name, mappedName )
function _fnExtend (line 4741) | function _fnExtend( out, extender, breakRefs )
function _fnBindAction (line 4777) | function _fnBindAction( n, oData, fn )
function _fnCallbackReg (line 4804) | function _fnCallbackReg( oSettings, sStore, fn, sName )
function _fnCallbackFire (line 4830) | function _fnCallbackFire( settings, callbackArr, event, args )
function _fnLengthOverflow (line 4848) | function _fnLengthOverflow ( settings )
function _fnRenderer (line 4870) | function _fnRenderer( settings, type )
function _fnDataSource (line 4899) | function _fnDataSource ( settings )
function _fnExternApiFunc (line 5677) | function _fnExternApiFunc (fn)
function _numbers (line 13467) | function _numbers ( page, pages ) {
FILE: material-manage/src/main/webapp/static/js/plugins/layer/extend/layer.ext.js
function e (line 2) | function e(a,b,c){var d=new Image;d.onload=function(){d.onload=null,b(d)...
FILE: material-manage/src/main/webapp/static/js/plugins/webuploader/webuploader.custom.js
function Callbacks (line 164) | function Callbacks( once ) {
function Deferred (line 253) | function Deferred( func ) {
function uncurryThis (line 508) | function uncurryThis( fn ) {
function bindFn (line 514) | function bindFn( fn, context ) {
function createObject (line 520) | function createObject( proto ) {
function findHandlers (line 809) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 819) | function eachEvent( events, callback, iterator ) {
function triggerHanders (line 826) | function triggerHanders( events, args ) {
function Uploader (line 1035) | function Uploader( opts ) {
function Runtime (line 1233) | function Runtime( options ) {
function RuntimeClient (line 1365) | function RuntimeClient( component, standalone ) {
function Blob (line 1468) | function Blob( ruid, source ) {
function File (line 1518) | function File( ruid, file ) {
function FilePicker (line 1553) | function FilePicker( opts ) {
function isArrayLike (line 1688) | function isArrayLike( obj ) {
function Widget (line 1705) | function Widget( uploader ) {
function Image (line 2065) | function Image( opts ) {
function gid (line 2475) | function gid() {
function WUFile (line 2486) | function WUFile( source ) {
function Queue (line 2664) | function Queue() {
function Transport (line 3264) | function Transport( opts ) {
function CuteFile (line 3477) | function CuteFile( file, chunkSize ) {
function send (line 4275) | function send(data) {
function CompBase (line 4328) | function CompBase( owner, runtime ) {
function Html5Runtime (line 4360) | function Html5Runtime() {
function detectVerticalSquash (line 5388) | function detectVerticalSquash( img, iw, ih ) {
function detectSubsampling (line 5440) | function detectSubsampling( img ) {
function JPEGEncoder (line 5556) | function JPEGEncoder(quality) {
FILE: material-manage/src/main/webapp/static/js/plugins/webuploader/webuploader.fis.js
function uncurryThis (line 180) | function uncurryThis( fn ) {
function bindFn (line 186) | function bindFn( fn, context ) {
function createObject (line 192) | function createObject( proto ) {
function findHandlers (line 481) | function findHandlers( arr, name, callback, context ) {
function eachEvent (line 491) | function eachEvent( events, callback, iter
Condensed preview — 757 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (8,666K chars).
[
{
"path": ".gitignore",
"chars": 174,
"preview": "**/target\n.idea\n*.iml\nlog\n*.log\ndoc/.vuepress/dist\ndoc/node_modules\n备忘.md\n.classpath\n.factorypath\n.vscode\n.settings\n.pro"
},
{
"path": "CHANGELOG.md",
"chars": 389,
"preview": "# Change Log\n## latest\n- Fix 业务日志中如果获取不到字段值对应的中文名称则返回字段名本身,代替之前的null\n- Issue IN查询增加使用数组作为参数\n- Change 调整按钮样式\n- Issue Base"
},
{
"path": "LICENSE",
"chars": 1075,
"preview": "MIT License\n\nCopyright (c) 2019-present enilu.cn\n\nPermission is hereby granted, free of charge, to any person obtaining "
},
{
"path": "README.md",
"chars": 1965,
"preview": "\nEnglish | [简体中文](./README.zh-CN.md)\n## Introduction\n\n[materail-admin](https://github.com/enilu/material-admin) is a Mat"
},
{
"path": "README.zh-CN.md",
"chars": 1836,
"preview": "[English](./README.md) | 简体中文\n## 简介\n[material-admin](https://gitee.com/enilu/material-admin) 是一个通用的基础的后台管理系统,它基于[Spring "
},
{
"path": "doc/.vuepress/config.js",
"chars": 2888,
"preview": "module.exports = {\n title: 'Material Admin',\n description: '使用Material Admin快速构建web应用程序',\n base: '/material-adm"
},
{
"path": "doc/README.md",
"chars": 840,
"preview": "---\nhome: true\nheroImage: /logo.png\nactionText: 快速开始 →\nactionLink: /base/preface\nfooter: MIT Licensed | Copyright © 2018"
},
{
"path": "doc/action/cache.md",
"chars": 2093,
"preview": "# 缓存的应用\n对缓存的应用几乎成了系统的标配,material-admin中也有对缓存的应用。\n本章节介绍系统中缓存的设计和用法\n\n## 底层缓存支持\n- material-admin为了给上层应用提供缓存支持,提供了CacheDao接口"
},
{
"path": "doc/action/jpaauditing.md",
"chars": 2260,
"preview": "# 使用注解自动保存数据的维护时间和修改者\n\n\n通常来说,我们都有这样的需求:我需要知道库中的数据是由谁创建,什么时候创建,最后一次修改时间是什么时候,最后一次修改人是谁。\n\n在Spring jpa中可以通过在实体bean的属性或者方法上添"
},
{
"path": "doc/action/sqlite.md",
"chars": 1537,
"preview": "# 将数据库切换为sqlite\n\nsqlite和mysql兼容性比较好,使用master分支做很小的调整就可以支持sqlite。\n\n下面介绍如何将master分支经过简单调整将底层数据库从mysql切换为sqlite。\n\n## 数据库替换\n"
},
{
"path": "doc/action/task.md",
"chars": 2250,
"preview": "# 定时任务管理\n这两年做的项目和产品几乎多有定时任务管理的需求。\n常用的场景有:\n- 定时给用户发送一些消息\n- 定时进行一些报表的计算\n- 定时去指定的接口get一些数据\n- 定时降一些报表发送到指定的邮箱\n\n当然还有很多,没有必要一一"
},
{
"path": "doc/base/jdkAndMaven.md",
"chars": 682,
"preview": "# 开发前必读\n本章介绍本书所需要的一些准备工作. 请确保把各部分的准备工作完成\n\n本文档基于Intellij IDEA,Mysql,Maven,JDK8这四个基本工具,\n当然你也可以用Eclipse开发工具。\n\n**Jdk**\n\n- 请选"
},
{
"path": "doc/base/modules.md",
"chars": 296,
"preview": "# 基本包结构\n\n本节详细说明本项目的基本目录结构\n\n## material-admin模块\n\nmaterial-admin包含3个核心模块:\n- material-core 项目核心模块,包括实体层,dao层,service层,以及各种工"
},
{
"path": "doc/base/preface.md",
"chars": 1918,
"preview": "# 前言\n\n\n本文档以向导的方式引导用户使用material-admin系统做二次开发,\nmaterial-admin项目本身有readme文件,如果你有使用spring boot的和beetl的经验,那么基本上你是用不上本文档了,\n有什么"
},
{
"path": "doc/config/application.md",
"chars": 23,
"preview": "# application配置\n\n完善中..."
},
{
"path": "doc/config/beetl.md",
"chars": 19,
"preview": "# beetl模板配置\n\n完善中..."
},
{
"path": "doc/config/ehcache.md",
"chars": 21,
"preview": "# ehcache缓存配置\n\n完善中..."
},
{
"path": "doc/config/logback.md",
"chars": 16,
"preview": "# 日志输出配置\n\n完善中..."
},
{
"path": "doc/config/shiro.md",
"chars": 19,
"preview": "# shiro权限配置\n\n完善中..."
},
{
"path": "doc/config/swagger.md",
"chars": 23,
"preview": "# swagger在线文档配置\n\n完善中..."
},
{
"path": "doc/donate.md",
"chars": 114,
"preview": "\n::: tip Donate\n如果你觉得这个项目帮助到了你,你可以帮作者买一杯果汁表示鼓励\n:::\n\n<img src=\"./img/donate.jpg\" width = \"600\" align=center />\n"
},
{
"path": "doc/ecosystem/code-generator.md",
"chars": 1663,
"preview": "# 代码生成\n\n## 用法\n- 在material-core/pom.xml中添加依赖\n```xml\n <dependency>\n <groupId>cn.enilu</groupId>\n "
},
{
"path": "doc/ecosystem/database-doc-generator.md",
"chars": 1577,
"preview": "# 数据库文档生成器\n\n- 这是一个简单的小工具,可以根据数据库表结构生成数据库设计文档(格式包括markdown,html,word),支持数据库(MySQL,Oracle,PostgreSQL)\n- 如果你嫌PowerDesigner太"
},
{
"path": "doc/feature/dict.md",
"chars": 549,
"preview": "# 字典管理\n\n该模块提供了对各种枚举数据进行维护的功能。\n\n\n\n后台中常量工厂ConstantFactory封装了的对字典的常规功能。\n\n## 根据名称获取其所有字典列表\n\n使用场景,比如页面"
},
{
"path": "doc/feature/log.md",
"chars": 970,
"preview": "# 日志管理\n日志管理包括两方面:\n一个是后台用户登录日志的查看\n一个是业务日志查看,业务日志内容主要包含两方面:系统产生的异常和用户操作日志。\n\n\n\n## 登录日志\n用户登录系统和退出系统的时候会调用LogTaskFactory记录相关日"
},
{
"path": "doc/feature/menu.md",
"chars": 718,
"preview": "# 菜单管理\n\n菜单管理包含两部分:一个是左侧菜单树的维护,一个是页面操作功能(主要是按钮)的维护。\n不管是左侧菜单还是按钮,都需要在角色中进行配置才能正常显示出来。\n\n先看下菜单列表大致了解下菜单管理都维护哪些内容:\n\n"
},
{
"path": "doc/helloworld/add.md",
"chars": 2548,
"preview": "# add\n\n## 添加参数\n\n添加参数功能为点击“添加”按钮后调用对应的js代码逻辑弹出添加页面,在添加页面输入相关信息提交保存,保存成功后关闭弹窗,并刷新参数列表数据.\n\n### 添加按钮注册点击函数:\n\n```html\n @if(sh"
},
{
"path": "doc/helloworld/base.md",
"chars": 3605,
"preview": "# 基础代码\n\n## 实体Entity\n\n```java\npackage cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEnt"
},
{
"path": "doc/helloworld/create_table.md",
"chars": 616,
"preview": "# 建表\n比如我们要开发一个系统参数的管理功能,该功能主要对系统相关参数进行增删该查。\n\n~~建表语句如下:~~\n\n```sql\nCREATE TABLE `t_sys_cfg` (\n `id` bigint(64) NOT NULL A"
},
{
"path": "doc/helloworld/crud.md",
"chars": 366,
"preview": "# 简单的CRUD\n\n本章将手把手带你开发一个增删该查功能,包含从建表到代码(controller,service,dao,页面),到权限控制,以及一个相对复杂的查询。\n\n**PS** 其实真正开发中你完全可以使用代码生成工具一键生成这些功"
},
{
"path": "doc/helloworld/delete.md",
"chars": 1106,
"preview": "# delete\n\n## 针对要删除的数据点击行尾的删除按钮即弹出删除确认空,确认删除\n\n_cfg.js_\n```javascript\n {title: '操作',formatter:function(data,row){\n "
},
{
"path": "doc/helloworld/list.md",
"chars": 3570,
"preview": "# list\n\n## 列表页面\n列表页面包含分页(根据指定条件)查询数据列表,添加,修改,删除按钮\n列表页面针对:添加按钮做了权限控制,具体逻辑在下文再详细描述\n\n```html\n@layout(\"/common/layout.html\")"
},
{
"path": "doc/helloworld/menuAndPermission.md",
"chars": 736,
"preview": "# 添加菜单和分配权限\n现在功能已经开发完毕了,但是在页面上并不能使用这个功能;\n因为我没有给当前用不配置参数管理的权限。下面分两步骤启用参数管理功能\n\n- 在菜单管理中添加参数管理的功能,包括一个菜单项(点击链接进入列表页面)和一个个功能"
},
{
"path": "doc/helloworld/update.md",
"chars": 3007,
"preview": "# update\n\n参数修改逻辑为:\n- 点击参数名,打开编辑页面\n- 更改信息,提交修改\n- 关闭修改弹窗,并刷新列表页面\n\n## 列表页点击要修改的参数名,弹出修改页面\n\n\n```html\n {title: '参数名', field:"
},
{
"path": "doc/other/faq.md",
"chars": 220,
"preview": "# 常见问题\n\n## 本地开发正常,打包运行的时候提交中文内容乱码,检查了数据库编码也没问题?\n\n打包为jar包运行的时候可以指定运行时编码为UTF8:\n```\njava -Dfile.encoding=utf-8 -jar xxxxxxx"
},
{
"path": "doc/package.json",
"chars": 186,
"preview": "{\n \"scripts\": {\n \"docs:dev\": \"vuepress dev docs\",\n \"docs:build\": \"vuepress build docs\"\n },\n \"devDependencies\": "
},
{
"path": "doc/quickstart/clone.md",
"chars": 299,
"preview": "# 克隆本项目\n\n本项目地址为:[https://github.com/enilu/material-admin](https://github.com/enilu/material-admin),如果对你有用,欢迎给个star\n\n项目共两"
},
{
"path": "doc/quickstart/config.md",
"chars": 265,
"preview": "# 配置项目\n\n你已经下载项目,并且初始化好了数据库,那么接下来只需要更改相应的配置就可以运行该项目了\n\n- 更改src/resources/application-dev.properties配置:\n\n```properties\n## 开"
},
{
"path": "doc/quickstart/initDb.md",
"chars": 167,
"preview": "# 初始化数据\n\n本系统使用mysql数据库:\n\n- 在mysql中创建数据库 material\n\n```sql\nCREATE DATABASE IF NOT EXISTS material DEFAULT CHARSET utf8 COL"
},
{
"path": "doc/quickstart/quickstart.md",
"chars": 174,
"preview": "# 10分钟把项目跑起来\n\n## 真的10分钟吗?\n当然,如果你的网速给力,并且依赖的软件都下载安装好了,并且手速够快,是不是前置条件有点多?^_^\n\n\n## 本章知识点\n- [克隆项目](./clone.md)\n- [初始化数据](./i"
},
{
"path": "doc/quickstart/startup.md",
"chars": 330,
"preview": "# 启动项目\n\n- 右键直接运行 cn.enilu.material.admin.AdminApplication类即可启动material-manage后台管理系统\n- 系统默认是用8085端口,参考配置文件src/resources/a"
},
{
"path": "doc/resource.md",
"chars": 1389,
"preview": "# 资源\n本节会整理提供一些助于开发的相关资源文档,在开发过程中学会恰当的里用这些资源将会是开发过程如虎添翼,事半功倍!。\n\n\n## 前端\n### Material Admin\n- [https://www.sucaihuo.com/tem"
},
{
"path": "doc/文档完善中",
"chars": 0,
"preview": ""
},
{
"path": "material-core/pom.xml",
"chars": 5187,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\"\n xmlns:xsi=\"http://www"
},
{
"path": "material-core/src/main/java/cn/enilu/material/aop/LogAop.java",
"chars": 3935,
"preview": "package cn.enilu.material.aop;\n\nimport cn.enilu.material.bean.core.BussinessLog;\nimport cn.enilu.material.bean.core.Shir"
},
{
"path": "material-core/src/main/java/cn/enilu/material/aop/PermissionAop.java",
"chars": 2245,
"preview": "/**\n * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).\n * <p>\n * Licensed under the Apache License, Versi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/Const.java",
"chars": 575,
"preview": "package cn.enilu.material.bean.constant;\n\n/**\n * 系统常量\n *\n * @author fengshuonan\n * @date 2017年2月12日 下午9:42:53\n */\npublic"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/cache/Cache.java",
"chars": 252,
"preview": "package cn.enilu.material.bean.constant.cache;\n\n/**\n * 所有缓存名称的集合\n *\n * @author fengshuonan\n * @date 2017-04-24 21:56\n */"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/cache/CacheKey.java",
"chars": 656,
"preview": "package cn.enilu.material.bean.constant.cache;\n\n/**\n * 缓存的key集合\n *\n * @author fengshuonan\n * @date 2017-04-25 9:37\n */\np"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/factory/PageFactory.java",
"chars": 1532,
"preview": "package cn.enilu.material.bean.constant.factory;\n\nimport cn.enilu.material.bean.constant.state.Order;\nimport cn.enilu.ma"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/package-info.java",
"chars": 99,
"preview": "/**\n * Created on 2018/3/28 0028.\n *\n * @author enilu\n */\npackage cn.enilu.material.bean.constant;"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/BizLogType.java",
"chars": 1016,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 业务日志类型\n *\n * @author fengshuonan\n * @Date 2017年1月22日 下午12:14:59\n "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/LogSucceed.java",
"chars": 432,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 业务是否成功的日志记录\n *\n * @author fengshuonan\n * @Date 2017年1月22日 下午12:14"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/LogType.java",
"chars": 493,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 日志类型\n *\n * @author fengshuonan\n * @Date 2017年1月22日 下午12:14:59\n */"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/ManagerStatus.java",
"chars": 967,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 管理员的状态\n *\n * @author fengshuonan\n * @Date 2017年1月10日 下午9:54:13\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/MenuStatus.java",
"chars": 944,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 菜单的状态\n *\n * @author fengshuonan\n * @Date 2017年1月22日 下午12:14:59\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/constant/state/Order.java",
"chars": 376,
"preview": "package cn.enilu.material.bean.constant.state;\n\n/**\n * 数据库排序\n *\n * @author fengshuonan\n * @Date 2017年5月31日20:48:41\n */\np"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/core/BussinessLog.java",
"chars": 644,
"preview": "package cn.enilu.material.bean.core;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\nimport cn.enilu.materi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/core/Permission.java",
"chars": 482,
"preview": "package cn.enilu.material.bean.core;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Inherited;\nim"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/core/ShiroUser.java",
"chars": 2310,
"preview": "package cn.enilu.material.bean.core;\n\nimport cn.enilu.material.bean.entity.system.User;\nimport cn.enilu.material.bean.vo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/CfgDict.java",
"chars": 385,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 字典map\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/CommonDict.java",
"chars": 419,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\npublic class Commo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/DeleteDict.java",
"chars": 798,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 用于删除业务的字典\n "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/DeptDict.java",
"chars": 650,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 部门的映射\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/DictMap.java",
"chars": 421,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 字典map\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/LogDict.java",
"chars": 351,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 日志的字典\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/MenuDict.java",
"chars": 688,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 菜单的字典\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/NoticeMap.java",
"chars": 384,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 通知的映射\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/RoleDict.java",
"chars": 764,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 角色的字典\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/SystemDict.java",
"chars": 331,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 系统相关的字典\n *\n"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/TaskDict.java",
"chars": 384,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 字典map\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/UserDict.java",
"chars": 945,
"preview": "package cn.enilu.material.bean.dictmap;\n\nimport cn.enilu.material.bean.dictmap.base.AbstractDictMap;\n\n/**\n * 用户的字典\n *\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dictmap/base/AbstractDictMap.java",
"chars": 1155,
"preview": "package cn.enilu.material.bean.dictmap.base;\n\nimport java.util.HashMap;\n\n/**\n * 字典映射抽象类\n *\n * @author fengshuonan\n * @da"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/dto/UserDto.java",
"chars": 662,
"preview": "package cn.enilu.material.bean.dto;\n\nimport lombok.Data;\nimport org.springframework.format.annotation.DateTimeFormat;\n\ni"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/BaseEntity.java",
"chars": 1178,
"preview": "package cn.enilu.material.bean.entity;\n\nimport lombok.Data;\nimport org.springframework.data.annotation.CreatedBy;\nimport"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/message/Message.java",
"chars": 898,
"preview": "package cn.enilu.material.bean.entity.message;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageSender.java",
"chars": 818,
"preview": "package cn.enilu.material.bean.entity.message;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/message/MessageTemplate.java",
"chars": 1505,
"preview": "package cn.enilu.material.bean.entity.message;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Cfg.java",
"chars": 999,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Dept.java",
"chars": 838,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Dict.java",
"chars": 821,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/FileInfo.java",
"chars": 483,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\n\nimp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/LoginLog.java",
"chars": 873,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport lombok.Data;\nimport org.hibernate.annotations.CreationTimestamp;\ni"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Menu.java",
"chars": 1030,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Notice.java",
"chars": 693,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/OperationLog.java",
"chars": 893,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport lombok.Data;\nimport org.hibernate.annotations.Table;\n\nimport javax"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Relation.java",
"chars": 547,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport lombok.Data;\nimport org.hibernate.annotations.Table;\n\nimport javax"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Role.java",
"chars": 792,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/Task.java",
"chars": 1706,
"preview": "package cn.enilu.material.bean.entity.system;\n\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/TaskLog.java",
"chars": 994,
"preview": "package cn.enilu.material.bean.entity.system;\n\n\nimport lombok.Data;\nimport org.hibernate.annotations.Table;\n\nimport java"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/system/User.java",
"chars": 1103,
"preview": "package cn.enilu.material.bean.entity.system;\n\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/entity/test/Boy.java",
"chars": 731,
"preview": "package cn.enilu.material.bean.entity.test;\nimport cn.enilu.material.bean.entity.BaseEntity;\nimport lombok.Data;\nimport "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/BizExceptionEnum.java",
"chars": 1704,
"preview": "package cn.enilu.material.bean.enumeration;\n\nimport cn.enilu.material.bean.exception.ServiceExceptionEnum;\n\n/**\n * @Desc"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/ConfigKeyEnum.java",
"chars": 648,
"preview": "package cn.enilu.material.bean.enumeration;\n\npublic enum ConfigKeyEnum {\n\n SYSTEM_FILE_UPLOAD_PATH(\"system.file.uploa"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/ProjectEnum.java",
"chars": 369,
"preview": "package cn.enilu.material.bean.enumeration;\n\n/**\n * Created by deanyule on 17/8/16.\n */\npublic enum ProjectEnum {\n\n S"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/RedisQueueName.java",
"chars": 433,
"preview": "package cn.enilu.material.bean.enumeration;\n\n/**\n * redis队列名称\n * Created by zt on 2017/8/25 0015.\n */\npublic enum RedisQ"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/SerialNumberEnum.java",
"chars": 2341,
"preview": "package cn.enilu.material.bean.enumeration;\n\n/**\n * Created by deanyule on 17/4/13.\n * 系统各种编号枚举\n */\npublic enum SerialNu"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/TypeEnum.java",
"chars": 4158,
"preview": "package cn.enilu.material.bean.enumeration;\n\npublic class TypeEnum {\n\n\t/**\n\t * 输入数据的html类型\n\t */\n\tpublic enum DataItemSho"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/BannerTypeEnum.java",
"chars": 346,
"preview": "package cn.enilu.material.bean.enumeration.cms;\n\npublic enum BannerTypeEnum {\n\n INDEX(\"index\"),\n NEWS(\"news\"),\n "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/enumeration/cms/ChannelEnum.java",
"chars": 431,
"preview": "package cn.enilu.material.bean.enumeration.cms;\n\npublic enum ChannelEnum {\n\n NEWS(1L,\"news\"),\n PRODUCT(2L,\"product"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/ApplicationException.java",
"chars": 720,
"preview": "package cn.enilu.material.bean.exception;\n\n/**\n * 封装异常\n *\n * @author fengshuonan\n * @Date 2017/12/28 下午10:32\n */\npublic "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/ExceptionEnum.java",
"chars": 923,
"preview": "package cn.enilu.material.bean.exception;\n\n/**\n * 异常枚举\n *\n * @author fengshuonan\n * @Date 2017/12/28 下午10:33\n */\npublic "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/InvalidKaptchaException.java",
"chars": 180,
"preview": "package cn.enilu.material.bean.exception;\n\n/**\n * 验证码错误异常\n *\n * @author fengshuonan\n * @date 2017-05-05 23:52\n */\npublic"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/MailException.java",
"chars": 216,
"preview": "package cn.enilu.material.bean.exception;\n\npublic class MailException extends Exception {\n\n\tpublic MailException(String "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/ParamException.java",
"chars": 219,
"preview": "package cn.enilu.material.bean.exception;\n\npublic class ParamException extends Exception {\n\n\tpublic ParamException(Strin"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/ServiceExceptionEnum.java",
"chars": 265,
"preview": "package cn.enilu.material.bean.exception;\n\n/**\n * 抽象接口\n *\n * @author fengshuonan\n * @date 2017-12-28-下午10:27\n */\npublic "
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/SlConnectException.java",
"chars": 550,
"preview": "package cn.enilu.material.bean.exception;\n\nimport java.util.List;\n\npublic class SlConnectException extends Exception {\n\n"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/SlEvalException.java",
"chars": 546,
"preview": "package cn.enilu.material.bean.exception;\n\nimport java.util.List;\n\npublic class SlEvalException extends Exception {\n\n\tpr"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/ValidException.java",
"chars": 226,
"preview": "package cn.enilu.material.bean.exception;\n\npublic class ValidException extends RuntimeException {\n\n\tpublic ValidExceptio"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/XSException.java",
"chars": 461,
"preview": "package cn.enilu.material.bean.exception;\n\n/**\n * 定义通用异常\n * code 存储异常代码\n * @author czhou\n */\npublic class XSException ex"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/exception/XSRuntimeException.java",
"chars": 267,
"preview": "package cn.enilu.material.bean.exception;\n\n@SuppressWarnings(\"serial\")\npublic class XSRuntimeException extends RuntimeEx"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/DictVo.java",
"chars": 569,
"preview": "package cn.enilu.material.bean.vo;\n\n/**\n * DictVo\n *\n * @author enilu\n * @version 2018/8/14 0014\n */\npublic class DictVo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/QuartzJob.java",
"chars": 557,
"preview": "package cn.enilu.material.bean.vo;\n\nimport lombok.Getter;\nimport lombok.Setter;\n\nimport java.io.Serializable;\nimport jav"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/SpringContextHolder.java",
"chars": 1423,
"preview": "package cn.enilu.material.bean.vo;\n\nimport org.springframework.beans.BeansException;\nimport org.springframework.context."
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/front/Ret.java",
"chars": 814,
"preview": "package cn.enilu.material.bean.vo.front;\n\nimport lombok.Getter;\nimport lombok.Setter;\n\n@Getter\n@Setter\npublic class Ret<"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/front/Rets.java",
"chars": 606,
"preview": "package cn.enilu.material.bean.vo.front;\n\npublic class Rets {\n\n public static final Integer SUCCESS = 20000;\n publ"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/node/DeptNode.java",
"chars": 480,
"preview": "package cn.enilu.material.bean.vo.node;\n\nimport cn.enilu.material.bean.entity.system.Dept;\n\nimport java.util.ArrayList;\n"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/node/IsMenu.java",
"chars": 921,
"preview": "package cn.enilu.material.bean.vo.node;\n\n/**\n * 是否是菜单的枚举\n *\n * @author fengshuonan\n * @date 2017年6月1日22:50:11\n */\npublic"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/node/MenuNode.java",
"chars": 7537,
"preview": "package cn.enilu.material.bean.vo.node;\n\n\nimport java.io.Serializable;\nimport java.util.ArrayList;\nimport java.util.Coll"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/node/Node.java",
"chars": 359,
"preview": "package cn.enilu.material.bean.vo.node;\n\nimport lombok.Data;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n *"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/node/ZTreeNode.java",
"chars": 1508,
"preview": "package cn.enilu.material.bean.vo.node;\n\n/**\n * \n * jquery ztree 插件的节点\n * \n * @author fengshuonan\n * @date 2017年2月17日 下午"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/query/DynamicSpecifications.java",
"chars": 3587,
"preview": "package cn.enilu.material.bean.vo.query;\n\nimport cn.enilu.material.utils.Lists;\nimport org.apache.commons.lang3.StringUt"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/query/MutiStrFactory.java",
"chars": 2472,
"preview": "package cn.enilu.material.bean.vo.query;\n\n\nimport cn.enilu.material.utils.ToolUtil;\nimport cn.enilu.material.utils.StrKi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/query/Page.java",
"chars": 7425,
"preview": "package cn.enilu.material.bean.vo.query;\n\nimport cn.enilu.material.utils.Lists;\nimport cn.enilu.material.utils.StringUti"
},
{
"path": "material-core/src/main/java/cn/enilu/material/bean/vo/query/SearchFilter.java",
"chars": 2041,
"preview": "package cn.enilu.material.bean.vo.query;\n\nimport cn.enilu.material.utils.Maps;\nimport org.apache.commons.lang3.StringUti"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/BaseRepository.java",
"chars": 950,
"preview": "package cn.enilu.material.dao;\n\nimport cn.enilu.material.bean.vo.query.SearchFilter;\nimport org.springframework.data.jpa"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryFactoryBean.java",
"chars": 2315,
"preview": "package cn.enilu.material.dao;\n\nimport org.springframework.data.jpa.repository.JpaRepository;\nimport org.springframework"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/BaseRepositoryImpl.java",
"chars": 2474,
"preview": "package cn.enilu.material.dao;\n\nimport cn.enilu.material.bean.vo.query.SearchFilter;\nimport org.hibernate.SQLQuery;\nimpo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/DaoConfiguration.java",
"chars": 365,
"preview": "package cn.enilu.material.dao;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/BaseCache.java",
"chars": 397,
"preview": "package cn.enilu.material.dao.cache;\n\n\nimport cn.enilu.material.bean.vo.SpringContextHolder;\nimport cn.enilu.material.se"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/Cache.java",
"chars": 300,
"preview": "package cn.enilu.material.dao.cache;\n\n/**\n * 顶级缓存接口\n */\npublic interface Cache {\n\t/**\n\t * 将数据库中的数据加载到缓存中\n\t */\n\tvoid cach"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/CacheDao.java",
"chars": 1026,
"preview": "package cn.enilu.material.dao.cache;\n\nimport java.io.Serializable;\n\n/**\n * CacheDao\n *\n * @author enilu\n * @version 2018"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/ConfigCache.java",
"chars": 441,
"preview": "package cn.enilu.material.dao.cache;\n\n/**\n * 全局配置数据访问\n */\npublic interface ConfigCache extends Cache {\n\n\n\t/**\n\t * 获取全局配置"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/DictCache.java",
"chars": 302,
"preview": "package cn.enilu.material.dao.cache;\n\nimport cn.enilu.material.bean.entity.system.Dict;\n\nimport java.util.List;\n\n/**\n * "
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/TokenCache.java",
"chars": 1127,
"preview": "package cn.enilu.material.dao.cache;\n\nimport cn.enilu.material.bean.core.ShiroUser;\nimport cn.enilu.material.dao.cache.i"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/impl/ConfigCacheImpl.java",
"chars": 2171,
"preview": "package cn.enilu.material.dao.cache.impl;\n\nimport cn.enilu.material.bean.entity.system.Cfg;\nimport cn.enilu.material.dao"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/impl/DictCacheImpl.java",
"chars": 1881,
"preview": "package cn.enilu.material.dao.cache.impl;\n\nimport cn.enilu.material.bean.constant.cache.CacheKey;\nimport cn.enilu.materi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/impl/EhcacheDao.java",
"chars": 1913,
"preview": "package cn.enilu.material.dao.cache.impl;\n\nimport cn.enilu.material.dao.cache.CacheDao;\nimport org.springframework.cache"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/cache/package-info.java",
"chars": 107,
"preview": "/**\n * package-info\n *\n * @version 2018/9/11 0011\n * @author enilu\n */\npackage cn.enilu.material.dao.cache;"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/message/MessageRepository.java",
"chars": 298,
"preview": "package cn.enilu.material.dao.message;\n\n\nimport cn.enilu.material.bean.entity.message.Message;\nimport cn.enilu.material."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/message/MessagesenderRepository.java",
"chars": 237,
"preview": "package cn.enilu.material.dao.message;\n\n\nimport cn.enilu.material.bean.entity.message.MessageSender;\nimport cn.enilu.mat"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/message/MessagetemplateRepository.java",
"chars": 385,
"preview": "package cn.enilu.material.dao.message;\n\n\n\nimport cn.enilu.material.bean.entity.message.MessageTemplate;\nimport cn.enilu."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/CfgRepository.java",
"chars": 242,
"preview": "\npackage cn.enilu.material.dao.system;\n\nimport cn.enilu.material.bean.entity.system.Cfg;\nimport cn.enilu.material.dao.Ba"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/DeptRepository.java",
"chars": 660,
"preview": "package cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.Dept;\nimport cn.enilu.material.dao.B"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/DictRepository.java",
"chars": 367,
"preview": "\npackage cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.Dict;\nimport cn.enilu.material.dao."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/FileInfoRepository.java",
"chars": 466,
"preview": "package cn.enilu.material.dao.system;\n\nimport cn.enilu.material.bean.entity.system.FileInfo;\nimport org.springframework."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/LoginLogRepository.java",
"chars": 275,
"preview": "package cn.enilu.material.dao.system;\n\nimport cn.enilu.material.bean.entity.system.LoginLog;\nimport cn.enilu.material.da"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/MenuRepository.java",
"chars": 2973,
"preview": "package cn.enilu.material.dao.system;\n\nimport cn.enilu.material.bean.entity.system.Menu;\nimport cn.enilu.material.dao.Ba"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/OperationLogRepository.java",
"chars": 566,
"preview": "package cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.OperationLog;\nimport cn.enilu.materi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/RelationRepository.java",
"chars": 608,
"preview": "package cn.enilu.material.dao.system;\n\nimport cn.enilu.material.bean.entity.system.Relation;\nimport cn.enilu.material.da"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/RoleRepository.java",
"chars": 963,
"preview": "package cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.Role;\nimport cn.enilu.material.dao.B"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/SysNoticeRepository.java",
"chars": 345,
"preview": "package cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.Notice;\nimport cn.enilu.material.dao"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/TaskLogRepository.java",
"chars": 471,
"preview": "\npackage cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.TaskLog;\nimport org.springframework"
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/TaskRepository.java",
"chars": 368,
"preview": "\npackage cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.Task;\nimport cn.enilu.material.dao."
},
{
"path": "material-core/src/main/java/cn/enilu/material/dao/system/UserRepository.java",
"chars": 374,
"preview": "package cn.enilu.material.dao.system;\n\n\nimport cn.enilu.material.bean.entity.system.User;\nimport cn.enilu.material.dao.B"
},
{
"path": "material-core/src/main/java/cn/enilu/material/factory/DictFieldWarpperFactory.java",
"chars": 1369,
"preview": "package cn.enilu.material.factory;\n\nimport cn.enilu.material.bean.enumeration.BizExceptionEnum;\nimport cn.enilu.material"
},
{
"path": "material-core/src/main/java/cn/enilu/material/factory/UserFactory.java",
"chars": 1114,
"preview": "package cn.enilu.material.factory;\n\nimport cn.enilu.material.bean.dto.UserDto;\nimport cn.enilu.material.bean.entity.syst"
},
{
"path": "material-core/src/main/java/cn/enilu/material/platform/package-info.java",
"chars": 106,
"preview": "/**\n * package-info\n *\n * @version 2018/9/11 0011\n * @author enilu\n */\npackage cn.enilu.material.platform;"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/BaseService.java",
"chars": 4792,
"preview": "package cn.enilu.material.service;\n\nimport cn.enilu.material.bean.constant.cache.Cache;\nimport cn.enilu.material.bean.vo"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/CrudService.java",
"chars": 266,
"preview": "package cn.enilu.material.service;\n\n/**\n *\n * @author :enilu\n * @date :Created in 2019/6/29 22:31\n */\npublic interface C"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/DeleteService.java",
"chars": 371,
"preview": "package cn.enilu.material.service;\n\n/**\n *\n * @author :enilu\n * @date :Created in 2019/6/29 22:29\n */\npublic interface D"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/InsertService.java",
"chars": 258,
"preview": "package cn.enilu.material.service;\n\n/**\n *\n * @author :enilu\n * @date :Created in 2019/6/29 22:28\n */\npublic interface I"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/SelectService.java",
"chars": 2039,
"preview": "package cn.enilu.material.service;\n\nimport cn.enilu.material.bean.vo.query.SearchFilter;\nimport cn.enilu.material.bean.v"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/UpdateService.java",
"chars": 257,
"preview": "package cn.enilu.material.service;\n\n/**\n *\n * @author :enilu\n * @date :Created in 2019/6/29 22:30\n */\npublic interface U"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/MessageService.java",
"chars": 8329,
"preview": "package cn.enilu.material.service.message;\n\n\nimport cn.enilu.material.bean.entity.message.Message;\nimport cn.enilu.mater"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/MessagesenderService.java",
"chars": 1552,
"preview": "package cn.enilu.material.service.message;\n\n\nimport cn.enilu.material.bean.entity.message.MessageSender;\nimport cn.enilu"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/MessagetemplateService.java",
"chars": 467,
"preview": "package cn.enilu.material.service.message;\n\nimport cn.enilu.material.bean.entity.message.MessageTemplate;\nimport cn.enil"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/email/DefaultEmailSender.java",
"chars": 1701,
"preview": "package cn.enilu.material.service.message.email;\n\nimport cn.enilu.material.utils.StringUtils;\nimport org.springframework"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/email/EmailSender.java",
"chars": 800,
"preview": "package cn.enilu.material.service.message.email;\n\nimport org.springframework.core.io.InputStreamSource;\n\n/**\n * 邮件发送接口\n "
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/sms/SmsSender.java",
"chars": 327,
"preview": "package cn.enilu.material.service.message.sms;\n\npublic interface SmsSender {\n\n /**\n * 发送短信,如果内容content不为空,则直接发送内容"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/message/sms/tencent/TencentSmsSender.java",
"chars": 1875,
"preview": "package cn.enilu.material.service.message.sms.tencent;\n\nimport cn.enilu.material.bean.enumeration.ConfigKeyEnum;\nimport "
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/AccountService.java",
"chars": 2121,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.core.ShiroUser;\nimport cn.enilu.material.bean.e"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/CfgService.java",
"chars": 867,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.Cfg;\nimport cn.enilu.material.dao"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/DeptService.java",
"chars": 3607,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.Dept;\nimport cn.enilu.material.be"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/DictService.java",
"chars": 2753,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.Dict;\nimport cn.enilu.material.da"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/FileService.java",
"chars": 3535,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.FileInfo;\nimport cn.enilu.materia"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/IConstantFactory.java",
"chars": 2747,
"preview": "package cn.enilu.material.service.system;\n\n\nimport cn.enilu.material.bean.entity.system.*;\nimport cn.enilu.material.bean"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/LogObjectHolder.java",
"chars": 804,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.vo.SpringContextHolder;\nimport org.springframew"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/LoginLogService.java",
"chars": 403,
"preview": "package cn.enilu.material.service.system;\n\n\nimport cn.enilu.material.bean.entity.system.LoginLog;\nimport cn.enilu.materi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/MenuService.java",
"chars": 8531,
"preview": "package cn.enilu.material.service.system;\n\n\nimport cn.enilu.material.bean.entity.system.Menu;\nimport cn.enilu.material.b"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/NoticeService.java",
"chars": 679,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.Notice;\nimport cn.enilu.material."
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/OperationLogService.java",
"chars": 423,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.entity.system.OperationLog;\nimport cn.enilu.mat"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/RoleService.java",
"chars": 4113,
"preview": "package cn.enilu.material.service.system;\n\n\nimport cn.enilu.material.bean.entity.system.Relation;\nimport cn.enilu.materi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/UserService.java",
"chars": 2926,
"preview": "package cn.enilu.material.service.system;\n\nimport cn.enilu.material.bean.constant.Const;\nimport cn.enilu.material.bean.e"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/system/impl/ConstantFactory.java",
"chars": 11858,
"preview": "package cn.enilu.material.service.system.impl;\n\nimport cn.enilu.material.bean.constant.cache.CacheKey;\nimport cn.enilu.m"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/BaseJob.java",
"chars": 629,
"preview": "package cn.enilu.material.service.task;\n\nimport cn.enilu.material.bean.vo.QuartzJob;\nimport org.quartz.Job;\nimport org.q"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/JobExecuter.java",
"chars": 2774,
"preview": "package cn.enilu.material.service.task;\n\nimport cn.enilu.material.bean.entity.system.Task;\nimport cn.enilu.material.bean"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/JobService.java",
"chars": 5668,
"preview": "package cn.enilu.material.service.task;\n\nimport cn.enilu.material.bean.entity.system.Task;\nimport cn.enilu.material.bean"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/NoConurrentBaseJob.java",
"chars": 230,
"preview": "package cn.enilu.material.service.task;\n\nimport org.quartz.DisallowConcurrentExecution;\nimport org.springframework.stere"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/QuartzConfigration.java",
"chars": 448,
"preview": "package cn.enilu.material.service.task;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework."
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/TaskService.java",
"chars": 4627,
"preview": "package cn.enilu.material.service.task;\n\n\nimport cn.enilu.material.bean.entity.system.Task;\nimport cn.enilu.material.bea"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/TaskUtils.java",
"chars": 1585,
"preview": "package cn.enilu.material.service.task;\n\nimport cn.enilu.material.bean.vo.QuartzJob;\nimport cn.enilu.material.bean.vo.Sp"
},
{
"path": "material-core/src/main/java/cn/enilu/material/service/task/job/HelloJob.java",
"chars": 981,
"preview": "package cn.enilu.material.service.task.job;\n\nimport cn.enilu.material.bean.entity.system.Cfg;\nimport cn.enilu.material.s"
},
{
"path": "material-core/src/main/java/cn/enilu/material/shiro/ShiroDbRealm.java",
"chars": 2862,
"preview": "package cn.enilu.material.shiro;\n\nimport cn.enilu.material.bean.core.ShiroUser;\nimport cn.enilu.material.bean.entity.sys"
},
{
"path": "material-core/src/main/java/cn/enilu/material/shiro/ShiroKit.java",
"chars": 7438,
"preview": "/**\n * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).\n * <p>\n * Licensed under the Apache License, Versi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/shiro/check/ICheck.java",
"chars": 926,
"preview": "/**\n * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).\n * <p>\n * Licensed under the Apache License, Versi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/shiro/check/PermissionCheckFactory.java",
"chars": 2349,
"preview": "/**\n * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).\n * <p>\n * Licensed under the Apache License, Versi"
},
{
"path": "material-core/src/main/java/cn/enilu/material/shiro/check/PermissionCheckManager.java",
"chars": 1544,
"preview": "/**\n * Copyright (c) 2015-2017, Chill Zhuang 庄骞 (smallchill@163.com).\n * <p>\n * Licensed under the Apache License, Versi"
}
]
// ... and 557 more files (download for full content)
About this extraction
This page contains the full source code of the enilu/material-admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 757 files (7.6 MB), approximately 2.0M tokens, and a symbol index with 3310 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.