From 8c4fd97ef6af1b6eedc255837c398eeb814cf042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=9D=B0?= Date: Sun, 20 Jan 2019 19:25:00 +0800 Subject: [PATCH] =?UTF-8?q?v1.5=20beta=E7=89=88=E5=8F=91=E5=B8=83=EF=BC=8C?= =?UTF-8?q?=E8=AF=A6=E7=BB=86=E6=9F=A5=E7=9C=8B=E5=8F=91=E8=A1=8C=E7=89=88?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 27 +- README.md | 53 +-- eladmin-common/eladmin-common.iml | 135 +++++++ eladmin-common/pom.xml | 14 + .../java/me/zhengjie}/aop/limit/Limit.java | 4 +- .../java/me/zhengjie/aspect}/LimitAspect.java | 17 +- .../java/me/zhengjie/aspect}/LimitType.java | 2 +- .../exception/BadRequestException.java | 2 +- .../exception/EntityExistException.java | 2 +- .../exception/EntityNotFoundException.java | 2 +- .../zhengjie}/exception/handler/ApiError.java | 3 +- .../handler/GlobalExceptionHandler.java | 16 +- .../me/zhengjie}/mapper/EntityMapper.java | 2 +- .../redis/FastJsonRedisSerializer.java | 3 +- .../java/me/zhengjie}/redis/RedisConfig.java | 35 +- .../redis/StringRedisSerializer.java | 3 +- .../me/zhengjie}/swagger2/SwaggerConfig.java | 14 +- .../me/zhengjie}/utils/ElAdminConstant.java | 6 +- .../java/me/zhengjie}/utils/EncryptUtils.java | 3 +- .../java/me/zhengjie}/utils/FileUtil.java | 7 +- .../java/me/zhengjie/utils/ListSortUtil.java | 51 +++ .../java/me/zhengjie}/utils/PageUtil.java | 19 +- .../me/zhengjie}/utils/RequestHolder.java | 2 +- .../zhengjie/utils/SecurityContextHolder.java | 24 ++ .../zhengjie}/utils/SpringContextHolder.java | 2 +- .../java/me/zhengjie}/utils/StringUtils.java | 126 ++----- .../me/zhengjie/utils/ThreadPoolUtil.java | 4 +- .../me/zhengjie}/utils/ThrowableUtil.java | 4 +- .../me/zhengjie}/utils/ValidationUtil.java | 6 +- eladmin-generator/eladmin-generator.iml | 141 ++++++++ eladmin-generator/pom.xml | 38 ++ .../java/me/zhengjie/domain/GenConfig.java | 39 ++ .../me/zhengjie/domain/vo/ColumnInfo.java | 37 ++ .../java/me/zhengjie/domain/vo/TableInfo.java | 22 ++ .../repository/GenConfigRepository.java | 11 + .../me/zhengjie/rest/GenConfigController.java | 35 ++ .../me/zhengjie/rest/GeneratorController.java | 70 ++++ .../me/zhengjie/service/GenConfigService.java | 28 ++ .../me/zhengjie/service/GeneratorService.java | 35 ++ .../service/impl/GenConfigServiceImpl.java | 35 ++ .../service/impl/GeneratorServiceImpl.java | 78 ++++ .../main/java/me/zhengjie/utils/ColUtil.java | 34 ++ .../main/java/me/zhengjie/utils/GenUtil.java | 243 +++++++++++++ eladmin-logging/eladmin-logging.iml | 136 +++++++ eladmin-logging/pom.xml | 21 ++ .../main/java/me/zhengjie}/aop/log/Log.java | 4 +- .../java/me/zhengjie/aspect}/LogAspect.java | 27 +- .../src/main/java/me/zhengjie/domain/Log.java | 11 +- .../me/zhengjie/repository/LogRepository.java | 8 +- .../java/me/zhengjie/rest/LogController.java | 38 ++ .../java/me/zhengjie/service/LogService.java | 10 +- .../zhengjie/service/impl/LogServiceImpl.java | 53 ++- .../service/query/LogQueryService.java | 38 +- eladmin-system/eladmin-system.iml | 165 +++++++++ eladmin-system/pom.xml | 68 ++++ {sql => eladmin-system/sql}/eladmin.sql | 335 ++++++++++-------- .../src}/main/java/me/zhengjie/AppRun.java | 2 +- .../me/zhengjie/config/ConfigurerAdapter.java | 18 +- .../modules}/monitor/config/LogFilter.java | 5 +- .../modules}/monitor/config/LoggerQueue.java | 14 +- .../monitor/config/VisitsInitialization.java | 5 +- .../monitor/config/WebSocketConfig.java | 8 +- .../modules}/monitor/domain/LogMessage.java | 2 +- .../modules}/monitor/domain/Visits.java | 4 +- .../modules}/monitor/domain/vo/RedisVo.java | 2 +- .../monitor/repository/VisitsRepository.java | 7 +- .../modules/monitor/rest/LimitController.java | 15 +- .../monitor/rest/RedisController.java | 18 +- .../monitor/rest/VisitsController.java | 6 +- .../monitor/service/RedisService.java | 4 +- .../monitor/service/VisitsService.java | 2 +- .../service/impl/RedisServiceImpl.java | 11 +- .../service/impl/VisitsServiceImpl.java | 18 +- .../modules}/quartz/config/JobRunner.java | 8 +- .../modules}/quartz/config/QuartzConfig.java | 2 +- .../modules}/quartz/domain/QuartzJob.java | 5 +- .../modules}/quartz/domain/QuartzLog.java | 6 +- .../repository/QuartzJobRepository.java | 4 +- .../repository/QuartzLogRepository.java | 4 +- .../quartz/rest/QuartzJobController.java | 28 +- .../quartz/service/QuartzJobService.java | 8 +- .../service/impl/QuartzJobServiceImpl.java | 15 +- .../service/query/QuartzJobQueryService.java | 8 +- .../service/query/QuartzLogQueryService.java | 8 +- .../modules}/quartz/task/TestTask.java | 2 +- .../modules}/quartz/task/VisitsTask.java | 4 +- .../modules}/quartz/utils/ExecutionJob.java | 14 +- .../modules}/quartz/utils/QuartzManage.java | 23 +- .../modules}/quartz/utils/QuartzRunnable.java | 6 +- .../security/config/SecurityConfig.java | 11 +- .../rest/AuthenticationController.java | 30 +- .../security/AuthenticationToken.java | 3 +- .../security}/security/AuthorizationUser.java | 2 +- .../security/JwtAuthenticationEntryPoint.java | 2 +- .../security/JwtAuthorizationTokenFilter.java | 20 +- .../modules/security}/security/JwtUser.java | 7 +- .../service/JwtUserDetailsService.java | 27 +- .../modules/security}/utils/JwtTokenUtil.java | 27 +- .../zhengjie/modules}/system/domain/Menu.java | 4 +- .../modules}/system/domain/Permission.java | 4 +- .../zhengjie/modules}/system/domain/Role.java | 5 +- .../zhengjie/modules}/system/domain/User.java | 13 +- .../modules}/system/domain/vo/MenuMetaVo.java | 2 +- .../modules}/system/domain/vo/MenuVo.java | 3 +- .../system/repository/MenuRepository.java | 6 +- .../repository/PermissionRepository.java | 6 +- .../system/repository/RoleRepository.java | 4 +- .../system/repository/UserRepository.java | 10 +- .../modules}/system/rest/MenuController.java | 38 +- .../system/rest/PermissionController.java | 22 +- .../modules}/system/rest/RoleController.java | 22 +- .../modules}/system/rest/UserController.java | 53 +-- .../modules}/system/service/MenuService.java | 10 +- .../system/service/PermissionService.java | 7 +- .../modules}/system/service/RoleService.java | 7 +- .../modules}/system/service/UserService.java | 12 +- .../modules}/system/service/dto/MenuDTO.java | 3 +- .../system/service/dto/PermissionDTO.java | 3 +- .../modules}/system/service/dto/RoleDTO.java | 3 +- .../modules}/system/service/dto/UserDTO.java | 3 +- .../system/service/impl/MenuServiceImpl.java | 34 +- .../service/impl/PermissionServiceImpl.java | 18 +- .../system/service/impl/RoleServiceImpl.java | 19 +- .../system/service/impl/UserServiceImpl.java | 29 +- .../system/service/mapper/MenuMapper.java | 8 +- .../service/mapper/PermissionMapper.java | 10 +- .../system/service/mapper/RoleMapper.java | 8 +- .../system/service/mapper/UserMapper.java | 8 +- .../service/query/MenuQueryService.java | 8 +- .../service/query/PermissionQueryService.java | 8 +- .../service/query/RoleQueryService.java | 12 +- .../service/query/UserQueryService.java | 17 +- eladmin-system/src/main/resources/banner.txt | 8 + .../main/resources/config/application-dev.yml | 42 +-- .../resources/config/application-prod.yml | 62 ++++ .../src/main/resources/config/application.yml | 50 +++ .../src/main/resources/generator.properties | 27 ++ .../main/resources/log4jdbc.log4j2.properties | 0 .../src}/main/resources/logback.xml | 2 +- .../main/resources/template/email/email.ftl | 56 +++ .../template/generator/admin/Controller.ftl | 74 ++++ .../template/generator/admin/Dto.ftl | 29 ++ .../template/generator/admin/Entity.ftl | 37 ++ .../template/generator/admin/Mapper.ftl | 16 + .../template/generator/admin/QueryService.ftl | 94 +++++ .../template/generator/admin/Repository.ftl | 25 ++ .../template/generator/admin/Service.ftl | 45 +++ .../template/generator/admin/ServiceImpl.ftl | 90 +++++ .../template/generator/front/api.ftl | 24 ++ .../template/generator/front/eForm.ftl | 103 ++++++ .../template/generator/front/edit.ftl | 42 +++ .../template/generator/front/header.ftl | 59 +++ .../template/generator/front/index.ftl | 112 ++++++ .../EladminSystemApplicationTests.java | 17 + eladmin-tools/eladmin-tools.iml | 145 ++++++++ eladmin-tools/pom.xml | 49 +++ .../me/zhengjie}/config/MultipartConfig.java | 3 +- .../me/zhengjie}/domain/AlipayConfig.java | 12 +- .../java/me/zhengjie}/domain/EmailConfig.java | 6 +- .../java/me/zhengjie}/domain/Picture.java | 4 +- .../java/me/zhengjie}/domain/QiniuConfig.java | 4 +- .../me/zhengjie}/domain/QiniuContent.java | 4 +- .../me/zhengjie}/domain/VerificationCode.java | 3 +- .../java/me/zhengjie}/domain/vo/EmailVo.java | 3 +- .../java/me/zhengjie}/domain/vo/TradeVo.java | 2 +- .../repository/AlipayRepository.java | 4 +- .../zhengjie}/repository/EmailRepository.java | 4 +- .../repository/PictureRepository.java | 4 +- .../repository/QiNiuConfigRepository.java | 4 +- .../repository/QiniuContentRepository.java | 4 +- .../VerificationCodeRepository.java | 6 +- .../me/zhengjie}/rest/AliPayController.java | 20 +- .../me/zhengjie}/rest/EmailController.java | 15 +- .../me/zhengjie}/rest/PictureController.java | 26 +- .../me/zhengjie}/rest/QiniuController.java | 27 +- .../rest/VerificationCodeController.java | 23 +- .../me/zhengjie}/service/AlipayService.java | 6 +- .../me/zhengjie}/service/EmailService.java | 6 +- .../me/zhengjie}/service/PictureService.java | 4 +- .../me/zhengjie}/service/QiNiuService.java | 7 +- .../service/VerificationCodeService.java | 6 +- .../service/impl/AlipayServiceImpl.java | 15 +- .../service/impl/EmailServiceImpl.java | 18 +- .../service/impl/PictureServiceImpl.java | 17 +- .../service/impl/QiNiuServiceImpl.java | 21 +- .../impl/VerificationCodeServiceImpl.java | 29 +- .../service/query/PictureQueryService.java | 8 +- .../service/query/QiNiuQueryService.java | 8 +- .../me/zhengjie}/util/AliPayStatusEnum.java | 2 +- .../java/me/zhengjie}/util/AlipayUtils.java | 4 +- .../java/me/zhengjie}/util/QiNiuUtil.java | 4 +- eladmin.iml | 124 +++++++ mvnw | 286 --------------- mvnw.cmd | 161 --------- pom.xml | 134 +++---- .../me/zhengjie/common/utils/FtlUtil.java | 27 -- .../java/me/zhengjie/common/utils/IpUtil.java | 24 -- .../me/zhengjie/common/utils/TimeUtil.java | 25 -- .../monitor/rest/LoggingController.java | 30 -- 199 files changed, 3849 insertions(+), 1685 deletions(-) create mode 100644 eladmin-common/eladmin-common.iml create mode 100644 eladmin-common/pom.xml rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/aop/limit/Limit.java (90%) rename {src/main/java/me/zhengjie/common/aop/limit => eladmin-common/src/main/java/me/zhengjie/aspect}/LimitAspect.java (90%) rename {src/main/java/me/zhengjie/common/aop/limit => eladmin-common/src/main/java/me/zhengjie/aspect}/LimitType.java (63%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/exception/BadRequestException.java (93%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/exception/EntityExistException.java (96%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/exception/EntityNotFoundException.java (96%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/exception/handler/ApiError.java (92%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/exception/handler/GlobalExceptionHandler.java (87%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/mapper/EntityMapper.java (94%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/redis/FastJsonRedisSerializer.java (97%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/redis/RedisConfig.java (83%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/redis/StringRedisSerializer.java (96%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/swagger2/SwaggerConfig.java (87%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/ElAdminConstant.java (50%) rename {src/main/java/me/zhengjie/core => eladmin-common/src/main/java/me/zhengjie}/utils/EncryptUtils.java (99%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/FileUtil.java (95%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/utils/ListSortUtil.java rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/PageUtil.java (73%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/RequestHolder.java (93%) create mode 100644 eladmin-common/src/main/java/me/zhengjie/utils/SecurityContextHolder.java rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/SpringContextHolder.java (98%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/StringUtils.java (57%) rename src/main/java/me/zhengjie/common/config/ThreadPoolConfig.java => eladmin-common/src/main/java/me/zhengjie/utils/ThreadPoolUtil.java (90%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/ThrowableUtil.java (87%) rename {src/main/java/me/zhengjie/common => eladmin-common/src/main/java/me/zhengjie}/utils/ValidationUtil.java (87%) create mode 100644 eladmin-generator/eladmin-generator.iml create mode 100644 eladmin-generator/pom.xml create mode 100644 eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java create mode 100644 eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java create mode 100644 eladmin-logging/eladmin-logging.iml create mode 100644 eladmin-logging/pom.xml rename {src/main/java/me/zhengjie/common => eladmin-logging/src/main/java/me/zhengjie}/aop/log/Log.java (80%) rename {src/main/java/me/zhengjie/common/aop/log => eladmin-logging/src/main/java/me/zhengjie/aspect}/LogAspect.java (66%) rename src/main/java/me/zhengjie/monitor/domain/Logging.java => eladmin-logging/src/main/java/me/zhengjie/domain/Log.java (80%) rename src/main/java/me/zhengjie/monitor/repository/LoggingRepository.java => eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java (57%) create mode 100644 eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java rename src/main/java/me/zhengjie/monitor/service/LoggingService.java => eladmin-logging/src/main/java/me/zhengjie/service/LogService.java (52%) rename src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java => eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java (57%) rename src/main/java/me/zhengjie/monitor/service/query/LoggingQueryService.java => eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java (56%) create mode 100644 eladmin-system/eladmin-system.iml create mode 100644 eladmin-system/pom.xml rename {sql => eladmin-system/sql}/eladmin.sql (60%) rename {src => eladmin-system/src}/main/java/me/zhengjie/AppRun.java (93%) rename src/main/java/me/zhengjie/core/config/CorsConfig.java => eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java (68%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/config/LogFilter.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/config/LoggerQueue.java (82%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/config/VisitsInitialization.java (66%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/config/WebSocketConfig.java (92%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/domain/LogMessage.java (87%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/domain/Visits.java (84%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/domain/vo/RedisVo.java (87%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/repository/VisitsRepository.java (74%) rename src/main/java/me/zhengjie/monitor/rest/TestController.java => eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java (74%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/rest/RedisController.java (82%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/rest/VisitsController.java (88%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/service/RedisService.java (85%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/service/VisitsService.java (92%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/service/impl/RedisServiceImpl.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/monitor/service/impl/VisitsServiceImpl.java (84%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/config/JobRunner.java (83%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/config/QuartzConfig.java (97%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/domain/QuartzJob.java (92%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/domain/QuartzLog.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/repository/QuartzJobRepository.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/repository/QuartzLogRepository.java (74%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/rest/QuartzJobController.java (82%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/service/QuartzJobService.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/service/impl/QuartzJobServiceImpl.java (88%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/service/query/QuartzJobQueryService.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/service/query/QuartzLogQueryService.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/task/TestTask.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/task/VisitsTask.java (75%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/utils/ExecutionJob.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/utils/QuartzManage.java (85%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/quartz/utils/QuartzRunnable.java (87%) rename src/main/java/me/zhengjie/core/config/WebSecurityConfig.java => eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java (92%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/rest/AuthenticationController.java (71%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/security/AuthenticationToken.java (84%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/security/AuthorizationUser.java (89%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/security/JwtAuthenticationEntryPoint.java (95%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/security/JwtAuthorizationTokenFilter.java (84%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/security/JwtUser.java (91%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/service/JwtUserDetailsService.java (75%) rename {src/main/java/me/zhengjie/core => eladmin-system/src/main/java/me/zhengjie/modules/security}/utils/JwtTokenUtil.java (84%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/Menu.java (91%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/Permission.java (93%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/Role.java (94%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/User.java (93%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/vo/MenuMetaVo.java (81%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/domain/vo/MenuVo.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/repository/MenuRepository.java (82%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/repository/PermissionRepository.java (82%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/repository/RoleRepository.java (80%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/repository/UserRepository.java (81%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/rest/MenuController.java (73%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/rest/PermissionController.java (85%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/rest/RoleController.java (84%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/rest/UserController.java (78%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/MenuService.java (83%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/PermissionService.java (86%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/RoleService.java (83%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/UserService.java (80%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/dto/MenuDTO.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/dto/PermissionDTO.java (92%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/dto/RoleDTO.java (87%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/dto/UserDTO.java (92%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/impl/MenuServiceImpl.java (88%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/impl/PermissionServiceImpl.java (90%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/impl/RoleServiceImpl.java (85%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/impl/UserServiceImpl.java (85%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/mapper/MenuMapper.java (59%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/mapper/PermissionMapper.java (50%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/mapper/RoleMapper.java (60%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/mapper/UserMapper.java (59%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/query/MenuQueryService.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/query/PermissionQueryService.java (89%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/query/RoleQueryService.java (88%) rename {src/main/java/me/zhengjie => eladmin-system/src/main/java/me/zhengjie/modules}/system/service/query/UserQueryService.java (84%) create mode 100644 eladmin-system/src/main/resources/banner.txt rename src/main/resources/application.yml => eladmin-system/src/main/resources/config/application-dev.yml (68%) create mode 100644 eladmin-system/src/main/resources/config/application-prod.yml create mode 100644 eladmin-system/src/main/resources/config/application.yml create mode 100644 eladmin-system/src/main/resources/generator.properties rename {src => eladmin-system/src}/main/resources/log4jdbc.log4j2.properties (100%) rename {src => eladmin-system/src}/main/resources/logback.xml (94%) create mode 100644 eladmin-system/src/main/resources/template/email/email.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Controller.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Dto.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Entity.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Repository.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/Service.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/front/api.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/front/eForm.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/front/edit.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/front/header.ftl create mode 100644 eladmin-system/src/main/resources/template/generator/front/index.ftl create mode 100644 eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java create mode 100644 eladmin-tools/eladmin-tools.iml create mode 100644 eladmin-tools/pom.xml rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/config/MultipartConfig.java (96%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/AlipayConfig.java (79%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/EmailConfig.java (91%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/Picture.java (93%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/QiniuConfig.java (88%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/QiniuContent.java (93%) rename {src/main/java/me/zhengjie/system => eladmin-tools/src/main/java/me/zhengjie}/domain/VerificationCode.java (95%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/vo/EmailVo.java (89%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/domain/vo/TradeVo.java (97%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/repository/AlipayRepository.java (68%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/repository/EmailRepository.java (68%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/repository/PictureRepository.java (78%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/repository/QiNiuConfigRepository.java (69%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/repository/QiniuContentRepository.java (82%) rename {src/main/java/me/zhengjie/system => eladmin-tools/src/main/java/me/zhengjie}/repository/VerificationCodeRepository.java (77%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/rest/AliPayController.java (91%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/rest/EmailController.java (77%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/rest/PictureController.java (76%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/rest/QiniuController.java (82%) rename {src/main/java/me/zhengjie/system => eladmin-tools/src/main/java/me/zhengjie}/rest/VerificationCodeController.java (69%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/AlipayService.java (88%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/EmailService.java (87%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/PictureService.java (91%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/QiNiuService.java (89%) rename {src/main/java/me/zhengjie/system => eladmin-tools/src/main/java/me/zhengjie}/service/VerificationCodeService.java (69%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/impl/AlipayServiceImpl.java (93%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/impl/EmailServiceImpl.java (85%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/impl/PictureServiceImpl.java (88%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/impl/QiNiuServiceImpl.java (92%) rename {src/main/java/me/zhengjie/system => eladmin-tools/src/main/java/me/zhengjie}/service/impl/VerificationCodeServiceImpl.java (75%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/query/PictureQueryService.java (91%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/service/query/QiNiuQueryService.java (91%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/util/AliPayStatusEnum.java (95%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/util/AlipayUtils.java (96%) rename {src/main/java/me/zhengjie/tools => eladmin-tools/src/main/java/me/zhengjie}/util/QiNiuUtil.java (95%) create mode 100644 eladmin.iml delete mode 100644 mvnw delete mode 100644 mvnw.cmd delete mode 100644 src/main/java/me/zhengjie/common/utils/FtlUtil.java delete mode 100644 src/main/java/me/zhengjie/common/utils/IpUtil.java delete mode 100644 src/main/java/me/zhengjie/common/utils/TimeUtil.java delete mode 100644 src/main/java/me/zhengjie/monitor/rest/LoggingController.java diff --git a/.gitignore b/.gitignore index 492e1985..23676208 100644 --- a/.gitignore +++ b/.gitignore @@ -1,26 +1,3 @@ -!.mvn/wrapper/maven-wrapper.jar - -### STS ### -.apt_generated -.classpath -.factorypath -.project -.settings -.springBeans -.sts4-cache - ### IntelliJ IDEA ### -.mvn -.idea -*.iws -*.iml -*.ipr - -### NetBeans ### -/nbproject/private/ -/build/ -/nbbuild/ -/dist/ -/nbdist/ -/target/ -/.nb-gradle/ \ No newline at end of file +.idea/* +*/target/* \ No newline at end of file diff --git a/README.md b/README.md index c94cd0de..dcbda433 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # eladmin -项目基于 Spring Boot 2.1.0 、 Spring boot Jpa、 Spring Security、redis、Vue的前后端分离的权限管理系统, 权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制),前端菜单支持动态路由 +项目基于 Spring Boot 2.1.0 、 Spring boot Jpa、 Spring Security、redis、Vue的前后端分离的权限管理系统,项目采用分模块开发方式, 权限控制采用 RBAC(Role-Based Access Control,基于角色的访问控制),前端菜单支持动态路由 #### 前端源码 +eladmin-qt和eladmin-qd只是命名方式的区别,无其他区别 - 码云:[https://gitee.com/elunez/eladmin-qt](https://gitee.com/elunez/eladmin-qt) - github:[https://github.com/elunez/eladmin-qd](https://github.com/elunez/eladmin-qd) @@ -35,8 +36,10 @@ - 权限管理 权限细化到接口 - 菜单管理 已实现菜单动态路由,后端可配置化,支持多级菜单 - 定时任务 整合Quartz做定时任务,加入任务日志,任务运行情况一目了然 + - 代码生成 高灵活度一键生成前后端代码,减少百分之80左右的工作任务 - 系统监控 - - 系统日志 使用apo记录用户操作日志,并且记录异常堆栈信息 + - 操作日志 使用apo记录用户操作日志 + - 异常日志 记录操作过程中的异常,并且提供查看异常的堆栈信息 - 系统缓存 使用jedis将缓存操作可视化,并提供对redis的基本操作,可根据需求自行扩展 - 实时控制台 实时打印logback日志,来自微强迫症患者的精心配色,更好的监控系统的运行状态 - SQL监控 采用druid 监控数据库访问性能,默认用户名admin,密码123456 @@ -51,30 +54,36 @@ ``` #### 项目结构 ``` -- common 公共包 - - aop 记录日志与接口限流 - - exception 项目异常处理 +# 项目模块如下 +- eladmin-common 公共模块 + - aop.limit 接口限流自定义注解 + - exception 项目统一异常的处理 - mapper mapstruct的通用mapper - redis redis缓存相关配置 - swagger2 接口文档配置 - utils 通用工具 -- core 核心包 - - config JWT的安全过滤器配置与跨域配置 - - rest 用户授权的接口 - - security 配置spring security - - service 用户登录与权限的处理 - - utils 包含加密工具与JWT工具 -- monitor 系统监控 - - config 配置日志拦截器与WebSocket等 - - domain 实体类 - - repository 数据库操作 - - rest 前端控制器 - - service 业务接口 - - impl 业务接口实现 - - query 业务查询 -- quartz 定时任务 -- system 系统管理 -- tools 第三方工具 +- eladmin-system 系统核心模块 + - config 配置跨域与静态资源 + - modules 系统相关模块 + - monitor 系统监控 + - config 配置日志拦截器与WebSocket等 + - domain 实体类 + - repository 数据库操作 + - rest 前端控制器 + - service 业务接口 + - impl 业务接口实现 + - query 业务查询 + - quartz 定时任务 + - security 系统安全 + - config JWT的安全过滤器配置 + - rest 用户登录授权的接口 + - security 配置spring security + - service 用户登录与权限的处理 + - utils JWT工具 + - system 系统管理 +- eladmin-logging 系统日志模块 +- eladmin-tools 系统第三方工具模块 +- eladmin-generator 系统代码生成模块 ``` #### 后端技术栈 diff --git a/eladmin-common/eladmin-common.iml b/eladmin-common/eladmin-common.iml new file mode 100644 index 00000000..1c92e346 --- /dev/null +++ b/eladmin-common/eladmin-common.iml @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eladmin-common/pom.xml b/eladmin-common/pom.xml new file mode 100644 index 00000000..472ab79e --- /dev/null +++ b/eladmin-common/pom.xml @@ -0,0 +1,14 @@ + + + + eladmin + me.zhengjie + 1.5 + + 4.0.0 + + eladmin-common + + \ No newline at end of file diff --git a/src/main/java/me/zhengjie/common/aop/limit/Limit.java b/eladmin-common/src/main/java/me/zhengjie/aop/limit/Limit.java similarity index 90% rename from src/main/java/me/zhengjie/common/aop/limit/Limit.java rename to eladmin-common/src/main/java/me/zhengjie/aop/limit/Limit.java index cc2febd5..502e4e6f 100644 --- a/src/main/java/me/zhengjie/common/aop/limit/Limit.java +++ b/eladmin-common/src/main/java/me/zhengjie/aop/limit/Limit.java @@ -1,4 +1,6 @@ -package me.zhengjie.common.aop.limit; +package me.zhengjie.aop.limit; + +import me.zhengjie.aspect.LimitType; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/src/main/java/me/zhengjie/common/aop/limit/LimitAspect.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java similarity index 90% rename from src/main/java/me/zhengjie/common/aop/limit/LimitAspect.java rename to eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java index 86747ea1..4ac6ae9a 100644 --- a/src/main/java/me/zhengjie/common/aop/limit/LimitAspect.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitAspect.java @@ -1,10 +1,10 @@ -package me.zhengjie.common.aop.limit; +package me.zhengjie.aspect; import com.google.common.collect.ImmutableList; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.IpUtil; -import me.zhengjie.common.utils.RequestHolder; -import org.apache.commons.lang3.StringUtils; +import me.zhengjie.aop.limit.Limit; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.utils.RequestHolder; +import me.zhengjie.utils.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; @@ -17,8 +17,6 @@ import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.stereotype.Component; - - import javax.servlet.http.HttpServletRequest; import java.lang.reflect.Method; @@ -30,9 +28,8 @@ public class LimitAspect { private static final Logger logger = LoggerFactory.getLogger(LimitAspect.class); - @Pointcut("@annotation(Limit)") + @Pointcut("@annotation(me.zhengjie.aop.limit.Limit)") public void pointcut() { -// } @Around("pointcut()") @@ -47,7 +44,7 @@ public class LimitAspect { if (StringUtils.isEmpty(key)) { switch (limitType) { case IP: - key = IpUtil.getIP(request); + key = StringUtils.getIP(request); break; default: key = signatureMethod.getName(); diff --git a/src/main/java/me/zhengjie/common/aop/limit/LimitType.java b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java similarity index 63% rename from src/main/java/me/zhengjie/common/aop/limit/LimitType.java rename to eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java index 7e869753..6f383047 100644 --- a/src/main/java/me/zhengjie/common/aop/limit/LimitType.java +++ b/eladmin-common/src/main/java/me/zhengjie/aspect/LimitType.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.aop.limit; +package me.zhengjie.aspect; public enum LimitType { CUSTOMER, diff --git a/src/main/java/me/zhengjie/common/exception/BadRequestException.java b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java similarity index 93% rename from src/main/java/me/zhengjie/common/exception/BadRequestException.java rename to eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java index bfbf7f96..fda001e8 100644 --- a/src/main/java/me/zhengjie/common/exception/BadRequestException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/BadRequestException.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.exception; +package me.zhengjie.exception; import lombok.Getter; import org.springframework.http.HttpStatus; diff --git a/src/main/java/me/zhengjie/common/exception/EntityExistException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java similarity index 96% rename from src/main/java/me/zhengjie/common/exception/EntityExistException.java rename to eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java index 05db35e4..2f086b6d 100644 --- a/src/main/java/me/zhengjie/common/exception/EntityExistException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityExistException.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.exception; +package me.zhengjie.exception; import org.springframework.util.StringUtils; diff --git a/src/main/java/me/zhengjie/common/exception/EntityNotFoundException.java b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java similarity index 96% rename from src/main/java/me/zhengjie/common/exception/EntityNotFoundException.java rename to eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java index 2dba29e2..a7262288 100644 --- a/src/main/java/me/zhengjie/common/exception/EntityNotFoundException.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/EntityNotFoundException.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.exception; +package me.zhengjie.exception; import org.springframework.util.StringUtils; diff --git a/src/main/java/me/zhengjie/common/exception/handler/ApiError.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java similarity index 92% rename from src/main/java/me/zhengjie/common/exception/handler/ApiError.java rename to eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java index d4df6610..91861a3a 100644 --- a/src/main/java/me/zhengjie/common/exception/handler/ApiError.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/ApiError.java @@ -1,7 +1,8 @@ -package me.zhengjie.common.exception.handler; +package me.zhengjie.exception.handler; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; + import java.time.LocalDateTime; /** diff --git a/src/main/java/me/zhengjie/common/exception/handler/GlobalExceptionHandler.java b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java similarity index 87% rename from src/main/java/me/zhengjie/common/exception/handler/GlobalExceptionHandler.java rename to eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java index 30d5987e..701a3590 100644 --- a/src/main/java/me/zhengjie/common/exception/handler/GlobalExceptionHandler.java +++ b/eladmin-common/src/main/java/me/zhengjie/exception/handler/GlobalExceptionHandler.java @@ -1,19 +1,17 @@ -package me.zhengjie.common.exception.handler; +package me.zhengjie.exception.handler; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.exception.EntityExistException; -import me.zhengjie.common.exception.EntityNotFoundException; -import me.zhengjie.common.utils.ThrowableUtil; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.exception.EntityExistException; +import me.zhengjie.exception.EntityNotFoundException; +import me.zhengjie.utils.ThrowableUtil; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; -import static org.springframework.http.HttpStatus.BAD_REQUEST; -import static org.springframework.http.HttpStatus.FORBIDDEN; -import static org.springframework.http.HttpStatus.NOT_FOUND; +import java.nio.file.AccessDeniedException; +import static org.springframework.http.HttpStatus.*; /** * @author jie diff --git a/src/main/java/me/zhengjie/common/mapper/EntityMapper.java b/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java similarity index 94% rename from src/main/java/me/zhengjie/common/mapper/EntityMapper.java rename to eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java index b6ec389a..d02840fa 100644 --- a/src/main/java/me/zhengjie/common/mapper/EntityMapper.java +++ b/eladmin-common/src/main/java/me/zhengjie/mapper/EntityMapper.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.mapper; +package me.zhengjie.mapper; import java.util.List; diff --git a/src/main/java/me/zhengjie/common/redis/FastJsonRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java similarity index 97% rename from src/main/java/me/zhengjie/common/redis/FastJsonRedisSerializer.java rename to eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java index 8ccad494..d2e224c8 100644 --- a/src/main/java/me/zhengjie/common/redis/FastJsonRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/FastJsonRedisSerializer.java @@ -1,9 +1,10 @@ -package me.zhengjie.common.redis; +package me.zhengjie.redis; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.SerializationException; + import java.nio.charset.Charset; /** diff --git a/src/main/java/me/zhengjie/common/redis/RedisConfig.java b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java similarity index 83% rename from src/main/java/me/zhengjie/common/redis/RedisConfig.java rename to eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java index bf66187f..f21c4e73 100644 --- a/src/main/java/me/zhengjie/common/redis/RedisConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/RedisConfig.java @@ -1,23 +1,25 @@ -package me.zhengjie.common.redis; +package me.zhengjie.redis; -import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.parser.ParserConfig; import lombok.extern.slf4j.Slf4j; +import me.zhengjie.utils.StringUtils; import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.cache.interceptor.KeyGenerator; -import org.springframework.data.redis.cache.RedisCacheConfiguration; -import org.springframework.data.redis.serializer.*; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.data.redis.RedisProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.interceptor.KeyGenerator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisOperations; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.RedisSerializationContext; +import org.springframework.data.redis.serializer.StringRedisSerializer; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import java.time.Duration; @@ -60,7 +62,7 @@ public class RedisConfig extends CachingConfigurerSupport { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxIdle(maxIdle); jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); - if (StrUtil.isNotBlank(password)) { + if (StringUtils.isNotBlank(password)) { return new JedisPool(jedisPoolConfig, host, port, timeout, password); } else { return new JedisPool(jedisPoolConfig, host, port,timeout); @@ -68,7 +70,7 @@ public class RedisConfig extends CachingConfigurerSupport { } /** - * 设置 redis 数据默认过期时间 + * 设置 redis 数据默认过期时间,默认1天 * 设置@cacheable 序列化方式 * @return */ @@ -76,7 +78,7 @@ public class RedisConfig extends CachingConfigurerSupport { public RedisCacheConfiguration redisCacheConfiguration(){ FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer<>(Object.class); RedisCacheConfiguration configuration = RedisCacheConfiguration.defaultCacheConfig(); - configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofHours(2)); + configuration = configuration.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(fastJsonRedisSerializer)).entryTtl(Duration.ofDays(1)); return configuration; } @@ -92,10 +94,13 @@ public class RedisConfig extends CachingConfigurerSupport { // 全局开启AutoType,不建议使用 // ParserConfig.getGlobalInstance().setAutoTypeSupport(true); // 建议使用这种方式,小范围指定白名单 - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.system.service.dto"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.system.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.tools.domain"); - ParserConfig.getGlobalInstance().addAccept("me.zhengjie.quartz.domain"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.service.dto"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.test.service.dto"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.system.domain"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.domain"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.quartz.domain"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.monitor.domain"); + ParserConfig.getGlobalInstance().addAccept("me.zhengjie.modules.security.security"); // key的序列化采用StringRedisSerializer template.setKeySerializer(new StringRedisSerializer()); template.setHashKeySerializer(new StringRedisSerializer()); @@ -116,9 +121,9 @@ public class RedisConfig extends CachingConfigurerSupport { sb.append(target.getClass().getName()); sb.append(method.getName()); for (Object obj : params) { - sb.append(obj.toString()); + // 由于参数可能不同, hashCode肯定不一样, 缓存的key也需要不一样 + sb.append(JSON.toJSONString(obj).hashCode()); } - log.info(sb.toString()); return sb.toString(); }; } diff --git a/src/main/java/me/zhengjie/common/redis/StringRedisSerializer.java b/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java similarity index 96% rename from src/main/java/me/zhengjie/common/redis/StringRedisSerializer.java rename to eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java index 52bc80d7..e0f54f10 100644 --- a/src/main/java/me/zhengjie/common/redis/StringRedisSerializer.java +++ b/eladmin-common/src/main/java/me/zhengjie/redis/StringRedisSerializer.java @@ -1,8 +1,9 @@ -package me.zhengjie.common.redis; +package me.zhengjie.redis; import cn.hutool.core.lang.Assert; import com.alibaba.fastjson.JSON; import org.springframework.data.redis.serializer.RedisSerializer; + import java.nio.charset.Charset; /** diff --git a/src/main/java/me/zhengjie/common/swagger2/SwaggerConfig.java b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java similarity index 87% rename from src/main/java/me/zhengjie/common/swagger2/SwaggerConfig.java rename to eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java index a9281e3c..114be5b6 100644 --- a/src/main/java/me/zhengjie/common/swagger2/SwaggerConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/swagger2/SwaggerConfig.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.swagger2; +package me.zhengjie.swagger2; import com.google.common.base.Predicates; import org.springframework.context.annotation.Bean; @@ -27,11 +27,11 @@ import java.util.List; @Configuration @EnableSwagger2 @ComponentScan(basePackages = { - "me.zhengjie.core.rest", - "me.zhengjie.system.rest", - "me.zhengjie.monitor.rest", - "me.zhengjie.quartz.rest", - "me.zhengjie.tools.rest",}) + "me.zhengjie.rest", + "me.zhengjie.modules.system.rest", + "me.zhengjie.modules.monitor.rest", + "me.zhengjie.modules.monitor.rest", + "me.zhengjie.modules.quartz.rest"}) public class SwaggerConfig { @Bean @@ -56,7 +56,7 @@ public class SwaggerConfig { private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("elune 接口文档") - .version("1.0") + .version("1.5") .build(); } diff --git a/src/main/java/me/zhengjie/common/utils/ElAdminConstant.java b/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java similarity index 50% rename from src/main/java/me/zhengjie/common/utils/ElAdminConstant.java rename to eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java index 065e3320..46fdd09a 100644 --- a/src/main/java/me/zhengjie/common/utils/ElAdminConstant.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ElAdminConstant.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; /** * 常用静态常量 @@ -11,10 +11,6 @@ public class ElAdminConstant { public static final String RESET_MAIL = "重置邮箱"; - public static final String EMAIL_CODE = "

你的验证码为:"; - - public static final String EMAIL_CONTENT = "

----- 邮件来自 eladmin 后台管理系统,系统邮件请勿回复

"; - /** * 常用接口 */ diff --git a/src/main/java/me/zhengjie/core/utils/EncryptUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java similarity index 99% rename from src/main/java/me/zhengjie/core/utils/EncryptUtils.java rename to eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java index 3d8164bf..5d3be154 100644 --- a/src/main/java/me/zhengjie/core/utils/EncryptUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/EncryptUtils.java @@ -1,6 +1,7 @@ -package me.zhengjie.core.utils; +package me.zhengjie.utils; import org.springframework.util.DigestUtils; + import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; diff --git a/src/main/java/me/zhengjie/common/utils/FileUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java similarity index 95% rename from src/main/java/me/zhengjie/common/utils/FileUtil.java rename to eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java index 01dba3cf..50c229e2 100644 --- a/src/main/java/me/zhengjie/common/utils/FileUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/FileUtil.java @@ -1,17 +1,18 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; import cn.hutool.core.util.IdUtil; import org.springframework.web.multipart.MultipartFile; + import java.io.File; import java.io.IOException; import java.text.DecimalFormat; /** - * File工具类 + * File工具类,扩展 hutool 工具包 * @author jie * @date 2018-12-27 */ -public class FileUtil { +public class FileUtil extends cn.hutool.core.io.FileUtil { /** * 定义GB的计算常量 diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/ListSortUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ListSortUtil.java new file mode 100644 index 00000000..cdd97097 --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ListSortUtil.java @@ -0,0 +1,51 @@ +package me.zhengjie.utils; + +import java.lang.reflect.Method; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; + +/** + * List按照指定字段排序工具类 + * @author jie + * @date 2018/08/23 20:03:12 + * @param + */ +public class ListSortUtil { + + /** + * @param targetList 目标排序List + * @param sortField 排序字段(实体类属性名) + * @param sortMode 排序方式(asc or desc) + */ + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void sort(List targetList, final String sortField, final String sortMode) { + + Collections.sort(targetList, new Comparator() { + + @Override + public int compare(Object obj1, Object obj2) { + int retVal = 0; + try { + //首字母转大写 + String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w",""); + String methodStr="get"+newStr; + + Method method1 = ((T)obj1).getClass().getMethod(methodStr, new Class[0]); + Method method2 = ((T)obj2).getClass().getMethod(methodStr, new Class[0]); + if (sortMode != null && "desc".equals(sortMode)) { + // 倒序 + retVal = method2.invoke(((T) obj2), new Object[0]).toString().compareTo(method1.invoke(((T) obj1), new Object[0]).toString()); + } else { + // 正序 + retVal = method1.invoke(((T) obj1), new Object[0]).toString().compareTo(method2.invoke(((T) obj2), new Object[0]).toString()); + } + } catch (Exception e) { + throw new RuntimeException(); + } + return retVal; + } + }); + } + +} \ No newline at end of file diff --git a/src/main/java/me/zhengjie/common/utils/PageUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java similarity index 73% rename from src/main/java/me/zhengjie/common/utils/PageUtil.java rename to eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java index 2b616d76..511d1c23 100644 --- a/src/main/java/me/zhengjie/common/utils/PageUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/PageUtil.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; import org.springframework.data.domain.Page; import java.util.ArrayList; @@ -8,11 +8,10 @@ import java.util.Map; /** * 分页工具 - * * @author jie * @date 2018-12-10 */ -public class PageUtil { +public class PageUtil extends cn.hutool.core.util.PageUtil { /** * List 分页 @@ -48,4 +47,18 @@ public class PageUtil { return map; } + /** + * @param object + * @param totalElements + * @return + */ + public static Map toPage(Object object, Object totalElements) { + Map map = new HashMap(); + + map.put("content",object); + map.put("totalElements",totalElements); + + return map; + } + } diff --git a/src/main/java/me/zhengjie/common/utils/RequestHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java similarity index 93% rename from src/main/java/me/zhengjie/common/utils/RequestHolder.java rename to eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java index c7b55767..df78c4a5 100644 --- a/src/main/java/me/zhengjie/common/utils/RequestHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/RequestHolder.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; diff --git a/eladmin-common/src/main/java/me/zhengjie/utils/SecurityContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityContextHolder.java new file mode 100644 index 00000000..5529aa4e --- /dev/null +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SecurityContextHolder.java @@ -0,0 +1,24 @@ +package me.zhengjie.utils; + +import me.zhengjie.exception.BadRequestException; +import org.springframework.http.HttpStatus; +import org.springframework.security.core.userdetails.UserDetails; + +/** + * 获取当前登录的用户名 + * + * @author jie + * @date 2019-01-17 + */ +public class SecurityContextHolder { + + public static UserDetails getUserDetails() { + UserDetails userDetails = null; + try { + userDetails = (UserDetails) org.springframework.security.core.context.SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + } catch (Exception e) { + throw new BadRequestException(HttpStatus.UNAUTHORIZED, "登录状态过期"); + } + return userDetails; + } +} diff --git a/src/main/java/me/zhengjie/common/utils/SpringContextHolder.java b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java similarity index 98% rename from src/main/java/me/zhengjie/common/utils/SpringContextHolder.java rename to eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java index bd75b2ce..e4bfcbbc 100644 --- a/src/main/java/me/zhengjie/common/utils/SpringContextHolder.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/SpringContextHolder.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeansException; diff --git a/src/main/java/me/zhengjie/common/utils/StringUtils.java b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java similarity index 57% rename from src/main/java/me/zhengjie/common/utils/StringUtils.java rename to eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java index 42126c9a..b77cef92 100644 --- a/src/main/java/me/zhengjie/common/utils/StringUtils.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/StringUtils.java @@ -1,9 +1,9 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; -import java.io.File; -import java.io.IOException; +import javax.servlet.http.HttpServletRequest; import java.io.UnsupportedEncodingException; -import org.springframework.core.io.DefaultResourceLoader; +import java.util.Calendar; +import java.util.Date; /** * 字符串工具类, 继承org.apache.commons.lang3.StringUtils类 @@ -13,38 +13,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { private static final char SEPARATOR = '_'; private static final String CHARSET_NAME = "UTF-8"; - /** - * 转换为字节数组 - * - * @param str - * @return - */ - public static byte[] getBytes(String str) { - if (str != null) { - try { - return str.getBytes(CHARSET_NAME); - } catch (UnsupportedEncodingException e) { - return null; - } - } else { - return null; - } - } - - /** - * 转换为字节数组 - * - * @param bytes - * @return - */ - public static String toString(byte[] bytes) { - try { - return new String(bytes, CHARSET_NAME); - } catch (UnsupportedEncodingException e) { - return EMPTY; - } - } - /** * 是否包含字符串 * @@ -63,41 +31,6 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { return false; } - /** - * 转换为Double类型 - */ - public static Double toDouble(Object val) { - if (val == null) { - return 0D; - } - try { - return Double.valueOf(trim(val.toString())); - } catch (Exception e) { - return 0D; - } - } - - /** - * 转换为Float类型 - */ - public static Float toFloat(Object val) { - return toDouble(val).floatValue(); - } - - /** - * 转换为Long类型 - */ - public static Long toLong(Object val) { - return toDouble(val).longValue(); - } - - /** - * 转换为Integer类型 - */ - public static Integer toInteger(Object val) { - return toLong(val).intValue(); - } - /** * 驼峰命名法工具 * @@ -184,31 +117,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils { } /** - * 获取工程路径 - * + * 获取ip地址 + * @param request * @return */ - public static String getProjectPath() { - String projectPath = ""; - try { - File file = new DefaultResourceLoader().getResource("").getFile(); - if (file != null) { - while (true) { - File f = new File(file.getPath() + File.separator + "src" + File.separator + "main"); - if (f == null || f.exists()) { - break; - } - if (file.getParentFile() != null) { - file = file.getParentFile(); - } else { - break; - } - } - projectPath = file.toString(); - } - } catch (IOException e) { - e.printStackTrace(); + public static String getIP(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); } - return projectPath; + if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return "0:0:0:0:0:0:0:1".equals(ip)?"127.0.0.1":ip; + } + + /** + * 获得当天是周几 + */ + public static String getWeekDay(){ + String[] weekDays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; + Calendar cal = Calendar.getInstance(); + cal.setTime(new Date()); + + int w = cal.get(Calendar.DAY_OF_WEEK) - 1; + if (w < 0){ + w = 0; + } + return weekDays[w]; } } \ No newline at end of file diff --git a/src/main/java/me/zhengjie/common/config/ThreadPoolConfig.java b/eladmin-common/src/main/java/me/zhengjie/utils/ThreadPoolUtil.java similarity index 90% rename from src/main/java/me/zhengjie/common/config/ThreadPoolConfig.java rename to eladmin-common/src/main/java/me/zhengjie/utils/ThreadPoolUtil.java index ed7690d6..0b34c569 100644 --- a/src/main/java/me/zhengjie/common/config/ThreadPoolConfig.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ThreadPoolUtil.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.config; +package me.zhengjie.utils; import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.springframework.context.annotation.Bean; @@ -10,7 +10,7 @@ import java.util.concurrent.*; * @date 2019-01-08 */ @Configuration -public class ThreadPoolConfig { +public class ThreadPoolUtil { @Bean public ExecutorService getThreadPool(){ diff --git a/src/main/java/me/zhengjie/common/utils/ThrowableUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java similarity index 87% rename from src/main/java/me/zhengjie/common/utils/ThrowableUtil.java rename to eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java index f8fc215e..aa9e427d 100644 --- a/src/main/java/me/zhengjie/common/utils/ThrowableUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ThrowableUtil.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; import java.io.PrintWriter; import java.io.StringWriter; @@ -20,7 +20,7 @@ public class ThrowableUtil { PrintWriter pw = new PrintWriter(sw); try { throwable.printStackTrace(pw); - return "\n"+sw.toString(); + return sw.toString(); } finally { pw.close(); } diff --git a/src/main/java/me/zhengjie/common/utils/ValidationUtil.java b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java similarity index 87% rename from src/main/java/me/zhengjie/common/utils/ValidationUtil.java rename to eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java index 6edb4b86..33e13bbe 100644 --- a/src/main/java/me/zhengjie/common/utils/ValidationUtil.java +++ b/eladmin-common/src/main/java/me/zhengjie/utils/ValidationUtil.java @@ -1,6 +1,6 @@ -package me.zhengjie.common.utils; +package me.zhengjie.utils; -import me.zhengjie.common.exception.BadRequestException; +import me.zhengjie.exception.BadRequestException; import java.util.Optional; /** @@ -8,7 +8,7 @@ import java.util.Optional; * @author jie * @date 2018-11-23 */ -public class ValidationUtil { +public class ValidationUtil{ /** * 验证空 diff --git a/eladmin-generator/eladmin-generator.iml b/eladmin-generator/eladmin-generator.iml new file mode 100644 index 00000000..e0426d4a --- /dev/null +++ b/eladmin-generator/eladmin-generator.iml @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eladmin-generator/pom.xml b/eladmin-generator/pom.xml new file mode 100644 index 00000000..bc449a61 --- /dev/null +++ b/eladmin-generator/pom.xml @@ -0,0 +1,38 @@ + + + + eladmin + me.zhengjie + 1.5 + + 4.0.0 + + eladmin-generator + + + 1.9 + + + + + me.zhengjie + eladmin-common + 1.5 + + + + + org.springframework.boot + spring-boot-starter-freemarker + + + + + commons-configuration + commons-configuration + ${configuration.version} + + + \ No newline at end of file diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java new file mode 100644 index 00000000..13a64e9d --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/GenConfig.java @@ -0,0 +1,39 @@ +package me.zhengjie.domain; + +import lombok.Data; +import javax.persistence.*; + +/** + * 代码生成配置 + * @author jie + * @date 2019-01-03 + */ +@Data +@Entity +@Table(name = "gen_config") +public class GenConfig { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + /** 包路径 **/ + private String pack; + + /** 模块名 **/ + @Column(name = "module_name") + private String moduleName; + + /** 前端文件路径 **/ + private String path; + + /** 前端文件路径 **/ + @Column(name = "api_path") + private String apiPath; + + /** 作者 **/ + private String author; + + /** 是否覆盖 **/ + private Boolean cover; +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java new file mode 100644 index 00000000..bff0cad8 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/ColumnInfo.java @@ -0,0 +1,37 @@ +package me.zhengjie.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 列的数据信息 + * @author jie + * @date 2019-01-02 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class ColumnInfo { + + /** 数据库字段名称 **/ + private Object columnName; + + /** 允许空值 **/ + private Object isNullable; + + /** 数据库字段类型 **/ + private Object columnType; + + /** 数据库字段注释 **/ + private Object columnComment; + + /** 数据库字段键类型 **/ + private Object columnKey; + + /** 查询 1:模糊 2:精确 **/ + private String columnQuery; + + /** 是否在列表显示 **/ + private String columnShow; +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java new file mode 100644 index 00000000..d32fc508 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/domain/vo/TableInfo.java @@ -0,0 +1,22 @@ +package me.zhengjie.domain.vo; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * 表的数据信息 + * @author jie + * @date 2019-01-02 + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TableInfo { + + /** 表名称 **/ + private Object tableName; + + /** 创建日期 **/ + private Object createTime; +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java b/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java new file mode 100644 index 00000000..f905a302 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java @@ -0,0 +1,11 @@ +package me.zhengjie.repository; + +import me.zhengjie.domain.GenConfig; +import org.springframework.data.jpa.repository.JpaRepository; + +/** + * @author jie + * @date 2019-01-14 + */ +public interface GenConfigRepository extends JpaRepository { +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java new file mode 100644 index 00000000..3d2d15e1 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GenConfigController.java @@ -0,0 +1,35 @@ +package me.zhengjie.rest; + +import me.zhengjie.domain.GenConfig; +import me.zhengjie.service.GenConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** + * @author jie + * @date 2019-01-14 + */ +@RestController +@RequestMapping("api") +public class GenConfigController { + + @Autowired + private GenConfigService genConfigService; + + /** + * 查询生成器配置 + * @return + */ + @GetMapping(value = "/genConfig") + public ResponseEntity get(){ + return new ResponseEntity(genConfigService.find(), HttpStatus.OK); + } + + @PutMapping(value = "/genConfig") + public ResponseEntity emailConfig(@Validated @RequestBody GenConfig genConfig){ + return new ResponseEntity(genConfigService.update(genConfig),HttpStatus.OK); + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java new file mode 100644 index 00000000..ccc7dbd4 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/rest/GeneratorController.java @@ -0,0 +1,70 @@ +package me.zhengjie.rest; + +import cn.hutool.core.util.PageUtil; +import me.zhengjie.domain.vo.ColumnInfo; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.service.GenConfigService; +import me.zhengjie.service.GeneratorService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import java.util.List; + +/** + * @author jie + * @date 2019-01-02 + */ +@RestController +@RequestMapping("api") +public class GeneratorController { + + @Autowired + private GeneratorService generatorService; + + @Autowired + private GenConfigService genConfigService; + + @Value("${generator.enabled}") + private Boolean generatorEnabled; + + /** + * 查询数据库元数据 + * @param name + * @param page + * @param size + * @return + */ + @GetMapping(value = "/generator/tables") + public ResponseEntity getTables(@RequestParam(defaultValue = "") String name, + @RequestParam(defaultValue = "0")Integer page, + @RequestParam(defaultValue = "10")Integer size){ + int[] startEnd = PageUtil.transToStartEnd(page+1, size); + return new ResponseEntity(generatorService.getTables(name,startEnd), HttpStatus.OK); + } + + /** + * 查询表内元数据 + * @param tableName + * @return + */ + @GetMapping(value = "/generator/columns") + public ResponseEntity getTables(@RequestParam String tableName){ + return new ResponseEntity(generatorService.getColumns(tableName), HttpStatus.OK); + } + + /** + * 生成代码 + * @param columnInfos + * @return + */ + @PostMapping(value = "/generator") + public ResponseEntity generator(@RequestBody List columnInfos, @RequestParam String tableName){ + if(!generatorEnabled){ + throw new BadRequestException("此环境不允许生成代码!"); + } + generatorService.generator(columnInfos,genConfigService.find(),tableName); + return new ResponseEntity(HttpStatus.OK); + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java new file mode 100644 index 00000000..7f912be8 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GenConfigService.java @@ -0,0 +1,28 @@ +package me.zhengjie.service; + +import me.zhengjie.domain.GenConfig; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CachePut; +import org.springframework.cache.annotation.Cacheable; + +/** + * @author jie + * @date 2019-01-14 + */ +@CacheConfig(cacheNames = "genConfig") +public interface GenConfigService { + + /** + * find + * @return + */ + @Cacheable(key = "'1'") + GenConfig find(); + + /** + * update + * @param genConfig + */ + @CachePut(key = "'1'") + GenConfig update(GenConfig genConfig); +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java new file mode 100644 index 00000000..f2158b08 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/service/GeneratorService.java @@ -0,0 +1,35 @@ +package me.zhengjie.service; + +import me.zhengjie.domain.GenConfig; +import me.zhengjie.domain.vo.ColumnInfo; +import java.util.List; + +/** + * @author jie + * @date 2019-01-02 + */ +public interface GeneratorService { + + /** + * 查询数据库元数据 + * @param name + * @param startEnd + * @return + */ + Object getTables(String name, int[] startEnd); + + /** + * 得到数据表的元数据 + * @param name + * @return + */ + Object getColumns(String name); + + /** + * 生成代码 + * @param columnInfos + * @param genConfig + * @param tableName + */ + void generator(List columnInfos, GenConfig genConfig, String tableName); +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java new file mode 100644 index 00000000..a075dcdf --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java @@ -0,0 +1,35 @@ +package me.zhengjie.service.impl; + +import me.zhengjie.domain.GenConfig; +import me.zhengjie.repository.GenConfigRepository; +import me.zhengjie.service.GenConfigService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import java.util.Optional; + +/** + * @author jie + * @date 2019-01-14 + */ +@Service +public class GenConfigServiceImpl implements GenConfigService { + + @Autowired + private GenConfigRepository genConfigRepository; + + @Override + public GenConfig find() { + Optional genConfig = genConfigRepository.findById(1L); + if(genConfig.isPresent()){ + return genConfig.get(); + } else { + return new GenConfig(); + } + } + + @Override + public GenConfig update(GenConfig genConfig) { + genConfig.setId(1L); + return genConfigRepository.save(genConfig); + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java new file mode 100644 index 00000000..02a189e8 --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java @@ -0,0 +1,78 @@ +package me.zhengjie.service.impl; + +import me.zhengjie.domain.GenConfig; +import me.zhengjie.domain.vo.ColumnInfo; +import me.zhengjie.domain.vo.TableInfo; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.service.GeneratorService; +import me.zhengjie.utils.GenUtil; +import me.zhengjie.utils.PageUtil; +import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +/** + * @author jie + * @date 2019-01-02 + */ +@Service +public class GeneratorServiceImpl implements GeneratorService { + + @PersistenceContext + private EntityManager em; + + @Override + public Object getTables(String name, int[] startEnd) { + StringBuilder sql = new StringBuilder("select table_name tableName,create_time createTime from information_schema.tables where table_schema = (select database()) "); + if(!ObjectUtils.isEmpty(name)){ + sql.append("and table_name like '%"+name+"%' "); + } + sql.append("order by table_name"); + Query query = em.createNativeQuery(sql.toString()); + query.setFirstResult(startEnd[0]); + query.setMaxResults(startEnd[1]); + + System.out.println(sql.toString()); + List result = query.getResultList(); + List tableInfos = new ArrayList<>(); + for (Object[] obj : result) { + tableInfos.add(new TableInfo(obj[0],obj[1])); + } + Query query1 = em.createNativeQuery("SELECT COUNT(*) from information_schema.tables where table_schema = (select database())"); + Object totalElements = query1.getSingleResult(); + return PageUtil.toPage(tableInfos,totalElements); + } + + @Override + public Object getColumns(String name) { + StringBuilder sql = new StringBuilder("select column_name, is_nullable, data_type, column_comment, column_key from information_schema.columns where "); + if(!ObjectUtils.isEmpty(name)){ + sql.append("table_name = '"+name+"' "); + } + sql.append("and table_schema = (select database()) order by ordinal_position"); + Query query = em.createNativeQuery(sql.toString()); + List result = query.getResultList(); + List columnInfos = new ArrayList<>(); + for (Object[] obj : result) { + columnInfos.add(new ColumnInfo(obj[0],obj[1],obj[2],obj[3],obj[4],null,"true")); + } + return PageUtil.toPage(columnInfos,columnInfos.size()); + } + + @Override + public void generator(List columnInfos, GenConfig genConfig, String tableName) { + if(genConfig.getId() == null){ + throw new BadRequestException("请先配置生成器"); + } + try { + GenUtil.generatorCode(columnInfos,genConfig,tableName); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java new file mode 100644 index 00000000..7fefccbd --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/ColUtil.java @@ -0,0 +1,34 @@ +package me.zhengjie.utils; + +import org.apache.commons.configuration.*; + +/** + * sql字段转java + * + * @author jie + * @date 2019-01-03 + */ +public class ColUtil { + + /** + * 转换mysql数据类型为java数据类型 + * @param type + * @return + */ + public static String cloToJava(String type){ + Configuration config = getConfig(); + return config.getString(type,"unknowType"); + } + + /** + * 获取配置信息 + */ + public static PropertiesConfiguration getConfig() { + try { + return new PropertiesConfiguration("generator.properties" ); + } catch (ConfigurationException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java new file mode 100644 index 00000000..4374190a --- /dev/null +++ b/eladmin-generator/src/main/java/me/zhengjie/utils/GenUtil.java @@ -0,0 +1,243 @@ +package me.zhengjie.utils; + +import cn.hutool.extra.template.*; +import lombok.extern.slf4j.Slf4j; +import me.zhengjie.domain.GenConfig; +import me.zhengjie.domain.vo.ColumnInfo; +import org.springframework.util.ObjectUtils; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.Writer; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 代码生成 + * @author jie + * @date 2019-01-02 + */ +@Slf4j +public class GenUtil { + + private static final String TIMESTAMP = "Timestamp"; + + private static final String BIGDECIMAL = "BigDecimal"; + + private static final String PK = "PRI"; + + /** + * 获取后端代码模板名称 + * @return + */ + public static List getAdminTemplateNames() { + List templateNames = new ArrayList<>(); + templateNames.add("Entity"); + templateNames.add("Dto"); + templateNames.add("Mapper"); + templateNames.add("Repository"); + templateNames.add("Service"); + templateNames.add("ServiceImpl"); + templateNames.add("QueryService"); + templateNames.add("Controller"); + return templateNames; + } + + /** + * 获取前端代码模板名称 + * @return + */ + public static List getFrontTemplateNames() { + List templateNames = new ArrayList<>(); + templateNames.add("api"); + templateNames.add("index"); + templateNames.add("header"); + templateNames.add("edit"); + templateNames.add("eForm"); + return templateNames; + } + + /** + * 生成代码 + * @param columnInfos 表元数据 + * @param genConfig 生成代码的参数配置,如包路径,作者 + */ + public static void generatorCode(List columnInfos, GenConfig genConfig, String tableName) throws IOException { + Map map = new HashMap(); + map.put("package",genConfig.getPack()); + map.put("moduleName",genConfig.getModuleName()); + map.put("author",genConfig.getAuthor()); + map.put("date", LocalDate.now().toString()); + map.put("tableName",tableName); + String className = StringUtils.toCapitalizeCamelCase(tableName); + map.put("className", className); + map.put("changeClassName", StringUtils.toCamelCase(tableName)); + map.put("hasTimestamp",false); + map.put("hasBigDecimal",false); + map.put("hasQuery",false); + + List> list = new ArrayList<>(); + for (ColumnInfo column : columnInfos) { + Map listMap = new HashMap(); + listMap.put("columnComment",column.getColumnComment()); + listMap.put("columnKey",column.getColumnKey()); + + String colType = ColUtil.cloToJava(column.getColumnType().toString()); + if(PK.equals(column.getColumnKey())){ + map.put("pkColumnType",colType); + } + if(TIMESTAMP.equals(colType)){ + map.put("hasTimestamp",true); + } + if(BIGDECIMAL.equals(colType)){ + map.put("hasBigDecimal",true); + } + listMap.put("columnType",colType); + listMap.put("columnName",column.getColumnName()); + listMap.put("isNullable",column.getIsNullable()); + listMap.put("columnQuery",column.getColumnQuery()); + + if(!ObjectUtils.isEmpty(column.getColumnQuery())){ + map.put("hasQuery",true); + } + listMap.put("columnShow",column.getColumnShow()); + listMap.put("changeColumnName",StringUtils.toCamelCase(column.getColumnName().toString())); + listMap.put("capitalColumnName",StringUtils.toCapitalizeCamelCase(column.getColumnName().toString())); + list.add(listMap); + } + map.put("columns",list); + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + + // 生成后端代码 + List templates = getAdminTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/admin/"+templateName+".ftl"); + String filePath = getAdminFilePath(templateName,genConfig,className); + + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover()){ + if(FileUtil.exist(file)){ + continue; + } + } + // 生成代码 + genFile(file, template, map); + } + + // 生成前端代码 + templates = getFrontTemplateNames(); + for (String templateName : templates) { + Template template = engine.getTemplate("generator/front/"+templateName+".ftl"); + String filePath = getFrontFilePath(templateName,genConfig,map.get("changeClassName").toString()); + + File file = new File(filePath); + + // 如果非覆盖生成 + if(!genConfig.getCover()){ + if(FileUtil.exist(file)){ + continue; + } + } + // 生成代码 + genFile(file, template, map); + } + } + + /** + * 定义后端文件路径以及名称 + */ + public static String getAdminFilePath(String templateName, GenConfig genConfig, String className) { + String ProjectPath = System.getProperty("user.dir") + File.separator + genConfig.getModuleName(); + String packagePath = ProjectPath + File.separator + "src" +File.separator+ "main" + File.separator + "java" + File.separator; + if (!ObjectUtils.isEmpty(genConfig.getPack())) { + packagePath += genConfig.getPack().replace(".", File.separator) + File.separator; + } + + if ("Entity".equals(templateName)) { + return packagePath + "domain" + File.separator + className + ".java"; + } + + if ("Controller".equals(templateName)) { + return packagePath + "rest" + File.separator + className + "Controller.java"; + } + + if ("Service".equals(templateName)) { + return packagePath + "service" + File.separator + className + "Service.java"; + } + + if ("ServiceImpl".equals(templateName)) { + return packagePath + "service" + File.separator + "impl" + File.separator + className + "ServiceImpl.java"; + } + + if ("Dto".equals(templateName)) { + return packagePath + "service" + File.separator + "dto" + File.separator + className + "DTO.java"; + } + + if ("Mapper".equals(templateName)) { + return packagePath + "service" + File.separator + "mapper" + File.separator + className + "Mapper.java"; + } + + if ("QueryService".equals(templateName)) { + return packagePath + "service" + File.separator + "query" + File.separator + className + "QueryService.java"; + } + + if ("Repository".equals(templateName)) { + return packagePath + "repository" + File.separator + className + "Repository.java"; + } + + return null; + } + + /** + * 定义前端文件路径以及名称 + */ + public static String getFrontFilePath(String templateName, GenConfig genConfig, String apiName) { + String path = genConfig.getPath(); + + if ("api".equals(templateName)) { + return genConfig.getApiPath() + File.separator + apiName + ".js"; + } + + if ("index".equals(templateName)) { + return path + File.separator + "index.vue"; + } + + if ("header".equals(templateName)) { + return path + File.separator + "module" + File.separator + "header.vue"; + } + + if ("edit".equals(templateName)) { + return path + File.separator + "module" + File.separator + "edit.vue"; + } + + if ("eForm".equals(templateName)) { + return path + File.separator + "module" + File.separator + "form.vue"; + } + return null; + } + + public static void genFile(File file,Template template,Map map) throws IOException { + // 生成目标文件 + Writer writer = null; + try { + FileUtil.touch(file); + writer = new FileWriter(file); + template.render(map, writer); + } catch (TemplateException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } finally { + writer.close(); + } + } + + public static void main(String[] args){ + System.out.println(FileUtil.exist("E:\\1.5.txt")); + } +} diff --git a/eladmin-logging/eladmin-logging.iml b/eladmin-logging/eladmin-logging.iml new file mode 100644 index 00000000..8e873ee1 --- /dev/null +++ b/eladmin-logging/eladmin-logging.iml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eladmin-logging/pom.xml b/eladmin-logging/pom.xml new file mode 100644 index 00000000..698d63d7 --- /dev/null +++ b/eladmin-logging/pom.xml @@ -0,0 +1,21 @@ + + + + eladmin + me.zhengjie + 1.5 + + 4.0.0 + + eladmin-logging + + + + me.zhengjie + eladmin-common + 1.5 + + + \ No newline at end of file diff --git a/src/main/java/me/zhengjie/common/aop/log/Log.java b/eladmin-logging/src/main/java/me/zhengjie/aop/log/Log.java similarity index 80% rename from src/main/java/me/zhengjie/common/aop/log/Log.java rename to eladmin-logging/src/main/java/me/zhengjie/aop/log/Log.java index 437a26ae..48e096d6 100644 --- a/src/main/java/me/zhengjie/common/aop/log/Log.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aop/log/Log.java @@ -1,4 +1,4 @@ -package me.zhengjie.common.aop.log; +package me.zhengjie.aop.log; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; @@ -12,5 +12,5 @@ import java.lang.annotation.Target; @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface Log { - String description() default ""; + String value() default ""; } diff --git a/src/main/java/me/zhengjie/common/aop/log/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java similarity index 66% rename from src/main/java/me/zhengjie/common/aop/log/LogAspect.java rename to eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index cc70a96c..b864423a 100644 --- a/src/main/java/me/zhengjie/common/aop/log/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -1,10 +1,10 @@ -package me.zhengjie.common.aop.log; +package me.zhengjie.aspect; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.ThrowableUtil; -import me.zhengjie.monitor.domain.Logging; -import me.zhengjie.monitor.service.LoggingService; +import me.zhengjie.domain.Log; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.service.LogService; +import me.zhengjie.utils.ThrowableUtil; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.AfterThrowing; @@ -14,9 +14,6 @@ import org.aspectj.lang.annotation.Pointcut; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.io.PrintWriter; -import java.io.StringWriter; - /** * @author jie * @date 2018-11-24 @@ -27,14 +24,14 @@ import java.io.StringWriter; public class LogAspect { @Autowired - private LoggingService loggingService; + private LogService logService; private long currentTime = 0L; /** * 配置切入点 */ - @Pointcut("@annotation(me.zhengjie.common.aop.log.Log)") + @Pointcut("@annotation(me.zhengjie.aop.log.Log)") public void logPointcut() { // 该方法无方法体,主要为了让同类中其他方法使用此切入点 } @@ -53,8 +50,8 @@ public class LogAspect { } catch (Throwable e) { throw new BadRequestException(e.getMessage()); } - Logging logging = new Logging("INFO",System.currentTimeMillis() - currentTime); - loggingService.save(joinPoint, logging); + Log log = new Log("INFO",System.currentTimeMillis() - currentTime); + logService.save(joinPoint, log); return result; } @@ -66,8 +63,8 @@ public class LogAspect { */ @AfterThrowing(pointcut = "logPointcut()", throwing = "e") public void logAfterThrowing(JoinPoint joinPoint, Throwable e) { - Logging logging = new Logging("ERROR",System.currentTimeMillis() - currentTime); - logging.setExceptionDetail(ThrowableUtil.getStackTrace(e)); - loggingService.save((ProceedingJoinPoint)joinPoint, logging); + Log log = new Log("ERROR",System.currentTimeMillis() - currentTime); + log.setExceptionDetail(ThrowableUtil.getStackTrace(e)); + logService.save((ProceedingJoinPoint)joinPoint, log); } } diff --git a/src/main/java/me/zhengjie/monitor/domain/Logging.java b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java similarity index 80% rename from src/main/java/me/zhengjie/monitor/domain/Logging.java rename to eladmin-logging/src/main/java/me/zhengjie/domain/Log.java index c36e8465..c25c1466 100644 --- a/src/main/java/me/zhengjie/monitor/domain/Logging.java +++ b/eladmin-logging/src/main/java/me/zhengjie/domain/Log.java @@ -1,4 +1,4 @@ -package me.zhengjie.monitor.domain; +package me.zhengjie.domain; import lombok.Data; import lombok.NoArgsConstructor; @@ -14,7 +14,7 @@ import java.sql.Timestamp; @Data @Table(name = "log") @NoArgsConstructor -public class Logging { +public class Log { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -44,11 +44,13 @@ public class Logging { /** * 日志类型 */ + @Column(name = "log_type") private String logType; /** * 请求ip */ + @Column(name = "request_ip") private String requestIp; /** @@ -59,16 +61,17 @@ public class Logging { /** * 异常详细 */ - @Column(columnDefinition = "text") + @Column(name = "exception_detail", columnDefinition = "text") private String exceptionDetail; /** * 创建日期 */ @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; - public Logging(String logType, Long time) { + public Log(String logType, Long time) { this.logType = logType; this.time = time; } diff --git a/src/main/java/me/zhengjie/monitor/repository/LoggingRepository.java b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java similarity index 57% rename from src/main/java/me/zhengjie/monitor/repository/LoggingRepository.java rename to eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java index 143c278d..a1cfd902 100644 --- a/src/main/java/me/zhengjie/monitor/repository/LoggingRepository.java +++ b/eladmin-logging/src/main/java/me/zhengjie/repository/LogRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.monitor.repository; +package me.zhengjie.repository; -import me.zhengjie.monitor.domain.Logging; +import me.zhengjie.domain.Log; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; @@ -11,7 +11,7 @@ import org.springframework.stereotype.Repository; * @date 2018-11-24 */ @Repository -public interface LoggingRepository extends JpaRepository, JpaSpecificationExecutor { +public interface LogRepository extends JpaRepository, JpaSpecificationExecutor { /** * 获取一个时间段的IP记录 @@ -19,6 +19,6 @@ public interface LoggingRepository extends JpaRepository, JpaSpeci * @param date2 * @return */ - @Query(value = "select count(*) FROM (select requestIp FROM log where createTime between ?1 and ?2 GROUP BY requestIp) as s",nativeQuery = true) + @Query(value = "select count(*) FROM (select request_ip FROM log where create_time between ?1 and ?2 GROUP BY request_ip) as s",nativeQuery = true) Long findIp(String date1, String date2); } diff --git a/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java new file mode 100644 index 00000000..89d61ae7 --- /dev/null +++ b/eladmin-logging/src/main/java/me/zhengjie/rest/LogController.java @@ -0,0 +1,38 @@ +package me.zhengjie.rest; + +import me.zhengjie.domain.Log; +import me.zhengjie.service.query.LogQueryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author jie + * @date 2018-11-24 + */ +@RestController +@RequestMapping("api") +public class LogController { + + @Autowired + private LogQueryService logQueryService; + + @GetMapping(value = "/logs") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity getLogs(Log log, Pageable pageable){ + log.setLogType("INFO"); + return new ResponseEntity(logQueryService.queryAll(log,pageable), HttpStatus.OK); + } + + @GetMapping(value = "/logs/error") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity getErrorLogs(Log log, Pageable pageable){ + log.setLogType("ERROR"); + return new ResponseEntity(logQueryService.queryAll(log,pageable), HttpStatus.OK); + } +} diff --git a/src/main/java/me/zhengjie/monitor/service/LoggingService.java b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java similarity index 52% rename from src/main/java/me/zhengjie/monitor/service/LoggingService.java rename to eladmin-logging/src/main/java/me/zhengjie/service/LogService.java index 1cc9b875..4a64bd50 100644 --- a/src/main/java/me/zhengjie/monitor/service/LoggingService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/LogService.java @@ -1,6 +1,6 @@ -package me.zhengjie.monitor.service; +package me.zhengjie.service; -import me.zhengjie.monitor.domain.Logging; +import me.zhengjie.domain.Log; import org.aspectj.lang.ProceedingJoinPoint; import org.springframework.scheduling.annotation.Async; @@ -8,13 +8,13 @@ import org.springframework.scheduling.annotation.Async; * @author jie * @date 2018-11-24 */ -public interface LoggingService { +public interface LogService { /** * 新增日志 * @param joinPoint - * @param logging + * @param log */ @Async - void save(ProceedingJoinPoint joinPoint, Logging logging); + void save(ProceedingJoinPoint joinPoint, Log log); } diff --git a/src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java similarity index 57% rename from src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java rename to eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java index e1d05800..7c5c52bf 100644 --- a/src/main/java/me/zhengjie/monitor/service/impl/LoggingServiceImpl.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/impl/LogServiceImpl.java @@ -1,19 +1,16 @@ -package me.zhengjie.monitor.service.impl; +package me.zhengjie.service.impl; import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import me.zhengjie.common.utils.IpUtil; -import me.zhengjie.common.utils.RequestHolder; -import me.zhengjie.core.security.AuthorizationUser; -import me.zhengjie.core.utils.JwtTokenUtil; -import me.zhengjie.monitor.domain.Logging; -import me.zhengjie.monitor.repository.LoggingRepository; -import me.zhengjie.monitor.service.LoggingService; +import me.zhengjie.domain.Log; +import me.zhengjie.repository.LogRepository; +import me.zhengjie.service.LogService; +import me.zhengjie.utils.RequestHolder; +import me.zhengjie.utils.SecurityContextHolder; +import me.zhengjie.utils.StringUtils; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.reflect.MethodSignature; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -27,32 +24,29 @@ import java.lang.reflect.Method; */ @Service @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) -public class LoggingServiceImpl implements LoggingService { +public class LogServiceImpl implements LogService { @Autowired - private LoggingRepository loggingRepository; + private LogRepository logRepository; @Value("${jwt.header}") private String tokenHeader; - @Autowired - private JwtTokenUtil jwtTokenUtil; - - private final String LOGINPATH = "authenticationLogin"; + private final String LOGINPATH = "login"; @Override @Transactional(rollbackFor = Exception.class) - public void save(ProceedingJoinPoint joinPoint, Logging logging){ + public void save(ProceedingJoinPoint joinPoint, Log log){ // 获取request HttpServletRequest request = RequestHolder.getHttpServletRequest(); MethodSignature signature = (MethodSignature) joinPoint.getSignature(); Method method = signature.getMethod(); - me.zhengjie.common.aop.log.Log log = method.getAnnotation(me.zhengjie.common.aop.log.Log.class); + me.zhengjie.aop.log.Log aopLog = method.getAnnotation(me.zhengjie.aop.log.Log.class); // 描述 if (log != null) { - logging.setDescription(log.description()); + log.setDescription(aopLog.value()); } // 方法路径 @@ -73,19 +67,22 @@ public class LoggingServiceImpl implements LoggingService { } // 获取IP地址 - logging.setRequestIp(IpUtil.getIP(request)); + log.setRequestIp(StringUtils.getIP(request)); if(!LOGINPATH.equals(signature.getName())){ - UserDetails userDetails = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal(); + UserDetails userDetails = SecurityContextHolder.getUserDetails(); username = userDetails.getUsername(); } else { - AuthorizationUser user = JSONUtil.toBean(new JSONObject(argValues[0]),AuthorizationUser.class); - username = user.getUsername(); - + try { + JSONObject jsonObject = new JSONObject(argValues[0]); + username = jsonObject.get("username").toString(); + }catch (Exception e){ + e.printStackTrace(); + } } - logging.setMethod(methodName); - logging.setUsername(username); - logging.setParams(params + " }"); - loggingRepository.save(logging); + log.setMethod(methodName); + log.setUsername(username); + log.setParams(params + " }"); + logRepository.save(log); } } diff --git a/src/main/java/me/zhengjie/monitor/service/query/LoggingQueryService.java b/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java similarity index 56% rename from src/main/java/me/zhengjie/monitor/service/query/LoggingQueryService.java rename to eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java index 6406ae23..553ef67c 100644 --- a/src/main/java/me/zhengjie/monitor/service/query/LoggingQueryService.java +++ b/eladmin-logging/src/main/java/me/zhengjie/service/query/LogQueryService.java @@ -1,7 +1,7 @@ -package me.zhengjie.monitor.service.query; +package me.zhengjie.service.query; -import me.zhengjie.monitor.domain.Logging; -import me.zhengjie.monitor.repository.LoggingRepository; +import me.zhengjie.domain.Log; +import me.zhengjie.repository.LogRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -23,41 +23,35 @@ import java.util.List; */ @Service @Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) -public class LoggingQueryService { +public class LogQueryService { @Autowired - private LoggingRepository loggingRepository; + private LogRepository logRepository; - public Page queryAll(Logging logging, Pageable pageable){ - - return loggingRepository.findAll(new Spec(logging),pageable); + public Page queryAll(Log log, Pageable pageable){ + return logRepository.findAll(new Spec(log),pageable); } - public List queryAll(Logging logging){ + class Spec implements Specification { - return loggingRepository.findAll(new Spec(logging)); - } + private Log log; - class Spec implements Specification { - - private Logging logging; - - public Spec(Logging logging){ - this.logging = logging; + public Spec(Log log){ + this.log = log; } @Override - public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) { + public Predicate toPredicate(Root root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) { List list = new ArrayList(); - if(!ObjectUtils.isEmpty(logging.getUsername())){ - list.add(cb.like(root.get("username").as(String.class),"%"+logging.getUsername()+"%")); + if(!ObjectUtils.isEmpty(log.getUsername())){ + list.add(cb.like(root.get("username").as(String.class),"%"+log.getUsername()+"%")); } - if (!ObjectUtils.isEmpty(logging.getLogType())) { - list.add(cb.equal(root.get("logType").as(String.class), logging.getLogType())); + if (!ObjectUtils.isEmpty(log.getLogType())) { + list.add(cb.equal(root.get("logType").as(String.class), log.getLogType())); } Predicate[] p = new Predicate[list.size()]; diff --git a/eladmin-system/eladmin-system.iml b/eladmin-system/eladmin-system.iml new file mode 100644 index 00000000..65b41371 --- /dev/null +++ b/eladmin-system/eladmin-system.iml @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eladmin-system/pom.xml b/eladmin-system/pom.xml new file mode 100644 index 00000000..d54e6316 --- /dev/null +++ b/eladmin-system/pom.xml @@ -0,0 +1,68 @@ + + + + eladmin + me.zhengjie + 1.5 + + 4.0.0 + + eladmin-system + + + 0.9.1 + + + + + + me.zhengjie + eladmin-generator + 1.5 + + + + me.zhengjie + eladmin-tools + 1.5 + + + + + io.jsonwebtoken + jjwt + ${jjwt.version} + + + + + org.springframework.boot + spring-boot-starter-websocket + + + + + org.quartz-scheduler + quartz + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + + \ No newline at end of file diff --git a/sql/eladmin.sql b/eladmin-system/sql/eladmin.sql similarity index 60% rename from sql/eladmin.sql rename to eladmin-system/sql/eladmin.sql index 68f04019..4721f554 100644 --- a/sql/eladmin.sql +++ b/eladmin-system/sql/eladmin.sql @@ -11,7 +11,7 @@ Target Server Version : 50559 File Encoding : 65001 - Date: 08/01/2019 16:17:02 + Date: 20/01/2019 19:17:08 */ SET NAMES utf8mb4; @@ -23,16 +23,16 @@ SET FOREIGN_KEY_CHECKS = 0; DROP TABLE IF EXISTS `alipay_config`; CREATE TABLE `alipay_config` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键', - `appID` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `charset` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `app_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '应用ID', + `charset` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '编码', `format` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '类型 固定格式json', - `gatewayUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `notifyUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `privateKey` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `publicKey` varchar(2000) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `returnUrl` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `signType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `sysServiceProviderId` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `gateway_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '网关地址', + `notify_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '异步回调', + `private_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '私钥', + `public_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '公钥', + `return_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '回调地址', + `sign_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '签名方式', + `sys_service_provider_id` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '商户号', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -46,86 +46,108 @@ INSERT INTO `alipay_config` VALUES (1, '2016091700532697', 'utf-8', 'JSON', 'htt -- ---------------------------- DROP TABLE IF EXISTS `email_config`; CREATE TABLE `email_config` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `fromUser` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `pass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `port` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `from_user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '收件人', + `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮件服务器SMTP地址', + `pass` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `port` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '端口', + `user` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '发件者用户名', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +-- ---------------------------- +-- Table structure for gen_config +-- ---------------------------- +DROP TABLE IF EXISTS `gen_config`; +CREATE TABLE `gen_config` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '作者', + `cover` bit(1) NULL DEFAULT NULL COMMENT '是否覆盖', + `module_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '模块名称', + `pack` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '至于哪个包下', + `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前端代码生成的路径', + `api_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + +-- ---------------------------- +-- Records of gen_config +-- ---------------------------- +INSERT INTO `gen_config` VALUES (1, 'jie', b'0', 'eladmin-system', 'me.zhengjie.modules.test', 'E:\\workspace\\my-workspace\\eladmin-qt\\src\\views\\system\\test', 'E:\\workspace\\my-workspace\\eladmin-qt\\src\\api'); + -- ---------------------------- -- Table structure for log -- ---------------------------- DROP TABLE IF EXISTS `log`; CREATE TABLE `log` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `createTime` datetime NULL DEFAULT NULL, - `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `exceptionDetail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, - `logType` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `method` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `params` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, - `requestIp` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述', + `exception_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '异常详情', + `log_type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '日志类型', + `method` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称', + `params` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '参数', + `request_ip` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '请求ip', + `time` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '耗时', + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 5066 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 6327 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for menu -- ---------------------------- DROP TABLE IF EXISTS `menu`; CREATE TABLE `menu` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `createTime` datetime NULL DEFAULT NULL, - `iFrame` bit(1) NULL DEFAULT NULL, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `pid` bigint(20) NOT NULL, - `sort` bigint(20) NOT NULL, - `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '菜单名称', + `component` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '组件', + `pid` bigint(20) NOT NULL COMMENT '上级菜单ID', + `sort` bigint(20) NOT NULL COMMENT '排序', + `icon` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图标', + `path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '链接地址', + `i_frame` bit(1) NULL DEFAULT NULL COMMENT '是否外链', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 29 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 36 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of menu -- ---------------------------- -INSERT INTO `menu` VALUES (1, '2018-12-18 15:11:29', b'0', '系统管理', NULL, 0, 1, 'system', 'system'); -INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', b'0', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user'); -INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', b'0', '角色管理', 'system/role/index', 1, 3, 'role', 'role'); -INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', b'0', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission'); -INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', b'0', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu'); -INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', b'0', '系统监控', NULL, 0, 10, 'monitor', 'monitor'); -INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', b'0', '系统日志', 'monitor/log/index', 6, 11, 'log', 'logs'); -INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', b'0', '系统缓存', 'monitor/redis/index', 6, 12, 'redis', 'redis'); -INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', b'1', 'SQL监控', NULL, 6, 14, 'sqlMonitor', 'http://localhost:8000/druid'); -INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', b'0', '组件管理', NULL, 0, 50, 'zujian', 'components'); -INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', b'0', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon'); -INSERT INTO `menu` VALUES (12, '2018-12-24 20:37:35', b'0', '实时控制台', 'monitor/log/msg', 6, 13, 'codeConsole', 'msg'); -INSERT INTO `menu` VALUES (13, '2018-12-27 10:11:26', b'0', '三方工具', '', 0, 30, 'tools', 'tools'); -INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', b'0', '邮件工具', 'tools/email/index', 13, 31, 'email', 'email'); -INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', b'0', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce'); -INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', b'0', 'SM.MS图床', 'tools/picture/index', 13, 32, 'image', 'pictures'); -INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', b'1', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin'); -INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', b'0', '七牛云存储', 'tools/qiniu/index', 13, 33, 'qiniu', 'qiniu'); -INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', b'0', '支付宝工具', 'tools/aliPay/index', 13, 34, 'alipay', 'aliPay'); -INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', b'0', '多级菜单', '', 0, 900, 'menu', 'nested'); -INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', b'0', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1'); -INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', b'0', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2'); -INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', b'0', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1'); -INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', b'0', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2'); -INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', b'0', '定时任务', 'system/timing/index', 1, 6, 'timing', 'timing'); +INSERT INTO `menu` VALUES (1, '2018-12-18 15:11:29', '系统管理', NULL, 0, 1, 'system', 'system', b'0'); +INSERT INTO `menu` VALUES (2, '2018-12-18 15:14:44', '用户管理', 'system/user/index', 1, 2, 'peoples', 'user', b'0'); +INSERT INTO `menu` VALUES (3, '2018-12-18 15:16:07', '角色管理', 'system/role/index', 1, 3, 'role', 'role', b'0'); +INSERT INTO `menu` VALUES (4, '2018-12-18 15:16:45', '权限管理', 'system/permission/index', 1, 4, 'permission', 'permission', b'0'); +INSERT INTO `menu` VALUES (5, '2018-12-18 15:17:28', '菜单管理', 'system/menu/index', 1, 5, 'menu', 'menu', b'0'); +INSERT INTO `menu` VALUES (6, '2018-12-18 15:17:48', '系统监控', NULL, 0, 10, 'monitor', 'monitor', b'0'); +INSERT INTO `menu` VALUES (7, '2018-12-18 15:18:26', '操作日志', 'monitor/log/index', 6, 11, 'log', 'logs', b'0'); +INSERT INTO `menu` VALUES (8, '2018-12-18 15:19:01', '系统缓存', 'monitor/redis/index', 6, 13, 'redis', 'redis', b'0'); +INSERT INTO `menu` VALUES (9, '2018-12-18 15:19:34', 'SQL监控', NULL, 6, 14, 'sqlMonitor', 'http://localhost:8000/druid', b'1'); +INSERT INTO `menu` VALUES (10, '2018-12-19 13:38:16', '组件管理', NULL, 0, 50, 'zujian', 'components', b'0'); +INSERT INTO `menu` VALUES (11, '2018-12-19 13:38:49', '图标库', 'components/IconSelect', 10, 51, 'icon', 'icon', b'0'); +INSERT INTO `menu` VALUES (12, '2018-12-24 20:37:35', '实时控制台', 'monitor/log/msg', 6, 15, 'codeConsole', 'msg', b'0'); +INSERT INTO `menu` VALUES (13, '2018-12-27 10:11:26', '三方工具', '', 0, 30, 'tools', 'tools', b'0'); +INSERT INTO `menu` VALUES (14, '2018-12-27 10:13:09', '邮件工具', 'tools/email/index', 13, 31, 'email', 'email', b'0'); +INSERT INTO `menu` VALUES (15, '2018-12-27 11:58:25', '富文本', 'components/Editor', 10, 52, 'fwb', 'tinymce', b'0'); +INSERT INTO `menu` VALUES (16, '2018-12-28 09:36:53', 'SM.MS图床', 'tools/picture/index', 13, 32, 'image', 'pictures', b'0'); +INSERT INTO `menu` VALUES (17, '2018-12-28 15:09:49', '项目地址', '', 0, 0, 'github', 'https://github.com/elunez/eladmin', b'1'); +INSERT INTO `menu` VALUES (18, '2018-12-31 11:12:15', '七牛云存储', 'tools/qiniu/index', 13, 33, 'qiniu', 'qiniu', b'0'); +INSERT INTO `menu` VALUES (19, '2018-12-31 14:52:38', '支付宝工具', 'tools/aliPay/index', 13, 34, 'alipay', 'aliPay', b'0'); +INSERT INTO `menu` VALUES (21, '2019-01-04 16:22:03', '多级菜单', '', 0, 900, 'menu', 'nested', b'0'); +INSERT INTO `menu` VALUES (22, '2019-01-04 16:23:29', '二级菜单1', 'nested/menu1/index', 21, 999, 'menu', 'menu1', b'0'); +INSERT INTO `menu` VALUES (23, '2019-01-04 16:23:57', '二级菜单2', 'nested/menu2/index', 21, 999, 'menu', 'menu2', b'0'); +INSERT INTO `menu` VALUES (24, '2019-01-04 16:24:48', '三级菜单1', 'nested/menu1/menu1-1', 22, 999, 'menu', 'menu1-1', b'0'); +INSERT INTO `menu` VALUES (27, '2019-01-07 17:27:32', '三级菜单2', 'nested/menu1/menu1-2', 22, 999, 'menu', 'menu1-2', b'0'); +INSERT INTO `menu` VALUES (28, '2019-01-07 20:34:40', '定时任务', 'system/timing/index', 1, 6, 'timing', 'timing', b'0'); +INSERT INTO `menu` VALUES (30, '2019-01-11 15:45:55', '代码生成', 'generator/index', 1, 8, 'dev', 'generator', b'0'); +INSERT INTO `menu` VALUES (32, '2019-01-13 13:49:03', '异常日志', 'monitor/log/errorLog', 6, 12, 'error', 'errorLog', b'0'); -- ---------------------------- -- Table structure for menus_roles -- ---------------------------- DROP TABLE IF EXISTS `menus_roles`; CREATE TABLE `menus_roles` ( - `menu_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `menu_id` bigint(20) NOT NULL COMMENT '菜单ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID', PRIMARY KEY (`menu_id`, `role_id`) USING BTREE, INDEX `FKcngg2qadojhi3a651a5adkvbq`(`role_id`) USING BTREE, CONSTRAINT `FKcngg2qadojhi3a651a5adkvbq` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, @@ -160,6 +182,8 @@ INSERT INTO `menus_roles` VALUES (23, 1); INSERT INTO `menus_roles` VALUES (24, 1); INSERT INTO `menus_roles` VALUES (27, 1); INSERT INTO `menus_roles` VALUES (28, 1); +INSERT INTO `menus_roles` VALUES (30, 1); +INSERT INTO `menus_roles` VALUES (32, 1); INSERT INTO `menus_roles` VALUES (1, 2); INSERT INTO `menus_roles` VALUES (2, 2); INSERT INTO `menus_roles` VALUES (3, 2); @@ -181,16 +205,27 @@ INSERT INTO `menus_roles` VALUES (24, 2); INSERT INTO `menus_roles` VALUES (27, 2); INSERT INTO `menus_roles` VALUES (28, 2); +-- ---------------------------- +-- Table structure for my_test +-- ---------------------------- +DROP TABLE IF EXISTS `my_test`; +CREATE TABLE `my_test` ( + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; + -- ---------------------------- -- Table structure for permission -- ---------------------------- DROP TABLE IF EXISTS `permission`; CREATE TABLE `permission` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `pid` int(11) NOT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `alias` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '别名', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '名称', + `pid` int(11) NOT NULL COMMENT '上级权限', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 40 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -238,30 +273,30 @@ INSERT INTO `permission` VALUES (39, '任务删除', '2019-01-08 15:01:13', 'JOB -- ---------------------------- DROP TABLE IF EXISTS `picture`; CREATE TABLE `picture` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `createTime` datetime NULL DEFAULT NULL, - `delete_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `height` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `width` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '上传日期', + `delete_url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '删除的URL', + `filename` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片名称', + `height` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片高度', + `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片大小', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片地址', + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名称', + `width` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片宽度', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 48 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for qiniu_config -- ---------------------------- DROP TABLE IF EXISTS `qiniu_config`; CREATE TABLE `qiniu_config` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `accessKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `secretKey` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `zone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `access_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'accessKey', + `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Bucket 识别符', + `host` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '外链域名', + `secret_key` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT 'secretKey', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '空间类型', + `zone` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '机房', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -270,30 +305,30 @@ CREATE TABLE `qiniu_config` ( -- ---------------------------- DROP TABLE IF EXISTS `qiniu_content`; CREATE TABLE `qiniu_content` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `updateTime` datetime NULL DEFAULT NULL, - `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `bucket` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Bucket 识别符', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件名称', + `size` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件大小', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件类型:私有或公开', + `update_time` datetime NULL DEFAULT NULL COMMENT '上传或同步的时间', + `url` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文件url', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for quartz_job -- ---------------------------- DROP TABLE IF EXISTS `quartz_job`; CREATE TABLE `quartz_job` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `bean_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `is_pause` bit(1) NULL DEFAULT NULL, - `jobName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `updateTime` datetime NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `bean_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Spring Bean名称', + `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'cron 表达式', + `is_pause` bit(1) NULL DEFAULT NULL COMMENT '状态:1暂停、0启用', + `job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称', + `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `update_time` datetime NULL DEFAULT NULL COMMENT '创建或更新日期', PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; @@ -301,38 +336,38 @@ CREATE TABLE `quartz_job` ( -- Records of quartz_job -- ---------------------------- INSERT INTO `quartz_job` VALUES (1, 'visitsTask', '0 0 0 * * ?', b'0', '更新访客记录', 'run', NULL, '每日0点创建新的访客记录', '2019-01-08 14:53:31'); -INSERT INTO `quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-01-08 14:53:25'); -INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-01-08 15:56:54'); +INSERT INTO `quartz_job` VALUES (2, 'testTask', '0/5 * * * * ?', b'1', '测试1', 'run1', 'test', '带参测试,多参使用json', '2019-01-13 14:20:50'); +INSERT INTO `quartz_job` VALUES (3, 'testTask', '0/5 * * * * ?', b'1', '测试', 'run', '', '不带参测试', '2019-01-14 09:59:19'); -- ---------------------------- -- Table structure for quartz_log -- ---------------------------- DROP TABLE IF EXISTS `quartz_log`; CREATE TABLE `quartz_log` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `baen_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `exceptionDetail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL, - `is_success` bit(1) NULL DEFAULT NULL, - `job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `time` bigint(20) NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `baen_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Spring Bean名称', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `cron_expression` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'cron 表达式', + `exception_detail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '异常详情', + `is_success` bit(1) NULL DEFAULT NULL COMMENT '运行状态:1成功,0异常', + `job_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '任务名称', + `method_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '方法名称', + `params` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `time` bigint(20) NULL DEFAULT NULL COMMENT '耗时', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 90 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for role -- ---------------------------- DROP TABLE IF EXISTS `role`; CREATE TABLE `role` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `createTime` datetime NULL DEFAULT NULL, - `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, - `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称', + `remark` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of role @@ -345,8 +380,8 @@ INSERT INTO `role` VALUES (2, '2018-11-23 13:09:06', '普通用户', '普通用 -- ---------------------------- DROP TABLE IF EXISTS `roles_permissions`; CREATE TABLE `roles_permissions` ( - `role_id` bigint(20) NOT NULL, - `permission_id` bigint(20) NOT NULL, + `role_id` bigint(20) NOT NULL COMMENT '角色ID', + `permission_id` bigint(20) NOT NULL COMMENT '权限ID', PRIMARY KEY (`role_id`, `permission_id`) USING BTREE, INDEX `FKboeuhl31go7wer3bpy6so7exi`(`permission_id`) USING BTREE, CONSTRAINT `FK4hrolwj4ned5i7qe8kyiaak6m` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, @@ -370,23 +405,23 @@ INSERT INTO `roles_permissions` VALUES (2, 36); -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `enabled` bigint(20) NULL DEFAULT NULL, - `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `lastPasswordResetTime` datetime NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像地址', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', + `enabled` bigint(20) NULL DEFAULT NULL COMMENT '状态:1启用、0禁用', + `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '密码', + `username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户名', + `last_password_reset_time` datetime NULL DEFAULT NULL COMMENT '最后修改密码的日期', PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `UK_kpubos9gc2cvtkb0thktkbkes`(`email`) USING BTREE, UNIQUE INDEX `username`(`username`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- -INSERT INTO `user` VALUES (1, 'https://i.loli.net/2018/12/31/5c297270b20e2.jpg', '2018-08-23 09:11:56', 'zhengjie@tom.com', 1, '14e1b600b1fd579f47433b88e8d85291', 'admin', '2018-11-23 10:12:36'); +INSERT INTO `user` VALUES (1, 'https://i.loli.net/2019/01/16/5c3ed609e6f99.jpg', '2018-08-23 09:11:56', 'zhengjie@tom.com', 1, '14e1b600b1fd579f47433b88e8d85291', 'admin', '2019-01-17 09:53:21'); INSERT INTO `user` VALUES (3, 'https://i.loli.net/2018/12/30/5c2871d6aa101.jpg', '2018-12-27 20:05:26', 'test@qq.com', 1, '14e1b600b1fd579f47433b88e8d85291', 'test', NULL); -- ---------------------------- @@ -394,8 +429,8 @@ INSERT INTO `user` VALUES (3, 'https://i.loli.net/2018/12/30/5c2871d6aa101.jpg', -- ---------------------------- DROP TABLE IF EXISTS `users_roles`; CREATE TABLE `users_roles` ( - `user_id` bigint(20) NOT NULL, - `role_id` bigint(20) NOT NULL, + `user_id` bigint(20) NOT NULL COMMENT '用户ID', + `role_id` bigint(20) NOT NULL COMMENT '角色ID', PRIMARY KEY (`user_id`, `role_id`) USING BTREE, INDEX `FKq4eq273l04bpu4efj0jd0jb98`(`role_id`) USING BTREE, CONSTRAINT `users_roles_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT, @@ -413,28 +448,28 @@ INSERT INTO `users_roles` VALUES (3, 2); -- ---------------------------- DROP TABLE IF EXISTS `verification_code`; CREATE TABLE `verification_code` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, - `status` bit(1) NULL DEFAULT NULL, - `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `scenes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `code` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '验证码', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', + `status` bit(1) NULL DEFAULT NULL COMMENT '状态:1有效、0过期', + `type` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '验证码类型:email或者短信', + `value` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '接收邮箱或者手机号码', + `scenes` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '业务名称:如重置邮箱、重置密码等', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 34 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Table structure for visits -- ---------------------------- DROP TABLE IF EXISTS `visits`; CREATE TABLE `visits` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT, - `date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `ip_counts` bigint(20) NULL DEFAULT NULL, - `pv_counts` bigint(20) NULL DEFAULT NULL, - `weekDay` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, - `createTime` datetime NULL DEFAULT NULL, + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', + `date` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建日期:只存储年月日', + `ip_counts` bigint(20) NULL DEFAULT NULL COMMENT 'IP数', + `pv_counts` bigint(20) NULL DEFAULT NULL COMMENT '浏览量', + `week_day` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '星期', + `create_time` datetime NULL DEFAULT NULL COMMENT '创建日期', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 54 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; +) ENGINE = InnoDB AUTO_INCREMENT = 65 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/java/me/zhengjie/AppRun.java b/eladmin-system/src/main/java/me/zhengjie/AppRun.java similarity index 93% rename from src/main/java/me/zhengjie/AppRun.java rename to eladmin-system/src/main/java/me/zhengjie/AppRun.java index 1f329f15..700a3a2b 100644 --- a/src/main/java/me/zhengjie/AppRun.java +++ b/eladmin-system/src/main/java/me/zhengjie/AppRun.java @@ -1,6 +1,6 @@ package me.zhengjie; -import me.zhengjie.common.utils.SpringContextHolder; +import me.zhengjie.utils.SpringContextHolder; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; diff --git a/src/main/java/me/zhengjie/core/config/CorsConfig.java b/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java similarity index 68% rename from src/main/java/me/zhengjie/core/config/CorsConfig.java rename to eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java index bef66a4b..848c527a 100644 --- a/src/main/java/me/zhengjie/core/config/CorsConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/config/ConfigurerAdapter.java @@ -1,4 +1,4 @@ -package me.zhengjie.core.config; +package me.zhengjie.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; @@ -7,27 +7,23 @@ import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; /** - * 跨域请求 + * WebMvcConfigurer * * @author jie * @date 2018-11-30 */ @Configuration @EnableWebMvc -public class CorsConfig implements WebMvcConfigurer { +public class ConfigurerAdapter implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { - //设置允许跨域的路径 registry.addMapping("/**") - //设置允许跨域请求的域名 - .allowedOrigins("*") - //是否允许证书 不再默认开启 .allowCredentials(true) - //设置允许的方法 - .allowedMethods("*") - //跨域允许时间 - .maxAge(3600); + .allowedHeaders("*") + .allowedOrigins("*") + .allowedMethods("GET","POST","PUT","DELETE"); + } @Override diff --git a/src/main/java/me/zhengjie/monitor/config/LogFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LogFilter.java similarity index 90% rename from src/main/java/me/zhengjie/monitor/config/LogFilter.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LogFilter.java index 1ba2ae13..09542886 100644 --- a/src/main/java/me/zhengjie/monitor/config/LogFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LogFilter.java @@ -1,11 +1,10 @@ -package me.zhengjie.monitor.config; +package me.zhengjie.modules.monitor.config; import ch.qos.logback.classic.spi.ILoggingEvent; import ch.qos.logback.classic.spi.IThrowableProxy; import ch.qos.logback.core.filter.Filter; import ch.qos.logback.core.spi.FilterReply; -import me.zhengjie.monitor.domain.LogMessage; - +import me.zhengjie.modules.monitor.domain.LogMessage; import java.text.DateFormat; import java.util.Date; diff --git a/src/main/java/me/zhengjie/monitor/config/LoggerQueue.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LoggerQueue.java similarity index 82% rename from src/main/java/me/zhengjie/monitor/config/LoggerQueue.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LoggerQueue.java index 5f490313..6b8e0a4e 100644 --- a/src/main/java/me/zhengjie/monitor/config/LoggerQueue.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/LoggerQueue.java @@ -1,6 +1,6 @@ -package me.zhengjie.monitor.config; +package me.zhengjie.modules.monitor.config; -import me.zhengjie.monitor.domain.LogMessage; +import me.zhengjie.modules.monitor.domain.LogMessage; import java.util.concurrent.BlockingQueue; import java.util.concurrent.LinkedBlockingQueue; @@ -11,11 +11,15 @@ import java.util.concurrent.LinkedBlockingQueue; */ public class LoggerQueue { - //队列大小 + /** + * 队列大小 + */ public static final int QUEUE_MAX_SIZE = 10000; private static LoggerQueue alarmMessageQueue = new LoggerQueue(); - //阻塞队列 + /** + * 阻塞队列 + */ private BlockingQueue blockingQueue = new LinkedBlockingQueue<>(QUEUE_MAX_SIZE); private LoggerQueue() { @@ -31,7 +35,7 @@ public class LoggerQueue { * @return */ public boolean push(LogMessage log) { - return this.blockingQueue.add(log);//队列满了就抛出异常,不阻塞 + return this.blockingQueue.add(log); } /** diff --git a/src/main/java/me/zhengjie/monitor/config/VisitsInitialization.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java similarity index 66% rename from src/main/java/me/zhengjie/monitor/config/VisitsInitialization.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java index dbdfec1f..ab5b364e 100644 --- a/src/main/java/me/zhengjie/monitor/config/VisitsInitialization.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/VisitsInitialization.java @@ -1,6 +1,6 @@ -package me.zhengjie.monitor.config; +package me.zhengjie.modules.monitor.config; -import me.zhengjie.monitor.service.VisitsService; +import me.zhengjie.modules.monitor.service.VisitsService; import org.springframework.context.annotation.Configuration; /** @@ -13,5 +13,6 @@ public class VisitsInitialization { public VisitsInitialization(VisitsService visitsService){ System.out.println("--------------- 初始化站点统计,如果存在今日统计则跳过 ---------------"); visitsService.save(); + System.out.println("--------------- 初始化站点统计完成 ---------------"); } } diff --git a/src/main/java/me/zhengjie/monitor/config/WebSocketConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/WebSocketConfig.java similarity index 92% rename from src/main/java/me/zhengjie/monitor/config/WebSocketConfig.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/WebSocketConfig.java index e2c671b3..788723d4 100644 --- a/src/main/java/me/zhengjie/monitor/config/WebSocketConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/config/WebSocketConfig.java @@ -1,16 +1,14 @@ -package me.zhengjie.monitor.config; +package me.zhengjie.modules.monitor.config; - -import com.google.common.util.concurrent.ThreadFactoryBuilder; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.monitor.domain.LogMessage; +import me.zhengjie.modules.monitor.domain.LogMessage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; import javax.annotation.PostConstruct; -import java.util.concurrent.*; +import java.util.concurrent.ExecutorService; /** * 配置WebSocket消息代理端点,即stomp服务端 diff --git a/src/main/java/me/zhengjie/monitor/domain/LogMessage.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/LogMessage.java similarity index 87% rename from src/main/java/me/zhengjie/monitor/domain/LogMessage.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/LogMessage.java index 66a8a4bc..acc63d4a 100644 --- a/src/main/java/me/zhengjie/monitor/domain/LogMessage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/LogMessage.java @@ -1,4 +1,4 @@ -package me.zhengjie.monitor.domain; +package me.zhengjie.modules.monitor.domain; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/me/zhengjie/monitor/domain/Visits.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Visits.java similarity index 84% rename from src/main/java/me/zhengjie/monitor/domain/Visits.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Visits.java index 61cdb715..e0dff08e 100644 --- a/src/main/java/me/zhengjie/monitor/domain/Visits.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/Visits.java @@ -1,4 +1,4 @@ -package me.zhengjie.monitor.domain; +package me.zhengjie.modules.monitor.domain; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; @@ -31,7 +31,9 @@ public class Visits { private Long ipCounts; @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; + @Column(name = "week_day") private String weekDay; } diff --git a/src/main/java/me/zhengjie/monitor/domain/vo/RedisVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/RedisVo.java similarity index 87% rename from src/main/java/me/zhengjie/monitor/domain/vo/RedisVo.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/RedisVo.java index 1868b6aa..905db961 100644 --- a/src/main/java/me/zhengjie/monitor/domain/vo/RedisVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/domain/vo/RedisVo.java @@ -1,4 +1,4 @@ -package me.zhengjie.monitor.domain.vo; +package me.zhengjie.modules.monitor.domain.vo; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/me/zhengjie/monitor/repository/VisitsRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java similarity index 74% rename from src/main/java/me/zhengjie/monitor/repository/VisitsRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java index 373952e0..4cf75261 100644 --- a/src/main/java/me/zhengjie/monitor/repository/VisitsRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/repository/VisitsRepository.java @@ -1,8 +1,7 @@ -package me.zhengjie.monitor.repository; +package me.zhengjie.modules.monitor.repository; -import me.zhengjie.monitor.domain.Visits; +import me.zhengjie.modules.monitor.domain.Visits; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @@ -29,6 +28,6 @@ public interface VisitsRepository extends JpaRepository { * @return */ @Query(value = "select * FROM visits where " + - "createTime between ?1 and ?2",nativeQuery = true) + "create_time between ?1 and ?2",nativeQuery = true) List findAllVisits(String date1, String date2); } diff --git a/src/main/java/me/zhengjie/monitor/rest/TestController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java similarity index 74% rename from src/main/java/me/zhengjie/monitor/rest/TestController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java index 88f34fb5..1faf6037 100644 --- a/src/main/java/me/zhengjie/monitor/rest/TestController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/LimitController.java @@ -1,23 +1,26 @@ -package me.zhengjie.monitor.rest; +package me.zhengjie.modules.monitor.rest; -import me.zhengjie.common.aop.limit.Limit; -import org.springframework.security.access.prepost.PreAuthorize; +import me.zhengjie.aop.limit.Limit; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.atomic.AtomicInteger; +/** + * + * 接口限流测试类 + */ @RestController -@RequestMapping("test") -public class TestController { +@RequestMapping("api") +public class LimitController { private static final AtomicInteger ATOMIC_INTEGER = new AtomicInteger(); /** * 测试限流注解,下面配置说明该接口 60秒内最多只能访问 10次,保存到redis的键名为 limit_test, */ @Limit(key = "test", period = 60, count = 10, name = "testLimit", prefix = "limit") - @GetMapping("limit") + @GetMapping("/limit") public int testLimit() { return ATOMIC_INTEGER.incrementAndGet(); } diff --git a/src/main/java/me/zhengjie/monitor/rest/RedisController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java similarity index 82% rename from src/main/java/me/zhengjie/monitor/rest/RedisController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java index 5b4c1dd2..273dccd4 100644 --- a/src/main/java/me/zhengjie/monitor/rest/RedisController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/RedisController.java @@ -1,8 +1,8 @@ -package me.zhengjie.monitor.rest; +package me.zhengjie.modules.monitor.rest; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.monitor.domain.vo.RedisVo; -import me.zhengjie.monitor.service.RedisService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.monitor.domain.vo.RedisVo; +import me.zhengjie.modules.monitor.service.RedisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -22,14 +22,14 @@ public class RedisController { @Autowired private RedisService redisService; - @Log(description = "查询Redis缓存") + @Log("查询Redis缓存") @GetMapping(value = "/redis") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_SELECT')") public ResponseEntity getRedis(String key, Pageable pageable){ return new ResponseEntity(redisService.findByKey(key,pageable), HttpStatus.OK); } - @Log(description = "新增Redis缓存") + @Log("新增Redis缓存") @PostMapping(value = "/redis") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_CREATE')") public ResponseEntity create(@Validated @RequestBody RedisVo resources){ @@ -37,7 +37,7 @@ public class RedisController { return new ResponseEntity(HttpStatus.CREATED); } - @Log(description = "修改Redis缓存") + @Log("修改Redis缓存") @PutMapping(value = "/redis") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_EDIT')") public ResponseEntity update(@Validated @RequestBody RedisVo resources){ @@ -45,7 +45,7 @@ public class RedisController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除Redis缓存") + @Log("删除Redis缓存") @DeleteMapping(value = "/redis") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity delete(@RequestBody RedisVo resources){ @@ -53,7 +53,7 @@ public class RedisController { return new ResponseEntity(HttpStatus.OK); } - @Log(description = "清空Redis缓存") + @Log("清空Redis缓存") @DeleteMapping(value = "/redis/all") @PreAuthorize("hasAnyRole('ADMIN','REDIS_ALL','REDIS_DELETE')") public ResponseEntity deleteAll(){ diff --git a/src/main/java/me/zhengjie/monitor/rest/VisitsController.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java similarity index 88% rename from src/main/java/me/zhengjie/monitor/rest/VisitsController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java index 2a683730..9adb6227 100644 --- a/src/main/java/me/zhengjie/monitor/rest/VisitsController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/rest/VisitsController.java @@ -1,7 +1,7 @@ -package me.zhengjie.monitor.rest; +package me.zhengjie.modules.monitor.rest; -import me.zhengjie.common.utils.RequestHolder; -import me.zhengjie.monitor.service.VisitsService; +import me.zhengjie.modules.monitor.service.VisitsService; +import me.zhengjie.utils.RequestHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/src/main/java/me/zhengjie/monitor/service/RedisService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java similarity index 85% rename from src/main/java/me/zhengjie/monitor/service/RedisService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java index 1bd77de4..967950d2 100644 --- a/src/main/java/me/zhengjie/monitor/service/RedisService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/RedisService.java @@ -1,6 +1,6 @@ -package me.zhengjie.monitor.service; +package me.zhengjie.modules.monitor.service; -import me.zhengjie.monitor.domain.vo.RedisVo; +import me.zhengjie.modules.monitor.domain.vo.RedisVo; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; diff --git a/src/main/java/me/zhengjie/monitor/service/VisitsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java similarity index 92% rename from src/main/java/me/zhengjie/monitor/service/VisitsService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java index 5fdf2f60..4efd0ff3 100644 --- a/src/main/java/me/zhengjie/monitor/service/VisitsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/VisitsService.java @@ -1,4 +1,4 @@ -package me.zhengjie.monitor.service; +package me.zhengjie.modules.monitor.service; import org.springframework.scheduling.annotation.Async; diff --git a/src/main/java/me/zhengjie/monitor/service/impl/RedisServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java similarity index 90% rename from src/main/java/me/zhengjie/monitor/service/impl/RedisServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java index b573c978..59f36fd9 100644 --- a/src/main/java/me/zhengjie/monitor/service/impl/RedisServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/RedisServiceImpl.java @@ -1,8 +1,8 @@ -package me.zhengjie.monitor.service.impl; +package me.zhengjie.modules.monitor.service.impl; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.monitor.domain.vo.RedisVo; -import me.zhengjie.monitor.service.RedisService; +import me.zhengjie.modules.monitor.domain.vo.RedisVo; +import me.zhengjie.modules.monitor.service.RedisService; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageImpl; @@ -10,7 +10,8 @@ import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Service; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; -import java.util.*; +import java.util.ArrayList; +import java.util.List; /** * @author jie diff --git a/src/main/java/me/zhengjie/monitor/service/impl/VisitsServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java similarity index 84% rename from src/main/java/me/zhengjie/monitor/service/impl/VisitsServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java index e7e66e18..6dc3bb99 100644 --- a/src/main/java/me/zhengjie/monitor/service/impl/VisitsServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/monitor/service/impl/VisitsServiceImpl.java @@ -1,11 +1,11 @@ -package me.zhengjie.monitor.service.impl; +package me.zhengjie.modules.monitor.service.impl; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.utils.TimeUtil; -import me.zhengjie.monitor.domain.Visits; -import me.zhengjie.monitor.repository.LoggingRepository; -import me.zhengjie.monitor.repository.VisitsRepository; -import me.zhengjie.monitor.service.VisitsService; +import me.zhengjie.modules.monitor.domain.Visits; +import me.zhengjie.modules.monitor.repository.VisitsRepository; +import me.zhengjie.modules.monitor.service.VisitsService; +import me.zhengjie.repository.LogRepository; +import me.zhengjie.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -30,7 +30,7 @@ public class VisitsServiceImpl implements VisitsService { private VisitsRepository visitsRepository; @Autowired - private LoggingRepository loggingRepository; + private LogRepository logRepository; @Override public void save() { @@ -38,7 +38,7 @@ public class VisitsServiceImpl implements VisitsService { Visits visits = visitsRepository.findByDate(localDate.toString()); if(visits == null){ visits = new Visits(); - visits.setWeekDay(TimeUtil.getWeekDay()); + visits.setWeekDay(StringUtils.getWeekDay()); visits.setPvCounts(1L); visits.setIpCounts(1L); visits.setDate(localDate.toString()); @@ -51,7 +51,7 @@ public class VisitsServiceImpl implements VisitsService { LocalDate localDate = LocalDate.now(); Visits visits = visitsRepository.findByDate(localDate.toString()); visits.setPvCounts(visits.getPvCounts()+1); - long ipCounts = loggingRepository.findIp(localDate.toString(), localDate.plusDays(1).toString()); + long ipCounts = logRepository.findIp(localDate.toString(), localDate.plusDays(1).toString()); visits.setIpCounts(ipCounts); visitsRepository.save(visits); } diff --git a/src/main/java/me/zhengjie/quartz/config/JobRunner.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java similarity index 83% rename from src/main/java/me/zhengjie/quartz/config/JobRunner.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java index 1f834532..f7939d6b 100644 --- a/src/main/java/me/zhengjie/quartz/config/JobRunner.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/JobRunner.java @@ -1,8 +1,8 @@ -package me.zhengjie.quartz.config; +package me.zhengjie.modules.quartz.config; -import me.zhengjie.quartz.domain.QuartzJob; -import me.zhengjie.quartz.repository.QuartzJobRepository; -import me.zhengjie.quartz.utils.QuartzManage; +import me.zhengjie.modules.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.repository.QuartzJobRepository; +import me.zhengjie.modules.quartz.utils.QuartzManage; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; diff --git a/src/main/java/me/zhengjie/quartz/config/QuartzConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java similarity index 97% rename from src/main/java/me/zhengjie/quartz/config/QuartzConfig.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java index 5ae865b0..3486ad81 100644 --- a/src/main/java/me/zhengjie/quartz/config/QuartzConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/config/QuartzConfig.java @@ -1,4 +1,4 @@ -package me.zhengjie.quartz.config; +package me.zhengjie.modules.quartz.config; import org.quartz.Scheduler; import org.quartz.spi.TriggerFiredBundle; diff --git a/src/main/java/me/zhengjie/quartz/domain/QuartzJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java similarity index 92% rename from src/main/java/me/zhengjie/quartz/domain/QuartzJob.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java index 90372a8b..1cb0815e 100644 --- a/src/main/java/me/zhengjie/quartz/domain/QuartzJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzJob.java @@ -1,7 +1,8 @@ -package me.zhengjie.quartz.domain; +package me.zhengjie.modules.quartz.domain; import lombok.Data; import org.hibernate.annotations.UpdateTimestamp; + import javax.persistence.*; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -25,6 +26,7 @@ public class QuartzJob implements Serializable { /** * 定时器名称 */ + @Column(name = "job_name") private String jobName; /** @@ -71,5 +73,6 @@ public class QuartzJob implements Serializable { * 创建日期 */ @UpdateTimestamp + @Column(name = "update_time") private Timestamp updateTime; } \ No newline at end of file diff --git a/src/main/java/me/zhengjie/quartz/domain/QuartzLog.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java similarity index 89% rename from src/main/java/me/zhengjie/quartz/domain/QuartzLog.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java index 6f13fa1f..c53eee1e 100644 --- a/src/main/java/me/zhengjie/quartz/domain/QuartzLog.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/domain/QuartzLog.java @@ -1,7 +1,8 @@ -package me.zhengjie.quartz.domain; +package me.zhengjie.modules.quartz.domain; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -58,7 +59,7 @@ public class QuartzLog implements Serializable { /** * 异常详细 */ - @Column(columnDefinition = "text") + @Column(name = "exception_detail",columnDefinition = "text") private String exceptionDetail; /** @@ -70,5 +71,6 @@ public class QuartzLog implements Serializable { * 创建日期 */ @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; } diff --git a/src/main/java/me/zhengjie/quartz/repository/QuartzJobRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java similarity index 89% rename from src/main/java/me/zhengjie/quartz/repository/QuartzJobRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java index a147b58a..901e20b8 100644 --- a/src/main/java/me/zhengjie/quartz/repository/QuartzJobRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzJobRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.quartz.repository; +package me.zhengjie.modules.quartz.repository; -import me.zhengjie.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.domain.QuartzJob; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; diff --git a/src/main/java/me/zhengjie/quartz/repository/QuartzLogRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java similarity index 74% rename from src/main/java/me/zhengjie/quartz/repository/QuartzLogRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java index 520ef16c..6d412617 100644 --- a/src/main/java/me/zhengjie/quartz/repository/QuartzLogRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/repository/QuartzLogRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.quartz.repository; +package me.zhengjie.modules.quartz.repository; -import me.zhengjie.quartz.domain.QuartzLog; +import me.zhengjie.modules.quartz.domain.QuartzLog; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/src/main/java/me/zhengjie/quartz/rest/QuartzJobController.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java similarity index 82% rename from src/main/java/me/zhengjie/quartz/rest/QuartzJobController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java index c3f6906f..c7a5fb5f 100644 --- a/src/main/java/me/zhengjie/quartz/rest/QuartzJobController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/rest/QuartzJobController.java @@ -1,13 +1,13 @@ -package me.zhengjie.quartz.rest; +package me.zhengjie.modules.quartz.rest; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.quartz.domain.QuartzJob; -import me.zhengjie.quartz.domain.QuartzLog; -import me.zhengjie.quartz.service.QuartzJobService; -import me.zhengjie.quartz.service.query.QuartzJobQueryService; -import me.zhengjie.quartz.service.query.QuartzLogQueryService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.domain.QuartzLog; +import me.zhengjie.modules.quartz.service.QuartzJobService; +import me.zhengjie.modules.quartz.service.query.QuartzJobQueryService; +import me.zhengjie.modules.quartz.service.query.QuartzLogQueryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -36,7 +36,7 @@ public class QuartzJobController { @Autowired private QuartzLogQueryService quartzLogQueryService; - @Log(description = "查询定时任务") + @Log("查询定时任务") @GetMapping(value = "/jobs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_SELECT')") public ResponseEntity getJobs(QuartzJob resources, Pageable pageable){ @@ -55,7 +55,7 @@ public class QuartzJobController { return new ResponseEntity(quartzLogQueryService.queryAll(resources,pageable), HttpStatus.OK); } - @Log(description = "新增定时任务") + @Log("新增定时任务") @PostMapping(value = "/jobs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_CREATE')") public ResponseEntity create(@Validated @RequestBody QuartzJob resources){ @@ -65,7 +65,7 @@ public class QuartzJobController { return new ResponseEntity(quartzJobService.create(resources),HttpStatus.CREATED); } - @Log(description = "修改定时任务") + @Log("修改定时任务") @PutMapping(value = "/jobs") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity update(@Validated @RequestBody QuartzJob resources){ @@ -76,7 +76,7 @@ public class QuartzJobController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "更改定时任务状态") + @Log("更改定时任务状态") @PutMapping(value = "/jobs/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity updateIsPause(@PathVariable Long id){ @@ -84,7 +84,7 @@ public class QuartzJobController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "执行定时任务") + @Log("执行定时任务") @PutMapping(value = "/jobs/exec/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_EDIT')") public ResponseEntity execution(@PathVariable Long id){ @@ -92,7 +92,7 @@ public class QuartzJobController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除定时任务") + @Log("删除定时任务") @DeleteMapping(value = "/jobs/{id}") @PreAuthorize("hasAnyRole('ADMIN','JOB_ALL','JOB_DELETE')") public ResponseEntity delete(@PathVariable Long id){ diff --git a/src/main/java/me/zhengjie/quartz/service/QuartzJobService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java similarity index 89% rename from src/main/java/me/zhengjie/quartz/service/QuartzJobService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java index c661577b..980306c0 100644 --- a/src/main/java/me/zhengjie/quartz/service/QuartzJobService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/QuartzJobService.java @@ -1,13 +1,13 @@ -package me.zhengjie.quartz.service; +package me.zhengjie.modules.quartz.service; -import me.zhengjie.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.domain.QuartzJob; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; /** - * @author 郑杰 - * @date 2018/10/05 19:17:38 + * @author jie + * @date 2019-01-07 */ @CacheConfig(cacheNames = "quartzJob") public interface QuartzJobService { diff --git a/src/main/java/me/zhengjie/quartz/service/impl/QuartzJobServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java similarity index 88% rename from src/main/java/me/zhengjie/quartz/service/impl/QuartzJobServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java index 48b50c5d..463f0b47 100644 --- a/src/main/java/me/zhengjie/quartz/service/impl/QuartzJobServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -1,17 +1,16 @@ -package me.zhengjie.quartz.service.impl; +package me.zhengjie.modules.quartz.service.impl; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.quartz.domain.QuartzJob; -import me.zhengjie.quartz.repository.QuartzJobRepository; -import me.zhengjie.quartz.service.QuartzJobService; -import me.zhengjie.quartz.utils.QuartzManage; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.repository.QuartzJobRepository; +import me.zhengjie.modules.quartz.service.QuartzJobService; +import me.zhengjie.modules.quartz.utils.QuartzManage; +import me.zhengjie.utils.ValidationUtil; import org.quartz.CronExpression; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; - import java.util.Optional; /** diff --git a/src/main/java/me/zhengjie/quartz/service/query/QuartzJobQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzJobQueryService.java similarity index 90% rename from src/main/java/me/zhengjie/quartz/service/query/QuartzJobQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzJobQueryService.java index 49c8a947..113f7a85 100644 --- a/src/main/java/me/zhengjie/quartz/service/query/QuartzJobQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzJobQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.quartz.service.query; +package me.zhengjie.modules.quartz.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.quartz.domain.QuartzJob; -import me.zhengjie.quartz.repository.QuartzJobRepository; +import me.zhengjie.modules.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.repository.QuartzJobRepository; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/quartz/service/query/QuartzLogQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzLogQueryService.java similarity index 90% rename from src/main/java/me/zhengjie/quartz/service/query/QuartzLogQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzLogQueryService.java index e5aa8e3f..97565dd4 100644 --- a/src/main/java/me/zhengjie/quartz/service/query/QuartzLogQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/service/query/QuartzLogQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.quartz.service.query; +package me.zhengjie.modules.quartz.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.quartz.domain.QuartzLog; -import me.zhengjie.quartz.repository.QuartzLogRepository; +import me.zhengjie.modules.quartz.domain.QuartzLog; +import me.zhengjie.modules.quartz.repository.QuartzLogRepository; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; diff --git a/src/main/java/me/zhengjie/quartz/task/TestTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java similarity index 89% rename from src/main/java/me/zhengjie/quartz/task/TestTask.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java index 6c2115b7..4a0ba905 100644 --- a/src/main/java/me/zhengjie/quartz/task/TestTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/TestTask.java @@ -1,4 +1,4 @@ -package me.zhengjie.quartz.task; +package me.zhengjie.modules.quartz.task; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; diff --git a/src/main/java/me/zhengjie/quartz/task/VisitsTask.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java similarity index 75% rename from src/main/java/me/zhengjie/quartz/task/VisitsTask.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java index aeeec557..f04d6fe5 100644 --- a/src/main/java/me/zhengjie/quartz/task/VisitsTask.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/task/VisitsTask.java @@ -1,6 +1,6 @@ -package me.zhengjie.quartz.task; +package me.zhengjie.modules.quartz.task; -import me.zhengjie.monitor.service.VisitsService; +import me.zhengjie.modules.monitor.service.VisitsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; diff --git a/src/main/java/me/zhengjie/quartz/utils/ExecutionJob.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java similarity index 89% rename from src/main/java/me/zhengjie/quartz/utils/ExecutionJob.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java index 834bb10f..fe6520e0 100644 --- a/src/main/java/me/zhengjie/quartz/utils/ExecutionJob.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/ExecutionJob.java @@ -1,11 +1,11 @@ -package me.zhengjie.quartz.utils; +package me.zhengjie.modules.quartz.utils; -import me.zhengjie.common.utils.SpringContextHolder; -import me.zhengjie.common.utils.ThrowableUtil; -import me.zhengjie.quartz.domain.QuartzJob; -import me.zhengjie.quartz.domain.QuartzLog; -import me.zhengjie.quartz.repository.QuartzLogRepository; -import me.zhengjie.quartz.service.QuartzJobService; +import me.zhengjie.modules.quartz.domain.QuartzJob; +import me.zhengjie.modules.quartz.domain.QuartzLog; +import me.zhengjie.modules.quartz.repository.QuartzLogRepository; +import me.zhengjie.modules.quartz.service.QuartzJobService; +import me.zhengjie.utils.SpringContextHolder; +import me.zhengjie.utils.ThrowableUtil; import org.quartz.JobExecutionContext; import org.quartz.Scheduler; import org.slf4j.Logger; diff --git a/src/main/java/me/zhengjie/quartz/utils/QuartzManage.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java similarity index 85% rename from src/main/java/me/zhengjie/quartz/utils/QuartzManage.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java index f0a41241..a87954c5 100644 --- a/src/main/java/me/zhengjie/quartz/utils/QuartzManage.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzManage.java @@ -1,8 +1,8 @@ -package me.zhengjie.quartz.utils; +package me.zhengjie.modules.quartz.utils; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.quartz.domain.QuartzJob; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.quartz.domain.QuartzJob; import org.quartz.*; import org.quartz.impl.triggers.CronTriggerImpl; import org.springframework.stereotype.Component; @@ -50,7 +50,7 @@ public class QuartzManage { } } catch (Exception e){ log.error("创建定时任务失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("创建定时任务失败"); } } @@ -63,6 +63,11 @@ public class QuartzManage { try { TriggerKey triggerKey = TriggerKey.triggerKey(JOB_NAME + quartzJob.getId()); CronTrigger trigger = (CronTrigger) scheduler.getTrigger(triggerKey); + // 如果不存在则创建一个定时任务 + if(trigger == null){ + addJob(quartzJob); + trigger = (CronTrigger) scheduler.getTrigger(triggerKey); + } CronScheduleBuilder scheduleBuilder = CronScheduleBuilder.cronSchedule(quartzJob.getCronExpression()); trigger = trigger.getTriggerBuilder().withIdentity(triggerKey).withSchedule(scheduleBuilder).build(); //重置启动时间 @@ -75,7 +80,7 @@ public class QuartzManage { } } catch (Exception e){ log.error("更新定时任务失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("更新定时任务失败"); } } @@ -91,7 +96,7 @@ public class QuartzManage { scheduler.deleteJob(jobKey); } catch (Exception e){ log.error("删除定时任务失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("删除定时任务失败"); } } @@ -112,7 +117,7 @@ public class QuartzManage { scheduler.resumeJob(jobKey); } catch (Exception e){ log.error("恢复定时任务失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("恢复定时任务失败"); } } @@ -135,7 +140,7 @@ public class QuartzManage { scheduler.triggerJob(jobKey,dataMap); } catch (Exception e){ log.error("定时任务执行失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("定时任务执行失败"); } } @@ -150,7 +155,7 @@ public class QuartzManage { scheduler.pauseJob(jobKey); } catch (Exception e){ log.error("定时任务暂停失败", e); - throw new BadRequestException(e.getMessage()); + throw new BadRequestException("定时任务暂停失败"); } } } diff --git a/src/main/java/me/zhengjie/quartz/utils/QuartzRunnable.java b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java similarity index 87% rename from src/main/java/me/zhengjie/quartz/utils/QuartzRunnable.java rename to eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java index fbe8aa17..810cc8f2 100644 --- a/src/main/java/me/zhengjie/quartz/utils/QuartzRunnable.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/quartz/utils/QuartzRunnable.java @@ -1,10 +1,8 @@ -package me.zhengjie.quartz.utils; +package me.zhengjie.modules.quartz.utils; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.utils.SpringContextHolder; +import me.zhengjie.utils.SpringContextHolder; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.util.ReflectionUtils; import java.lang.reflect.Method; diff --git a/src/main/java/me/zhengjie/core/config/WebSecurityConfig.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java similarity index 92% rename from src/main/java/me/zhengjie/core/config/WebSecurityConfig.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java index 9e303164..8d310b72 100644 --- a/src/main/java/me/zhengjie/core/config/WebSecurityConfig.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityConfig.java @@ -1,8 +1,8 @@ -package me.zhengjie.core.config; +package me.zhengjie.modules.security.config; -import me.zhengjie.core.security.JwtAuthenticationEntryPoint; -import me.zhengjie.core.security.JwtAuthorizationTokenFilter; -import me.zhengjie.core.service.JwtUserDetailsService; +import me.zhengjie.modules.security.security.JwtAuthenticationEntryPoint; +import me.zhengjie.modules.security.security.JwtAuthorizationTokenFilter; +import me.zhengjie.modules.security.service.JwtUserDetailsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -23,7 +23,7 @@ import org.springframework.security.web.authentication.UsernamePasswordAuthentic @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) -public class WebSecurityConfig extends WebSecurityConfigurerAdapter { +public class SecurityConfig extends WebSecurityConfigurerAdapter { @Autowired private JwtAuthenticationEntryPoint unauthorizedHandler; @@ -63,6 +63,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity httpSecurity) throws Exception { + httpSecurity // 禁用 CSRF diff --git a/src/main/java/me/zhengjie/core/rest/AuthenticationController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java similarity index 71% rename from src/main/java/me/zhengjie/core/rest/AuthenticationController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java index 477a2a27..d60c1cf9 100644 --- a/src/main/java/me/zhengjie/core/rest/AuthenticationController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthenticationController.java @@ -1,22 +1,21 @@ -package me.zhengjie.core.rest; +package me.zhengjie.modules.security.rest; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.core.security.AuthenticationToken; -import me.zhengjie.core.security.AuthorizationUser; -import me.zhengjie.core.utils.JwtTokenUtil; -import me.zhengjie.core.security.JwtUser; -import me.zhengjie.core.utils.EncryptUtils; +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.security.security.AuthenticationToken; +import me.zhengjie.modules.security.security.AuthorizationUser; +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.utils.EncryptUtils; +import me.zhengjie.modules.security.utils.JwtTokenUtil; +import me.zhengjie.utils.SecurityContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.security.authentication.AccountExpiredException; -import org.springframework.security.authentication.AuthenticationManager; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.web.bind.annotation.*; -import javax.servlet.http.HttpServletRequest; /** * @author jie @@ -31,9 +30,6 @@ public class AuthenticationController { @Value("${jwt.header}") private String tokenHeader; - @Autowired - private AuthenticationManager authenticationManager; - @Autowired private JwtTokenUtil jwtTokenUtil; @@ -46,9 +42,9 @@ public class AuthenticationController { * @param authorizationUser * @return */ - @Log(description = "用户登录") + @Log("用户登录") @PostMapping(value = "${jwt.auth.path}") - public ResponseEntity authenticationLogin(@RequestBody AuthorizationUser authorizationUser){ + public ResponseEntity login(@RequestBody AuthorizationUser authorizationUser){ final UserDetails userDetails = userDetailsService.loadUserByUsername(authorizationUser.getUsername()); @@ -69,12 +65,12 @@ public class AuthenticationController { /** * 获取用户信息 - * @param request * @return */ @GetMapping(value = "${jwt.auth.account}") - public ResponseEntity getUserInfo(HttpServletRequest request){ - JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(jwtTokenUtil.getUserName(request)); + public ResponseEntity getUserInfo(){ + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); return ResponseEntity.ok(jwtUser); } } diff --git a/src/main/java/me/zhengjie/core/security/AuthenticationToken.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationToken.java similarity index 84% rename from src/main/java/me/zhengjie/core/security/AuthenticationToken.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationToken.java index 8e0c6253..ee8f8240 100644 --- a/src/main/java/me/zhengjie/core/security/AuthenticationToken.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthenticationToken.java @@ -1,7 +1,8 @@ -package me.zhengjie.core.security; +package me.zhengjie.modules.security.security; import lombok.AllArgsConstructor; import lombok.Getter; + import java.io.Serializable; /** diff --git a/src/main/java/me/zhengjie/core/security/AuthorizationUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java similarity index 89% rename from src/main/java/me/zhengjie/core/security/AuthorizationUser.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java index f434beda..ca449f54 100644 --- a/src/main/java/me/zhengjie/core/security/AuthorizationUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/AuthorizationUser.java @@ -1,4 +1,4 @@ -package me.zhengjie.core.security; +package me.zhengjie.modules.security.security; import lombok.Getter; import lombok.Setter; diff --git a/src/main/java/me/zhengjie/core/security/JwtAuthenticationEntryPoint.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java similarity index 95% rename from src/main/java/me/zhengjie/core/security/JwtAuthenticationEntryPoint.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java index 69d689af..f1504671 100644 --- a/src/main/java/me/zhengjie/core/security/JwtAuthenticationEntryPoint.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthenticationEntryPoint.java @@ -1,4 +1,4 @@ -package me.zhengjie.core.security; +package me.zhengjie.modules.security.security; import org.springframework.security.core.AuthenticationException; import org.springframework.security.web.AuthenticationEntryPoint; diff --git a/src/main/java/me/zhengjie/core/security/JwtAuthorizationTokenFilter.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java similarity index 84% rename from src/main/java/me/zhengjie/core/security/JwtAuthorizationTokenFilter.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java index d6c60d3b..0f9b261b 100644 --- a/src/main/java/me/zhengjie/core/security/JwtAuthorizationTokenFilter.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtAuthorizationTokenFilter.java @@ -1,9 +1,8 @@ -package me.zhengjie.core.security; +package me.zhengjie.modules.security.security; import io.jsonwebtoken.ExpiredJwtException; -import me.zhengjie.core.utils.JwtTokenUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; +import me.zhengjie.modules.security.utils.JwtTokenUtil; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; @@ -19,11 +18,10 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +@Slf4j @Component public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { - private final Logger logger = LoggerFactory.getLogger(this.getClass()); - private final UserDetailsService userDetailsService; private final JwtTokenUtil jwtTokenUtil; private final String tokenHeader; @@ -36,7 +34,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws ServletException, IOException { - logger.debug("processing authentication for '{}'", request.getRequestURL()); + log.debug("processing authentication for '{}'", request.getRequestURL()); final String requestHeader = request.getHeader(this.tokenHeader); @@ -47,14 +45,14 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { try { username = jwtTokenUtil.getUsernameFromToken(authToken); } catch (ExpiredJwtException e) { - logger.error(e.getMessage()); + log.error(e.getMessage()); } } - logger.debug("checking authentication for user '{}'", username); + log.debug("checking authentication for user '{}'", username); if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { - logger.debug("security context was null, so authorizating user"); + log.debug("security context was null, so authorizating user"); // It is not compelling necessary to load the use details from the database. You could also store the information // in the token and read it from it. It's up to you ;) @@ -65,7 +63,7 @@ public class JwtAuthorizationTokenFilter extends OncePerRequestFilter { if (jwtTokenUtil.validateToken(authToken, userDetails)) { UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(userDetails, null, userDetails.getAuthorities()); authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(request)); - logger.info("authorizated user '{}', setting security context", username); + log.info("authorizated user '{}', setting security context", username); SecurityContextHolder.getContext().setAuthentication(authentication); } } diff --git a/src/main/java/me/zhengjie/core/security/JwtUser.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtUser.java similarity index 91% rename from src/main/java/me/zhengjie/core/security/JwtUser.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtUser.java index e72410a8..47994619 100644 --- a/src/main/java/me/zhengjie/core/security/JwtUser.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/JwtUser.java @@ -1,4 +1,4 @@ -package me.zhengjie.core.security; +package me.zhengjie.modules.security.security; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.AllArgsConstructor; @@ -7,7 +7,10 @@ import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import java.sql.Timestamp; -import java.util.*; +import java.util.Collection; +import java.util.Date; +import java.util.LinkedHashSet; +import java.util.Set; /** * @author jie diff --git a/src/main/java/me/zhengjie/core/service/JwtUserDetailsService.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java similarity index 75% rename from src/main/java/me/zhengjie/core/service/JwtUserDetailsService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java index 560bf159..9e56781b 100644 --- a/src/main/java/me/zhengjie/core/service/JwtUserDetailsService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/service/JwtUserDetailsService.java @@ -1,13 +1,12 @@ -package me.zhengjie.core.service; +package me.zhengjie.modules.security.service; -import me.zhengjie.common.exception.EntityNotFoundException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.core.security.JwtUser; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.repository.PermissionRepository; -import me.zhengjie.system.repository.UserRepository; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.exception.EntityNotFoundException; +import me.zhengjie.modules.system.repository.UserRepository; +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; @@ -18,7 +17,6 @@ import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -35,9 +33,6 @@ public class JwtUserDetailsService implements UserDetailsService { @Autowired private UserRepository userRepository; - @Autowired - private PermissionRepository permissionRepository; - @Override public UserDetails loadUserByUsername(String username){ @@ -62,20 +57,20 @@ public class JwtUserDetailsService implements UserDetailsService { user.getPassword(), user.getAvatar(), user.getEmail(), - mapToGrantedAuthorities(user.getRoles(),permissionRepository), + mapToGrantedAuthorities(user.getRoles()), user.getEnabled(), user.getCreateTime(), user.getLastPasswordResetTime() ); } - private static List mapToGrantedAuthorities(Set roles,PermissionRepository permissionRepository) { + private static List mapToGrantedAuthorities(Set roles) { Set permissions = new HashSet<>(); for (Role role : roles) { Set roleSet = new HashSet<>(); roleSet.add(role); - permissions.addAll(permissionRepository.findByRoles(roleSet)); + permissions.addAll(role.getPermissions()); } return permissions.stream() diff --git a/src/main/java/me/zhengjie/core/utils/JwtTokenUtil.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java similarity index 84% rename from src/main/java/me/zhengjie/core/utils/JwtTokenUtil.java rename to eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java index 80b0e014..26119d3f 100644 --- a/src/main/java/me/zhengjie/core/utils/JwtTokenUtil.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/utils/JwtTokenUtil.java @@ -1,9 +1,9 @@ -package me.zhengjie.core.utils; +package me.zhengjie.modules.security.utils; import io.jsonwebtoken.*; import io.jsonwebtoken.impl.DefaultClock; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.core.security.JwtUser; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.security.security.JwtUser; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.security.core.userdetails.UserDetails; @@ -111,31 +111,14 @@ public class JwtTokenUtil implements Serializable { JwtUser user = (JwtUser) userDetails; final String username = getUsernameFromToken(token); final Date created = getIssuedAtDateFromToken(token); - //final Date expiration = getExpirationDateFromToken(token); +// final Date expiration = getExpirationDateFromToken(token); +// 如果token存在,且token创建日期 > 最后修改密码的日期 则代表token有效 return ( username.equals(user.getUsername()) && !isTokenExpired(token) && !isCreatedBeforeLastPasswordReset(created, user.getLastPasswordResetDate()) ); } - public String getUserName(HttpServletRequest request){ - - String authToken = request.getHeader(tokenHeader); - - if(StringUtils.isEmpty(authToken)||authToken.length()<7){ - throw new BadRequestException(HttpStatus.FORBIDDEN,"Token令牌无效"); - } - - final String token = authToken.substring(7); - String username = null; - try { - username = getUsernameFromToken(token); - } catch (ExpiredJwtException e){ - throw new BadRequestException(HttpStatus.UNAUTHORIZED,"Token令牌已过期"); - } - - return username; - } private Date calculateExpirationDate(Date createdDate) { return new Date(createdDate.getTime() + expiration); diff --git a/src/main/java/me/zhengjie/system/domain/Menu.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java similarity index 91% rename from src/main/java/me/zhengjie/system/domain/Menu.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java index 170f7658..e23cb919 100644 --- a/src/main/java/me/zhengjie/system/domain/Menu.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Menu.java @@ -1,4 +1,4 @@ -package me.zhengjie.system.domain; +package me.zhengjie.modules.system.domain; import lombok.Getter; import lombok.Setter; @@ -44,6 +44,7 @@ public class Menu { /** * 是否为外链 true/false */ + @Column(name = "i_frame") private Boolean iFrame; @ManyToMany @@ -51,5 +52,6 @@ public class Menu { private Set roles; @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; } diff --git a/src/main/java/me/zhengjie/system/domain/Permission.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java similarity index 93% rename from src/main/java/me/zhengjie/system/domain/Permission.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java index 592ec946..973dff12 100644 --- a/src/main/java/me/zhengjie/system/domain/Permission.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Permission.java @@ -1,9 +1,10 @@ -package me.zhengjie.system.domain; +package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @@ -43,6 +44,7 @@ public class Permission implements Serializable{ private Set roles; @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; @Override diff --git a/src/main/java/me/zhengjie/system/domain/Role.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java similarity index 94% rename from src/main/java/me/zhengjie/system/domain/Role.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java index 16ecab6a..00e3748c 100644 --- a/src/main/java/me/zhengjie/system/domain/Role.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/Role.java @@ -1,9 +1,10 @@ -package me.zhengjie.system.domain; +package me.zhengjie.modules.system.domain; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -44,8 +45,8 @@ public class Role implements Serializable { @ManyToMany(mappedBy = "roles") private Set menus; - @Column @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; @Override diff --git a/src/main/java/me/zhengjie/system/domain/User.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java similarity index 93% rename from src/main/java/me/zhengjie/system/domain/User.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java index b871ab38..d0f06988 100644 --- a/src/main/java/me/zhengjie/system/domain/User.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/User.java @@ -1,13 +1,14 @@ -package me.zhengjie.system.domain; +package me.zhengjie.modules.system.domain; + +import lombok.Getter; +import lombok.Setter; +import org.hibernate.annotations.CreationTimestamp; -import java.io.Serializable; import javax.persistence.*; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Pattern; -import lombok.Getter; -import lombok.Setter; -import org.hibernate.annotations.CreationTimestamp; +import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; import java.util.Set; @@ -41,8 +42,10 @@ public class User implements Serializable { private String password; @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; + @Column(name = "last_password_reset_time") private Date lastPasswordResetTime; @ManyToMany diff --git a/src/main/java/me/zhengjie/system/domain/vo/MenuMetaVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java similarity index 81% rename from src/main/java/me/zhengjie/system/domain/vo/MenuMetaVo.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java index cb7fa14c..61673451 100644 --- a/src/main/java/me/zhengjie/system/domain/vo/MenuMetaVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuMetaVo.java @@ -1,4 +1,4 @@ -package me.zhengjie.system.domain.vo; +package me.zhengjie.modules.system.domain.vo; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/src/main/java/me/zhengjie/system/domain/vo/MenuVo.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java similarity index 90% rename from src/main/java/me/zhengjie/system/domain/vo/MenuVo.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java index 0ec5b3cf..72d70778 100644 --- a/src/main/java/me/zhengjie/system/domain/vo/MenuVo.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/domain/vo/MenuVo.java @@ -1,7 +1,8 @@ -package me.zhengjie.system.domain.vo; +package me.zhengjie.modules.system.domain.vo; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; + import java.util.List; /** diff --git a/src/main/java/me/zhengjie/system/repository/MenuRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java similarity index 82% rename from src/main/java/me/zhengjie/system/repository/MenuRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java index b058fe88..7a7efca2 100644 --- a/src/main/java/me/zhengjie/system/repository/MenuRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/MenuRepository.java @@ -1,7 +1,7 @@ -package me.zhengjie.system.repository; +package me.zhengjie.modules.system.repository; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.domain.Role; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import java.util.List; diff --git a/src/main/java/me/zhengjie/system/repository/PermissionRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java similarity index 82% rename from src/main/java/me/zhengjie/system/repository/PermissionRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java index f4c3588d..937e4467 100644 --- a/src/main/java/me/zhengjie/system/repository/PermissionRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/PermissionRepository.java @@ -1,7 +1,7 @@ -package me.zhengjie.system.repository; +package me.zhengjie.modules.system.repository; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.domain.Role; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import java.util.List; diff --git a/src/main/java/me/zhengjie/system/repository/RoleRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java similarity index 80% rename from src/main/java/me/zhengjie/system/repository/RoleRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java index ede7e3fe..6979d6de 100644 --- a/src/main/java/me/zhengjie/system/repository/RoleRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/RoleRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.system.repository; +package me.zhengjie.modules.system.repository; -import me.zhengjie.system.domain.Role; +import me.zhengjie.modules.system.domain.Role; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/src/main/java/me/zhengjie/system/repository/UserRepository.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java similarity index 81% rename from src/main/java/me/zhengjie/system/repository/UserRepository.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java index 3a4c2ab8..42a518d1 100644 --- a/src/main/java/me/zhengjie/system/repository/UserRepository.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/repository/UserRepository.java @@ -1,12 +1,14 @@ -package me.zhengjie.system.repository; +package me.zhengjie.modules.system.repository; -import me.zhengjie.system.domain.User; +import me.zhengjie.modules.system.domain.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; +import java.util.Date; + /** * @author jie * @date 2018-11-22 @@ -35,8 +37,8 @@ public interface UserRepository extends JpaRepository, JpaSpecificat * @param pass */ @Modifying - @Query(value = "update user set password = ?2 where id = ?1",nativeQuery = true) - void updatePass(Long id, String pass); + @Query(value = "update user set password = ?2 , last_password_reset_time = ?3 where id = ?1",nativeQuery = true) + void updatePass(Long id, String pass, Date lastPasswordResetTime); /** * 修改头像 diff --git a/src/main/java/me/zhengjie/system/rest/MenuController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java similarity index 73% rename from src/main/java/me/zhengjie/system/rest/MenuController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java index 90bf3ebb..ac5640a6 100644 --- a/src/main/java/me/zhengjie/system/rest/MenuController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/MenuController.java @@ -1,18 +1,20 @@ -package me.zhengjie.system.rest; +package me.zhengjie.modules.system.rest; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.core.utils.JwtTokenUtil; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.service.MenuService; -import me.zhengjie.system.service.UserService; -import me.zhengjie.system.service.dto.MenuDTO; -import me.zhengjie.system.service.query.MenuQueryService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.security.utils.JwtTokenUtil; +import me.zhengjie.modules.system.service.MenuService; +import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.query.MenuQueryService; +import me.zhengjie.utils.SecurityContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; @@ -51,10 +53,12 @@ public class MenuController { * @return */ @GetMapping(value = "/menus/build") - public ResponseEntity buildMenus(HttpServletRequest request){ - User user = userService.findByName(jwtTokenUtil.getUserName(request)); + public ResponseEntity buildMenus(){ + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + User user = userService.findByName(userDetails.getUsername()); List menuDTOList = menuService.findByRoles(user.getRoles()); - return new ResponseEntity(menuService.buildMenus((List)menuService.buildTree(menuDTOList).get("content")),HttpStatus.OK); + List menuDTOTree = (List)menuService.buildTree(menuDTOList).get("content"); + return new ResponseEntity(menuService.buildMenus(menuDTOTree),HttpStatus.OK); } /** @@ -67,7 +71,7 @@ public class MenuController { return new ResponseEntity(menuService.getMenuTree(menuService.findByPid(0L)),HttpStatus.OK); } - @Log(description = "查询菜单") + @Log("查询菜单") @GetMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_SELECT')") public ResponseEntity getMenus(@RequestParam(required = false) String name){ @@ -75,7 +79,7 @@ public class MenuController { return new ResponseEntity(menuService.buildTree(menuDTOList),HttpStatus.OK); } - @Log(description = "新增菜单") + @Log("新增菜单") @PostMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_CREATE')") public ResponseEntity create(@Validated @RequestBody Menu resources){ @@ -85,7 +89,7 @@ public class MenuController { return new ResponseEntity(menuService.create(resources),HttpStatus.CREATED); } - @Log(description = "修改菜单") + @Log("修改菜单") @PutMapping(value = "/menus") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_EDIT')") public ResponseEntity update(@Validated @RequestBody Menu resources){ @@ -96,7 +100,7 @@ public class MenuController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除菜单") + @Log("删除菜单") @DeleteMapping(value = "/menus/{id}") @PreAuthorize("hasAnyRole('ADMIN','MENU_ALL','MENU_DELETE')") public ResponseEntity delete(@PathVariable Long id){ diff --git a/src/main/java/me/zhengjie/system/rest/PermissionController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java similarity index 85% rename from src/main/java/me/zhengjie/system/rest/PermissionController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java index bdf5ed91..aa89a765 100644 --- a/src/main/java/me/zhengjie/system/rest/PermissionController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/PermissionController.java @@ -1,11 +1,11 @@ -package me.zhengjie.system.rest; +package me.zhengjie.modules.system.rest; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.service.PermissionService; -import me.zhengjie.system.service.dto.PermissionDTO; -import me.zhengjie.system.service.query.PermissionQueryService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.system.service.PermissionService; +import me.zhengjie.modules.system.service.dto.PermissionDTO; +import me.zhengjie.modules.system.service.query.PermissionQueryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -47,7 +47,7 @@ public class PermissionController { return new ResponseEntity(permissionService.getPermissionTree(permissionService.findByPid(0L)),HttpStatus.OK); } - @Log(description = "查询权限") + @Log("查询权限") @GetMapping(value = "/permissions") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_SELECT')") public ResponseEntity getPermissions(@RequestParam(required = false) String name){ @@ -55,7 +55,7 @@ public class PermissionController { return new ResponseEntity(permissionService.buildTree(permissionDTOS),HttpStatus.OK); } - @Log(description = "新增权限") + @Log("新增权限") @PostMapping(value = "/permissions") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_CREATE')") public ResponseEntity create(@Validated @RequestBody Permission resources){ @@ -65,7 +65,7 @@ public class PermissionController { return new ResponseEntity(permissionService.create(resources),HttpStatus.CREATED); } - @Log(description = "修改权限") + @Log("修改权限") @PutMapping(value = "/permissions") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_EDIT')") public ResponseEntity update(@Validated @RequestBody Permission resources){ @@ -76,7 +76,7 @@ public class PermissionController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除权限") + @Log("删除权限") @DeleteMapping(value = "/permissions/{id}") @PreAuthorize("hasAnyRole('ADMIN','PERMISSION_ALL','PERMISSION_DELETE')") public ResponseEntity delete(@PathVariable Long id){ diff --git a/src/main/java/me/zhengjie/system/rest/RoleController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java similarity index 84% rename from src/main/java/me/zhengjie/system/rest/RoleController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java index 573f1478..165858d5 100644 --- a/src/main/java/me/zhengjie/system/rest/RoleController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/RoleController.java @@ -1,11 +1,11 @@ -package me.zhengjie.system.rest; +package me.zhengjie.modules.system.rest; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.service.RoleService; -import me.zhengjie.system.service.dto.RoleDTO; -import me.zhengjie.system.service.query.RoleQueryService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.system.service.RoleService; +import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.query.RoleQueryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; @@ -46,14 +46,14 @@ public class RoleController { return new ResponseEntity(roleService.getRoleTree(),HttpStatus.OK); } - @Log(description = "查询角色") + @Log("查询角色") @GetMapping(value = "/roles") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_SELECT')") public ResponseEntity getRoles(RoleDTO resources, Pageable pageable){ return new ResponseEntity(roleQueryService.queryAll(resources,pageable),HttpStatus.OK); } - @Log(description = "新增角色") + @Log("新增角色") @PostMapping(value = "/roles") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_CREATE')") public ResponseEntity create(@Validated @RequestBody Role resources){ @@ -63,7 +63,7 @@ public class RoleController { return new ResponseEntity(roleService.create(resources),HttpStatus.CREATED); } - @Log(description = "修改角色") + @Log("修改角色") @PutMapping(value = "/roles") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_EDIT')") public ResponseEntity update(@Validated @RequestBody Role resources){ @@ -74,7 +74,7 @@ public class RoleController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除角色") + @Log("删除角色") @DeleteMapping(value = "/roles/{id}") @PreAuthorize("hasAnyRole('ADMIN','ROLES_ALL','ROLES_DELETE')") public ResponseEntity delete(@PathVariable Long id){ diff --git a/src/main/java/me/zhengjie/system/rest/UserController.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java similarity index 78% rename from src/main/java/me/zhengjie/system/rest/UserController.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java index 81e4e1c1..97798d54 100644 --- a/src/main/java/me/zhengjie/system/rest/UserController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/rest/UserController.java @@ -1,26 +1,27 @@ -package me.zhengjie.system.rest; +package me.zhengjie.modules.system.rest; -import me.zhengjie.common.aop.log.Log; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.ElAdminConstant; -import me.zhengjie.common.utils.RequestHolder; -import me.zhengjie.core.security.JwtUser; -import me.zhengjie.core.utils.EncryptUtils; -import me.zhengjie.core.utils.JwtTokenUtil; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.domain.VerificationCode; -import me.zhengjie.system.service.UserService; -import me.zhengjie.system.service.VerificationCodeService; -import me.zhengjie.system.service.dto.UserDTO; -import me.zhengjie.system.service.query.UserQueryService; -import me.zhengjie.tools.domain.Picture; -import me.zhengjie.tools.service.PictureService; +import me.zhengjie.aop.log.Log; +import me.zhengjie.domain.Picture; +import me.zhengjie.domain.VerificationCode; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.service.PictureService; +import me.zhengjie.service.VerificationCodeService; +import me.zhengjie.utils.ElAdminConstant; +import me.zhengjie.utils.EncryptUtils; +import me.zhengjie.modules.security.utils.JwtTokenUtil; +import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.UserDTO; +import me.zhengjie.modules.system.service.query.UserQueryService; +import me.zhengjie.utils.SecurityContextHolder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -64,14 +65,14 @@ public class UserController { return new ResponseEntity(userService.findById(id), HttpStatus.OK); } - @Log(description = "查询用户") + @Log("查询用户") @GetMapping(value = "/users") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_SELECT')") public ResponseEntity getUsers(UserDTO userDTO, Pageable pageable){ return new ResponseEntity(userQueryService.queryAll(userDTO,pageable),HttpStatus.OK); } - @Log(description = "新增用户") + @Log("新增用户") @PostMapping(value = "/users") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_CREATE')") public ResponseEntity create(@Validated @RequestBody User resources){ @@ -81,7 +82,7 @@ public class UserController { return new ResponseEntity(userService.create(resources),HttpStatus.CREATED); } - @Log(description = "修改用户") + @Log("修改用户") @PutMapping(value = "/users") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_EDIT')") public ResponseEntity update(@Validated @RequestBody User resources){ @@ -92,7 +93,7 @@ public class UserController { return new ResponseEntity(HttpStatus.NO_CONTENT); } - @Log(description = "删除用户") + @Log("删除用户") @DeleteMapping(value = "/users/{id}") @PreAuthorize("hasAnyRole('ADMIN','USER_ALL','USER_DELETE')") public ResponseEntity delete(@PathVariable Long id){ @@ -107,7 +108,8 @@ public class UserController { */ @GetMapping(value = "/users/validPass/{pass}") public ResponseEntity validPass(@PathVariable String pass){ - JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(jwtTokenUtil.getUserName(RequestHolder.getHttpServletRequest())); + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); Map map = new HashMap(); map.put("status",200); if(!jwtUser.getPassword().equals(EncryptUtils.encryptPassword(pass))){ @@ -123,7 +125,8 @@ public class UserController { */ @GetMapping(value = "/users/updatePass/{pass}") public ResponseEntity updatePass(@PathVariable String pass){ - JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(jwtTokenUtil.getUserName(RequestHolder.getHttpServletRequest())); + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); if(jwtUser.getPassword().equals(EncryptUtils.encryptPassword(pass))){ throw new BadRequestException("新密码不能与旧密码相同"); } @@ -138,7 +141,8 @@ public class UserController { */ @PostMapping(value = "/users/updateAvatar") public ResponseEntity updateAvatar(@RequestParam MultipartFile file){ - JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(jwtTokenUtil.getUserName(RequestHolder.getHttpServletRequest())); + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); Picture picture = pictureService.upload(file,jwtUser.getUsername()); userService.updateAvatar(jwtUser,picture.getUrl()); return new ResponseEntity(HttpStatus.OK); @@ -152,7 +156,8 @@ public class UserController { */ @PostMapping(value = "/users/updateEmail/{code}") public ResponseEntity updateEmail(@PathVariable String code,@RequestBody User user){ - JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(jwtTokenUtil.getUserName(RequestHolder.getHttpServletRequest())); + UserDetails userDetails = SecurityContextHolder.getUserDetails(); + JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); if(!jwtUser.getPassword().equals(EncryptUtils.encryptPassword(user.getPassword()))){ throw new BadRequestException("密码错误"); } diff --git a/src/main/java/me/zhengjie/system/service/MenuService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java similarity index 83% rename from src/main/java/me/zhengjie/system/service/MenuService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java index f527c7c3..ac11e50b 100644 --- a/src/main/java/me/zhengjie/system/service/MenuService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/MenuService.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service; +package me.zhengjie.modules.system.service; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.service.dto.MenuDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -67,6 +67,7 @@ public interface MenuService { * @param menuDTOS * @return */ + @Cacheable(keyGenerator = "keyGenerator") Map buildTree(List menuDTOS); /** @@ -81,5 +82,6 @@ public interface MenuService { * @param byRoles * @return */ + @Cacheable(keyGenerator = "keyGenerator") Object buildMenus(List byRoles); } diff --git a/src/main/java/me/zhengjie/system/service/PermissionService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java similarity index 86% rename from src/main/java/me/zhengjie/system/service/PermissionService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java index 2889b7d4..5a46bcc8 100644 --- a/src/main/java/me/zhengjie/system/service/PermissionService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/PermissionService.java @@ -1,7 +1,7 @@ -package me.zhengjie.system.service; +package me.zhengjie.modules.system.service; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.service.dto.PermissionDTO; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.modules.system.service.dto.PermissionDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -64,5 +64,6 @@ public interface PermissionService { * @param permissionDTOS * @return */ + @Cacheable(keyGenerator = "keyGenerator") Object buildTree(List permissionDTOS); } diff --git a/src/main/java/me/zhengjie/system/service/RoleService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java similarity index 83% rename from src/main/java/me/zhengjie/system/service/RoleService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java index c62a9cf9..6b42cc30 100644 --- a/src/main/java/me/zhengjie/system/service/RoleService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/RoleService.java @@ -1,8 +1,7 @@ -package me.zhengjie.system.service; +package me.zhengjie.modules.system.service; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.service.dto.RoleDTO; -import me.zhengjie.system.service.dto.UserDTO; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.service.dto.RoleDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/system/service/UserService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java similarity index 80% rename from src/main/java/me/zhengjie/system/service/UserService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java index 41c66289..d9eb33fb 100644 --- a/src/main/java/me/zhengjie/system/service/UserService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/UserService.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service; +package me.zhengjie.modules.system.service; -import me.zhengjie.core.security.JwtUser; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.service.dto.UserDTO; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.modules.system.service.dto.UserDTO; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.CacheEvict; import org.springframework.cache.annotation.Cacheable; @@ -49,7 +49,6 @@ public interface UserService { * @param userName * @return */ - @Cacheable(key = "'findByName'+#p0") User findByName(String userName); /** @@ -57,6 +56,7 @@ public interface UserService { * @param jwtUser * @param encryptPassword */ + @CacheEvict(allEntries = true) void updatePass(JwtUser jwtUser, String encryptPassword); /** @@ -64,6 +64,7 @@ public interface UserService { * @param jwtUser * @param url */ + @CacheEvict(allEntries = true) void updateAvatar(JwtUser jwtUser, String url); /** @@ -71,5 +72,6 @@ public interface UserService { * @param jwtUser * @param email */ + @CacheEvict(allEntries = true) void updateEmail(JwtUser jwtUser, String email); } diff --git a/src/main/java/me/zhengjie/system/service/dto/MenuDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java similarity index 90% rename from src/main/java/me/zhengjie/system/service/dto/MenuDTO.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java index 03121b66..02d6d1fc 100644 --- a/src/main/java/me/zhengjie/system/service/dto/MenuDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/MenuDTO.java @@ -1,6 +1,7 @@ -package me.zhengjie.system.service.dto; +package me.zhengjie.modules.system.service.dto; import lombok.Data; + import java.sql.Timestamp; import java.util.List; import java.util.Set; diff --git a/src/main/java/me/zhengjie/system/service/dto/PermissionDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java similarity index 92% rename from src/main/java/me/zhengjie/system/service/dto/PermissionDTO.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java index 913784b0..9fb74848 100644 --- a/src/main/java/me/zhengjie/system/service/dto/PermissionDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/PermissionDTO.java @@ -1,6 +1,7 @@ -package me.zhengjie.system.service.dto; +package me.zhengjie.modules.system.service.dto; import lombok.Data; + import java.io.Serializable; import java.sql.Timestamp; import java.util.List; diff --git a/src/main/java/me/zhengjie/system/service/dto/RoleDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java similarity index 87% rename from src/main/java/me/zhengjie/system/service/dto/RoleDTO.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java index 9bdcf010..f67e72ec 100644 --- a/src/main/java/me/zhengjie/system/service/dto/RoleDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/RoleDTO.java @@ -1,6 +1,7 @@ -package me.zhengjie.system.service.dto; +package me.zhengjie.modules.system.service.dto; import lombok.Data; + import java.io.Serializable; import java.sql.Timestamp; import java.util.Set; diff --git a/src/main/java/me/zhengjie/system/service/dto/UserDTO.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java similarity index 92% rename from src/main/java/me/zhengjie/system/service/dto/UserDTO.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java index e14e01dd..857e977d 100644 --- a/src/main/java/me/zhengjie/system/service/dto/UserDTO.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/dto/UserDTO.java @@ -1,7 +1,8 @@ -package me.zhengjie.system.service.dto; +package me.zhengjie.modules.system.service.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; + import java.io.Serializable; import java.sql.Timestamp; import java.util.Date; diff --git a/src/main/java/me/zhengjie/system/service/impl/MenuServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java similarity index 88% rename from src/main/java/me/zhengjie/system/service/impl/MenuServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java index 77a9f88f..e513bf65 100644 --- a/src/main/java/me/zhengjie/system/service/impl/MenuServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/MenuServiceImpl.java @@ -1,17 +1,18 @@ -package me.zhengjie.system.service.impl; +package me.zhengjie.modules.system.service.impl; import cn.hutool.core.util.StrUtil; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.exception.EntityExistException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.domain.vo.MenuMetaVo; -import me.zhengjie.system.domain.vo.MenuVo; -import me.zhengjie.system.repository.MenuRepository; -import me.zhengjie.system.service.MenuService; -import me.zhengjie.system.service.dto.MenuDTO; -import me.zhengjie.system.service.mapper.MenuMapper; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.domain.vo.MenuMetaVo; +import me.zhengjie.modules.system.domain.vo.MenuVo; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.exception.EntityExistException; +import me.zhengjie.modules.system.repository.MenuRepository; +import me.zhengjie.modules.system.service.MenuService; +import me.zhengjie.modules.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.service.mapper.MenuMapper; +import me.zhengjie.utils.ListSortUtil; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; @@ -40,9 +41,10 @@ public class MenuServiceImpl implements MenuService { public List findByRoles(Set roles) { Set menus = new LinkedHashSet<>(); for (Role role : roles) { - Set roleSet = new HashSet<>(); - roleSet.add(role); - menus.addAll(menuRepository.findByRolesOrderBySort(roleSet)); + ListSortUtil sortList = new ListSortUtil(); + List menus1 = role.getMenus().stream().collect(Collectors.toList()); + sortList.sort(menus1, "sort", "asc"); + menus.addAll(menus1); } return menus.stream().map(menuMapper::toDto).collect(Collectors.toList()); } @@ -160,7 +162,7 @@ public class MenuServiceImpl implements MenuService { // 如果不是外链 if(!menuDTO.getIFrame()){ if(menuDTO.getPid().equals(0L)){ - //一级目录需要加斜杠,不然访问不了 + //一级目录需要加斜杠,不然访问 会跳转404页面 menuVo.setPath("/" + menuDTO.getPath()); menuVo.setComponent(StrUtil.isEmpty(menuDTO.getComponent())?"Layout":menuDTO.getComponent()); }else if(!StrUtil.isEmpty(menuDTO.getComponent())){ diff --git a/src/main/java/me/zhengjie/system/service/impl/PermissionServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java similarity index 90% rename from src/main/java/me/zhengjie/system/service/impl/PermissionServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java index e8cd0369..b722e9a1 100644 --- a/src/main/java/me/zhengjie/system/service/impl/PermissionServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/PermissionServiceImpl.java @@ -1,13 +1,13 @@ -package me.zhengjie.system.service.impl; +package me.zhengjie.modules.system.service.impl; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.exception.EntityExistException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.repository.PermissionRepository; -import me.zhengjie.system.service.PermissionService; -import me.zhengjie.system.service.dto.PermissionDTO; -import me.zhengjie.system.service.mapper.PermissionMapper; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.exception.EntityExistException; +import me.zhengjie.modules.system.repository.PermissionRepository; +import me.zhengjie.modules.system.service.PermissionService; +import me.zhengjie.modules.system.service.dto.PermissionDTO; +import me.zhengjie.modules.system.service.mapper.PermissionMapper; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; diff --git a/src/main/java/me/zhengjie/system/service/impl/RoleServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java similarity index 85% rename from src/main/java/me/zhengjie/system/service/impl/RoleServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java index 369deea8..e53afca1 100644 --- a/src/main/java/me/zhengjie/system/service/impl/RoleServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/RoleServiceImpl.java @@ -1,18 +1,17 @@ -package me.zhengjie.system.service.impl; +package me.zhengjie.modules.system.service.impl; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.exception.EntityExistException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.repository.RoleRepository; -import me.zhengjie.system.service.RoleService; -import me.zhengjie.system.service.dto.RoleDTO; -import me.zhengjie.system.service.mapper.RoleMapper; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.exception.EntityExistException; +import me.zhengjie.modules.system.repository.RoleRepository; +import me.zhengjie.modules.system.service.RoleService; +import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.mapper.RoleMapper; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; - import java.util.*; /** diff --git a/src/main/java/me/zhengjie/system/service/impl/UserServiceImpl.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java similarity index 85% rename from src/main/java/me/zhengjie/system/service/impl/UserServiceImpl.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java index 11b2efc0..0ea62bd3 100644 --- a/src/main/java/me/zhengjie/system/service/impl/UserServiceImpl.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/impl/UserServiceImpl.java @@ -1,21 +1,22 @@ -package me.zhengjie.system.service.impl; +package me.zhengjie.modules.system.service.impl; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.exception.EntityExistException; -import me.zhengjie.common.exception.EntityNotFoundException; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.core.security.JwtUser; -import me.zhengjie.core.utils.EncryptUtils; -import me.zhengjie.core.utils.JwtTokenUtil; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.repository.UserRepository; -import me.zhengjie.system.service.UserService; -import me.zhengjie.system.service.dto.UserDTO; -import me.zhengjie.system.service.mapper.UserMapper; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.exception.EntityExistException; +import me.zhengjie.exception.EntityNotFoundException; +import me.zhengjie.modules.system.repository.UserRepository; +import me.zhengjie.modules.security.security.JwtUser; +import me.zhengjie.modules.security.utils.JwtTokenUtil; +import me.zhengjie.modules.system.service.UserService; +import me.zhengjie.modules.system.service.dto.UserDTO; +import me.zhengjie.modules.system.service.mapper.UserMapper; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; import java.util.Optional; /** @@ -135,7 +136,7 @@ public class UserServiceImpl implements UserService { @Override @Transactional(rollbackFor = Exception.class) public void updatePass(JwtUser jwtUser, String pass) { - userRepository.updatePass(jwtUser.getId(),pass); + userRepository.updatePass(jwtUser.getId(),pass,new Date()); } @Override diff --git a/src/main/java/me/zhengjie/system/service/mapper/MenuMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java similarity index 59% rename from src/main/java/me/zhengjie/system/service/mapper/MenuMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java index 82eaf8d7..fc9362c7 100644 --- a/src/main/java/me/zhengjie/system/service/mapper/MenuMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/MenuMapper.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service.mapper; +package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.common.mapper.EntityMapper; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.service.dto.MenuDTO; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.service.dto.MenuDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/src/main/java/me/zhengjie/system/service/mapper/PermissionMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java similarity index 50% rename from src/main/java/me/zhengjie/system/service/mapper/PermissionMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java index b76b8f27..b65c392c 100644 --- a/src/main/java/me/zhengjie/system/service/mapper/PermissionMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/PermissionMapper.java @@ -1,10 +1,8 @@ -package me.zhengjie.system.service.mapper; +package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.common.mapper.EntityMapper; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.service.dto.PermissionDTO; -import me.zhengjie.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.service.dto.PermissionDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/src/main/java/me/zhengjie/system/service/mapper/RoleMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java similarity index 60% rename from src/main/java/me/zhengjie/system/service/mapper/RoleMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java index 5c098e8b..82234326 100644 --- a/src/main/java/me/zhengjie/system/service/mapper/RoleMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/RoleMapper.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service.mapper; +package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.common.mapper.EntityMapper; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.service.dto.RoleDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/src/main/java/me/zhengjie/system/service/mapper/UserMapper.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java similarity index 59% rename from src/main/java/me/zhengjie/system/service/mapper/UserMapper.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java index 27616555..4ddf8419 100644 --- a/src/main/java/me/zhengjie/system/service/mapper/UserMapper.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/mapper/UserMapper.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service.mapper; +package me.zhengjie.modules.system.service.mapper; -import me.zhengjie.common.mapper.EntityMapper; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.service.dto.UserDTO; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.mapper.EntityMapper; +import me.zhengjie.modules.system.service.dto.UserDTO; import org.mapstruct.Mapper; import org.mapstruct.ReportingPolicy; diff --git a/src/main/java/me/zhengjie/system/service/query/MenuQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java similarity index 89% rename from src/main/java/me/zhengjie/system/service/query/MenuQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java index b9ab5fc1..ae4ed6a3 100644 --- a/src/main/java/me/zhengjie/system/service/query/MenuQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/MenuQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service.query; +package me.zhengjie.modules.system.service.query; -import me.zhengjie.system.domain.Menu; -import me.zhengjie.system.repository.MenuRepository; -import me.zhengjie.system.service.mapper.MenuMapper; +import me.zhengjie.modules.system.domain.Menu; +import me.zhengjie.modules.system.repository.MenuRepository; +import me.zhengjie.modules.system.service.mapper.MenuMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/system/service/query/PermissionQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/PermissionQueryService.java similarity index 89% rename from src/main/java/me/zhengjie/system/service/query/PermissionQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/PermissionQueryService.java index 40ade2c4..49fe9a65 100644 --- a/src/main/java/me/zhengjie/system/service/query/PermissionQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/PermissionQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.system.service.query; +package me.zhengjie.modules.system.service.query; -import me.zhengjie.system.domain.Permission; -import me.zhengjie.system.repository.PermissionRepository; -import me.zhengjie.system.service.mapper.PermissionMapper; +import me.zhengjie.modules.system.domain.Permission; +import me.zhengjie.modules.system.repository.PermissionRepository; +import me.zhengjie.modules.system.service.mapper.PermissionMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/system/service/query/RoleQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java similarity index 88% rename from src/main/java/me/zhengjie/system/service/query/RoleQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java index 86e4e466..62b8c7fa 100644 --- a/src/main/java/me/zhengjie/system/service/query/RoleQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/RoleQueryService.java @@ -1,10 +1,10 @@ -package me.zhengjie.system.service.query; +package me.zhengjie.modules.system.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.system.domain.Role; -import me.zhengjie.system.repository.RoleRepository; -import me.zhengjie.system.service.dto.RoleDTO; -import me.zhengjie.system.service.mapper.RoleMapper; +import me.zhengjie.modules.system.domain.Role; +import me.zhengjie.modules.system.repository.RoleRepository; +import me.zhengjie.modules.system.service.dto.RoleDTO; +import me.zhengjie.modules.system.service.mapper.RoleMapper; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/system/service/query/UserQueryService.java b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java similarity index 84% rename from src/main/java/me/zhengjie/system/service/query/UserQueryService.java rename to eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java index fdb27910..5bc1e035 100644 --- a/src/main/java/me/zhengjie/system/service/query/UserQueryService.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/system/service/query/UserQueryService.java @@ -1,10 +1,10 @@ -package me.zhengjie.system.service.query; +package me.zhengjie.modules.system.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.system.domain.User; -import me.zhengjie.system.repository.UserRepository; -import me.zhengjie.system.service.dto.UserDTO; -import me.zhengjie.system.service.mapper.UserMapper; +import me.zhengjie.modules.system.domain.User; +import me.zhengjie.modules.system.repository.UserRepository; +import me.zhengjie.modules.system.service.dto.UserDTO; +import me.zhengjie.modules.system.service.mapper.UserMapper; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; @@ -15,7 +15,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; -import javax.persistence.criteria.*; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; import java.util.ArrayList; import java.util.List; diff --git a/eladmin-system/src/main/resources/banner.txt b/eladmin-system/src/main/resources/banner.txt new file mode 100644 index 00000000..d0f401a8 --- /dev/null +++ b/eladmin-system/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + _ _ _ + | | | | (_) + ___| |______ __ _ __| |_ __ ___ _ _ __ + / _ | |______/ _` |/ _` | '_ ` _ \| | '_ \ + | __| | | (_| | (_| | | | | | | | | | | + \___|_| \__,_|\__,_|_| |_| |_|_|_| |_| + + :: Spring Boot :: (v2.1.0.RELEASE) \ No newline at end of file diff --git a/src/main/resources/application.yml b/eladmin-system/src/main/resources/config/application-dev.yml similarity index 68% rename from src/main/resources/application.yml rename to eladmin-system/src/main/resources/config/application-dev.yml index 61dd911c..827de224 100644 --- a/src/main/resources/application.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -1,6 +1,3 @@ -server: - port: 8000 - #配置数据源 spring: datasource: @@ -44,36 +41,9 @@ spring: #配置 Jpa jpa: - properties: - hibernate: - dialect: org.hibernate.dialect.MySQL5InnoDBDialect hibernate: # 生产环境设置成 none,避免程序运行时自动更新数据库结构 ddl-auto: update - naming: - physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl - open-in-view: true - jackson: - time-zone: GMT+8 - - redis: - #数据库索引 - database: 0 - host: 127.0.0.1 - port: 6379 - password: - jedis: - pool: - #最大连接数 - max-active: 100 - #最大阻塞等待时间(负数表示没限制) - max-wait: 2000 - #最大空闲 - max-idle: 500 - #最小空闲 - min-idle: 8 - #连接超时时间 - timeout: 5000 #jwt jwt: @@ -81,18 +51,12 @@ jwt: secret: mySecret # token 过期时间 2个小时 expiration: 7200000 -# expiration: 60000 auth: # 授权路径 path: /login # 获取用户信息 account: /info -#七牛云 -qiniu: - # 文件大小 /M - max-size: 5 - -#验证码有效时间/分钟 -code: - expiration: 5 \ No newline at end of file +#是否允许生成代码,生产环境设置为false +generator: + enabled: true \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application-prod.yml b/eladmin-system/src/main/resources/config/application-prod.yml new file mode 100644 index 00000000..3758d287 --- /dev/null +++ b/eladmin-system/src/main/resources/config/application-prod.yml @@ -0,0 +1,62 @@ +#配置数据源 +spring: + datasource: + druid: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy + url: jdbc:log4jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false + username: root + password: 123456 + + # 初始化连接大小 + initial-size: 5 + # 最小空闲连接数 + min-idle: 5 + max-active: 20 + max-wait: 30000 + # 可关闭的空闲连接间隔时间 + time-between-eviction-runs-millis: 60000 + # 配置连接在池中的最小生存时间 + min-evictable-idle-time-millis: 300000 + validation-query: select '1' from dual + test-while-idle: true + test-on-borrow: false + test-on-return: false + # 打开PSCache,并且指定每个连接上PSCache的大小 + pool-prepared-statements: true + max-open-prepared-statements: 20 + max-pool-prepared-statement-per-connection-size: 20 + # 配置监控统计拦截的filters + filters: stat + + stat-view-servlet: + url-pattern: /druid/* + reset-enable: false + login-username: admin + login-password: 123456 + + web-stat-filter: + url-pattern: /* + exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*" + + #配置 Jpa + jpa: + hibernate: + # 生产环境设置成 none,避免程序运行时自动更新数据库结构 + ddl-auto: none + +#jwt +jwt: + header: Authorization + secret: mySecret + # token 过期时间 2个小时 + expiration: 7200000 + auth: + # 授权路径 + path: /login + # 获取用户信息 + account: /info + +#是否允许生成代码,生产环境设置为false +generator: + enabled: false \ No newline at end of file diff --git a/eladmin-system/src/main/resources/config/application.yml b/eladmin-system/src/main/resources/config/application.yml new file mode 100644 index 00000000..2e70d4ae --- /dev/null +++ b/eladmin-system/src/main/resources/config/application.yml @@ -0,0 +1,50 @@ +server: + port: 8000 + +spring: + profiles: + active: dev + jackson: + time-zone: GMT+8 + data: + redis: + repositories: + enabled: false + + #配置 Jpa + jpa: + properties: + hibernate: + dialect: org.hibernate.dialect.MySQL5InnoDBDialect + naming: + physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl + open-in-view: true + + redis: + #数据库索引 + database: 0 + host: 127.0.0.1 + port: 6379 + password: + jedis: + pool: + #最大连接数 + max-active: 100 + #最大阻塞等待时间(负数表示没限制) + max-wait: 2000 + #最大空闲 + max-idle: 500 + #最小空闲 + min-idle: 8 + #连接超时时间 + timeout: 5000 + + +#七牛云 +qiniu: + # 文件大小 /M + max-size: 5 + +#验证码有效时间/分钟 +code: + expiration: 5 \ No newline at end of file diff --git a/eladmin-system/src/main/resources/generator.properties b/eladmin-system/src/main/resources/generator.properties new file mode 100644 index 00000000..b4d3d644 --- /dev/null +++ b/eladmin-system/src/main/resources/generator.properties @@ -0,0 +1,27 @@ +#ݿתjava +tinyint=Integer +smallint=Integer +mediumint=Integer +int=Integer +integer=Integer + +bigint=Long + +float=Float + +double=Double + +decimal=BigDecimal + +bit=Boolean + +char=String +varchar=String +tinytext=String +text=String +mediumtext=String +longtext=String + +date=Timestamp +datetime=Timestamp +timestamp=Timestamp \ No newline at end of file diff --git a/src/main/resources/log4jdbc.log4j2.properties b/eladmin-system/src/main/resources/log4jdbc.log4j2.properties similarity index 100% rename from src/main/resources/log4jdbc.log4j2.properties rename to eladmin-system/src/main/resources/log4jdbc.log4j2.properties diff --git a/src/main/resources/logback.xml b/eladmin-system/src/main/resources/logback.xml similarity index 94% rename from src/main/resources/logback.xml rename to eladmin-system/src/main/resources/logback.xml index a882a2b0..0cf17a7c 100644 --- a/src/main/resources/logback.xml +++ b/eladmin-system/src/main/resources/logback.xml @@ -10,7 +10,7 @@ - + diff --git a/eladmin-system/src/main/resources/template/email/email.ftl b/eladmin-system/src/main/resources/template/email/email.ftl new file mode 100644 index 00000000..6a636cf5 --- /dev/null +++ b/eladmin-system/src/main/resources/template/email/email.ftl @@ -0,0 +1,56 @@ + + + + + + + +
+
+

尊敬的用户,您好:

+

您正在申请邮箱验证,您的验证码为:

+

${code}

+
+

扣扣群:891137268

+

Github:https://github.com/elunez/eladmin

+
+
+
+
+ Copyright ©${.now?string("yyyy")} EL-ADMIN 后台管理系统 All Rights Reserved. +
+ +
+
+ + diff --git a/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl new file mode 100644 index 00000000..80c3e335 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Controller.ftl @@ -0,0 +1,74 @@ +package ${package}.rest; + +import me.zhengjie.aop.log.Log; +import me.zhengjie.exception.BadRequestException; +import ${package}.domain.${className}; +import ${package}.service.${className}Service; +import ${package}.service.dto.${className}DTO; +import ${package}.service.query.${className}QueryService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +/** +* @author ${author} +* @date ${date} +*/ +@RestController +@RequestMapping("api") +public class ${className}Controller { + + @Autowired + private ${className}Service ${changeClassName}Service; + + @Autowired + private ${className}QueryService ${changeClassName}QueryService; + + private static final String ENTITY_NAME = "${changeClassName}"; + + @GetMapping(value = "/${changeClassName}/{id}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity get${className}(@PathVariable ${pkColumnType} id){ + return new ResponseEntity(${changeClassName}Service.findById(id), HttpStatus.OK); + } + + @Log("查询${className}") + @GetMapping(value = "/${changeClassName}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity get${className}s(${className}DTO resources, Pageable pageable){ + return new ResponseEntity(${changeClassName}QueryService.queryAll(resources,pageable),HttpStatus.OK); + } + + @Log("新增${className}") + @PostMapping(value = "/${changeClassName}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity create(@Validated @RequestBody ${className} resources){ + if (resources.getId() != null) { + throw new BadRequestException("A new "+ ENTITY_NAME +" cannot already have an ID"); + } + return new ResponseEntity(${changeClassName}Service.create(resources),HttpStatus.CREATED); + } + + @Log("修改${className}") + @PutMapping(value = "/${changeClassName}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity update(@Validated @RequestBody ${className} resources){ + if (resources.getId() == null) { + throw new BadRequestException(ENTITY_NAME +" ID Can not be empty"); + } + ${changeClassName}Service.update(resources); + return new ResponseEntity(HttpStatus.NO_CONTENT); + } + + @Log("删除${className}") + @DeleteMapping(value = "/${changeClassName}/{id}") + @PreAuthorize("hasAnyRole('ADMIN')") + public ResponseEntity delete(@PathVariable Long id){ + ${changeClassName}Service.delete(id); + return new ResponseEntity(HttpStatus.OK); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl b/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl new file mode 100644 index 00000000..d7d8e166 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Dto.ftl @@ -0,0 +1,29 @@ +package ${package}.service.dto; + +import lombok.Data; +<#if hasTimestamp> +import java.sql.Timestamp; + +<#if hasBigDecimal> +import java.math.BigDecimal; + +import java.io.Serializable; + +/** +* @author ${author} +* @date ${date} +*/ +@Data +public class ${className}DTO implements Serializable { +<#if columns??> + <#list columns as column> + + <#if column.columnComment != ''> + /** + * ${column.columnComment} + */ + + private ${column.columnType} ${column.changeColumnName}; + + +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl b/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl new file mode 100644 index 00000000..4c802550 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Entity.ftl @@ -0,0 +1,37 @@ +package ${package}.domain; + +import lombok.Data; +import javax.persistence.*; +<#if hasTimestamp> +import java.sql.Timestamp; + +<#if hasBigDecimal> +import java.math.BigDecimal; + +import java.io.Serializable; + +/** +* @author ${author} +* @date ${date} +*/ +@Entity +@Data +@Table(name="${tableName}") +public class ${className} implements Serializable { +<#if columns??> + <#list columns as column> + + <#if column.columnComment != ''> + /** + * ${column.columnComment} + */ + + <#if column.columnKey = 'PRI'> + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + + @Column(name = "${column.columnName}"<#if column.columnKey = 'UNI'>,unique = true<#if column.isNullable = 'NO' && column.columnKey != 'PRI'>,nullable = false) + private ${column.columnType} ${column.changeColumnName}; + + +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl new file mode 100644 index 00000000..2f067d30 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Mapper.ftl @@ -0,0 +1,16 @@ +package ${package}.service.mapper; + +import me.zhengjie.mapper.EntityMapper; +import ${package}.domain.${className}; +import ${package}.service.dto.${className}DTO; +import org.mapstruct.Mapper; +import org.mapstruct.ReportingPolicy; + +/** +* @author ${author} +* @date ${date} +*/ +@Mapper(componentModel = "spring",uses = {},unmappedTargetPolicy = ReportingPolicy.IGNORE) +public interface ${className}Mapper extends EntityMapper<${className}DTO, ${className}> { + +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl b/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl new file mode 100644 index 00000000..12cce620 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/QueryService.ftl @@ -0,0 +1,94 @@ +package ${package}.service.query; + +import me.zhengjie.utils.PageUtil; +import ${package}.domain.${className}; +import ${package}.service.dto.${className}DTO; +import ${package}.repository.${className}Repository; +import ${package}.service.mapper.${className}Mapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.domain.Specification; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Predicate; +import javax.persistence.criteria.Root; +import java.util.ArrayList; +import java.util.List; + +/** + * @author jie + * @date 2018-12-03 + */ +@Service +@CacheConfig(cacheNames = "${changeClassName}") +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class ${className}QueryService { + + @Autowired + private ${className}Repository ${changeClassName}Repository; + + @Autowired + private ${className}Mapper ${changeClassName}Mapper; + + /** + * 分页 + */ + @Cacheable(keyGenerator = "keyGenerator") + public Object queryAll(${className}DTO ${changeClassName}, Pageable pageable){ + Page<${className}> page = ${changeClassName}Repository.findAll(new Spec(${changeClassName}),pageable); + return PageUtil.toPage(page.map(${changeClassName}Mapper::toDto)); + } + + /** + * 不分页 + */ + @Cacheable(keyGenerator = "keyGenerator") + public Object queryAll(${className}DTO ${changeClassName}){ + return ${changeClassName}Mapper.toDto(${changeClassName}Repository.findAll(new Spec(${changeClassName}))); + } + + class Spec implements Specification<${className}> { + + private ${className}DTO ${changeClassName}; + + public Spec(${className}DTO ${changeClassName}){ + this.${changeClassName} = ${changeClassName}; + } + + @Override + public Predicate toPredicate(Root<${className}> root, CriteriaQuery criteriaQuery, CriteriaBuilder cb) { + + List list = new ArrayList(); + + <#if columns??> + <#list columns as column> + <#if column.columnQuery??> + if(!ObjectUtils.isEmpty(${changeClassName}.get${column.capitalColumnName}())){ + <#if column.columnQuery = '1'> + /** + * 模糊 + */ + list.add(cb.like(root.get("${column.columnName}").as(${column.columnType}.class),"%"+${changeClassName}.get${column.capitalColumnName}()+"%")); + + <#if column.columnQuery = '2'> + /** + * 精确 + */ + list.add(cb.equal(root.get("${column.columnName}").as(${column.columnType}.class),${changeClassName}.get${column.capitalColumnName}())); + + } + + + + Predicate[] p = new Predicate[list.size()]; + return cb.and(list.toArray(p)); + } + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl new file mode 100644 index 00000000..9b896818 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Repository.ftl @@ -0,0 +1,25 @@ +package ${package}.repository; + +import ${package}.domain.${className}; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; + +/** +* @author ${author} +* @date ${date} +*/ +public interface ${className}Repository extends JpaRepository<${className}, ${pkColumnType}>, JpaSpecificationExecutor { +<#if columns??> + <#list columns as column> + <#if column.columnKey = 'UNI'> + + /** + * findBy${column.capitalColumnName} + * @param ${column.columnName} + * @return + */ + ${className} findBy${column.capitalColumnName}(${column.columnType} ${column.columnName}); + + + +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/Service.ftl b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl new file mode 100644 index 00000000..809e242d --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/Service.ftl @@ -0,0 +1,45 @@ +package ${package}.service; + +import ${package}.domain.${className}; +import ${package}.service.dto.${className}DTO; +import org.springframework.cache.annotation.CacheConfig; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; + +/** +* @author ${author} +* @date ${date} +*/ +@CacheConfig(cacheNames = "${changeClassName}") +public interface ${className}Service { + + /** + * findById + * @param id + * @return + */ + @Cacheable(key = "#p0") + ${className}DTO findById(${pkColumnType} id); + + /** + * create + * @param resources + * @return + */ + @CacheEvict(allEntries = true) + ${className}DTO create(${className} resources); + + /** + * update + * @param resources + */ + @CacheEvict(allEntries = true) + void update(${className} resources); + + /** + * delete + * @param id + */ + @CacheEvict(allEntries = true) + void delete(Long id); +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl new file mode 100644 index 00000000..ef7b7dec --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/admin/ServiceImpl.ftl @@ -0,0 +1,90 @@ +package ${package}.service.impl; + +import ${package}.domain.${className}; +<#if columns??> + <#list columns as column> + <#if column.columnKey = 'UNI'> + <#if column_index = 1> +import me.zhengjie.exception.EntityExistException; + + + + +import me.zhengjie.utils.ValidationUtil; +import ${package}.repository.${className}Repository; +import ${package}.service.${className}Service; +import ${package}.service.dto.${className}DTO; +import ${package}.service.mapper.${className}Mapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; +import java.util.Optional; + +/** +* @author ${author} +* @date ${date} +*/ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true, rollbackFor = Exception.class) +public class ${className}ServiceImpl implements ${className}Service { + + @Autowired + private ${className}Repository ${changeClassName}Repository; + + @Autowired + private ${className}Mapper ${changeClassName}Mapper; + + @Override + public ${className}DTO findById(${pkColumnType} id) { + Optional<${className}> ${changeClassName} = ${changeClassName}Repository.findById(id); + ValidationUtil.isNull(${changeClassName},"${className}","id",id); + return ${changeClassName}Mapper.toDto(${changeClassName}.get()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public ${className}DTO create(${className} resources) { +<#if columns??> + <#list columns as column> + <#if column.columnKey = 'UNI'> + if(${changeClassName}Repository.findBy${column.capitalColumnName}(resources.get${column.capitalColumnName}()) != null){ + throw new EntityExistException(${className}.class,"${column.columnName}",resources.get${column.capitalColumnName}()); + } + + + + return ${changeClassName}Mapper.toDto(${changeClassName}Repository.save(resources)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(${className} resources) { + Optional<${className}> optional${className} = ${changeClassName}Repository.findById(resources.getId()); + ValidationUtil.isNull( optional${className},"${className}","id",resources.getId()); + + ${className} ${changeClassName} = optional${className}.get(); +<#if columns??> + <#list columns as column> + <#if column.columnKey = 'UNI'> + <#if column_index = 1> + ${className} ${changeClassName}1 = null; + + ${changeClassName}1 = ${changeClassName}Repository.findBy${column.capitalColumnName}(resources.get${column.capitalColumnName}()); + if(${changeClassName}1 != null && !${changeClassName}1.getId().equals(${changeClassName}.getId())){ + throw new EntityExistException(${className}.class,"${column.columnName}",resources.get${column.capitalColumnName}()); + } + + + + // 此处需自己修改 + resources.setId(${changeClassName}.getId()); + ${changeClassName}Repository.save(resources); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(Long id) { + ${changeClassName}Repository.deleteById(id); + } +} \ No newline at end of file diff --git a/eladmin-system/src/main/resources/template/generator/front/api.ftl b/eladmin-system/src/main/resources/template/generator/front/api.ftl new file mode 100644 index 00000000..400be882 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/front/api.ftl @@ -0,0 +1,24 @@ +import request from '@/utils/request' + +export function add(data) { + return request({ + url: 'api/${changeClassName}', + method: 'post', + data + }) +} + +export function del(id) { + return request({ + url: 'api/${changeClassName}/' + id, + method: 'delete' + }) +} + +export function edit(data) { + return request({ + url: 'api/${changeClassName}', + method: 'put', + data + }) +} diff --git a/eladmin-system/src/main/resources/template/generator/front/eForm.ftl b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl new file mode 100644 index 00000000..bbe22905 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/front/eForm.ftl @@ -0,0 +1,103 @@ + + + + + diff --git a/eladmin-system/src/main/resources/template/generator/front/edit.ftl b/eladmin-system/src/main/resources/template/generator/front/edit.ftl new file mode 100644 index 00000000..04a72fd1 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/front/edit.ftl @@ -0,0 +1,42 @@ + + + + diff --git a/eladmin-system/src/main/resources/template/generator/front/header.ftl b/eladmin-system/src/main/resources/template/generator/front/header.ftl new file mode 100644 index 00000000..51a244e3 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/front/header.ftl @@ -0,0 +1,59 @@ + + + diff --git a/eladmin-system/src/main/resources/template/generator/front/index.ftl b/eladmin-system/src/main/resources/template/generator/front/index.ftl new file mode 100644 index 00000000..85b206d0 --- /dev/null +++ b/eladmin-system/src/main/resources/template/generator/front/index.ftl @@ -0,0 +1,112 @@ +<#--noinspection ALL--> + + + + + diff --git a/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java new file mode 100644 index 00000000..c78714a4 --- /dev/null +++ b/eladmin-system/src/test/java/me/zhengjie/EladminSystemApplicationTests.java @@ -0,0 +1,17 @@ +package me.zhengjie; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class EladminSystemApplicationTests { + + @Test + public void contextLoads() { + } + +} + diff --git a/eladmin-tools/eladmin-tools.iml b/eladmin-tools/eladmin-tools.iml new file mode 100644 index 00000000..65b122f1 --- /dev/null +++ b/eladmin-tools/eladmin-tools.iml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/eladmin-tools/pom.xml b/eladmin-tools/pom.xml new file mode 100644 index 00000000..d6106090 --- /dev/null +++ b/eladmin-tools/pom.xml @@ -0,0 +1,49 @@ + + + + eladmin + me.zhengjie + 1.5 + + 4.0.0 + + eladmin-tools + + + 1.4.7 + [7.2.0, 7.2.99] + 3.1.0 + + + + + + me.zhengjie + eladmin-logging + 1.5 + + + + + javax.mail + mail + ${mail.version} + + + + + com.qiniu + qiniu-java-sdk + ${qiniu.version} + + + + + com.alipay.sdk + alipay-sdk-java + ${alipay.version} + + + \ No newline at end of file diff --git a/src/main/java/me/zhengjie/tools/config/MultipartConfig.java b/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java similarity index 96% rename from src/main/java/me/zhengjie/tools/config/MultipartConfig.java rename to eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java index 0aba4f70..aceb5eac 100644 --- a/src/main/java/me/zhengjie/tools/config/MultipartConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/config/MultipartConfig.java @@ -1,8 +1,9 @@ -package me.zhengjie.tools.config; +package me.zhengjie.config; import org.springframework.boot.web.servlet.MultipartConfigFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; + import javax.servlet.MultipartConfigElement; import java.io.File; diff --git a/src/main/java/me/zhengjie/tools/domain/AlipayConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java similarity index 79% rename from src/main/java/me/zhengjie/tools/domain/AlipayConfig.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java index 58256fba..056a8fa4 100644 --- a/src/main/java/me/zhengjie/tools/domain/AlipayConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/AlipayConfig.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.domain; +package me.zhengjie.domain; import lombok.Data; import javax.persistence.*; @@ -23,30 +23,33 @@ public class AlipayConfig implements Serializable { * 应用ID,APPID,收款账号既是APPID对应支付宝账号 */ @NotBlank + @Column(name = "app_id") private String appID; /** * 商户私钥,您的PKCS8格式RSA2私钥 */ @NotBlank - @Column(length = 2000) + @Column(name = "private_key", columnDefinition = "text") private String privateKey; /** * 支付宝公钥 */ @NotBlank - @Column(length = 2000) + @Column(name = "public_key", columnDefinition = "text") private String publicKey; /** * 签名方式,固定格式 */ + @Column(name = "sign_type") private String signType="RSA2"; /** * 支付宝开放安全地址,一般不会变 */ + @Column(name = "gateway_url") private String gatewayUrl = "https://openapi.alipaydev.com/gateway.do"; /** @@ -58,12 +61,14 @@ public class AlipayConfig implements Serializable { * 异步通知地址 */ @NotBlank + @Column(name = "notify_url") private String notifyUrl; /** * 订单完成后返回的页面 */ @NotBlank + @Column(name = "return_url") private String returnUrl; /** @@ -75,6 +80,7 @@ public class AlipayConfig implements Serializable { * 商户号 */ @NotBlank + @Column(name = "sys_service_provider_id") private String sysServiceProviderId; } diff --git a/src/main/java/me/zhengjie/tools/domain/EmailConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java similarity index 91% rename from src/main/java/me/zhengjie/tools/domain/EmailConfig.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java index 45aac7b9..de9c3ec7 100644 --- a/src/main/java/me/zhengjie/tools/domain/EmailConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/EmailConfig.java @@ -1,6 +1,7 @@ -package me.zhengjie.tools.domain; +package me.zhengjie.domain; import lombok.Data; + import javax.persistence.*; import javax.validation.constraints.NotBlank; import java.io.Serializable; @@ -41,8 +42,9 @@ public class EmailConfig implements Serializable { private String pass; /** - * 发件人 + * 收件人 */ @NotBlank + @Column(name = "from_user") private String fromUser; } diff --git a/src/main/java/me/zhengjie/tools/domain/Picture.java b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java similarity index 93% rename from src/main/java/me/zhengjie/tools/domain/Picture.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java index 6d6565c3..21c9ef72 100644 --- a/src/main/java/me/zhengjie/tools/domain/Picture.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/Picture.java @@ -1,7 +1,8 @@ -package me.zhengjie.tools.domain; +package me.zhengjie.domain; import lombok.Data; import org.hibernate.annotations.CreationTimestamp; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -40,6 +41,7 @@ public class Picture implements Serializable { private String username; @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; @Override diff --git a/src/main/java/me/zhengjie/tools/domain/QiniuConfig.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java similarity index 88% rename from src/main/java/me/zhengjie/tools/domain/QiniuConfig.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java index 39400b4a..bdad440c 100644 --- a/src/main/java/me/zhengjie/tools/domain/QiniuConfig.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuConfig.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.domain; +package me.zhengjie.domain; import lombok.Data; import javax.persistence.*; @@ -23,12 +23,14 @@ public class QiniuConfig implements Serializable { * 一个账号最多拥有两对密钥(Access/Secret Key) */ @NotBlank + @Column(name = "access_key", columnDefinition = "text") private String accessKey; /** * 一个账号最多拥有两对密钥(Access/Secret Key) */ @NotBlank + @Column(name = "secret_key", columnDefinition = "text") private String secretKey; /** diff --git a/src/main/java/me/zhengjie/tools/domain/QiniuContent.java b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java similarity index 93% rename from src/main/java/me/zhengjie/tools/domain/QiniuContent.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java index de33fdff..fb2636a8 100644 --- a/src/main/java/me/zhengjie/tools/domain/QiniuContent.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/QiniuContent.java @@ -1,7 +1,8 @@ -package me.zhengjie.tools.domain; +package me.zhengjie.domain; import lombok.Data; import org.hibernate.annotations.UpdateTimestamp; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -50,5 +51,6 @@ public class QiniuContent implements Serializable { * 更新时间 */ @UpdateTimestamp + @Column(name = "update_time") private Timestamp updateTime; } diff --git a/src/main/java/me/zhengjie/system/domain/VerificationCode.java b/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java similarity index 95% rename from src/main/java/me/zhengjie/system/domain/VerificationCode.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java index b555419e..4f2b23db 100644 --- a/src/main/java/me/zhengjie/system/domain/VerificationCode.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/VerificationCode.java @@ -1,4 +1,4 @@ -package me.zhengjie.system.domain; +package me.zhengjie.domain; import lombok.AllArgsConstructor; import lombok.Data; @@ -53,6 +53,7 @@ public class VerificationCode { * 创建日期 */ @CreationTimestamp + @Column(name = "create_time") private Timestamp createTime; public VerificationCode(String code, String scenes, @NotBlank String type, @NotBlank String value) { diff --git a/src/main/java/me/zhengjie/tools/domain/vo/EmailVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java similarity index 89% rename from src/main/java/me/zhengjie/tools/domain/vo/EmailVo.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java index cbed2b8f..a0767cbb 100644 --- a/src/main/java/me/zhengjie/tools/domain/vo/EmailVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/EmailVo.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.domain.vo; +package me.zhengjie.domain.vo; import lombok.AllArgsConstructor; import lombok.Data; @@ -6,7 +6,6 @@ import lombok.NoArgsConstructor; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; -import java.util.ArrayList; import java.util.List; /** diff --git a/src/main/java/me/zhengjie/tools/domain/vo/TradeVo.java b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java similarity index 97% rename from src/main/java/me/zhengjie/tools/domain/vo/TradeVo.java rename to eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java index bc57634d..aca9c026 100644 --- a/src/main/java/me/zhengjie/tools/domain/vo/TradeVo.java +++ b/eladmin-tools/src/main/java/me/zhengjie/domain/vo/TradeVo.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.domain.vo; +package me.zhengjie.domain.vo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/me/zhengjie/tools/repository/AlipayRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/AlipayRepository.java similarity index 68% rename from src/main/java/me/zhengjie/tools/repository/AlipayRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/AlipayRepository.java index cb176035..7935cd65 100644 --- a/src/main/java/me/zhengjie/tools/repository/AlipayRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/AlipayRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.tools.repository; +package me.zhengjie.repository; -import me.zhengjie.tools.domain.AlipayConfig; +import me.zhengjie.domain.AlipayConfig; import org.springframework.data.jpa.repository.JpaRepository; /** diff --git a/src/main/java/me/zhengjie/tools/repository/EmailRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java similarity index 68% rename from src/main/java/me/zhengjie/tools/repository/EmailRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java index 073df371..380cbf46 100644 --- a/src/main/java/me/zhengjie/tools/repository/EmailRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/EmailRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.tools.repository; +package me.zhengjie.repository; -import me.zhengjie.tools.domain.EmailConfig; +import me.zhengjie.domain.EmailConfig; import org.springframework.data.jpa.repository.JpaRepository; /** diff --git a/src/main/java/me/zhengjie/tools/repository/PictureRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java similarity index 78% rename from src/main/java/me/zhengjie/tools/repository/PictureRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java index 49d418c2..2d6fd27a 100644 --- a/src/main/java/me/zhengjie/tools/repository/PictureRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/PictureRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.tools.repository; +package me.zhengjie.repository; -import me.zhengjie.tools.domain.Picture; +import me.zhengjie.domain.Picture; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/src/main/java/me/zhengjie/tools/repository/QiNiuConfigRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java similarity index 69% rename from src/main/java/me/zhengjie/tools/repository/QiNiuConfigRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java index 481dd53a..83c39f5b 100644 --- a/src/main/java/me/zhengjie/tools/repository/QiNiuConfigRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiNiuConfigRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.tools.repository; +package me.zhengjie.repository; -import me.zhengjie.tools.domain.QiniuConfig; +import me.zhengjie.domain.QiniuConfig; import org.springframework.data.jpa.repository.JpaRepository; /** diff --git a/src/main/java/me/zhengjie/tools/repository/QiniuContentRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java similarity index 82% rename from src/main/java/me/zhengjie/tools/repository/QiniuContentRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java index 868f26aa..553fa94e 100644 --- a/src/main/java/me/zhengjie/tools/repository/QiniuContentRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/QiniuContentRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.tools.repository; +package me.zhengjie.repository; -import me.zhengjie.tools.domain.QiniuContent; +import me.zhengjie.domain.QiniuContent; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; diff --git a/src/main/java/me/zhengjie/system/repository/VerificationCodeRepository.java b/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java similarity index 77% rename from src/main/java/me/zhengjie/system/repository/VerificationCodeRepository.java rename to eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java index 3b5b0037..c482da23 100644 --- a/src/main/java/me/zhengjie/system/repository/VerificationCodeRepository.java +++ b/eladmin-tools/src/main/java/me/zhengjie/repository/VerificationCodeRepository.java @@ -1,6 +1,6 @@ -package me.zhengjie.system.repository; +package me.zhengjie.repository; -import me.zhengjie.system.domain.VerificationCode; +import me.zhengjie.domain.VerificationCode; import org.springframework.data.jpa.repository.JpaRepository; /** @@ -16,5 +16,5 @@ public interface VerificationCodeRepository extends JpaRepository"); //ssl方式发送 account.setStartttlsEnable(true); - String content = emailVo.getContent()+ ElAdminConstant.EMAIL_CONTENT; + String content = emailVo.getContent(); /** * 发送 */ diff --git a/src/main/java/me/zhengjie/tools/service/impl/PictureServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java similarity index 88% rename from src/main/java/me/zhengjie/tools/service/impl/PictureServiceImpl.java rename to eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java index c5c11c48..b9e7351f 100644 --- a/src/main/java/me/zhengjie/tools/service/impl/PictureServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/PictureServiceImpl.java @@ -1,15 +1,16 @@ -package me.zhengjie.tools.service.impl; +package me.zhengjie.service.impl; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.FileUtil; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.tools.domain.Picture; -import me.zhengjie.tools.repository.PictureRepository; -import me.zhengjie.tools.service.PictureService; +import me.zhengjie.domain.Picture; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.repository.PictureRepository; +import me.zhengjie.service.PictureService; +import me.zhengjie.utils.ElAdminConstant; +import me.zhengjie.utils.FileUtil; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.FileSystemResource; import org.springframework.http.*; @@ -59,7 +60,7 @@ public class PictureServiceImpl implements PictureService { headers.add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"); HttpEntity> httpEntity = new HttpEntity>(param,headers); - ResponseEntity responseEntity = rest.exchange("https://sm.ms/api/upload", HttpMethod.POST, httpEntity, String.class); + ResponseEntity responseEntity = rest.exchange(ElAdminConstant.Url.SM_MS_URL, HttpMethod.POST, httpEntity, String.class); JSONObject jsonObject = JSONUtil.parseObj(responseEntity.getBody()); Picture picture = null; diff --git a/src/main/java/me/zhengjie/tools/service/impl/QiNiuServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java similarity index 92% rename from src/main/java/me/zhengjie/tools/service/impl/QiNiuServiceImpl.java rename to eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java index f123321c..887c5055 100644 --- a/src/main/java/me/zhengjie/tools/service/impl/QiNiuServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/QiNiuServiceImpl.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.service.impl; +package me.zhengjie.service.impl; import com.google.gson.Gson; import com.qiniu.common.QiniuException; @@ -9,22 +9,21 @@ import com.qiniu.storage.UploadManager; import com.qiniu.storage.model.DefaultPutRet; import com.qiniu.storage.model.FileInfo; import com.qiniu.util.Auth; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.FileUtil; -import me.zhengjie.common.utils.ValidationUtil; -import me.zhengjie.tools.domain.QiniuConfig; -import me.zhengjie.tools.domain.QiniuContent; -import me.zhengjie.tools.repository.QiNiuConfigRepository; -import me.zhengjie.tools.repository.QiniuContentRepository; -import me.zhengjie.tools.service.QiNiuService; -import me.zhengjie.tools.util.QiNiuUtil; +import me.zhengjie.domain.QiniuConfig; +import me.zhengjie.domain.QiniuContent; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.repository.QiNiuConfigRepository; +import me.zhengjie.repository.QiniuContentRepository; +import me.zhengjie.service.QiNiuService; +import me.zhengjie.util.QiNiuUtil; +import me.zhengjie.utils.FileUtil; +import me.zhengjie.utils.ValidationUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; -import java.io.UnsupportedEncodingException; import java.util.Optional; /** diff --git a/src/main/java/me/zhengjie/system/service/impl/VerificationCodeServiceImpl.java b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java similarity index 75% rename from src/main/java/me/zhengjie/system/service/impl/VerificationCodeServiceImpl.java rename to eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java index 386aad17..524394f9 100644 --- a/src/main/java/me/zhengjie/system/service/impl/VerificationCodeServiceImpl.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/impl/VerificationCodeServiceImpl.java @@ -1,22 +1,23 @@ -package me.zhengjie.system.service.impl; +package me.zhengjie.service.impl; +import cn.hutool.core.lang.Dict; import cn.hutool.core.util.RandomUtil; -import me.zhengjie.common.exception.BadRequestException; -import me.zhengjie.common.utils.ElAdminConstant; -import me.zhengjie.system.domain.VerificationCode; -import me.zhengjie.system.repository.VerificationCodeRepository; -import me.zhengjie.system.service.VerificationCodeService; -import me.zhengjie.tools.domain.vo.EmailVo; +import cn.hutool.extra.template.Template; +import cn.hutool.extra.template.TemplateConfig; +import cn.hutool.extra.template.TemplateEngine; +import cn.hutool.extra.template.TemplateUtil; +import me.zhengjie.domain.VerificationCode; +import me.zhengjie.domain.vo.EmailVo; +import me.zhengjie.exception.BadRequestException; +import me.zhengjie.repository.VerificationCodeRepository; +import me.zhengjie.service.VerificationCodeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import java.util.Arrays; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.concurrent.TimeUnit; +import java.util.concurrent.*; /** * @author jie @@ -39,14 +40,16 @@ public class VerificationCodeServiceImpl implements VerificationCodeService { String content = ""; VerificationCode verificationCode = verificationCodeRepository.findByScenesAndTypeAndValueAndStatusIsTrue(code.getScenes(),code.getType(),code.getValue()); // 如果不存在有效的验证码,就创建一个新的 + TemplateEngine engine = TemplateUtil.createEngine(new TemplateConfig("template", TemplateConfig.ResourceMode.CLASSPATH)); + Template template = engine.getTemplate("email/email.ftl"); if(verificationCode == null){ code.setCode(RandomUtil.randomNumbers (6)); - content = ElAdminConstant.EMAIL_CODE + code.getCode() + "

"; + content = template.render(Dict.create().set("code",code.getCode())); emailVo = new EmailVo(Arrays.asList(code.getValue()),"eladmin后台管理系统",content); timedDestruction(verificationCodeRepository.save(code)); // 存在就再次发送原来的验证码 } else { - content = ElAdminConstant.EMAIL_CODE + verificationCode.getCode() + "

"; + content = template.render(Dict.create().set("code",verificationCode.getCode())); emailVo = new EmailVo(Arrays.asList(verificationCode.getValue()),"eladmin后台管理系统",content); } return emailVo; diff --git a/src/main/java/me/zhengjie/tools/service/query/PictureQueryService.java b/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java similarity index 91% rename from src/main/java/me/zhengjie/tools/service/query/PictureQueryService.java rename to eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java index 13d8fcbe..4624b1a2 100644 --- a/src/main/java/me/zhengjie/tools/service/query/PictureQueryService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/query/PictureQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.tools.service.query; +package me.zhengjie.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.tools.domain.Picture; -import me.zhengjie.tools.repository.PictureRepository; +import me.zhengjie.domain.Picture; +import me.zhengjie.repository.PictureRepository; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/tools/service/query/QiNiuQueryService.java b/eladmin-tools/src/main/java/me/zhengjie/service/query/QiNiuQueryService.java similarity index 91% rename from src/main/java/me/zhengjie/tools/service/query/QiNiuQueryService.java rename to eladmin-tools/src/main/java/me/zhengjie/service/query/QiNiuQueryService.java index d284fc70..853652de 100644 --- a/src/main/java/me/zhengjie/tools/service/query/QiNiuQueryService.java +++ b/eladmin-tools/src/main/java/me/zhengjie/service/query/QiNiuQueryService.java @@ -1,8 +1,8 @@ -package me.zhengjie.tools.service.query; +package me.zhengjie.service.query; -import me.zhengjie.common.utils.PageUtil; -import me.zhengjie.tools.domain.QiniuContent; -import me.zhengjie.tools.repository.QiniuContentRepository; +import me.zhengjie.domain.QiniuContent; +import me.zhengjie.repository.QiniuContentRepository; +import me.zhengjie.utils.PageUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.CacheConfig; import org.springframework.cache.annotation.Cacheable; diff --git a/src/main/java/me/zhengjie/tools/util/AliPayStatusEnum.java b/eladmin-tools/src/main/java/me/zhengjie/util/AliPayStatusEnum.java similarity index 95% rename from src/main/java/me/zhengjie/tools/util/AliPayStatusEnum.java rename to eladmin-tools/src/main/java/me/zhengjie/util/AliPayStatusEnum.java index a61f3829..5a54da5a 100644 --- a/src/main/java/me/zhengjie/tools/util/AliPayStatusEnum.java +++ b/eladmin-tools/src/main/java/me/zhengjie/util/AliPayStatusEnum.java @@ -1,4 +1,4 @@ -package me.zhengjie.tools.util; +package me.zhengjie.util; /** * 支付状态 diff --git a/src/main/java/me/zhengjie/tools/util/AlipayUtils.java b/eladmin-tools/src/main/java/me/zhengjie/util/AlipayUtils.java similarity index 96% rename from src/main/java/me/zhengjie/tools/util/AlipayUtils.java rename to eladmin-tools/src/main/java/me/zhengjie/util/AlipayUtils.java index fbdccb18..e57c43e2 100644 --- a/src/main/java/me/zhengjie/tools/util/AlipayUtils.java +++ b/eladmin-tools/src/main/java/me/zhengjie/util/AlipayUtils.java @@ -1,9 +1,9 @@ -package me.zhengjie.tools.util; +package me.zhengjie.util; import cn.hutool.core.util.StrUtil; import com.alipay.api.AlipayApiException; import com.alipay.api.internal.util.AlipaySignature; -import me.zhengjie.tools.domain.AlipayConfig; +import me.zhengjie.domain.AlipayConfig; import org.springframework.stereotype.Component; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; diff --git a/src/main/java/me/zhengjie/tools/util/QiNiuUtil.java b/eladmin-tools/src/main/java/me/zhengjie/util/QiNiuUtil.java similarity index 95% rename from src/main/java/me/zhengjie/tools/util/QiNiuUtil.java rename to eladmin-tools/src/main/java/me/zhengjie/util/QiNiuUtil.java index c75b3e0d..433342d2 100644 --- a/src/main/java/me/zhengjie/tools/util/QiNiuUtil.java +++ b/eladmin-tools/src/main/java/me/zhengjie/util/QiNiuUtil.java @@ -1,8 +1,8 @@ -package me.zhengjie.tools.util; +package me.zhengjie.util; import com.qiniu.common.Zone; import com.qiniu.storage.Configuration; -import me.zhengjie.common.utils.FileUtil; +import me.zhengjie.utils.FileUtil; import java.text.SimpleDateFormat; import java.util.Date; diff --git a/eladmin.iml b/eladmin.iml new file mode 100644 index 00000000..7e155f9c --- /dev/null +++ b/eladmin.iml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/mvnw b/mvnw deleted file mode 100644 index 5551fde8..00000000 --- a/mvnw +++ /dev/null @@ -1,286 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you 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 -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Mingw, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -########################################################################################## -# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. -########################################################################################## -if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found .mvn/wrapper/maven-wrapper.jar" - fi -else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." - fi - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" - while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; - esac - done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" - if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" - fi - wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" - - if command -v wget > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found wget ... using wget" - fi - wget "$jarUrl" -O "$wrapperJarPath" - elif command -v curl > /dev/null; then - if [ "$MVNW_VERBOSE" = true ]; then - echo "Found curl ... using curl" - fi - curl -o "$wrapperJarPath" "$jarUrl" - else - if [ "$MVNW_VERBOSE" = true ]; then - echo "Falling back to using Java to download" - fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Compiling MavenWrapperDownloader.java ..." - fi - # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") - fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then - # Running the downloader - if [ "$MVNW_VERBOSE" = true ]; then - echo " - Running MavenWrapperDownloader.java ..." - fi - ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") - fi - fi - fi -fi -########################################################################################## -# End of extension -########################################################################################## - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd deleted file mode 100644 index e5cfb0ae..00000000 --- a/mvnw.cmd +++ /dev/null @@ -1,161 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM set title of command window -title %0 -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" -FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B -) - -@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -@REM This allows using the maven wrapper in projects that prohibit checking in binary data. -if exist %WRAPPER_JAR% ( - echo Found %WRAPPER_JAR% -) else ( - echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% - powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" - echo Finished downloading %WRAPPER_JAR% -) -@REM End of extension - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml index 9285505d..e0123131 100644 --- a/pom.xml +++ b/pom.xml @@ -1,14 +1,24 @@ - 4.0.0 me.zhengjie eladmin - v1.0 - jar + pom + 1.5 - elune + + eladmin-common + eladmin-logging + eladmin-system + eladmin-tools + eladmin-generator + + + el-admin + http://auauz.net org.springframework.boot @@ -21,7 +31,13 @@ UTF-8 UTF-8 1.8 - 0.9.1 + 2.9.0 + 1.16 + 2.9.2 + 1.2.54 + 1.1.10 + [4.1.12,) + 2.5.0 1.2.0.Final @@ -54,17 +70,12 @@ org.springframework.boot spring-boot-starter-data-redis - - - - org.springframework.boot - spring-boot-starter-websocket - - - - - org.springframework.boot - spring-boot-starter-freemarker + + + io.lettuce + lettuce-core + + @@ -72,44 +83,39 @@ redis.clients jedis - 2.9.0 + ${jedis.version} org.apache.commons commons-pool2 - 2.5.0 + ${commons-pool2.version} org.apache.commons commons-lang3 - - - io.jsonwebtoken - jjwt - ${jjwt.version} - org.bgee.log4jdbc-log4j2 log4jdbc-log4j2-jdbc4.1 - 1.16 + ${log4jdbc.version} io.springfox springfox-swagger2 - 2.9.2 + ${swagger.version} io.springfox springfox-swagger-ui - 2.9.2 + ${swagger.version} + mysql @@ -120,7 +126,7 @@ com.alibaba druid-spring-boot-starter - 1.1.10 + ${druid.version} @@ -129,18 +135,19 @@ lombok true + cn.hutool hutool-all - [4.1.12,) + ${hutool.version} com.alibaba fastjson - 1.2.54 + ${fastjson.version} @@ -159,56 +166,29 @@ javax.inject 1 - - - - javax.mail - mail - 1.4.7 - - - - - com.qiniu - qiniu-java-sdk - [7.2.0, 7.2.99] - - - - - com.alipay.sdk - alipay-sdk-java - 3.1.0 - - - - - commons-configuration - commons-configuration - 1.9 - - - - - org.quartz-scheduler - quartz - - nexus-aliyun - Nexus aliyun - http://maven.aliyun.com/nexus/content/groups/public + public + aliyun nexus + http://maven.aliyun.com/nexus/content/groups/public/ + + true + - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - + + + public + aliyun nexus + http://maven.aliyun.com/nexus/content/groups/public/ + + true + + + false + + + + \ No newline at end of file diff --git a/src/main/java/me/zhengjie/common/utils/FtlUtil.java b/src/main/java/me/zhengjie/common/utils/FtlUtil.java deleted file mode 100644 index 067ed55e..00000000 --- a/src/main/java/me/zhengjie/common/utils/FtlUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -package me.zhengjie.common.utils; - -import freemarker.template.Configuration; -import java.io.FileOutputStream; - -/** - * @author jie - * @date 2019-01-03 - */ -public class FtlUtil { - - private static Configuration configuration; - private static FileOutputStream fileOut = null; - - static { - configuration=new Configuration(Configuration.VERSION_2_3_28); - configuration.setDefaultEncoding("UTF-8"); - configuration.setClassForTemplateLoading(FtlUtil.class, "/template/generator"); - configuration.setClassForTemplateLoading(FtlUtil.class, "/template/email"); - } - - public static Configuration getConfig(){ - return configuration; - } - - -} diff --git a/src/main/java/me/zhengjie/common/utils/IpUtil.java b/src/main/java/me/zhengjie/common/utils/IpUtil.java deleted file mode 100644 index ed9076f6..00000000 --- a/src/main/java/me/zhengjie/common/utils/IpUtil.java +++ /dev/null @@ -1,24 +0,0 @@ -package me.zhengjie.common.utils; - -import javax.servlet.http.HttpServletRequest; - -/** - * 获取ip地址 - * @author X-rapido - * @date 2018-11-24 - */ -public class IpUtil { - public static String getIP(HttpServletRequest request) { - String ip = request.getHeader("x-forwarded-for"); - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("Proxy-Client-IP"); - } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getHeader("WL-Proxy-Client-IP"); - } - if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { - ip = request.getRemoteAddr(); - } - return "0:0:0:0:0:0:0:1".equals(ip)?"127.0.0.1":ip; - } -} diff --git a/src/main/java/me/zhengjie/common/utils/TimeUtil.java b/src/main/java/me/zhengjie/common/utils/TimeUtil.java deleted file mode 100644 index 2b7fca93..00000000 --- a/src/main/java/me/zhengjie/common/utils/TimeUtil.java +++ /dev/null @@ -1,25 +0,0 @@ -package me.zhengjie.common.utils; - -import java.util.Calendar; -import java.util.Date; - -/** - * @author jie - * @date 2018-12-13 - * - * 日期工具 - */ -public class TimeUtil { - - public static String getWeekDay(){ - String[] weekDays = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; - Calendar cal = Calendar.getInstance(); - cal.setTime(new Date()); - - int w = cal.get(Calendar.DAY_OF_WEEK) - 1; - if (w < 0){ - w = 0; - } - return weekDays[w]; - } -} diff --git a/src/main/java/me/zhengjie/monitor/rest/LoggingController.java b/src/main/java/me/zhengjie/monitor/rest/LoggingController.java deleted file mode 100644 index 20fb21b0..00000000 --- a/src/main/java/me/zhengjie/monitor/rest/LoggingController.java +++ /dev/null @@ -1,30 +0,0 @@ -package me.zhengjie.monitor.rest; - -import me.zhengjie.monitor.domain.Logging; -import me.zhengjie.monitor.service.query.LoggingQueryService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -/** - * @author jie - * @date 2018-11-24 - */ -@RestController -@RequestMapping("api") -public class LoggingController { - - @Autowired - private LoggingQueryService loggingQueryService; - - @GetMapping(value = "logs") - @PreAuthorize("hasAnyRole('ADMIN','USER')") - public ResponseEntity getLogs(Logging logging, Pageable pageable){ - return new ResponseEntity(loggingQueryService.queryAll(logging,pageable), HttpStatus.OK); - } -}